Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

tnecniv

Treue Seele

  • »tnecniv« ist der Autor dieses Themas

Beiträge: 164

Wohnort: BERLIN

  • Private Nachricht senden

1

21.09.2006, 15:44

Irrlicht

Hi!
Ich hab mal so ein bisschen mit irrlicht gemacht und hab mich im netz informiert, trotzdem bleiben mir ein paar dinge ungeklärt...
also irrlicht ist eine grafikengine, richtig? Frage: hab ich trotzdem das spielchen mit der render() und move() schleife??
außerdem, wollte ich vielleicht emm benutzen. ist es ratsam das in die engine mit rein zu schreiben, oder überhaupt nicht zu nutzen, oder vielleicht parallel dazu?
Danke schon mal!
Gruß Vincent
Sagt der igel zu dem dachs:
willst du größer sein, dann wachs!
- alte Fritz weisheit

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

21.09.2006, 16:30

ich könnte mir vorstellen, dass die irrlicht engine selbst über ein recht brauchbares animationssystem verfügt.
denk eher nicht, dass du emm dazu brauchst ;)

tnecniv

Treue Seele

  • »tnecniv« ist der Autor dieses Themas

Beiträge: 164

Wohnort: BERLIN

  • Private Nachricht senden

3

21.09.2006, 17:20

naja, ich main ja auch nur als format...
Sagt der igel zu dem dachs:
willst du größer sein, dann wachs!
- alte Fritz weisheit

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

4

22.09.2006, 00:14

Also du kannst für die Irrlicht deinen eigenen Loader schreiben. Damit ist es möglich die Engine um jeden Dateityp zu erweitern, solange man weiß, wie man ihn ausließt. Sinnvoll dürfte das aber nicht sein, weil du dadurch ja von irgendeinem Format erst in das EMM konvertierst und dann sozusagen nochmal in ein Irrlichtformat.
Das Animationsystem der Irrlicht ist streckenweise etwas seltsam bzw. funktioniert nur mit wenigen Dateiformaten wirklich.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

frodenius

Frischling

Beiträge: 1

Wohnort: Frankfurt am Main

Beruf: Schüler

  • Private Nachricht senden

5

25.09.2006, 20:52

zum thema render()+move()... irrlicht hat ein paar hervorragende tutorials.
böh, sigs sind blöd

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

6

12.02.2007, 22:06

Also in der Hoffnung, dass es im Forum jem. gibt, der Irrlicht verwendet und mir helfen kann:
Ich möchte eine Spielfigur mit Irrlicht bewegen.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
switch(event.KeyInput.Key)
            {
            case KEY_KEY_W:
                {
                    PlayerPos = nPlayer->getPosition();
                    nPlayer->setPosition(PlayerPos);
                    scene::ISceneNodeAnimator*  anim = smgr->createFlyStraightAnimator(PlayerPos, PlayerPos + vector3df(5,0,0),100);
                    nPlayer->addAnimator(anim);
                    break;
                }

Das funktioniert egtl. auch, das Problem an dieser Lösung ist aber, dass das Programm, wenn ich den Knopf länger drücke, erst stockt und dann die Spielfigur bewegt.
Nur sieht es so wenigstens von der Bewegung her flüssig aus.

Denn:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
switch(event.KeyInput.Key)
            {
            case KEY_KEY_W:
                {
                    PlayerPos = nPlayer->getPosition();
                                        PlayerPos.X += 5.0f
                    nPlayer->setPosition(PlayerPos);
                    break;
                }

So sieht man eben, dass es nicht flüssig bewegt wird. Sondern man sieht Sprünge.

Gibt es eine Methode, die flüssig läuft(ohne anfängliches stocken) und die Bewegung noch dazu rund aussieht?

PS: Wegen der Switch Funktion: vgl. Example\Movement[/code]

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

7

12.02.2007, 22:34

Uff, Spielgrundlagen ...

Mach die Bewegung Abhängig von der Zeit ;)

C-/C++-Quelltext

1
PlayerPos.X += 5.0f * timeSinceLastFrame; // = * Zeit des vergangenen Frame in ms

8

13.02.2007, 08:33

Du musst es machen wie es Das Gurke gesagt hat und zusätzlich die Windows Messages vergessen ;) Daran liegt es das es stockt. Nimm DIrect Input oder 'GetAsyncKeyState();' Da stockt es nicht.

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

9

13.02.2007, 14:14

Achso Danke. Ich habe nur gedacht, vielleicht, hat Irrlicht ja auch eine bessere Tastaturverarbeitung(Funktionen) und man braucht keine Klasse.
Dann mache ich es halt mit GetAsyncKeyState ;)

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

10

13.02.2007, 14:30

@all [meine Meinung]es ist nicht gerade sehr professionell bei einer plattformunabhängigen Engine, die bereits eine gute Verarbeitung von Inputs ermöglicht, plötzlich auf andere Methoden zurückzugreifen[/meine Meinung]

@Fred Wenn es nur um die Kamera geht: addCameraSceneNodeFPS. Ansonsten einen Bewegungsvektor in deine Klasse einbauen und diesen je nach Tastendruck setzen.

Code ausschnitt:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
            case KEY_UP:
                KameraMove.Z = event.KeyInput.PressedDown ? 1.0f : 0.0f;
            break;

            case KEY_DOWN:
                KameraMove.Z = event.KeyInput.PressedDown ? -1.0f : 0.0f;
            break;

            case KEY_LEFT:
                KameraMove.X = event.KeyInput.PressedDown ? -1.0f : 0.0f;
            break;

            case KEY_RIGHT:
                KameraMove.X = event.KeyInput.PressedDown ? 1.0f : 0.0f;
            break;

            case KEY_NEXT:
                KameraMove.Y = event.KeyInput.PressedDown ? -1.0f : 0.0f;
                break;

            case KEY_PRIOR:
                KameraMove.Y = event.KeyInput.PressedDown ? 1.0f : 0.0f;
                break;
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Werbeanzeige