Forum Le CBNA

Le Forum du CBNA a pour but de vous aider dans l'utilisation de GameMaker. Premier forum Francophone sous GameMaker, vous trouverez des .gmd, .gm6, .gmk, scripts, logiciels et d'autres ressources sur Le CBNA.
 
AccueilAccueil  ­FAQFAQ  ­RechercherRechercher  ­S'enregistrerS'enregistrer  ­MembresMembres  ­ConnexionConnexion  
Poster un nouveau sujet   Répondre au sujetPartager | 
 

 Création d'une mitrailleuse pour voiture.

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Instinct-FR-
Nouveau


Nombre de messages: 9
Projet Actuel: Death Race
Avancement:
20 / 10020 / 100


MessageSujet: Création d'une mitrailleuse pour voiture.   Ven 3 Juil - 9: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 ?
Revenir en haut Aller en bas
http://www.StickmanArt.0fees.net
Adamo
Utilisateur confirmé: Rang ***


Nombre de messages: 523
Localisation: Quebec
Avancement:
0 / 1000 / 100


MessageSujet: Re: Création d'une mitrailleuse pour voiture.   Ven 3 Juil - 10: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 Wink

la separation ce fait avec le *20 si tu veut quil sois plus separer tu met *30 ou plus sinon moin Wink 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
Revenir en haut Aller en bas
Bast
- Administrateur -


Nombre de messages: 19212
Localisation: Perché sur un arbre, en Alsace
Projet Actuel: CBNA SmartLight
Avancement:
99 / 10099 / 100


MessageSujet: Re: Création d'une mitrailleuse pour voiture.   Ven 3 Juil - 10: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.
Revenir en haut Aller en bas
http://www.lecbna.org/
Instinct-FR-
Nouveau


Nombre de messages: 9
Projet Actuel: Death Race
Avancement:
20 / 10020 / 100


MessageSujet: Re: Création d'une mitrailleuse pour voiture.   Ven 3 Juil - 10: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 !
Revenir en haut Aller en bas
http://www.StickmanArt.0fees.net
 

Création d'une mitrailleuse pour voiture.

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Programmation :: Aide débutants-
Poster un nouveau sujet   Répondre au sujet