Salut à tous !
Le premier épisode de notre série de tuto « Créer son jeu de plateforme avec Game Maker Studio 2 » est enfin sorti.
Je dois avouer qu’il m’a pris beaucoup de temps à tourner, car j’ai essayer de simplifier au maximum mes explications afin qu’elles puissent être comprises par tous.
A ce propos n’hésitez pas à me dire dans les commentaires si tout à été clair ou s’il vous reste des questions 🙂
Vous pouvez dès à présent cliquer sur l’image pour être redirigé sur la vidéo, ou continuer de lire pour avoir plus de précisions sur les notions abordées 🙂
On voit donc dans ce premier tutorial la partie programmation qui nous permet de gérer les déplacements du personnage, ainsi que les collisions avec les murs.
Je sais que beaucoup prennent peur lorsqu’il s’agit de code, mais comme je l’ai dit plus haut j’ai fais en sorte que tout soit au maximum compréhensible. Regardez donc la vidéo jusqu’au bout, ça sera un bon moyen pour commencer à apprendre 🙂 Je vous rappelle que la programmation est le seul moyen de pouvoir être totalement libre dans la création de vos jeux. Avec du code vous pouvez TOUT faire !
On aborde donc dans cette vidéo plusieurs aspects du Game Maker Langage, tels que les variables, les fonctions ou encore les conditions if et while.
Ce qu’il faut retenir de tout ceci :
- Une variable est une donnée (une information) possédant un nom et correspondant à une valeur.
Par exemple : var move (notre variable possédant le nom move) = press_right – press_left;
On aurait très bien pu également lui assigner la valeur 4 ! La variable walkspd par exemple, est égale à 4 dans notre vidéo. Tout dépend de ce que vous comptez faire de votre variable par la suite.
- Lorsque l’on termine d’écrire une ligne de code, celle-ci doit se fermer avec le symbole » ; « , à l’exception des conditions if et while.
Par exemple : hspd = 0;
- L’instruction if permet d’introduire une condition, et s’écrit toujours de la manière suivant avec les opérateurs : if (notre condition) { ce qu’il faut faire si la condition est vraie}
Par exemple : Si –> if (place_meeting(x,y,oMur)) ALORS IL FAUT –> { hspd = 0; }
- L’instruction while fonctionne de la même manière, mais signifie quant à elle « Tant que… »
Par exemple : Tant que l’objet Mur ne touche pas le joueur : while (place_meeting(x,y,oMur)) { }
- La fonction « place_meeting (x,y, objet à vérifier) » permet de vérifier si un objet entre en collision avec un autre.
- L’axe verticale est inversé dans Game Maker
C’est tout pour ce premier tuto, j’espère vraiment qu’il vous plaira et qu’il vous apprendra des choses.
N’oubliez pas d’aller vous abonner à la chaîne Youtube c’est le meilleur soutient que vous puissiez me faire 🙂
A bientôt pour la suite !
15 commentaires
Je ne comprends pas trop l’intérêt de mettre une boucle While dans le If sachant que le jeu fonctionnerai aussi bien sans ?
Tout à fait ! Le while est simplement là pour gérer la collision au pixel près, mais c’est effectivement du détail 😉 Je l’ai ajouté ici car cela peut être utile dans certaines situations ou des jeux plus complexes, alors je me suis dis autant le montrer tout de suite 🙂
Très bon tuto, très agréable à suivre, très compréhensible, merci beaucoup!
Merci à toi de me suivre ! 🙂
Quand je lance le jeu sa me donne
________________________________________
############################################################################################
FATAL ERROR in
action number 1
of Step Event0
for object oPlayer:
Variable oPlayer.walhspd(100009, -2147483648) not set before reading it.
at gml_Object_oPlayer_Step_0 (line 11) – hspd = move * walhspd;
############################################################################################
——————————————————————————————–
stack frame is
gml_Object_oPlayer_Step_0 (line 11)
salut j’ai un petit problème quand je lance sur gamemaker 2 mon jeu il affiche juste un écran noir et c tout comment faire pour palier a ça
Hello Jérémie ! Cela doit être dû au fait que tu n’as pas activé ton viewport. Lorsque tu es dans ton éditeur de room, il faut que tu coche la case « enable viewports » dans l’onglet en bas à droite « Properties – Room ». Il te suffit ensuite de sélectionner un viewport, le premier par exemple « viewport 0 », et de cocher la case « visible ». En espérant que cela t’aide 😉
merci
hey quand je lance le programme le « cube » ce pose sur le sole normalement puis se teleporte sous le sole et y reste attacher sans tomber
Hello, j’espere que ça va ,
j’ai essayé ton tuto,
et j’ai un petit soucis, si vous pouvez m’aider,
Quand j’appuis sur Espace , le carré ( player ) ne saute pas , j’ai essayé de changer
press_right = keyboard_check(vk_right);
press_left = keyboard_check(vk_left);
press_jump = keyboard_check(vk_space); (j’ai enlevé le mot pressed ) et cela persiste
merci infiniment pour votre tuto
Salut j’aimerais savoir pourquoi lorsque je tape walkspd pu encore hspd cela me met un panneau attention ⚠ avec écrit « variable représenter une seule fois » merci d’avance
C’est juste qu’il détecte que tu as déclarer une variable, mais tu ne l’utilise nul part.
Donc il fait un warning, tu verras que quand tu l’utiliseras dans « Step » par exemple, tu n’auras plus cette erreur.
Bonjour,
J’ai suivi les instructions à la lettre mais mon joueur s’enfonce dans le mur au moment d’atterrir et on ne peut plus le bouger. Voici le programme:
// Attributs du personnage
hspd = 0;
vspd = 0;
grav = 0.5;
walkspd = 4;
// Contrôle du personnage (récupération des touches du clavier)
press_right = keyboard_check(vk_right);
press_left = keyboard_check(vk_left);
press_jump = keyboard_check_pressed(vk_space);
// Mouvements du personnage
var move = press_right – press_left;
hspd = move * walkspd;
vspd = vspd + grav;
if (place_meeting(x, y + 1, oMur)) && (press_jump)
{
vspd = -5;
}
// Collisions horizontales
if (place_meeting(x + hspd, y, oMur))
{
while (!place_meeting(x + sign(hspd), y, oMur))
{
x = x + sign(hspd)
}
hspd = 0;
}
x = x + hspd;
// Collisions verticales
if (place_meeting(x + vspd, y, oMur))
{
while (!place_meeting(x, y + sign(vspd), oMur))
{
y = y + sign(vspd)
}
vspd = 0;
}
y = y + vspd;
Salut. J’espère que tu a trouvé ton problème depuis… Mais dans le doute :
Relis bien ton code j’ai vu au moins deux lignes ou il manque un ; à la fin. Ça ça ne pardonne pas.
De plus tu a un caractère spéciale sur la ligne suivante v
var move = press_right – press_left;
Le moins n’est pas le bon caractère ce n’est pas le moins que gamemaker peut lire.
Il faut que tu mette un moins en appuyant sur la touche 6.
Bonjour merci beaucoup pour ton excellent Tuto.
Juste une petite question pour mieux comprendre :
Pourquoi créé tu t’es propres variables pour la direction ? Comme hspd et vspd par exemple ?
Parce que j’ai vu que Gamemaker possède déjà des variables hspeed et vspeed. Qu’est-ce que cela change ?
Merci par avance. Et Bonne continuation.