AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 8 Directions du personnage. + vidéo inclus de mon probleme

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
mi7
Débutant


Messages : 13

MessageSujet: 8 Directions du personnage. + vidéo inclus de mon probleme   Sam 17 Sep 2016 - 22:45

Bonjour à vous je suis ici parce que je suis à court d'idées et j'aimerais mieux comprendre mon problème et apprendre comment fait ont pour animer un personnage dans les 8 directions. je vous conseille fortement de regarder la vidéo de mon problème il en sera plus simple pour mieux comprendre

https://www.youtube.com/watch?v=FD_rpO74Kno&feature=youtu.be


je suis ouvert aux suggestions que sa sois codés ou à la gamme maker basique je suis preneur.

et je tiens a dire que quand mon problème sera résolus je vais faire une vidéo Tutorial pour expliquer et comment faire pour que ceux qui sont dans ma situation puisse trouver leur bonheur à leur tour.
Revenir en haut Aller en bas
Craki
Utilisateur confirmé: Rang ****
avatar

Messages : 1469
Localisation : Dans l’univers de métamatière

MessageSujet: Re: 8 Directions du personnage. + vidéo inclus de mon probleme   Dim 18 Sep 2016 - 12:35

Code:
if (keyboard_check(vk_right)) {
    if (keyboard_check(vk_up)) {
        dir = 9
        mvt = true
        // déplace le perso de (5, -5)
    } else if (keyboard_check(vk_down)) {
        dir = 3
        mvt = true
        // déplace le perso de (5, 5)
    } else {
        dir = 6
        mvt = true
        // déplace le perso de (5, 0)
    }
}
// met mvt = false si aucune touche de mouvement n'est appuyée
La variable dir donne la direction du personnage (j'ai choisi les valeurs sur le pavé numérique, mais tu peux choisir autre chose, par exemple avec 0 = droite,1 = HD, 2 = haut etc, tu peux facilement faire tourner le personnage sur lui-même). Ailleurs dans le code, tu fais ça :
Code:
if (dir == 6) {
    if (mvt)
        sprite_index = spr_mvt_droite
    else
        sprite_index = spr_droite
}
// etc

_________________
Revenir en haut Aller en bas
mi7
Débutant


Messages : 13

MessageSujet: Re: 8 Directions du personnage. + vidéo inclus de mon probleme   Dim 18 Sep 2016 - 21:36

Donc merci de ta réponse j'aurais quelques questions,

premièrement les lignes de code que tu ma donner faut-il que je le rajoute au code que j'avais sur mon personnage?

Code:

if keyboard_check(ord("W")) && place_free(x,y-5) {y-=5}
if keyboard_check(ord("S")) && place_free(x,y+5) {y+=5}
if keyboard_check(ord("A")) && place_free(x-5,y) {x-=5}
if keyboard_check(ord("D")) && place_free(x+5,y) {x+=5}

j'ai fait le test avec et sens mais je vois pas de changement et je m'explique parce que j'ai rencontré une erreur ligne 18 if (dir == 6) {  puis aussi j'ai dû modifier légèrement le code que tu m'as donné pour qu'il soit compatible avec WASD. j'ai rajouté aussi à la ligne 10 } else if keyboard_check(ord("A")){  je crois qu'il était manquant dans le code que tu m'as donné?

Code:

if keyboard_check(ord("D")) {
    if keyboard_check(ord("W")) {
        dir = 9
        mvt = true
        // déplace le perso de (5, -5)
    } else if keyboard_check(ord("S")) {
        dir = 3
        mvt = true
        // déplace le perso de (5, 5)
    } else if keyboard_check(ord("A")){
        dir = 6
        mvt = true
        // déplace le perso de (5, 0)
    }
}
// met mvt = false si aucune touche de mouvement n'est appuyée

if (dir == 6) {
    if (mvt)
        sprite_index = Spr_sam_D
    else
        sprite_index = Spr_sam_stop_D
}
// etc
À l'endroit où tu as écrit ECT.... je vais devoir répéter l'opération 8 fois? pour les 8 directions de mon sprite si je bien compris?


donc quel est le probleme de la  ligne 18 erreur object15_StepNormalEvent_1 (line 18) - if (dir == 6) {  en gros sa active pas la variable dir ?


Désoler de bombarder au temps de question c'est juste que je veux bien comprendre ce que je fais
Revenir en haut Aller en bas
Craki
Utilisateur confirmé: Rang ****
avatar

Messages : 1469
Localisation : Dans l’univers de métamatière

MessageSujet: Re: 8 Directions du personnage. + vidéo inclus de mon probleme   Lun 19 Sep 2016 - 21:35

Evidemment, il faut que tu adaptes le code à ce que tu as fait si tu te sers de ord. Il ne manque rien à la ligne 10. Les conditions sont conçues comme tel :
Code:
si DROITE est appuyé alors
    si HAUT est appuyé alors
        // haut-droite
    sinon si BAS est appuyé alors
        // bas-droite
    sinon
        // droite
Si tu n'as pas déclaré les variables dir et mvt dans l'événement Create, c'est normal que tu aies une erreur. Pour finir, oui, là où j'ai mis etc, ça veut dire que le reste se traite de la même façon.

_________________
Revenir en haut Aller en bas
mi7
Débutant


Messages : 13

MessageSujet: Re: 8 Directions du personnage. + vidéo inclus de mon probleme   Lun 26 Sep 2016 - 2:36

Bonjours Craki un gros merci de ta réponse je tiens à te dire que sa grandement avancé a petits pas de fourmis, j'ai travaillé là-dessus aujourd'hui j'ai passé un bon 5h30 à travailler et comprendre ce que tu me disais rouge

donc j'ai posté une nouvelle vidéo qui montre les problèmes que je suis rendu.  : https://www.youtube.com/watch?v=YwX-jSVisXo

je vais tout de même faire un résumer ici :

Donc premièrement quand je lance le jeu mon personnage est déjà en mouvement dans une direction en bas à gauche... pourtant mon Obj_sam1 quand je regarde le sprite il a bien le visage vert le bas et est en mode Stop. (tu vas pouvoir le voir dans la vidéo)


deuxièmement j'ai tenté d'ajouter une direction verre le haut et le bas pour ajouter mes deux derniers sprites pour que le 8 directions soient parfait mais j'arrive toujours avec une erreur sur la ligne que je crée sa doit être parce que je mis prend mal.

puis comme je disais à la fin de la vidéo, j'ai fait quelque test avec (mvt) = false je l’attribue toujours au sprite qui a le mot STOP pour justement qu'il ne bouge plus quand on relâche les touches en question.

bref il sera plus simple de voir la vidéo pour mieux comprendre....

je laisse le code de mon Obj_sam1  ici.

Code:
if keyboard_check(ord("W")) && place_free(x,y-5) {y-=5}
if keyboard_check(ord("S")) && place_free(x,y+5) {y+=5}
if keyboard_check(ord("A")) && place_free(x-5,y) {x-=5}
if keyboard_check(ord("D")) && place_free(x+5,y) {x+=5}


if keyboard_check(ord("D")) {
    if keyboard_check(ord("W")) {
        dir = 9
        mvt = true
        // déplace le perso de (5, -5)
    } else if keyboard_check(ord("S")) {
        dir = 3
        mvt = true
        // déplace le perso de (5, 5)
    } else  {
        dir = 6
        mvt = true
        // déplace le perso de (5, 0)
    }
}
// met mvt = false si aucune touche de mouvement n'est appuyée

if (dir == 9) {
    if (mvt)
        sprite_index = Spr_sam_H_D
    else
        sprite_index = Spr_sam_stop_H_D
}

if (dir == 3) {
    if (mvt)
        sprite_index = Spr_sam_B_D
    else
         sprite_index = Spr_sam_stop_B_D
}

if (dir == 6) {
    if (mvt)
        sprite_index = Spr_sam_D
    else
       sprite_index = Spr_sam_stop_D
}


if keyboard_check(ord("A")) {
    if keyboard_check(ord("W")) {
        dir = 7
        mvt = true
        // déplace le perso de (5, -5)
    } else if keyboard_check(ord("S")) {
        dir = 1
        mvt = true
        // déplace le perso de (5, 5)
    } else  {
        dir = 4
        mvt = true
        // déplace le perso de (5, 0)
    }
}
// met mvt = false si aucune touche de mouvement n'est appuyée

if (dir == 7) {
    if (mvt)
        sprite_index = Spr_sam_H_G
    else
        sprite_index = Spr_sam_stop_H_G
}

if (dir == 1) {
    if (mvt)
        sprite_index = Spr_sam_B_G
    else  
         sprite_index = Spr_sam_stop_B_G
}

if (dir == 4) {
    if (mvt)
        sprite_index = Spr_sam_G
    else
         sprite_index = Spr_sam_stop_G
Revenir en haut Aller en bas
Craki
Utilisateur confirmé: Rang ****
avatar

Messages : 1469
Localisation : Dans l’univers de métamatière

MessageSujet: Re: 8 Directions du personnage. + vidéo inclus de mon probleme   Ven 7 Oct 2016 - 17:31

Les deux problèmes sont simples.

  1. Tu initialises mvt à 1, ça veut bien dire que le personnage commence avec son animation de mouvement (faut l'initialiser à false). Quant à dir, si tu veux qu'il regarde vers le bas, la valeur est 2 (j'ai choisi les directions à partir du pavé numérique). Ensuite, j'ai dit dans un commentaire qu'il fallait mettre mvt à false si aucune touche n'était appuyée. Or tu ne l'as pas fait.
  2. Les directions pour lesquelles tu calcules dir sont haut-droite, droite, bas-droite, haut-gauche, gauche et bas-gauche, mais tu n'as rien mis pour haut et bas. Tu as donc deux conditions supplémentaires à mettre (je te conseille de les mettre avant les tests que tu as déjà faits).

_________________
Revenir en haut Aller en bas
mi7
Débutant


Messages : 13

MessageSujet: Re: 8 Directions du personnage. + vidéo inclus de mon probleme   Ven 7 Oct 2016 - 23:09

j'ai mis la variable a false et dir = 2 puis le personnage reste sur place et regarde au bon endroit au lancement du jeu c'est PERFECT!

http://i97.servimg.com/u/f97/15/31/23/06/111.jpg

la réponse que tu mas donner est semblable à ce que tu as écrit un peu plus haut,

c'est surement moi qui c'est mal expliquer parce que je comprends pas où je dois écrire mvt = false j'ai testé deux façons...

pour ce qui est du mvt j'ai fait des tests et ça ne fonctionne pas

exemple

Code:


if keyboard_check(ord("W")) && place_free(x,y-5) {y-=5}
if keyboard_check(ord("S")) && place_free(x,y+5) {y+=5}
if keyboard_check(ord("A")) && place_free(x-5,y) {x-=5}
if keyboard_check(ord("D")) && place_free(x+5,y) {x+=5}


if keyboard_check(ord("D")) {
    if keyboard_check(ord("W")) {
        dir = 9
        mvt = true
        // déplace le perso de (5, -5)
    } else if keyboard_check(ord("S")) {
        dir = 3
        mvt = true
        // déplace le perso de (5, 5)
    } else  {
        dir = 6
        mvt = true
        // déplace le perso de (5, 0)
    }
}
// met mvt = false si aucune touche de mouvement n'est appuyée

if (dir == 9) {
    if (mvt = false)
        sprite_index = Spr_sam_H_D
    else
        sprite_index = Spr_sam_stop_H_D
}

if (dir == 3) {
    if (mvt = false )
        sprite_index = Spr_sam_B_D
    else
        sprite_index = Spr_sam_stop_B_D
}

if (dir == 6) {
    if (mvt = false )
        sprite_index = Spr_sam_D
    else
      sprite_index = Spr_sam_stop_D
}

exemple N2

Code:


if keyboard_check(ord("W")) && place_free(x,y-5) {y-=5}
if keyboard_check(ord("S")) && place_free(x,y+5) {y+=5}
if keyboard_check(ord("A")) && place_free(x-5,y) {x-=5}
if keyboard_check(ord("D")) && place_free(x+5,y) {x+=5}


if keyboard_check(ord("D")) {
    if keyboard_check(ord("W")) {
        dir = 9
        mvt = true
        // déplace le perso de (5, -5)
    } else if keyboard_check(ord("S")) {
        dir = 3
        mvt = true
        // déplace le perso de (5, 5)
    } else  {
        dir = 6
        mvt = true
        // déplace le perso de (5, 0)
    }
}
// met mvt = false si aucune touche de mouvement n'est appuyée

if (dir == 9) {
    if (mvt)
        sprite_index = Spr_sam_H_D
    else mvt = false
        sprite_index = Spr_sam_stop_H_D
}

if (dir == 3) {
    if (mvt )
        sprite_index = Spr_sam_B_D
    else  mvt = false
        sprite_index = Spr_sam_stop_B_D
}

if (dir == 6) {
    if (mvt )
        sprite_index = Spr_sam_D
    else mvt = false
      sprite_index = Spr_sam_stop_D
}

dans les deux cas le personnage était toujours sans animation dans c'est déplacement puis j'ai même pris la peine de changer mes deux sprites d'endroit dans section If et Else.


Dernière petit chose au niveau des directions je savais quel étai manquante je ne sais pas comment mis prendre pour le coder je suis confus au niveau des touches que je dois écrire au début du code... je sais que dir = 8 le sprite va avancer verre l'avant ( j'ai compris le système du pad Numérique Smile ) ce qui me confus c'Est ceci :

Code:


if keyboard_check(ord("D")) {      [color=#ff0000] //  Quelle touche que je dois attribuer pour que sa sois conforme?  W? [/color]           
    if keyboard_check(ord("W")) {  //  [color=#ff0000]ici même chose je suis confus [/color]
        dir = 9                  // ici je vais laisser dir = 9  pour que le personnage avance en haut a droit
        mvt = true
        // déplace le perso de (5, -5)
    } else if keyboard_check(ord("S")) {  [color=#ff0000] // même chose ici quel touche je dois attribuer est-ce que je le laisse comme ça?[/color]
        dir = 3                // ici je vais insérer dir = 7 pour que le personnage avance en haut a gauche
        mvt = true
        // déplace le perso de (5, 5)
    } else  {
        dir = 6                // ici je vais insérer  dir = 8  pour que le personnage avance verre le haut.
        mvt = true
        // déplace le perso de (5, 0)
    }
}

j’espère que j'ai été plus claire dans mes dires je veux pas non plus te faire répéter les mêmes choses alors que j'avais déjà lu tes messages plus haut, c'est que de base je ne code pas donc pour un codeur sa doit être super simple a comprendre mais de mon côtés c'est plus dur clinoeuil


Revenir en haut Aller en bas
Craki
Utilisateur confirmé: Rang ****
avatar

Messages : 1469
Localisation : Dans l’univers de métamatière

MessageSujet: Re: 8 Directions du personnage. + vidéo inclus de mon probleme   Dim 9 Oct 2016 - 14:46

Tes deux codes ne marchent pas parce que tu te sers de = pour comparer deux objets.

  • x = a fait en sorte que x vaille a ;
  • x == a vaut true si x vaut a et false si x est différent de a

Si tu mets mvt = false dans ta condition, mvt est mis à false et la condition n'est pas vérifiée. Il faut faire if (mvt == false) ou encore if (!mvt) (l'opérateur ! inverse la valeur d'un booléen et se lit "non"). Ensuite, il faut retirer tes mvt = false après les else (tester une condition après un else ne sert à rien et fout même tout en l'air dans ton cas).

Pour vérifier les directions haut et bas, pas besoin de les associer à gauche et droite, les diagonales sont déjà traitées. Il suffit donc de faire :
Code:
Si haut est appuyé
    mvt = true
    dir = 8
Sinon si bas est appuyé
    mvt = true
    dir = 2

// les autres directions
Il faut mettre ça avant les autres directions, sinon les diagonales mettront dir à 2 ou 8. Enfin, pour mettre mvt à false, il suffit de le mettre dans le même script avant tous ces tests.

_________________
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

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

MessageSujet: Re: 8 Directions du personnage. + vidéo inclus de mon probleme   Lun 10 Oct 2016 - 7:35

En fait GM fait pas de distinction entre = et == dans une expression booléenne...

_________________
                 
Revenir en haut Aller en bas
mi7
Débutant


Messages : 13

MessageSujet: Re: 8 Directions du personnage. + vidéo inclus de mon probleme   Lun 31 Oct 2016 - 0:23

Me revoilà j'ai été pas mal occupÉ c'est temps si je viens t'informer pour ce qui est des directions tout va A1 j'ai implanté les touche haut et Bas. puis pour ce qui est des (! mvt) ça ne fonctionne pas

Code:


if keyboard_check(ord("W")) && place_free(x,y-5) {y-=5}
if keyboard_check(ord("S")) && place_free(x,y+5) {y+=5}
if keyboard_check(ord("A")) && place_free(x-5,y) {x-=5}
if keyboard_check(ord("D")) && place_free(x+5,y) {x+=5}




if keyboard_check(ord("W")) {
 dir = 8
 mvt = true
} else if  keyboard_check(ord("S")) {
 dir = 2
 mvt = true
 }


if (dir == 8) {
    if (!mvt)
        sprite_index = Spr_sam_H
    else
        sprite_index = Spr_sam_stop_H
}

if (dir == 2) {
    if  (!mvt)
        sprite_index = Spr_sam_B
    else
        sprite_index = Spr_sam_stop_B
}

 
   

if keyboard_check(ord("D")) {
    if keyboard_check(ord("W")) {
        dir = 9
        mvt = true
        // déplace le perso de (5, -5)
    } else if keyboard_check(ord("S")) {
        dir = 3
        mvt = true
        // déplace le perso de (5, 5)
    } else  {
        dir = 6
        mvt = true
        // déplace le perso de (5, 0)
    }
}
// met mvt = false si aucune touche de mouvement n'est appuyée

if (dir == 9) {
    if (!mvt)
        sprite_index = Spr_sam_H_D
    else
        sprite_index = Spr_sam_stop_H_D
}

if (dir == 3) {
    if (!mvt)
        sprite_index = Spr_sam_B_D
    else
        sprite_index = Spr_sam_stop_B_D
}

if (dir == 6) {
    if (!mvt )
        sprite_index = Spr_sam_D
    else
      sprite_index = Spr_sam_stop_D
}




if keyboard_check(ord("A")) {
    if keyboard_check(ord("W")) {
        dir = 7
        mvt = true
        // déplace le perso de (5, -5)
    } else if keyboard_check(ord("S")) {
        dir = 1
        mvt = true
        // déplace le perso de (5, 5)
    } else  {
        dir = 4
        mvt = true
        // déplace le perso de (5, 0)
    }
}
// met mvt = false si aucune touche de mouvement n'est appuyée

if (dir == 7) {
    if (!mvt  )
        sprite_index = Spr_sam_H_G
    else
        sprite_index = Spr_sam_stop_H_G
}

if (dir == 1) {
    if (!mvt)
        sprite_index = Spr_sam_B_G
    else
        sprite_index = Spr_sam_stop_B_G
}

if (dir == 4) {
    if (!mvt )
        sprite_index = Spr_sam_G
    else
        sprite_index = Spr_sam_stop_G
}


Le personnage  a ce moment la il perd tout son animation il ne marche plus,

est-ce qu'il serait plus simple d'intégrer une fonction keyboard_check_released(ord('W'))


Dernière édition par mi7 le Dim 6 Nov 2016 - 21:30, édité 2 fois
Revenir en haut Aller en bas
Craki
Utilisateur confirmé: Rang ****
avatar

Messages : 1469
Localisation : Dans l’univers de métamatière

MessageSujet: Re: 8 Directions du personnage. + vidéo inclus de mon probleme   Dim 6 Nov 2016 - 15:45

Moi je les vois tout de suite les problèmes :

  1. Dans la condition haut il manque un 8), ce qui fout en l'air tout le code.
  2. Tu mélanges les conditions d'appui de touche avec celles des directions, alors que celles des directions devraient toutes être à la fin.
  3. Tu n'as toujours pas mis mvt à false avant la série de conditions.

_________________
Revenir en haut Aller en bas
mi7
Débutant


Messages : 13

MessageSujet: Re: 8 Directions du personnage. + vidéo inclus de mon probleme   Dim 6 Nov 2016 - 22:09

Craki a écrit:
Moi je les vois tout de suite les problèmes :

  1. Dans la condition haut il manque un Cool, ce qui fout en l'air tout le code.

    Je n'avais pas re vérifier mon code avant de le poster mais tout est correct pour cela depuis sa création. dsl

  2. Tu mélanges les conditions d'appui de touche avec celles des directions, alors que celles des directions devraient toutes être à la fin.

    Je comprends à 50% je sais que les touchent d'appuis sont W, A, S, D et que les directions sont 123456789, ensuite je vois pas trop comment mis prendre.

    Pourrais-tu me montrer un exemple sur ma première partie de mon code que je vois et comprends mieux.

    Code:


    if keyboard_check(ord("W")) {
     dir = 8
     mvt = true
    } else if  keyboard_check(ord("S")) {
     dir = 2
     mvt = true
     }


    if (dir ==  {
        if (!mvt)
            sprite_index = Spr_sam_H
        else
             sprite_index = Spr_sam_stop_H
    }

    if (dir == 2) {
        if  (!mvt)
            sprite_index = Spr_sam_B
        else
            sprite_index = Spr_sam_stop_B
    }


  3. Tu n'as toujours pas mis mvt à false avant la série de conditions.

    j'ai laissé deux notes dans le code pour être sûr que je suis bien.

    Code:


    if keyboard_check(ord("W")) {
     dir = 8
     mvt = true                                          ////// est-ce que tu parle de ceux ci ?
    } else if  keyboard_check(ord("S")) {
     dir = 2
     mvt = true
     }


    if (dir ==  {
        if (!mvt) /// parce que ici comme tu avais écrit plus haut (peut-être j'ai mal compris) je devais insérer if (!mvt) ou (mvt == false) ce qui revenait au même?
            sprite_index = Spr_sam_H
        else
             sprite_index = Spr_sam_stop_H
    }

    if (dir == 2) {
        if  (!mvt)
            sprite_index = Spr_sam_B
        else
            sprite_index = Spr_sam_stop_B
    }





j'avais une question à propos des variables que j'avais créés dans create-actions : quand je mais une lettre majuscule à False à ma varible mvt, sa fait une erreur au lancement du jeu, est-ce que c'est normal ou bien les variables qui sont dans create faut qu'il soit en minuscule?
Revenir en haut Aller en bas
Craki
Utilisateur confirmé: Rang ****
avatar

Messages : 1469
Localisation : Dans l’univers de métamatière

MessageSujet: Re: 8 Directions du personnage. + vidéo inclus de mon probleme   Mar 8 Nov 2016 - 9:26

J'ai repris un code précédent (peut-être pas le plus récent) et je l'ai annoté :
Code:
if keyboard_check(ord("W")) && place_free(x,y-5) {y-=5}
if keyboard_check(ord("S")) && place_free(x,y+5) {y+=5}
if keyboard_check(ord("A")) && place_free(x-5,y) {x-=5}
if keyboard_check(ord("D")) && place_free(x+5,y) {x+=5}

mvt = false // 1

// 2
if keyboard_check(ord("W")) {
 dir = 8
 mvt = true
} else if  keyboard_check(ord("S")) {
 dir = 2
 mvt = true
}
if keyboard_check(ord("D")) {
    if keyboard_check(ord("W")) {
        dir = 9
        mvt = true
        // déplace le perso de (5, -5)
    } else if keyboard_check(ord("S")) {
        dir = 3
        mvt = true
        // déplace le perso de (5, 5)
    } else  {
        dir = 6
        mvt = true
        // déplace le perso de (5, 0)
    }
}
if keyboard_check(ord("A")) {
    if keyboard_check(ord("W")) {
        dir = 7
        mvt = true
        // déplace le perso de (5, -5)
    } else if keyboard_check(ord("S")) {
        dir = 1
        mvt = true
        // déplace le perso de (5, 5)
    } else  {
        dir = 4
        mvt = true
        // déplace le perso de (5, 0)
    }
}

// 3
if (dir == 1) {
    if (!mvt)
        sprite_index = Spr_sam_B_G
    else
        sprite_index = Spr_sam_stop_B_G
}
if (dir == 2) {
    if  (!mvt)
        sprite_index = Spr_sam_B
    else
        sprite_index = Spr_sam_stop_B
}
if (dir == 3) {
    if (!mvt)
        sprite_index = Spr_sam_B_D
    else
        sprite_index = Spr_sam_stop_B_D
}
if (dir == 4) {
    if (!mvt )
        sprite_index = Spr_sam_G
    else
        sprite_index = Spr_sam_stop_G
}
if (dir == 6) {
    if (!mvt )
        sprite_index = Spr_sam_D
    else
      sprite_index = Spr_sam_stop_D
}
if (dir == 7) {
    if (!mvt  )
        sprite_index = Spr_sam_H_G
    else
        sprite_index = Spr_sam_stop_H_G
}
if (dir == 8) {
    if (!mvt)
        sprite_index = Spr_sam_H
    else
        sprite_index = Spr_sam_stop_H
}
if (dir == 9) {
    if (!mvt)
        sprite_index = Spr_sam_H_D
    else
        sprite_index = Spr_sam_stop_H_D
}

Le personnage  a ce moment la il perd tout son animation il ne marche plus,

est-ce qu'il serait plus simple d'intégrer une fonction keyboard_check_released(ord('W'))[/quote]
La première série de conditions servent à mettre mvt à true si une touche est appuyée. Si tu ne mets pas mvt à false au début du step, alors il restera toujours à true. Ensuite, on évite d'utiliser dir tant qu'on n'est pas sûr qu'elle contienne la bonne valeur, ce qui n'est garanti qu'à la fin de la première série de conditions d'où le fait de mettre la deuxième série après la première.

Quasiment tous les langages de programmation font la différence entre les minuscules et majuscules. Et quasiment tous les langages ont leurs mots-clefs en minuscules.

_________________
Revenir en haut Aller en bas
mi7
Débutant


Messages : 13

MessageSujet: Re: 8 Directions du personnage. + vidéo inclus de mon probleme   Lun 14 Nov 2016 - 5:58

wow génial c'est fonctionnel j'ai changé mes Sprite et ça fonctionne. c'Est beaucoup mieux ordonné de cette façon avoir su que c'était juste ça mvt = false je pensais pas qu'il devais être en haut du code.

Code:


if keyboard_check(ord("W")) && place_free(x,y-5) {y-=5}
if keyboard_check(ord("S")) && place_free(x,y+5) {y+=5}
if keyboard_check(ord("A")) && place_free(x-5,y) {x-=5}
if keyboard_check(ord("D")) && place_free(x+5,y) {x+=5}

mvt = false // 1

// 2
if keyboard_check(ord("W")) {
 dir = 8
 mvt = true
} else if  keyboard_check(ord("S")) {
 dir = 2
 mvt = true
}
if keyboard_check(ord("D")) {
    if keyboard_check(ord("W")) {
        dir = 9
        mvt = true
        // déplace le perso de (5, -5)
    } else if keyboard_check(ord("S")) {
        dir = 3
        mvt = true
        // déplace le perso de (5, 5)
    } else  {
        dir = 6
        mvt = true
        // déplace le perso de (5, 0)
    }
}
if keyboard_check(ord("A")) {
    if keyboard_check(ord("W")) {
        dir = 7
        mvt = true
        // déplace le perso de (5, -5)
    } else if keyboard_check(ord("S")) {
        dir = 1
        mvt = true
        // déplace le perso de (5, 5)
    } else  {
        dir = 4
        mvt = true
        // déplace le perso de (5, 0)
    }
}

// 3
if (dir == 1) {
    if (!mvt)
        sprite_index = Spr_sam_stop_B_G
    else
        sprite_index = Spr_sam_B_G
}
if (dir == 2) {
    if  (!mvt)
        sprite_index = Spr_sam_stop_B
    else
        sprite_index = Spr_sam_B
}
if (dir == 3) {
    if (!mvt)
        sprite_index = Spr_sam_stop_B_D
    else
        sprite_index = Spr_sam_B_D
}
if (dir == 4) {
    if (!mvt )
        sprite_index = Spr_sam_stop_G
    else
        sprite_index = Spr_sam_G
}
if (dir == 6) {
    if (!mvt )
        sprite_index = Spr_sam_stop_D
    else
      sprite_index = Spr_sam_D
}
if (dir == 7) {
    if (!mvt  )
        sprite_index = Spr_sam_stop_H_G
    else
        sprite_index = Spr_sam_H_G
}
if (dir ==  {
    if (!mvt)
        sprite_index = Spr_sam_stop_H
    else
        sprite_index = Spr_sam_H
}
if (dir == 9) {
    if (!mvt)
        sprite_index = Spr_sam_stop_H_D
    else
        sprite_index = Spr_sam_H_D
}


je suis super content après 2 mois voila qui est fait un gros merci, j'aimerais juste finalisé une dernière petite chose si tu veux bien m'aider.

j'aimerais sa que mon personnage soit en mesure de regarder a l'endroit que je pointe le curseur de la souris.

Exemple, si mon personnage va verre le haut et que mon curseur de ma souris est verre le bas j'aimerais que mon sprite marche à reculons.

j'avais testé image_angle = point_direction (x,y,mouse_x,mouse_y); le résulta étais comment dire, juste hilarant lol


PS : j'ai été dans un centre spécialisé dans les livres puis-je n'ai absolument rien trouvé comme livre pour étudier le GMS, j'aimerais avoir un bon livre version papier pour étudier le langage en version FR si possible est-ce que ça existe?
Revenir en haut Aller en bas
Mass
*Excellent utilisateur*
avatar

Messages : 3325
Localisation : Dans une canonnière wookie.
Projet Actuel :
Things


MessageSujet: Re: 8 Directions du personnage. + vidéo inclus de mon probleme   Lun 14 Nov 2016 - 6:47

Je suis pas certain que tu trouves un bouquin, le GML est un langage de niche. L'aide en français c'est un bon début, même si elle date un peu les fonctions les plus importantes ont peu ou pas changé.

image_angle = direction permet de faire tourner un sprite (mouvement de rotation) en fonction d'un angle.
Vu que tu parles de 8 directions, je suppose que tu as un perso en vue du dessus. Donc ce que tu dois faire, c'est connaître celle parmi ces 8 directions où le curseur pointe.
Donc faut faire un truc du genre :
Code:
floor( (point_direction(x, y, mouse_x, mouse_y) / 360) * 8 );
Ca te renverra un chiffre entre 0 et 7 qui t'indiquera dans quelle direction est le curseur par rapport au personnage, et à toi d'adapter ton code ensuite pour en tenir compte Wink

_________________
Revenir en haut Aller en bas
http://madmass.mype.fr/CBNA/
Contenu sponsorisé




MessageSujet: Re: 8 Directions du personnage. + vidéo inclus de mon probleme   

Revenir en haut Aller en bas
 
8 Directions du personnage. + vidéo inclus de mon probleme
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» vidéo sur la normandie
» Nouvelles vidéos JPMBB
» probleme de sommeil
» Jeux vidéos - Quels consoles avez vous
» Personnage racine

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: