Menu
CoddyTech

Zones mortelles

Fait partie de la section Physique et gameplay du Journey Unity de Coddy. Leçon 18 sur 63.

Une zone mortelle est un déclencheur placé dans une zone que le joueur ne doit pas atteindre : de la lave, des pointes ou le vide sous le niveau. Lorsqu’il y entre, le joueur est renvoyé à un point d’apparition. Ici, c’est le script de la lave qui s’en charge, avec le point d’apparition défini dans un champ Transform dans l’Inspector :

public Transform spawnPoint;

void OnTriggerEnter(Collider other)
{
    if (other.CompareTag("Player"))
    {
        other.transform.position = spawnPoint.position;
        other.attachedRigidbody.linearVelocity = Vector3.zero;
    }
}

other.attachedRigidbody est le Rigidbody auquel appartient le collider qui entre dans la zone. Définir transform.position téléporte le joueur, ce qui est nécessaire pour une réapparition. Cependant, un Rigidbody conserve sa vitesse pendant le saut : un joueur qui tombe à 10 unités par seconde arrive au point d’apparition en continuant de tomber à 10, et un joueur qui a couru dans la lave continue de courir et y retombe aussitôt. Définir linearVelocity sur Vector3.zero le fait arriver sans bouger. La vérification du tag laisse à sa place tout autre objet qui tombe dans la lave.

challenge icon

Défi

Facile

Le joueur traverse un pont étroit au-dessus du vide, propulsé par les touches fléchées ; cette partie est déjà écrite. Un déclencheur doté du tag KillZone remplit l’espace en dessous, et un drapeau doté du tag Checkpoint, qui est également un déclencheur, se trouve à mi-chemin du pont. Ajoute des points de réapparition au script du joueur :

  • Au démarrage du jeu, le point de réapparition est l’endroit où se trouve le joueur.
  • Toucher un Checkpoint fait de la position du joueur à cet instant le nouveau point de réapparition.
  • Entrer dans le KillZone ramène le joueur au point de réapparition, immobile.

Appuie sur Play et marche au bord du pont, puis clique sur Check.

Essayez vous-même

using UnityEngine;

public class Player : MonoBehaviour
{
    public float force = 12f;
    Rigidbody body;
    Vector3 input;
    // respawn : l’endroit où le joueur réapparaît

    void Start()
    {
        body = GetComponent<Rigidbody>();
    }

    void Update()
    {
        input = new Vector3(Input.GetAxisRaw("Horizontal"), 0f, Input.GetAxisRaw("Vertical"));
    }

    void FixedUpdate()
    {
        body.AddForce(input * force);
    }

    // Checkpoint : mémoriser la position du joueur. KillZone : revenir à cet endroit, à l’arrêt.
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Physique et gameplay