Les bons tutos de Xavier : Comment faire un jeu de plateforme avec Scratch
3ème partie : Consolidation de la plateforme
(Ce tuto est une adaptation en français sur Scratch 3.0 du tuto de Griffpatch sur Youtube)
Une plateforme un peu plus complexe
Créons une nouvelle plateforme en dupliquant le premier costume du sprite qui la représente.
Ajoutez ensuite des éléments à cette nouvelle plateforme, comme suit :
Jouons avec cette nouvelle plateforme
Lorsqu’on joue avec cette nouvelle plateforme, on constate :
- que lorsqu’on est sous la barre bleue, on peut passer à travers en sautant, ce qui n’est pas une bonne chose.
- que lorsqu’on se dirige sur la barre rose, on se retrouve directement au sommet, ce qui n’est pas normal.
- que quand on va vers la gauche sur la barre montante, on monte avec, ce qui est bien.
Essayons de corriger le premier point : empêcher qu’on puisse passer à travers une barre en sautant.
I. Bloquer le passage à travers une barre se situant au-dessus de la tête du joueur
Si on regarde le code du nouveau bloc “Ajouter à y”, on se rappelle que lorsque le joueur touche une plateforme, on le déplace jusqu’à ce qu’il se retrouve au-dessus :
Mais dans le cas où le joueur touche la plateforme par en-dessous, il faudrait qu’il soit déplacé dans l’autre sens, pour se retrouver au-dessous.
Comment savoir si le joueur arrive sur une plateforme par en-dessous, ou par au-dessus ? En regardant la valeur de la vitesse. Si la vitesse est positive, le joueur se déplace vers le haut. Si la vitesse est négative, le joueur tombe.
Utilisons ce fait pour modifier notre code :
Si la vitesse du joueur est positive, on enlève 1 à y jusqu’à ce que le joueur se retrouve en dessous de la plateforme, sinon on ajoute 1 pour qu’il se retrouve au-dessus.
Vous pouvez tester : ça marche. On ne passe plus à travers la barre bleue.
Mais un phénomène étrange apparaît. On peut se coller à la paroi supérieure. Et même glisser et sauter sur la barre au-dessus.
C’est dû à la suite de notre code dans la boucle. On met la variable “en l’air” à 0. Pas seulement dans le cas où on touche une plateforme par le dessus mais aussi quand on touche une plateforme par le dessous. Du coup, on indique au programme qu’on peut sauter quand on touche la barre par en-dessous. Ce qui crée ce phénomène de colle.
Pour régler ce problème, il suffit de déplacer le bloc de code de mise à 0 de la variable “en l’air” à l’endroit où on ajoute 1 à y (c’est-à-dire quand on est au-dessus d’une barre), et seulement là :
Testons
On ne passe plus à travers la barre bleue et ne s’y colle plus. Ce problème là est réglé.
Passons au deuxième point.
II. Bloquer le passage au-dessus (instantané) d’une barre verticale se trouvant sur le chemin
Pour empêcher qu’on puisse passer instantanément au-dessus de la barre rose, on va créer un nouveau bloc “Ajouter à x”. L’idée est d’utiliser le même fonctionnement que le bloc “Ajouter à y” mais pour l’axe horizontal :
Comme on peut le voir c’est quasiment une copie du bloc “Ajouter à y”, sur l’axe des x, avec la variable “en l’air” en moins.
On va pouvoir utiliser ce nouveau bloc dans le bloc “Action” à la place des blocs bleus :
Testez
On ne passe plus à travers la barre rose. À chaque fois qu’on la touche, on est ramené instantanément sur sa gauche.
Essayez maintenant de voir ce qui se passe avec la barre oblique noire sur la gauche.
Oh là là. Ça ne marche plus du tout. On est aussi bloqué, comme si elle était verticale !
III. Monter sur la barre oblique
Pour permettre à notre joueur de grimper sur la barre oblique tout en ne lui permettant toujours pas de franchir la barre droite (rose), on va tester l’angle d’ascension de la barre. Si cet angle est trop important, on fera comme si la barre était verticale sinon on permettra au personnage de monter.
Pour tester cet angle, on va ajouter ce morceau de code au bloc “Ajouter à x” :
Si on touche une plateforme (verticale ou de biais), alors on élève de 1 (+1 à y) le joueur pour voir si celui-ci la touche toujours. On fait cela 8 fois (on a pris 8 car la vitesse du joueur est de 8). Si à un moment donné, dans ce procédé, le joueur ne touche plus la plateforme, alors on considère que la plateforme est suffisamment de biais pour être praticable. Dans ce cas précis, on stoppe ce script, et on n’exécute pas le code qui suit (qui empêche de passer).
Dans l’autre cas (la barre est trop verticale), on redescend le joueur de 8, puis on applique le code d’une barre verticale et le joueur ne peut plus avancer.
Testez
Dans notre cas précis, si vous avez reproduit fidèlement mon dessin de plateforme, le joueur ne passera pas. À vous de voir alors s’il faut refaire la barre oblique plus de biais ou si vous augmentez le taux d’acceptation du test (le 8)(en mettant 14 par exemple), pour lui permettre de passer. Finalement, moi je n’ai rien modifié.
3ème niveau
Dupliquez le Niveau 1 2 pour créer un Niveau 1 3 qui ressemble à ceci :
Positionner les niveaux les uns à côté des autres grâce au clonage
Les niveaux représentent pour l’instant 3 costumes du sprite “Plateforme”. Grâce au clonage, on va pouvoir générer plusieurs fois ce sprite et créer une plateforme plus complexe.
Dans le code de la plateforme, on va tout d’abord initialiser notre premier niveau :
Un clonage se fait grâce au bloc suivant :
On va créer un clone pour ajouter le Niveau 1 2 :
On crée d’abord un clone du sprite qui montre actuellement le niveau 1. On a donc 2 niveaux 1, l’un sur l’autre. En ajoutant 360 à x, on déplace le sprite d’origine vers la droite. Puis on change son costume pour montrer le niveau 2. Ainsi le niveau 2 se retrouve à droite du niveau 1.
On procède de la même manière pour le niveau 3 :
Il ne reste plus qu’à tester
Si vous jouez, vous pouvez maintenant sautillez sur les 3 niveaux !
Fin de cette partie.