Zones mortelles
Fait partie de la section Physique et gameplay du Journey Unity de Coddy. Leçon 19 sur 71.
Une zone mortelle est un déclencheur placé au-dessus d’un endroit que le joueur ne doit pas atteindre : de la lave, des pics ou le vide sous le niveau. En y entrant, le joueur est renvoyé à un point d’apparition. Ici, le script de la lave s’en charge, avec le point d’apparition dans un champ Transform défini 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 le faire réapparaître. Mais un Rigidbody conserve sa vitesse pendant le saut : un joueur qui est tombé à 10 unités par seconde arrive au point d’apparition en continuant de tomber à 10, et celui qui a couru dans la lave continue de courir et y retourne tout droit. Définir linearVelocity sur Vector3.zero le fait arriver sans bouger. La vérification du tag laisse tout autre objet qui tombe dans la lave à sa place.
Défi
FacileFais réapparaître le joueur. Ce script est attaché au joueur, il déplace donc transform et body, pas other.
- Dans
Start(), définis le champVector3 respawnsurtransform.position. - Dans
OnTriggerEnter(Collider other), lorsqueother.CompareTag("Checkpoint"), définisrespawn = transform.position;. - Lorsque
other.CompareTag("KillZone"), définistransform.position = respawn;etbody.linearVelocity = Vector3.zero;.
Appuie sur « Jouer » et tombe du pont. Puis appuie sur « Vérifier ».
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 : retourner à cet endroit, sans bouger.
}
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 à rebours7Rotation
Angles d’EulerQuaternionsRegardez dans la direction où vous vous déplacezTourner en douceurRécapitulatif : tourelle10Projet : Évasion de l’arène
L’arèneLes chasseurs2Collisions
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 à ramasser3Déclencheurs
Colliders déclencheursOnTriggerEnterObjets à ramasserLes caisses gardent le resteZones mortellesEntrée et sortieRécapitulatif : clé et porteEntraînez-vous par vous-même : Playground Unity