Zone letali
Fa parte della sezione Fisica e gameplay del percorso Unity di Coddy. Lezione 19 di 71.
Una zona letale è un trigger situato in un punto che il giocatore non deve raggiungere: lava, spuntoni o il vuoto sotto il livello. Entrandoci, il giocatore viene riportato a un punto di spawn. In questo caso, se ne occupa lo script della lava, con il punto di spawn in un campo Transform impostato nell'Inspector:
public Transform spawnPoint;
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
other.transform.position = spawnPoint.position;
other.attachedRigidbody.linearVelocity = Vector3.zero;
}
}other.attachedRigidbody è il Rigidbody a cui appartiene il collider che entra. Impostare transform.position teletrasporta il giocatore, come richiesto da una rinascita. Tuttavia, un Rigidbody conserva la propria velocità durante il salto: un giocatore che è caduto a 10 unità al secondo arriva al punto di spawn continuando a cadere a 10, e chi è entrato di corsa nella lava continua a correre, finendoci subito di nuovo dentro. Impostare linearVelocity su Vector3.zero fa sì che arrivi fermo. Il controllo del tag lascia al suo posto qualsiasi altra cosa cada nella lava.
Sfida
FacileFai ricomparire il giocatore. Questo script è sul giocatore, quindi sposta transform e body, non other.
- In
Start(), imposta il campoVector3 respawnsutransform.position. - In
OnTriggerEnter(Collider other), quandoother.CompareTag("Checkpoint"), impostarespawn = transform.position;. - Quando
other.CompareTag("KillZone"), impostatransform.position = respawn;ebody.linearVelocity = Vector3.zero;.
Premi «Gioca» e cammina giù dal ponte. Poi premi «Verifica».
Provalo tu
using UnityEngine;
public class Player : MonoBehaviour
{
public float force = 12f;
Rigidbody body;
Vector3 input;
// respawn: il punto in cui il giocatore ricompare
void Start()
{
body = GetComponent<Rigidbody>();
}
void Update()
{
input = new Vector3(Input.GetAxisRaw("Horizontal"), 0f, Input.GetAxisRaw("Vertical"));
}
void FixedUpdate()
{
body.AddForce(input * force);
}
// Checkpoint: ricorda dove si trova il giocatore. KillZone: torna in quel punto, restando fermo.
}
Tutte le lezioni di Fisica e gameplay
1Corpo rigido
Gravità e massaSpingi con AddForceSalta con un impulsoFixedUpdate per la fisicaVelocitàCorpi cinematiciRiepilogo: piattaforma di lancio4Coroutine
InvokeInvokeRepeating, CancelInvokeLa tua prima coroutineCicli nelle coroutineInterrompere le coroutineRiepilogo: conto alla rovescia7Rotazione
Angoli di EuleroQuaternioniGuarda nella direzione in cui ti muoviRuota in modo fluidoRiepilogo: Torretta10Progetto: Fuga dall'arena
L'arenaCacciatori2Collisioni
OnCollisionEnterCosa ho colpito?Rompersi all'impattoRestare a terraRimbalzo e attritoForme dei ColliderRiepilogo: muro distruttibile5Progetto: Corsa alle monete
La palla rotolanteMonete da raccogliereEsercitati da solo: Playground Unity