Historique des modifications - Message

Message #4227

Sujet: Problème de rotation/déplacement


Type Date Auteur Contenu
Dernière modification 11-06-2008 06:50:36 samsoft
Bonjour, j'utilise la classe d'un membre de ce forum (je l'en remercie beaucoup) : Zangetsu qui permet à la caméra d'être positionnée tout le temps derrière le personnage.

J'ai crée une fonction qui permet de faire tourner/déplacer le personnage en fonction des touches tapées au clavier:

void CEventReceiver::majOfPos()
{
    if(Nmodele != 0 && isMoving == true)
    {
        irr::core::vector3df vector = Nmodele->getRotation();
        irr::core::vector3df v = Nmodele->getPosition();

        if(move == forward)
        {
            v.X += 1.0f;
        }
        else if(move == backward)
        {
            v.X -= 1.0f;
        }
        else if(move == left)
        {
            v.Z += 1.0f;
        }
        else if(move == right)
        {
            v.Z -= 1.0f;
        }
        else if(move == turnLeft)
        {
            vector.Y--;
        }
        else if(move == turnRight)
        {
            vector.Y++;
        }

        Nmodele->setRotation(irr::core::vector3df(vector.X, vector.Y, vector.Z));
        Nmodele->setPosition(v);
    }
}

Le personnage avance et tourne bien correctement (la caméra le suit parfaitement).
Où est le problème ? Il est étrange, quand je n'effectue pas de rotation, le personnage avance correctement (z pour devant, s pour derrière, q pour la gauche et d pour la droite). Dès que j'effectue une rotation, le déplacement est modifié (z provoque un déplacement différent de celui demandé, idem pour les 3 autres touches). Si je reviens "en position initiale" tout refonctionne.

Merci d'avance smile

PS: Pour les noms de fonctions, de classes... Si vous êtes perturbé c'est normal, le programme que je développe est une sorte de "prototype" juste pour voir de quoi est capable le moteur, du moins de quoi je suis capable de faire avec ce moteur donc sur le projet final les variables seront mieux nommées, les classes plus explicites...
Création du message 11-06-2008 06:42:58 samsoft
Bonjour, j'utilise la classe d'un membre de ce forum (je l'en remercie beaucoup) : Zangetsu qui permet à la caméra d'être positionnée tout le temps derrière le personnage.

J'ai crée une fonction qui permet de faire tourner/déplacer le personnage en fonction des touches tapées au clavier:

void CEventReceiver::majOfPos()
{
    if(Nmodele != 0 && isMoving == true)
    {
        irr::core::vector3df vector = Nmodele->getRotation();
        irr::core::vector3df v = Nmodele->getPosition();

        if(move == forward)
        {
            v.X += 1.0f;
        }
        else if(move == backward)
        {
            v.X -= 1.0f;
        }
        else if(move == left)
        {
            v.Z += 1.0f;
        }
        else if(move == right)
        {
            v.Z -= 1.0f;
        }
        else if(move == turnLeft)
        {
            vector.Y--;
        }
        else if(move == turnRight)
        {
            vector.Y++;
        }

        Nmodele->setRotation(irr::core::vector3df(vector.X, vector.Y, vector.Z));
        Nmodele->setPosition(v);
    }
}

Le personnage avance et tourne bien correctement (la caméra le suit parfaitement).
Où est le problème ? Il est étrange, quand je n'effectue pas de rotation, le personnage avance correctement (z pour devant, s pour derrière, q pour la gauche et d pour la droite). Dès que j'effectue une rotation, le déplacement est modifié (z provoque un déplacement différent de celui demandé, idem pour les 3 autres touches). Si je reviens "en position initiale" tout refonctionne.

Merci d'avance smile

PS: Pour les noms de fonctions, de classes... Si vous êtes perturbé c'est normal, le programme que je développe est une sorte de "prototype" juste pour voir de quoi est capable le moteur, du moins de quoi je suis capable de faire avec ce moteur donc sur le projet final les variables seront mieux nommées, les classes plus explicites...

Retour

Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
138 invités en ligne
membre en ligne: -
RSS Feed