Pour ma part j'utilise cette methode :
irr::core::matrix4 Mat;
if (m_Nmodele != 0 && m_isMoving == true)
{
//On commence par recuperer la position actuelle
core::vector3df v = m_Nmodele->getPosition();
core::vector3df r = m_Nmodele->getRotation();
if (myKeyPressed=="Z")
{
//On y ajoute la valeur de deplacement
Mat.setRotationDegrees(m_Nmodele->getRotation());
core::vector3df Target(0.2,0,0);
Mat.transformVect(Target);
core::vector3df NewPos=m_Nmodele->getPosition();
NewPos += Target;
m_Nmodele->setPosition(NewPos);
}
else if (myKeyPressed=="S")
{
Mat.setRotationDegrees(m_Nmodele->getRotation());
core::vector3df Target(-0.2,0,0);
Mat.transformVect(Target);
core::vector3df NewPos=m_Nmodele->getPosition();
NewPos += Target;
m_Nmodele->setPosition(NewPos);
}
if (myKeyPressed=="Q")
{
r.Y-= 0.1;
m_Nmodele->setRotation(r);
}
else if (myKeyPressed=="D")
{
r.Y+= 0.1;
m_Nmodele->setRotation(r);
}
}