Also um ein Node in die Richtung zu bewegen, in die es "schaut", gibt es mehrere Möglichkeiten.
Entweder du arbeitest mit Sinus und Cosinus (ich weiß nicht, wie weit du damit vertraut bist).
Eine schönere Möglichkeit ist aber die Arbeit mit einer Matrix:
Arras (aus dem englischen Forum) hat mal ne Funktion dafür geschrieben:
Code:
void move(irr::scene::ISceneNode *node, //node to move
irr::core::vector3df vel) //velocity vector
// for example to move node 10 units forward use vector3df(0,0,10)
{
irr::core::matrix4 m;
m.setRotationDegrees(node->getRotation());
m.transformVect(vel);
node->setPosition(node->getPosition() + vel);
node->updateAbsolutePosition();
}
wie du diese Funktion benutzt, steht ja schon dran.
Du übergibst der Funktion einfach dein zu bewegendes SceneNode sowie einen Vektor, der angibt, um wie viel sich das SceneNode bewegen soll.
Wenn du also ein SceneNode um 100 Einheiten in die Richtung bewegen willst, in die es "schaut", dann musst du einfach folgendes schreiben:
Code:
void move(node, irr::core::vector3df(0.0f, 0.0f, 100.0f);
Gruß
marsupial