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.
Défi
FacileLe 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
Checkpointfait de la position du joueur à cet instant le nouveau point de réapparition. - Entrer dans le
KillZoneramè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.
}
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
1Corps rigide
Gravité et massePousser avec AddForceSauter avec une impulsionFixedUpdate pour la physiqueVitesseCorps cinématiquesRécapitulatif : plateforme de lancement4Coroutines
InvoquerInvokeRepeating, CancelInvokeVotre première coroutineBoucles dans les coroutinesArrêter les coroutinesRécapitulatif : compte à rebours2Collisions
OnCollisionEnterQu’est-ce que j’ai touché ?Se briser à l’impactRester au solRebond et frictionFormes des collidersRécapitulatif : mur destructible5Projet : Course aux pièces
La balle roulanteDes pièces à ramasser