Mouvement d'un objet (GLScene )

Nicolas___
Messages postés
992
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
24 avril 2013
- 25 févr. 2006 à 19:27
f0xi
Messages postés
4205
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
12 mars 2022
- 27 févr. 2006 à 23:08
Salut , voici mon probleme
Je veux qu'un ennemi bouge vers moi et que arrivez a une certaine distance il s'arrete .

Le probleme c'est que je n'arrive pas a ce que l'ennemi ,qd il part , bouge vers ma direction .

Je m'explique , moi je suis en camera interne donc si je veux qu'il se rapproche , je dois lui mettre la Direction.Z:= - Moi.Direction.Z est cela se traduit en Delphi par ceci normalement

if perso.Direction.Z>0 then ennemi.Direction.Z:=-1;
if perso.Direction.Z<0 then ennemi.Direction.Z:=1;

Car cela ne varie (je crois) que par -1 et 1 ;

meme chose avec Direction.X et ben ce n'est pas tres concluant

pour dire qd il doit s'arreter j'ai fait une fonction qui renvoie la distance entre 2 points , est ce qu'elle est bonne ???

Function Distance_2pts(xa,xb,ya,yb,za,zb:single):single;
Begin
result:=sqrt(abs( ((xb*xb)-2*(xa*xb)+(xa*xa)) + ((yb*yb)-2*(ya*yb)+(ya*ya)) + ((zb*za)-2*(za*zb)+(za*za)) ) );
end;

Merci
Ciao

2 réponses

neodelphi
Messages postés
442
Date d'inscription
jeudi 4 avril 2002
Statut
Membre
Dernière intervention
11 août 2008

27 févr. 2006 à 15:49
Lol ta fonction de calcul de distance peut être factorisée:



result := sqrt( sqr(xb-xa) + sqr(yb-ya) + sqr(zb-za) );

neodelphi
0
f0xi
Messages postés
4205
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
12 mars 2022
37
27 févr. 2006 à 23:08
non non, utilise un cube (invisible) autour des elements et test la colision entre eux.

<hr size="2" width="100%">La theorie c'est quand on sait tout, mais que rien ne fonctionne.
La pratique c'est quand tout fonctionne, mais que personne ne sait pourquoi.
<hr>
0