Ressources Magic Makers

 

Site en maintenance

 
Nous sommes actuellement entrain de mettre à jour les ressources de ce site.
Pendant la mise à jour vous pouvez retrouver tous les nouveaux contenus sur le site
 

https://lp-magicmakers.fr/

 
 

UNITY - Joueur

Les différents scripts

Sur cette page tu découvrira comment:

    • Ajouter un joueur et modifier les touches du clavier pour le déplacer
    • Récupérer et détruire des objets quand tu rentres en collision avec eux
    •  Créer une killzone
    • Faire des check point
    • Donner des bonus ou des malus au joueur

Pour savoir comment créer un système de tir, tu peux regarder cette page.

Ajouter un joueur

Ajoute un joueur pour tester ton niveau !

Modifie les touches du clavier pour  le déplacement

Récupérer des objets

Collisions et Tags

Cette mécanique peut être très utile que ce soit pour récupérer des objets, pour avoir un score, activer des boosts ou encore faire des inventaires, valider des niveaux seulement si certains objets sont ramassés… On utilisera même une mécanique proche pour créer une killzone!

Principe du script

La base du script repose sur la collision entre notre personnage et l’objet. Par exemple, quand on touche un objet on le détruit:

Pour faciliter la détection de la collision, il est préférable d’utiliser OnTriggerEnter et penser à mettre le collider de l’objet qu’on veut ramasser en IsTrigger.

Afin de ne pas tout détruire mais seulement certains objets, on peut utiliser un Tag et vérifier si l’objet a le bon tag avant de le détruire.

Et penser à mettre le bon tag à l’objet.

Avec la fonction Destroy on peut aussi spécifier un temps d’attente avant de détruire l’objet en secondes. Par exemple attendre 3 secondes avant de détruire l’objet :

Avant de détruire l’objet on peut faire toutes sortes de choses : 

  • passer une variable à vraie pour dire que l’objet est ramassé pour terminer le niveau
  • ajouter 1 à une variable qui compte les objets ramassés pour mettre un système de score
  • récupérer différents types d’objets, multiplier les conditions de victoires, donner des boosts à nos personnages, faire de la téléportation, faire des killzones…
Condition de victoire
Score

Créer une killzone

Collision, Tags et Déplacements

Vidéo tuto

Tu peux regarder cette vidéo tuto qui présente la création d’une Killzone pour ramener ton joueur au début du jeu s’il tombe !

Tu trouveras ci-dessous le tuto écrit du mécanisme de jeu.

Principe du script

Pour créer une killzone nous allons utiliser les principes de collision expliqué ci-dessus et de déplacement d’objets. Tu peux regarder ces parties là avant.

Quand le joueur entre en collision avec un objet avec le tag “zone de mort”, le joueur retourne à sa position de départ. Pour cela on va changer son transform.position.

Nous avons aussi besoin de mémoriser la position de départ. Pour cela on va créer une variable pour stocker cette valeur et la récupérer dans la fonction Start() et pour récupérer la position de départ on va utiliser la variable transform.position.

Ajouter un Checkpoint

Collision, Tags et Déplacements

Le mécanisme des Checkpoints est proche du mécanisme des Killzone et nous allons reprendre le script Killzone pour le modifier légèrement. Si tu ne sais pas faire les Killzone, je t’invite à regarder cela avant!

Principe du script

Quand on récupère un objet, on change la position de réapparition du joueur quand il meurt. On utilise exactement le même mécanisme que celui utilisé pour fixer le point de départ initial, sauf que cette fois, c’est au moment de la collision qu’on récupère la valeur.

Attention ce script remplace le script killzone, il faut soit le modifier, soit le remplacer mais ne pas utiliser les deux en même temps.

Boosts et malus

Collision, GetComponent, Invoke

Quand on ramasse des objets, on peut vouloir donner un boost ou un malus à notre personnage comme se déplacer plus vite ou plus lentement, sauter plus haut, ne plus pouvoir sauter ou se déplacer, être plus grand ou plus petit… Dans cet exemple, on modifiera la vitesse de déplacement.

Attention ce script utilise le RigidBodyFPS des standarts assets, si tu utilise un autre contrôleur, les variables de ce contrôleur auront d’autres noms

On peut modifier les valeurs du contrôleur de notre personnage via le RigidbodyFirstPersonController. On commence par importer ce composant qui n’est pas connu de base de Unity en ajoutant cette ligne en haut de notre script :

using UnityStandardAssets.Characters.FirstPerson;

Principe du script

Quand on ramasse un objet, on modifie les valeurs de mouvements de notre personnage.

On reprend la structure de base du script utilisé pour ramasser des objets et les mécanismes de collision, mais cette fois on va modifier la vitesse de déplacement de notre personnage. 

On commence par créer une variable pour récupérer le RigidbodyFirstPersonController. On utilise la fonction GetComponent<>() qui permet de récupérer un autre composant de notre objet. Entre <> on précise le type du composant qu’on veut récupérer.

Puis on modifie la valeur souhaitée dans movementsSettings, ici par exemple on multiplie la vitesse par 2.

Et l’on termine en détruisant l’objet pour éviter d’utiliser le bonus à l’infini.

Revenir à l'état initial

Si l’on souhaite on peut également dire qu’au bout d’un certain temps, la vitesse retourne à sa valeur initiale.

Pour cela nous allons créer une fonction qui réinitialise la vitesse et utiliser la fonction Invoke() pour appeler cette fonction au bout d’un certain temps. Voici comment créer une fonction :

Le mot void permet d’indiquer qu’on crée une fonction, Reinitialise est le nom de la fonction et on écrira le code de cette fonction entre les accolades { }.

Dans cette fonction nous allons récupérer notre contrôleur puis remettre la valeur modifiée à sa valeur initiale. Ici on divise la vitesse par 2.

Enfin lors de la collision on appelle la fonction Invoke() pour appeler notre fonction Reinitialise au bout d’un certain temps (ici 10 secondes).

Pour pouvoir gérer l’augmentation de la vitesse et le temps du pouvoir directement depuis Unity on peut créer des variables publiques.

Avec ces mécanismes, on peut facilement modifier tout un tas d’autres valeurs pour faire des boosts ou des malus personnalisés.