Avant de démarrer, regarde le GPS du Plateformer.
Pour commencer, tu peux suivre ce tuto pour créer la base de ton jeu : la gravité !!
Regarde le projet suivant pour voir la différence entre chacune des versions !
Attention, pour pouvoir faire la dernière version, il faut d’abord avoir créé les deux précédentes !!
Projets de gravité simple : https://scratch.mit.edu/projects/237968199/
La gravité, c’est le fait d’être tout le temps attiré vers le sol. Dans Scratch, cela veut dire que ton personnage va toujours être attiré vers le bas.
Qu’est ce que ça veut dire être attiré vers le bas dans Scratch ?
Cela veut dire que notre personnage doit tout le temps ajouter -1 à Y. Comme c’est Y qui gère les déplacements verticaux, et que le lutin descend quand on lui ajoute une valeur négative, on doit le faire descendre en permanence.
Donc, la base de notre gravité ressemble à ça :
Le « non Sol touché » permet de faire descendre le personnage QUE lorsqu’il n’a pas encore touché le sol, logique : on ne peut pas tomber lorsqu’on est sur le sol !
Maintenant, comment peut-on faire si on veut sauter ? Dans la vraie vie, qu’est ce qu’on doit faire pour sauter ?
Eh bien, la réponse à ça, c’est que d’abord on doit toucher le sol, ou une surface solide, et ensuite on saute vers le haut.
Dans Scratch, ça va être exactement la même chose ! On dira qu’on ne peut sauter QUE si on touche le sol, et ensuite on ajoute des Y au lutin pour qu’il saute !
On ajoute un « Si … Alors … Sinon » pour ne permettre le saut que lorsque le personnage touche le sol.
Si on veut pouvoir sauter tout le temps, il suffit d’enlever le Si … Sinon et de mettre 2 « Si … Alors » séparés.
On considère pour cette version que tu as lu et compris la version précédente de la Gravité simple 😉 Si tu as de l’expérience sur Scratch tu peux t’attaquer à celle-ci, mais il est indispensable que tu regardes la fiche gravité simple pour bien comprendre le principe.
Projets de gravité moyenne : https://scratch.mit.edu/projects/237968275
Le saut est fluide.
Maintenant, on va améliorer notre gravité pour qu’elle soit plus fluide et naturelle. Pour ça, on va devoir se servir de variables !
Mais tout d’abord, un petit point sur le fonctionnement réel de la gravité sur Terre (version ultra simplifiée pas de panique) :
La gravité est une force qui nous attire vers le centre de la Terre (donc vers le sol) en permanence. Si on lâche un objet en chute libre, cet objet va accélérer, et plus il tombera longtemps, plus il se déplacera rapidement, comme sur le schéma ci-contre !
A l’inverse, si on saute, on se donne une accélération vers le haut, et la gravité finit par annuler cette accélération (car on est attiré en permanence vers le sol, on le rappelle !). Donc lorsque l’accélération vers le haut de notre saut est annulée par la force de gravité, on retombe.
Notre but, c’est de reproduire ce comportement sur Scratch, et pour ça on va utiliser une variable pour mettre à jour le déplacement de notre lutin entre deux instants, comme sur le schéma avec les carrés gris à droite. La gravité étant une accélération constante sur Terre, elle fait que le lutin tombe de plus en plus vite instant après instant. La variable va donc nous servir à savoir si le lutin doit se déplacer de 1, 4 ou 15 pixels à chaque instant ! Plus ce nombre est grand, plus le lutin tombe vite !
Pour commencer, on va coder le fait que notre lutin tombe. Pour ça, on va ajouter -1 à son déplacement à chaque tour de la boucle « répéter indéfiniment », puis ajouter le déplacement à Y !
Le problème ici, c’est qu’on traverse le sol… La solution va être différente du script plus simple que nous avons écrit au dessus.
Comme on ajoute en permanence -1 à Y, on doit arrêter le lutin quand il touche le sol pour qu’il ne tombe plus. Et le moyen de faire ça, c’est de mettre la gravité à 0.
En effet, si la gravité est égale à 0, quand on ajouter la gravité à Y, eh bien le personnage ne tombera plus !
Et on peut également dire qu’on n’ajoutera -1 à Y QUE si on ne touche pas le sol, comme nous l’avions fait dans l’exemple précédent (cf. exemple ci-contre !).
Et enfin, on peut ajouter le script de saut, comme lors de l’exemple précédent, lorsque le lutin touche le sol. En effet, on ne peut sauter QUE si le lutin touche le sol !
Si on veut que le personnage puisse sauter à tout moment, il suffit de sortir le script de saut :
Voici le résumé étape par étape de ce script :
On considère pour cette version que tu as lu et compris les versions précédentes de la Gravité simple et avec variable 😉 Si tu as de l’expérience sur Scratch tu peux t’attaquer à celle-ci, mais il est indispensable que tu regardes les fiches gravité simple et gravité moyenne pour bien comprendre le principe.
Projets de gravité avancée : https://scratch.mit.edu/projects/237968963
Le saut est fluide et le personnage ne s’enfonce pas dans le sol.
Le premier gros changement de cette version, c’est que l’on va créer notre propre bloc Scratch. Pour cela, il faut aller dans la catégorie Ajouter blocs et cliquer sur Créer un bloc :
Une fois ceci fait, la fenêtre ci-contre va s’ouvrir. Je vous invite à nommer votre nouveau bloc Gravité.
Ensuite, cliquez sur Options, et cochez la case “Exécuter sans rafraichissement de l’écran”. C’est important, car cela permet à ce bloc de s’exécuter plus rapidement que la normale.
Cela va notamment nous permettre de sortir du sol instantanément lorsque nous ferons le script concerné plus bas.
Une fois ceci fait, les blocs suivants apparaîtront :
Le petit bloc Gravité permet de lancer le script que nous allons coder dans le gros bloc Gravité.
Commence donc par refaire le script de la Gravité moyenne (précédent tuto) dans ce gros bloc “Gravité”, et met le petit bloc Gravité dans un “répéter indéfiniment”.
A ce stade on a la même chose qu’à la fin du tuto sur la gravité moyenne, mais avec un bloc à part qui s’appelle « gravité ».
Maintenant qu’on a fait ça, il ne nous reste plus qu’à faire un script nous permettant de ne plus nous enfoncer dans le sol.
Si vous avez testé le tuto Gravité précédent, vous aurez remarqué que parfois, le personnage s’enfonce dans le sol à la réception de ses sauts.
Le script que nous allons écrire va nous permettre d’éviter ceci.
C’est un script tout simple ! On va dire qu’au moment où on touche le sol, Tant qu’on touche le sol, on va remonter 1 pixel par 1 pixel, ce qui va avoir pour effet de faire remonter le personnage jusqu’à la surface du sol !
Plus qu’à ajouter ceci à notre script déjà existant, et le tour est joué 🙂
Si on souhaite que le personnage puisse sauter même quand il est en l’air ça donne ça :
On exécute ce script dès qu’on touche le sol, car c’est là qu’on doit sortir de ce dernier. Si on le fait plus tard dans le code, ça ne marchera pas 😉
De plus, la sortie du sol se fait instantanément, car nous avons coché la case “Exécuter sans rafraichissement de l’écran” quand on a créé le bloc, rappelez vous 😉
Maintenant que la base de ton jeu est finie, tu vas pouvoir améliorer ton jeu en ajoutant plein de comportements ou d’effets !!
Voici une liste d’idées :
Pour savoir comment faire, rendez-vous sur la page Tuto Scratch !