AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
-39%
Le deal à ne pas rater :
Pack Home Cinéma Magnat Monitor : Ampli DENON AVR-X2800H, Enceinte ...
1190 € 1950 €
Voir le deal

 

 [Résolu] Une balle en trop :(

Aller en bas 
3 participants
AuteurMessage
Mray
Très bonne participation



Messages : 111

[Résolu] Une balle en trop :( Empty
MessageSujet: [Résolu] Une balle en trop :(   [Résolu] Une balle en trop :( EmptySam 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 Surprised

Voici mon .gmk
http://www.mediafire.com/?ywn70axeywr0od2

Lancez 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 ! Surprised

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
Revenir en haut Aller en bas
Termite
Utilisateur confirmé: Rang ****
Termite


Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

[Résolu] Une balle en trop :( Empty
MessageSujet: Re: [Résolu] Une balle en trop :(   [Résolu] Une balle en trop :( EmptyDim 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.
Revenir en haut Aller en bas
Mray
Très bonne participation



Messages : 111

[Résolu] Une balle en trop :( Empty
MessageSujet: Re: [Résolu] Une balle en trop :(   [Résolu] Une balle en trop :( EmptyDim 2 Oct 2011 - 22:53

C'est vrai que ton code est beaucoup plus simple, j'ai trop compliqué les choses ^^
Merci Smile
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
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


Messages : 9180
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

[Résolu] Une balle en trop :( Empty
MessageSujet: Re: [Résolu] Une balle en trop :(   [Résolu] Une balle en trop :( EmptyDim 2 Oct 2011 - 23:36

Utilise les lengthdir.

_________________
[Résolu] Une balle en trop :( Runningpotato1[Résolu] Une balle en trop :( TvF6GED [Résolu] Une balle en trop :( MdetltS
Revenir en haut Aller en bas
Mray
Très bonne participation



Messages : 111

[Résolu] Une balle en trop :( Empty
MessageSujet: Re: [Résolu] Une balle en trop :(   [Résolu] Une balle en trop :( EmptyLun 3 Oct 2011 - 13:49

yeah ça marche super bien , merci ! Very Happy
Revenir en haut Aller en bas
Contenu sponsorisé





[Résolu] Une balle en trop :( Empty
MessageSujet: Re: [Résolu] Une balle en trop :(   [Résolu] Une balle en trop :( Empty

Revenir en haut Aller en bas
 
[Résolu] Une balle en trop :(
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [Résolu] Chargement trop long !
» [résolu] balle qui roule
» [Résolu] Sprite tir de balle?
» [Résolu] Une balle qui part du canon
» [Résolu] Comment tirer une balle à partir d'un personnage ?

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide débutants-
Sauter vers: