Salut je développe un game engine sur base Irrlicht que je connais depuis longtemps mais j'ai oublié pas mal de choses malheuresement.
Je voudrais que ma classe Joueur (contenant entre autres un node MD2), puisse rester collée sur le terrain définit à la création du perso. Pour cela j'ai une methode update() que je lance à chaque rendu. Elle récupère terrain->getHeight() et place l'axe Y du node à ce point.
Je fait bouger le node grace à un Animator Straight (ligne droite).
Le soucis est que quand je déplace le perso, il se place correctement quand je clique pour le déplacer, puis il n'est plus mis à jour et s'enfonce dans le terrain. Je penses que l'animator prend le pas sur l'update() mais ou placer correctement mon update pour que cela fonctionne??
Merci d'avance.
Hors ligne
Pourrais-tu donner le code de ta fonction update, cela permettrait peut-être de plus facilement cerner le soucis
Hors ligne
void chr::update()
{
if(node->getPosition() == target)
{
action = ACTION_IDLE;
node->setMD2Animation(scene::EMAT_STAND);
}
node->setPosition(vector3df(node->getPosition().X,
sol->getHeight(node->getPosition().X,node->getPosition().Z),
node->getPosition().Z));
}
elle est utilisé ici:
while(device->run())
{
driver->beginScene(true, true, SColor(255,100,101,140));
smgr->drawAll();
guienv->drawAll();
ply->update();
driver->endScene();
}
Je comprends pas il y'a bien un moment ou on peut bouger le node sans que l'animator le replace sur sa route...
merci encore.
Dernière modification par TUpac (15-09-2009 20:16:51)
Hors ligne
Je n'utilise jamais les animator, enfin du moins pour ce qui est de définir des trajectoire.
Je ne sais pas dans quelle mesure le fait de repositionner ton node n'entre pas en coflit avec ce que fait l'animator.
Dans la mesure ou tu fait de la ligne droite, pourquoi ne pas coder ton petit truc à toi (plutôt simple). L'avantage est
que tu en aurais le controle et donc cela te poserait bien moins de soucis, non ?
Hors ligne
Oui mais je veux que la durée du déplacement soit fiable et si je bouge le node à chaque frame, la vitesse risque de dépendre du FPS, je me trompe?
Hors ligne
ça ne pose pas de soucis si tu travail avec le temps ( time elapsed )
il doit y avoir 2/3 sujet qui traine sur ça
Hors ligne
merci Magun, j'ai effectivement trouvé un sujet ou il file un algo qui retourne time elapsed à multiplier par une valeur (speed) pour avoir la distance par frame. Ceci dit, les animators m'enlevaient une grosse épine du pied car je vais devoir faire mes calculs de trigo pour trouver le vecteur déplacement.
Mais ça sera mieux comme ça. J'esper juste que cet algo n'est pas trop gourmand.
merci encore.
Hors ligne
Rassure toi, bien ficelé, ce n'est si gourmant. Pense à certains jeux ou tu voix des centaines d'élément ce déplacer en même temps...
Et puis, dans la mesure ou l'on passe dans le coin, on sera là pour te sortir d'une éventuelle ornière
Hors ligne
Merci du soutien tmyke ! c'est gentil
c'est juste que les maths appliqués y'en faut pas trop pour mon ptit cerveau ^^
Hors ligne