Mray Très bonne participation
Messages : 111
| Sujet: [Résolu] Une balle en trop :( Sam 1 Oct 2011 - 17:39 | |
| Salut ^^ Pour m'entrainer un peu j'ai crée un petit mario, j'ai fais les déplacements, etc.. J'ai aussi fait en sorte que quand on appuis sur space ça libère une balle qui va dans la direction du mario, mais le problème est que chaque fois, si on tire dans une certaine direction, puis qu'on va dans une autre, il faut toujours qu'une seule balle reparte dans l'ancien sens, et ça je ne comprends pas Voici mon .gmk http://www.mediafire.com/?ywn70axeywr0od2Lancez le jeu déplacez vous vers la gauche ( ou n'importe quelle direction, osef tant que vous tirez pas ) puis tirez, autre que quand le sprite regarde vers le bas, vous verrez une balle partir vers le sud alors que normalement elle ne devrait pas ! EDIT: J'ai oublié les codes: Dans le Create de mon Objet Mario: - Code:
-
global.d_dir=false; global.z_dir=false; global.s_dir=true; global.q_dir=false; global.zq_dir=false; global.zd_dir=false; global.sd_dir=false; global.sq_dir=false; ( global.s_dir=true; car par défaut, l'objet regarde vers le bas ) Dans le step de mon Objet Mario: - Code:
-
// Début movement de mon personnage mario
if ( keyboard_check(ord("Q")) ) { sprite_index=mario7 x-=5; } if ( keyboard_check(ord("D")) ) { sprite_index=mario0 x+=5; } if ( keyboard_check(ord("Z")) ) { sprite_index=mario1 y-=5; } if ( keyboard_check(ord("S")) ) { sprite_index=mario4 y+=5; }
// OPTIONNEL DEPLACEMENT EN CROIX
if ( keyboard_check(ord("Z")) && keyboard_check(ord("D")) ) { sprite_index=mario2 } if ( keyboard_check(ord("S")) && keyboard_check(ord("D")) ) { sprite_index=mario5 } if ( keyboard_check(ord("Z")) && keyboard_check(ord("Q")) ) { sprite_index=mario3 } if ( keyboard_check(ord("S")) && keyboard_check(ord("Q")) ) { sprite_index=mario6 }
// FIN DEPLACEMENT EN CROIX
// Fin movement mario - Début arrêt des images
if ( keyboard_check_released(ord("Q")) ) { sprite_index=mario7_2 } if ( keyboard_check_released(ord("D")) ) { sprite_index=mario0_2 } if ( keyboard_check_released(ord("Z")) ) { sprite_index=mario1_2 } if ( keyboard_check_released(ord("S")) ) { sprite_index=mario4_2 }
// Fin arrêt des images - Début Balle
if ( keyboard_check_pressed(vk_space) ) { instance_create(x,y,balle) if ( sprite_index==mario1 || sprite_index==mario1_2 ) { global.sq_dir=false; global.sd_dir=false; global.zq_dir=false; global.zd_dir=false; global.s_dir=false; global.q_dir=false; global.d_dir=false; global.z_dir=true; } if ( sprite_index==mario4 || sprite_index==mario4_2 ) { global.sq_dir=false; global.sd_dir=false; global.zq_dir=false; global.zd_dir=false; global.z_dir=false; global.q_dir=false; global.d_dir=false; global.s_dir=true; } if ( sprite_index==mario7 || sprite_index==mario7_2 ) { global.sq_dir=false; global.sd_dir=false; global.zq_dir=false; global.zd_dir=false; global.z_dir=false; global.s_dir=false; global.d_dir=false; global.q_dir=true; } if ( sprite_index==mario0 || sprite_index==mario0_2 ) { global.sq_dir=false; global.sd_dir=false; global.zq_dir=false; global.zd_dir=false; global.z_dir=false; global.s_dir=false; global.q_dir=false; global.d_dir=true; }
// OPTIONNEL BALLE EN CROIX if ( sprite_index==mario2 ) { global.d_dir=false; global.z_dir=false; global.s_dir=false; global.q_dir=false; global.sq_dir=false; global.sd_dir=false; global.zq_dir=false; global.zd_dir=true; } if ( sprite_index==mario3 ) { global.d_dir=false; global.z_dir=false; global.s_dir=false; global.q_dir=false; global.sq_dir=false; global.sd_dir=false; global.zd_dir=false; global.zq_dir=true; } if ( sprite_index==mario5 ) { global.d_dir=false; global.z_dir=false; global.s_dir=false; global.q_dir=false; global.sq_dir=false; global.zq_dir=false; global.zd_dir=false; global.sd_dir=true; } if ( sprite_index==mario6 ) { global.d_dir=false; global.z_dir=false; global.s_dir=false; global.q_dir=false; global.zq_dir=false; global.zd_dir=false; global.sd_dir=false; global.sq_dir=true; } } Dans le Create de mon Objet balle: - Code:
-
if ( global.z_dir==true ) { motion_set(90,7) }
if ( global.s_dir==true ) { motion_set(270,7) }
if ( global.q_dir==true ) { motion_set(180,7) }
if ( global.d_dir==true ) { motion_set(0,7) }
// OPTIONNEL Balle en croix
if ( global.zd_dir==true ) { motion_set(45,10) }
if ( global.zq_dir==true ) { motion_set(135,10) }
if ( global.sq_dir==true ) { motion_set(225,10) }
if ( global.sd_dir==true ) { motion_set(315,10) }
Dernière édition par Mray le Lun 3 Oct 2011 - 14:20, édité 1 fois |
|
Termite Utilisateur confirmé: Rang ****
Messages : 1005 Localisation : Dans ta charpente ! Projet Actuel : RayEngine 5.0
| Sujet: Re: [Résolu] Une balle en trop :( Dim 2 Oct 2011 - 1:27 | |
| Doux jésus, j'ai difficilement vu pire niveau "jme casse la tête".. Bon déjà, pas de variable global, c'est caca. Ensuite, je présume que toutes les variables global.truc_dir sont les différentes directions, ja ? Dans ce cas, pourquoi tu te sers pas simple de la variable de base "direction", que tu modifie en fonction de la touche du clavier ? ça donnerait ça : - Code:
-
// Déplacement (y'a pas ceux en diagonale, par pur flemme) if (keyboard_check(ord("Q"))) { direction=180; speed=5; } else if (keyboard_check(ord("D"))) { direction=0; speed=5; } else if (keyboard_check(ord("Z"))) { direction=90; speed=5; } else if (keyboard_check(ord("Z"))) { direction=270; speed=5; } else speed=0;
// attaque : if (keyboard_check(vk_space)) { inst_balle = instance_create(x,y,balle); inst_balle.direction = direction; // On récupère la direction du joueur inst_balle.speed = 4; // On assigne la vitesse de la balle, sachant que sa direction dépend de la variable (direction)
} // ça créera plein plein de balle (30 ou 60 à la seconde), si tu veux réparer ça :
(create) toggleSpace=false;
(step) if (keyboard_check(vk_space) && toggleSpace==false) { inst_balle = instance_create(x,y,balle); inst_balle.direction = direction; // On récupère la direction du joueur inst_balle.speed = 4; // On assigne la vitesse de la balle, sachant que sa direction dépend de la variable (direction) toggleSpace=true; }
if (!keyboard_check(vk_space) toggleSpace=false;
Voilà, après pour les sprites choisis-les en fonctions de la direction, et pense à la variable image_xscale qui permet de faire une symétrie (lorsqu'elle est à -1) _________________ Because these are not the words of God, the same God that burnt the knowing.
|
|
Mray Très bonne participation
Messages : 111
| Sujet: Re: [Résolu] Une balle en trop :( Dim 2 Oct 2011 - 22:53 | |
| C'est vrai que ton code est beaucoup plus simple, j'ai trop compliqué les choses ^^ Merci Au faite, quelqu'un saurait comment créer un objet et qui pars d'un point du image ? j'utilise image_angle pour un de mes objet pour l'orienté dans la direction du curseur, mais si mon personnage à une arme, j'aimerais que la balle parte du canon et non d'un point précis de l'objet |
|
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [Résolu] Une balle en trop :( Dim 2 Oct 2011 - 23:36 | |
| |
|
Mray Très bonne participation
Messages : 111
| Sujet: Re: [Résolu] Une balle en trop :( Lun 3 Oct 2011 - 13:49 | |
| yeah ça marche super bien , merci ! |
|
Contenu sponsorisé
| Sujet: Re: [Résolu] Une balle en trop :( | |
| |
|