| Faire tourner le bras selon le curseur | |
|
|
Auteur | Message |
---|
loic01222 Plutôt bien
Messages : 49
| Sujet: Faire tourner le bras selon le curseur Jeu 7 Juin 2012 - 20:09 | |
| Salut ! Je voudrais faire un jeu avec un gars qui tient un pistolet, et avec la souris, on vise les ennemis et on tire. Seulement, j'aimerais que le bras se "tourne" vers le curseur pour donner un effet de réalisme. Seulement, je ne connais aucune fonction de rotation, je suis pourtant sûr qu'il y en a une !! Si quelqu'un pourrait m'aider, ce serait sympa Merci d'avance ! |
|
| |
Invité Invité
| Sujet: Re: Faire tourner le bras selon le curseur Jeu 7 Juin 2012 - 20:54 | |
| à mettre dans l'event draw (n'oublies pas d'initialiser les variable dans l'event create) - Code:
-
gun_angle=point_direction(x,y,mouse_x,mouse_y); xx=lengthdir_x(dist,gun_angle); yy=lengthdir_y(dist,gun_angle);
orientation=sign(mouse_x-x);
draw_sprite_ext(spr_main,0,x,y,orientation,1,0,c_white,1); draw_sprite_ext(spr_gun,0,x+xx,y+yy,1,orientation,gun_angle,c_white,1); ce qu'il faut changer pour adapter le code à ton jeu dist= distance entre l'arme et le personnage spr_main= corps du personnage spr_gun = arme du personnage |
|
| |
loic01222 Plutôt bien
Messages : 49
| Sujet: Re: Faire tourner le bras selon le curseur Ven 8 Juin 2012 - 9:44 | |
| Merci, ça marche, mais mon personnage a une animation quand il avance, comment faire pour lancer cette animation sans annuler le script ? (Il peut aller à gauche et à droite) Sinon, l'arme se décolle du personnage quand je vise en haut et en bas Attends, je te passe les screens... Là, c'est quand je regarde à droite (ou à gauche), ça marche super ! Là, c'est quand je regarde en haut : Et là en bas : En fait, je voudrais, si possible, que le centre du cercle dans lequel le bras tourne soit sur le bleu du bras, comme si le cercle faisait 0 de diamètre, je sais pas si je me fais comprendre Et une dernière chose (désolé si je suis embêtant ), quand ma souris est pile sur le pixel au dessus du joueur, il disparaît ainsi que le bras. |
|
| |
Mass *Excellent utilisateur*
Messages : 3351 Localisation : Dans une canonnière wookie. Projet Actuel : Monter des trucs et des machins
| Sujet: Re: Faire tourner le bras selon le curseur Ven 8 Juin 2012 - 17:07 | |
| Tu dois mettre l'origine du sprite sur l'épaule du sprite du bras dans l'éditeur de sprite de gm, c'est ça le point de rotation de la fonction image_angle et des fonctions de dessin de sprite |
|
| |
loic01222 Plutôt bien
Messages : 49
| Sujet: Re: Faire tourner le bras selon le curseur Ven 8 Juin 2012 - 17:18 | |
| Merci, le bras tourne exactement comme je le voulais ! Mais maintenant, il n'est plus au bon endroit sur le personnage, et si je modifie l'origine du personnage, les collisions ne marchent plus normalement... |
|
| |
Mass *Excellent utilisateur*
Messages : 3351 Localisation : Dans une canonnière wookie. Projet Actuel : Monter des trucs et des machins
| Sujet: Re: Faire tourner le bras selon le curseur Ven 8 Juin 2012 - 17:25 | |
| Changes la valeur xx et yy du code de shm par la distance entre l'origine du sprite du personnage et l'origine du sprite du bras |
|
| |
loic01222 Plutôt bien
Messages : 49
| Sujet: Re: Faire tourner le bras selon le curseur Ven 8 Juin 2012 - 17:35 | |
| Je dois remplacer le "xx" et le "yy" de - Code:
-
xx=lengthdir_x(dist,gun_angle); yy=lengthdir_y(dist,gun_angle); ou de - Code:
-
draw_sprite_ext(spr_gun,0,x+xx,y+yy,1,orientation,gun_angle,c_white,1); ? |
|
| |
Mass *Excellent utilisateur*
Messages : 3351 Localisation : Dans une canonnière wookie. Projet Actuel : Monter des trucs et des machins
| Sujet: Re: Faire tourner le bras selon le curseur Ven 8 Juin 2012 - 17:39 | |
| Non j'ai dit une bêtise, je parlais du "dist" ^^' Sorry. |
|
| |
loic01222 Plutôt bien
Messages : 49
| Sujet: Re: Faire tourner le bras selon le curseur Ven 8 Juin 2012 - 18:24 | |
| Bon, ça avance, le bras est maintenant pile au dessus de la tête, mais comment gérer la distance verticalement ? ^^' |
|
| |
Mass *Excellent utilisateur*
Messages : 3351 Localisation : Dans une canonnière wookie. Projet Actuel : Monter des trucs et des machins
| Sujet: Re: Faire tourner le bras selon le curseur Ven 8 Juin 2012 - 18:45 | |
| pif-o-mètre, sachant que tu peux mettre des valeurs négatives |
|
| |
loic01222 Plutôt bien
Messages : 49
| Sujet: Re: Faire tourner le bras selon le curseur Ven 8 Juin 2012 - 20:59 | |
| Ouais, mais c'est que pour gérer la distance horizontale, je sais pas comment modifier celle verticale EDIT : C'est bon, j'ai trouvé, il fallait faire ça : - Code:
-
draw_sprite_ext(pistolet_d,0,x+20,y+20,1,orientation,gun_angle,c_white,1); Maintenant, nouveau défaut : quand le personnage se retourne à gauche, il se décale complètement :/ Comment faire pour qu'il se retourne juste horizontalement, sans modifier son origine (si je touche à son origine toutes les collisions se mettent à foirer xD) ? |
|
| |
Mass *Excellent utilisateur*
Messages : 3351 Localisation : Dans une canonnière wookie. Projet Actuel : Monter des trucs et des machins
| Sujet: Re: Faire tourner le bras selon le curseur Ven 8 Juin 2012 - 21:52 | |
| xx=lengthdir_x(dist,gun_angle); dist = distance horizontale yy=lengthdir_y(dist,gun_angle); dist = distance verticale |
|
| |
loic01222 Plutôt bien
Messages : 49
| Sujet: Re: Faire tourner le bras selon le curseur Ven 8 Juin 2012 - 21:57 | |
| Je crois que je me suis fait mal comprendre, j'ai réussi à gérer la distance du pistolet, mais quand je place ma souris à gauche, le personnage se décale, je pense qu'il se retourne sur son origine (je suis pas sûr du tout), mais si je modifie son origine, je ne peux plus avancer sans que le personnage tombe dans le sol ou des trucs du genre :/ |
|
| |
D-z Utilisateur confirmé: Rang *****
Messages : 1611 Localisation : Montpellier
| Sujet: Re: Faire tourner le bras selon le curseur Ven 8 Juin 2012 - 23:24 | |
| Alors c'est qu'il y a un gros problème avec ton moteur physique, en général on place l'offset sur le centre géométrique ou massique de l'objet, et tout se passe bien. _________________ Home is not a place, it's a feeling.
|
|
| |
[TheDarkTiger] Modérateur
Messages : 7420 Localisation : Essonne
| Sujet: Re: Faire tourner le bras selon le curseur Sam 9 Juin 2012 - 0:10 | |
| Comprends un truc.
L'origine de ton Perso et en haut à gauche.
Donc, si tu fait un miroir horizontal, c'est normal qu'elle se retrouve en haut à droite.
Donc, si tu avait réglé ton code pour que l'épaule soir en : (x+gnagnagna, y+trololo) , alors, si tu fait un miroir, ton épaule devra être en : (x-gnagnagna, y+trololo)
C'est logique non ? De même, ton arme sera à l'envers, il faut elle aussi la dessiner en miroir. Enfin, une petite recherche dans le forum t'aurais évité bien des encombre, on à déjà répondu à cette question plusieurs fois. _________________ Bonne chance pour vos projets actuels ! Prêt à aider ceux qui en ont besoin ^^ l'antiqueBienvenue au 2629eme utilisateur : Mike Jones ! |
|
| |
Invité Invité
| Sujet: Re: Faire tourner le bras selon le curseur Sam 9 Juin 2012 - 2:18 | |
| ceci étant dit, je crois qu'il fallait que j'expliquait le fonctionnement du code dans le post précédent. lengthdir_x et lengthdir_y : pour éviter toute définition mathématique en relation avec la trigonométrie et les vecteurs, (bien qu'il te faudra les apprendre plus tard, enfin si tu les connais pas encore.) fin bref, utilisées successivement, elle permettront au sprite du bras d'orbiter autour du corps du joueur selon une distance (length en pixels) et une direction (dir en dégrées (de 0 à 359) ) spécifique. sign : fonction qui permet de retourner 1 en cas d'un chiffre positif et -1 en cas d'un chiffre négatif draw_sprite_ext : fonction de dessin avancée, elle permet de dessiner un sprite avec les parametres suivants : sprite_index : nom du sprite image_index : sous-image du sprite, les frames quoi... x,y : coordonnées horizontales et verticales du sprites image_xscale : mise en échelle horizontale (1=échelle normale 0.5=échelle 1/2 2=taille double -1=mirroir horizontal...etc) image_yscale : mise en échelle vérticale image_angle : angle de rotation (l'axe de rotation est défini par les origines du sprite (modifiable dans l'éditeur de sprites) ) image_color : couleur du sprite image_alpha : degrée de transparence (1= opaque 0.5=moitié visible 0=invisible) pour le reste réfère toi à l’excellent tutoriel d'onilink : https://cbna.forumactif.com/t10919-tutoriels-apprendre-le-gml |
|
| |
loic01222 Plutôt bien
Messages : 49
| Sujet: Re: Faire tourner le bras selon le curseur Sam 9 Juin 2012 - 7:08 | |
| Merci pour ces explications, je vais voir ce que je peux faire EDIT : Toujours le même problème, le personnage ne se retourne pas, même si je change l'origine... |
|
| |
PsycKho Très bonne participation
Messages : 154 Projet Actuel : http://www.sharedojo.netai.net/
| Sujet: Re: Faire tourner le bras selon le curseur Mar 12 Juin 2012 - 11:36 | |
| J'adore sachem qui essayes de noyer le gars. Retires le reste si t'arrives toujours pas et met juste ça - Code:
-
draw_sprite_ext(SPR_PLAYER,image_index,x,y,image_xscale,image_yscale,0,c_white,image_alpha) draw_sprite_ext(SPR_BRAS,0,x,YY,1,1,point_direction(x,y,mouse_x,mouse_y),c_white,image_alpha)
Remplaces SPR_PLAYER et SPR_BRAS par les sprites respectifs et YY par la hauteur à laquelle le bras doit se trouver. Centres le sprite du personnage où tu veux, tant que c'est centré sur l'axe x. Centre le bras sur l'épaule, sur l'axe de rotation. En bidouillant un peu, t'auras facilement ce que tu veux. Si tu utilises le bras dans un objet séparé (même si je te recommandes de ne pas le faire) tu peux placer la partie du bras dans le code du bras, ça devrait marcher tel quel. |
|
| |
loic01222 Plutôt bien
Messages : 49
| Sujet: Re: Faire tourner le bras selon le curseur Mer 13 Juin 2012 - 21:27 | |
| Merci, mais y'a un problème : le bras suit bien le personnage en X, mais j'ai beau changer le YY, le bras reste toujours en haut de l'écran |
|
| |
PsycKho Très bonne participation
Messages : 154 Projet Actuel : http://www.sharedojo.netai.net/
| Sujet: Re: Faire tourner le bras selon le curseur Lun 25 Juin 2012 - 23:44 | |
| Pardon, la hauteur à laquelle il doit se trouver plus la position du player. Donc player.y-10 par exemple. |
|
| |
loic01222 Plutôt bien
Messages : 49
| Sujet: Re: Faire tourner le bras selon le curseur Mar 26 Juin 2012 - 19:57 | |
| Ça marche, mais le bras reste à la même hauteur quand le personnage saute... Et comment faire pour que le perso se retourne quand le curseur est à gauche ?
Merci d'avance ! |
|
| |
Contenu sponsorisé
| Sujet: Re: Faire tourner le bras selon le curseur | |
| |
|
| |
| Faire tourner le bras selon le curseur | |
|