Évaluer la valeur d'un angle [résolu!]

Bonjour,

Je sais que mon titre est pas génial (je n’ai pas eu assez de place pour bien détailler mon titre), que le problème à l’air tellement simple, mais en fait ce n’est pas si simple que cela.

Ce que je voudrais, c’est que mes ennemis évaluent la vitesse du héros ainsi que sa direction afin de trouver l’angle avec lequel ils doivent trier afin de toucher le héros si celui-ci ne change pas de direction ni de vitesse.

J’essaie de le faire à l’aide des lois de sinus et de cosinus mais ça s’avère plutôt complexe. Est-ce qu’on pourrait m’aider SVP? Merci d’avance. :slight_smile:

complexe ?
cos(@)=adjacent/hypothenus
sin(@)=opposé/hypothénus

Ensuite tu évites les cas où l’angle ou le déplacement en X (ou Y) donne des valeurs inexactes en utilisant au bon moment le cosinus ou le sinus (atchouuummm).

Bon, pour mieux vous faire comprendre, je vais vous faire un dessin :
[attachment=0]Formule.png[/attachment]

Qu’est-ce que vous disiez à propos de simple? :mrgreen:

N.B. : Ce qu’il me faut, c’est trouver la formule ou le moyen pour que mon PC résolve ce problème à chaque fois que le(s) ennemi(s) tire(nt), pas résoudre ce problème (Ce n’est pas un exo de maths).

Edit (08/06/12, 16h 20) : Je n’ai toujours pas de réponse… je me demande pourquoi il n’y a plus personne depuis que j’ai posté mon image… :confused:

euh c’est peut être pas ce que tu cherches mais c’est pas possible de demander à GD de faire direction du tire avec une force dirgée vers l’objet héro ? genre action “Ajouter une force à l’objet balle dirigé vers l’objet Héro”. ça résoudrait ton problème sans passer par les math du coup.

A 400px/s, je ne pense pas que le joueur ait le temps de réagir. Le tir sera déjà sur lui. :frowning:

Tu remarqueras également que dans la très grande majorité des shoot’em up, les ennemis ne s’encombrent pas de ce genre de subtilités. Ils inondent l’écran de balles, et comptent sur le joueur pour s’en prendre une tout seul comme un grand.

Un système prédictif rendrait ton jeu beaucoup plus dur, car le joueur devrait bouger en permanence, en plus d’esquiver les collisions avec les ennemis et le décor. Il tournerait donc en rond. :neutral_face:

A mon avis, tu t’embêtes pour pas grand chose.

Une autre possibilité néanmoins : c’est d’avoir un sprite invisible, qui suit le joueur mais devant lui, et c’est ce sprite que les ennemis visent (mettre objet autour de la position joueur.x()/joueur.y() à joueur.velocité() distance avec un angle de joueur.direction()). L’espace entre le sprite et le joueur sera proportionnel à la vitesse du joueur.
En gros, il faut que le sprite invisible ait une seconde d’avance sur le joueur, puisque les tirs ennemis mettront une seconde pour combler la distance.

Hmm… J’aime cette idée… Oui, je vais faire ça, merci mtarzaim! :wink:

À propos de formules de maths, j’en avais faite une qui permet à un objet ennemi d’évaluer la différence entre la direction pour aller vers le Héros et la direction de l’ennemi. Ça lui permet de tourner se vers le Héros, et pas de l’avoir toujours en ligne de mire. Si qqun la veut, demandez-moi! :slight_smile:

P.S : Si j’ai mis la vélocité du tir à 400 px, c’est parce que le zoom de ma scène est de 0.5 (vu de 2x plus “haut”). Ça correspond donc à 200 px pour le zoom “normal” (x1).