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]