Zonas mortais
Parte da seção Física e Jogabilidade do Journey de Unity da Coddy. Lição 19 de 71.
Uma zona de morte é um gatilho sobre um lugar que o jogador não deve alcançar: lava, espinhos ou o espaço vazio sob o nível. Ao entrar nela, o jogador volta para um ponto de surgimento. Aqui, o próprio script da lava faz isso, com o ponto de surgimento em um campo Transform definido no Inspector:
public Transform spawnPoint;
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
other.transform.position = spawnPoint.position;
other.attachedRigidbody.linearVelocity = Vector3.zero;
}
}other.attachedRigidbody é o Rigidbody ao qual o collider que está entrando pertence. Definir transform.position teletransporta o jogador, que é o que um reaparecimento exige. Mas um Rigidbody mantém sua velocidade durante o salto: um jogador que caiu a 10 unidades por segundo chega ao ponto de surgimento ainda caindo a 10, e quem correu para dentro da lava continua correndo, direto de volta para ela. Definir linearVelocity como Vector3.zero faz com que ele chegue parado. A verificação da tag deixa no lugar qualquer outra coisa que caia na lava.
Desafio
FácilFaça o jogador reaparecer. Este script está no jogador, então ele move transform e body, não other.
- Em
Start(), defina o campoVector3 respawncomotransform.position. - Em
OnTriggerEnter(Collider other), quandoother.CompareTag("Checkpoint"), definarespawn = transform.position;. - Quando
other.CompareTag("KillZone"), definatransform.position = respawn;ebody.linearVelocity = Vector3.zero;.
Pressione “Jogar” e saia da ponte andando. Depois, “Verificar”.
Experimente você mesmo
using UnityEngine;
public class Player : MonoBehaviour
{
public float force = 12f;
Rigidbody body;
Vector3 input;
// respawn: onde o jogador reaparece
void Start()
{
body = GetComponent<Rigidbody>();
}
void Update()
{
input = new Vector3(Input.GetAxisRaw("Horizontal"), 0f, Input.GetAxisRaw("Vertical"));
}
void FixedUpdate()
{
body.AddForce(input * force);
}
// Checkpoint: guarda a posição do jogador. KillZone: volta para esse ponto, sem se mover.
}
Todas as lições de Física e Jogabilidade
1Rigidbody
Gravidade e MassaEmpurrar com AddForcePular com um ImpulsoFixedUpdate para FísicaVelocidadeCorpos CinemáticosRevisão: Plataforma de Lançamento4Corrotinas
InvocarInvocar repetidamente, Cancelar invocaçãoSua primeira corrotinaLoops em corrotinasInterrompendo corrotinasRevisão: contagem regressiva10Projeto: Fuga da Arena
A ArenaCaçadores2Colisões
OnCollisionEnterO que eu acertei?Quebre no impactoNo chãoQuique e atritoFormas dos collidersRevisão: Parede destrutível5Projeto: Corrida das Moedas
A Bola RolanteMoedas para ColetarPratique por conta própria: Playground de Unity