Instinct-FR- Nouveau
Messages : 9 Projet Actuel : Death Race
| Sujet: Création d'une mitrailleuse pour voiture. Ven 3 Juil 2009 - 10:54 | |
| Bonjour à tous, Je me suis lancé dans la création d'un jeu de course inspiré du film Death Race et du jeu Death Rally. ( Wikipédia) Voici mon problème: Les voitures ont la capacité de tirer 10 balles par secondes et par mitrailleuse. Les balles partent des deux cotés de la voiture comme sur l'image qui suit: Pour l'instant tout est correct. La premiere balle est tirée en (x=0 ; y=-9) et la deuxième (x=0 ; y=8 ). Sauf que lorsque l'on pivote la voiture, les deux tirs sont toujours parallèles mais plus distants de la même largeur : Et encore pire quand on pivote à 90 degrés. Là, les tirs se superposent: Alors ma question est: Comment faire pour que les deux tirs soient parallèles dans toutes les directions de la voiture ? |
|
Adamo Utilisateur confirmé: Rang ***
Messages : 681 Localisation : Quebec
| Sujet: Re: Création d'une mitrailleuse pour voiture. Ven 3 Juil 2009 - 11:10 | |
| - Code:
-
b2 = instance_create(x,y,object0) b2.x=x+sin(degtorad(direction))*20 b2.y=y+cos(degtorad(direction))*20 instance_create(x,y,object0) au moment de creer tes balle met ca (tu remplace biensur object0 par ton objet balle et ca devrai marcher la separation ce fait avec le *20 si tu veut quil sois plus separer tu met *30 ou plus sinon moin bonne chance Edit : Je me suis tromper un peu la ya va avoir une balle centrer et lautre pas tien : - Code:
-
b1 = instance_create(x,y,object0) b1.x=x-sin(degtorad(direction))*10 b1.y=y-cos(degtorad(direction))*10
b2 = instance_create(x,y,object0) b2.x=x+sin(degtorad(direction))*10 b2.y=y+cos(degtorad(direction))*10 |
|
Bast Administrateur
Messages : 20024 Localisation : Alsace
| Sujet: Re: Création d'une mitrailleuse pour voiture. Ven 3 Juil 2009 - 11:19 | |
| Il faut passer par un peu de trigonométrie afin de prendre en compte l'angle de la voiture dans le calcul des coordonnées. Pour cela, il existe des fonctions toutes faites: - GameMaker Help a écrit:
- lengthdir_x(len,dir) Returns the horizontal x-component of the vector determined by the indicated length and direction.
lengthdir_y(len,dir) Returns the vertical y-component of the vector determined by the indicated length and direction. Elles permettent chacune de retourner les coordonnées d'un point situé au bout d'un vecteur de longueur (length) et d'angle (direction) donnés. Dans ton cas, les coordonnées de création de tes projectiles seront donc celles-cis (en admettant qu'ils soient créés à partir de l'objet voiture, auquel correspondront donc les valeurs x et y): - Code:
-
x+lengthdir_x(8,90+image_angle),y+lengthdir_y(8,90+image_angle)
x+lengthdir_x(8,-90+image_angle),y+lengthdir_y(8,-90+image_angle) On a donc deux vecteurs: un premier, long de 8 pixels et dirigé à 90° (donc vers le haut), et un autre également long de 8 pixels mais dirigé à -90° (vers le bas). A cela s'ajoute la variable image_angle afin que les angles indiqués changent en fonction de l'orientation de la voiture. Edit: Pas vu le post d'Adamo. Mais c'est le même principe. _________________ |
|
Instinct-FR- Nouveau
Messages : 9 Projet Actuel : Death Race
| Sujet: Re: Création d'une mitrailleuse pour voiture. Ven 3 Juil 2009 - 11:33 | |
| Waa, merci les gars, des réponses complètes et rapides. J'utilise le code de adamo et il marche presque à 100%. Le seul problème c'est quand la voiture ne bouge pas, et qu'on tourne, les tirs se superposent mais dès qu'elle roule ça se remet en place. Mais ça me convient. Merci encore ! |
|
Contenu sponsorisé
| Sujet: Re: Création d'une mitrailleuse pour voiture. | |
| |
|