Page 1 sur 1
[RESOLU]Arreter l'objet qui poursuit un autre
Publié : mar. 16/juin/2009 11:21
par guerrier001
Bonjour c'est moi (encore une fois) je suis désoler si des gens sont en colère après se que j'ai fait (ne pas les avoir écouter quand ils disaient de commencer par le commencement, avoir mis leur nom sur un projet qu'il n'étaient pas au courant...). Alors voila j'ai un problème difficile a résoudre (facile pour certain):
Code : Tout sélectionner
If DM_EntityZ(*tiny)= DM_EntityZ(*sphere)-150
DM_MoveEntity(*sphere,0,0,2)
EndIf
Voila je ne sais pas arrêter l'entité "sphere" qui se dirige sur l'entité "tiny" a au moins 45 m de lui
PS:Je remerci ceux qui ont voulu m'aider a un certain moment surtout a Cpl.Bator a tmyke et a Ar-S a qui je doit des excuses pour mon comportement. Je dit aussi que grâce a vous mon projet a avancer grandement.
PS2:Je sais aussi que tmyke a arrêter de travailler sur DM3D et travaille sur un autre mais je ne veux pas changer de moteur de peur d'avoir a changer tous le code de mon projet.
Publié : mar. 16/juin/2009 19:02
par tmyke
Je t'avoue que ta question mérite quelques précisions supplémentaire.
Ceci dit je dirais qu'il faut calculer le distance entre les deux entités (tiny et sphere)
et voir si il est inférieur à 45. non ?
(l'instruction DM_EntityDistance.f(*tiny, *sphere) est faite pour ce genre de cas).
Publié : mar. 16/juin/2009 22:39
par guerrier001
Merci tmyke je vais essayer dommage que cpl.Bator ne m'ai toujours pas pardonner de mes erreurs.
Edit: je crois pas que c'est ça, je voudrais que la sphère poursuit tiny entre 150 en 50 mètre mais en dessous de 50m il s'arrête mais si tiny bouge et est a plus de 50 mètre de lui il le suit encore jusqu'à atteindre au moins 50 mètre entre lui et tiny et qu'il ne bouge plus quand tiny se rapproche de lui a moins de 50 mètre.
PS:
Code : Tout sélectionner
DM_EntityZ(*tiny)=> DM_EntityZ(*sphere)-150
DM_MoveEntity(*sphere,0,0,2)
Ce code me sert a arrêter la sphere si la valeur 150 entre tiny et lui est plus grand
Publié : jeu. 18/juin/2009 19:06
par tmyke
Cela revient toujours à un contrôle de distance entre tes deux entités, des instructions existent pour
cela, et il n'est pas trop difficile de coder la chose en quelques lignes pour faire en
sorte qu'un element reste à une certaine distance d'un autre, ainsi que de tester régulièrement
si une entité s'approche en dessous d'un certains seuil d'une autre.
Publié : jeu. 18/juin/2009 20:08
par Backup
guerrier001 a écrit :Merci tmyke je vais essayer dommage que cpl.Bator ne m'ai toujours pas pardonner de mes erreurs.
Edit: je crois pas que c'est ça, je voudrais que la sphère poursuit tiny entre 150 en 50 mètre mais en dessous de 50m il s'arrête mais si tiny bouge et est a plus de 50 mètre de lui il le suit encore jusqu'à atteindre au moins 50 mètre entre lui et tiny et qu'il ne bouge plus quand tiny se rapproche de lui a moins de 50 mètre.
ben tu donne la solution toi meme
je traduit ce que tu dis :
si position_tiny>position_sphere+50 metres :avance tiny:fin_si
(si position_tiny est superieur a la position de la sphere+50 metres, on avance tiny)
si position_tiny<position_sphere+50 :stop tiny:fin_si
ps : 'si' ça se dit 'IF' en purebasic
'fin_si' ça se dit 'endif'
ces 'if' sont a évaluer pour la position X , y , et z , donc tu as 3 fois
a faire le test !!

Publié : jeu. 18/juin/2009 23:55
par guerrier001
Je l'ai fait avec Z alors je le teste avec Z , je vais essayer cela.
Edit: merci maintenant je sais ce qu'il fallait faire:
Code : Tout sélectionner
DM_PointEntity(*sphere,*tiny)
; les personnage se suit de vue.
DM_EntityDistance.f(*tiny, *sphere)
;on calcul la distance avec le code qui suit:
If DM_EntityZ(*tiny)=> DM_EntityZ(*sphere)-50
;Si la distance point de vu Z de tiny est inférieur a celle de la sphere(la sphere c'est tiger le tigre),
DM_MoveEntity(*sphere,0,0,0)
;alors la sphere ne bouge pas (coucher dit tiny au tiger lol)
ElseIf DM_EntityZ(*tiny)=> DM_EntityZ(*sphere)-150
;alors que si la distance du point de vu est a moins de 150 entre tiny et la sphere(100 metre de distanceentre 50 150 metre)
DM_MoveEntity(*sphere,0,0,2)
;alors la sphere le suit.
EndIf
;fin de ce code
If DM_EntityZ(*tiny)=> DM_EntityZ(*sphere)+150
; meme chose mais sauf qu'on calcule quand il sont de l'autre coter
DM_MoveEntity(*sphere,0,0,0)
;toujour zero
ElseIf DM_EntityZ(*tiny)=> DM_EntityZ(*sphere)+50
; on recommence mais pour le faire marcher a l'envère (ce qui est bien avec sa on fait d'une piere deux coups, il avoir une vue de 360°)
DM_MoveEntity(*sphere,0,0,2)
;Et la on lui dit de marcher
EndIf
;fin de celui-ci aussi
If DM_EntityX(*tiny)=> DM_EntityX(*sphere)-50
;maintenant sur les coter
DM_MoveEntity(*sphere,0,0,0)
;on l'arrete d'un coter
ElseIf DM_EntityX(*tiny)=> DM_EntityX(*sphere)-150
;mais si il est assez loin
DM_MoveEntity(*sphere,0,0,2)
;il bouge de ce coter(il c'est la sphere alias tiger)
EndIf
;fin aussi
If DM_EntityX(*tiny)=> DM_EntityX(*sphere)+150
;On recommence encore un derniere fois le code de l'autre coter
DM_MoveEntity(*sphere,0,0,0)
;il bouge pas quand il est tres proche de tiny
ElseIf DM_EntityX(*tiny)=> DM_EntityX(*sphere)+50
; mais la il est pret
DM_MoveEntity(*sphere,0,0,2)
;a le bondir dessus
EndIf
;et voila la dernière fin (je veux pas qu'il le suit en sautant betement comme le personnage, il a un cerveau l'ia alors pas de DM_EntityY).
Merci a vous deux sans quoi je serai perdu
