Dirige
Lección 2 de 14 del curso Juego de Unity: Snake 3D de Coddy.
La serpiente gira con las teclas de flecha o WASD. La cámara mira hacia abajo el tablero desde el borde delantero, así que arriba en la pantalla va a lo largo de +z, Vector3.forward, y abajo es Vector3.back. Vector3.up apunta al cielo: una cabeza que se moviera en esa dirección se elevaría del tablero.
El giro ocurre una vez por pulsación, así que lee las teclas con wasPressedThisFrame del Input System. La pulsación solo cambia direction. Step() sigue moviendo la cabeza en el siguiente tic, así que la serpiente mantiene su ritmo. Un vehículo explorador que se dirige hacia la derecha de la pantalla cuando se pulsa D:
Keyboard keyboard = Keyboard.current;
if (keyboard != null && keyboard.dKey.wasPressedThisFrame)
{
heading = Vector3.right;
}El Input System no tiene ejes en el teclado: una flecha y su letra son dos teclas, unidas con ||. Keyboard.current es null en un dispositivo sin teclado, así que léelo una vez al principio y compruébalo.
Desafío
Fácil- Añade
using UnityEngine.InputSystem;aSnake. - Al principio de
Update(), leeKeyboard.current. Al pulsar la flecha hacia arriba o W, establecedirectionenVector3.forward; la flecha hacia abajo o S, enVector3.back; la flecha hacia la izquierda o A, enVector3.left; y la flecha hacia la derecha o D, enVector3.right. - Deja
Step()tal como está: la cabeza gira en el siguiente paso.
Pulsa Play, haz clic en el juego y dirígelo; después, pulsa Check.
Pruébalo tú mismo
using UnityEngine;
public class Snake : MonoBehaviour
{
public float tick = 0.15f; // segundos entre dos pasos
private float timer;
private Vector3 direction = Vector3.right;
void Update()
{
timer += Time.deltaTime;
if (timer >= tick)
{
timer -= tick;
Step();
}
}
void Step()
{
transform.position += direction;
}
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.