El jugador (paralelepípedo morado) se mueve usando los eje y el método Slerp de Quaternion para suavizar los movimientos.
Tenemos 2 textos en la esquina superior derecha, que contienen información sobre la salud del jugador y su puntuación. En la esquina inferior izquierda tenemos un botón que alterna la velocidad del jugador entre normal y Turbo, alternando también el color y el texto que se muestra.
En la escena tenemos cilindros que al tocar al jugador reducen su salud, actualizando el texto que contiene información sobre la salud del jugador. Del mismo modo, disponemos de cilindros que al contactar con el jugador aumentan su puntuación y actualizan la información sobre su puntuación.
Tenemos un cilindro verde, que conduce al cubo naranja que encuentra en medio de la escena, mientras que la esfera roja sigue el movimiento del jugador, ambos contienen una referencia al GameOject que tiene que seguir y actualizan su posición según el referencia. Cuando el jugador entra en contacto con el cubo naranja, se desencadena un evento que, al ser capturado por los objetos que están suscritos al evento, se les aplica una fuerza.
Disponemos de dos cápsulas que teletransportan cualquier objeto que entre en contacto con ellas. Cada cápsula contiene una referencia a la otra, y para evitar duplicar el objeto que entra en contacto con la cápsula, tenemos una variable booleana bool isJiterring = false
; que se actualiza de acuerdo con el siguiente código:
public GameObject Teleport1;
bool isJiterring = false;
private void OnTriggerEnter(Collider other)
{
if (!isJiterring)
{
Teleport1.GetComponent<Teleport>().isJiterring = true;
other.transform.position = Teleport1.transform.position;
}
}
private void OnTriggerExit(Collider other)
{
isJiterring = false;
}
Resultado: