Dirige
Lección 2 de 14 del curso Juego de Unity: Serpiente 3D de Coddy.
La serpiente gira con las teclas de flecha o WASD. La cámara mira el tablero desde el borde frontal, así que hacia arriba en la pantalla es a lo largo de +z, Vector3.forward, y hacia abajo es Vector3.back. Vector3.up apunta al cielo: una cabeza que se moviera en esa dirección se elevaría por encima del tablero.
Se realiza un giro una vez por pulsación, así que lee las teclas con wasPressedThisFrame. La pulsación solo cambia direction; Step() sigue moviendo la cabeza en el siguiente tic:
Keyboard keyboard = Keyboard.current;
if (keyboard != null && keyboard.dKey.wasPressedThisFrame)
{
direction = Vector3.right;
}Una flecha y su letra son dos teclas, unidas con ||. Keyboard.current es null en un dispositivo sin teclado, así que compruébalo una vez al principio.
Desafío
FácilDirige la serpiente con las flechas o WASD.
- Agrega
using UnityEngine.InputSystem;aSnake. - Al principio de
Update(), leeKeyboard.current: arriba o W establecedirection = Vector3.forward, abajo o S estableceVector3.back, izquierda o A estableceVector3.left, derecha o D estableceVector3.right. - Deja
Step()como está: la cabeza gira en el siguiente paso.
Pulsa «Jugar», haz clic en el juego y dirige la serpiente: la cabeza gira en el siguiente paso. Después, pulsa «Comprobar».
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;
}
}
Todas las lecciones de Juego de Unity: Serpiente 3D
Practica por tu cuenta: Playground de Unity