Bonjour,
Je rencontre un problème avec les angles de tir à 360°. Voici le problème :
Un vehicule (Ship) se deplace sur un plan 2d avec une vue de dessus.
Il tire des projectiles (Missile) autour de lui selon une certain angle (le véhicule tourne sur lui même et tire à 360° comme un tank) qui se déplacent en ligne droite.
Ship et Missile sont deux classe pour le véhicule et les projectiles.
Classe Ship :
Class Missile :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 class Ship extends MovieClip { var vitesse; var x; var y; function onLoad() { vitesse=0; x=0; y=0; } function onEnterFrame() { if (Key.isDown(Key.UP)) vitesse += 1; //acceleration en avant if (Key.isDown(Key.DOWN)) vitesse -= 0.2; //acceleration en arrière if (Key.isDown(Key.LEFT)) _rotation -= 8; if (Key.isDown(Key.RIGHT)) _rotation += 8; if (Math.abs(vitesse)>1) vitesse *= 0.9; // limite l'acceleration x = Math.cos(_rotation*(Math.PI/180))*vitesse; // donne la position x future en fonction de la vitesse y = Math.sin(_rotation*(Math.PI/180))*vitesse; // donne la position y future en fonction de la vitesse _x += x; _y += y; if( Key.isDown(Key.SPACE)) { var missile = _root.attachMovie( "Missile" , "Missile" + _root.getNextHighestDepth(), _root.getNextHighestDepth() ); missile._x = _x; missile._y = _y; } }}
Le probleme est avec les projectiles.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 class Missile extends MovieClip { var x; var y; var iii; function onLoad() { speed = 20; } function onEnterFrame() { // donne la position x future en fonction de la vitesse x = Math.cos(Ship._rotation*(Math.PI/180))*speed; // donne la position y future en fonction de la vitesse y = Math.sin(Ship._rotation*(Math.PI/180))*speed; _x += x*speed; _y += y*speed; } }
Ceux ci ont une vitesse
et sont tirés d'après un angle (360° autour du véhicule)
Seulement avec les deux classes que j'ai, tel quel, en me basant sur l'angle du véhicule :
J'obtient l'angle du véhicule
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 // donne la position x future en fonction de la vitesse x = Math.cos(Ship._rotation*(Math.PI/180))*speed; // donne la position y future en fonction de la vitesse y = Math.sin(Ship._rotation*(Math.PI/180))*speed;
Le problème est que le vehicule change ensuite de position et le missile se met à faire n'importe quoi.
Je cherche donc une solution pour que le missile conserve sa trajectoire avec l'angle initial du véhicule (l'angle du véhicule au moment ou à été tiré le projectile) afin qu'il se propage de façon rectiligne
Si je n'ai pas été assez clair dites le moi,
je suis pour le moment encore en train d'apprendre,
et suis preneur de toute aide sur le tir en mouvement à 360° sur un plan 2d
Merci d'avance pour votre aide
Partager