Repaso: cambio de entrada
Parte de la sección Creación de juegos reales del Journey de Unity de Coddy. Lección 47 de 56.
Desafío
IntermedioEsta varita de burbujas se escribió para la antigua clase Input. Funciona en un proyecto configurado como Both, pero este proyecto está configurado como un proyecto nuevo de Unity 6 (Active Input Handling: Input System Package): pulsa Play y la primera llamada a Input lanza una InvalidOperationException. Adáptala al Input System, conservando todo lo que hace:
- Las flechas o WASD desplazan la varita por el césped a
speedunidades por segundo, sin ir más rápido en diagonal. - Al pulsar Jump, se crea una burbuja a 1.5 unidades por encima de la varita. Mientras mantienes pulsado Jump, la burbuja crece a razón de
growRatepor segundo, hasta alcanzarmaxSize. Al soltarlo, se registra su tamaño, por ejemplo,Bubble: 0.8. - Un clic izquierdo revienta todas las burbujas y registra cuántas había, por ejemplo,
Popped 3.
Usa las acciones Move y Jump del proyecto y Mouse.current, y no dejes ninguna llamada a Input. en el script. Pulsa Play y pruébalo; después, pulsa Check.
Pruébalo tú mismo
using UnityEngine;
public class Wand : MonoBehaviour
{
public float speed = 4f;
public float growRate = 1f;
public float maxSize = 1.5f;
public GameObject bubblePrefab;
private Transform bubble;
void Update()
{
Vector3 move = new Vector3(Input.GetAxisRaw("Horizontal"), 0f, Input.GetAxisRaw("Vertical"));
transform.position += move.normalized * speed * Time.deltaTime;
if (Input.GetButtonDown("Jump"))
{
bubble = Instantiate(bubblePrefab, transform.position + Vector3.up * 1.5f, Quaternion.identity).transform;
}
if (Input.GetButton("Jump") && bubble != null)
{
float size = Mathf.Min(bubble.localScale.x + growRate * Time.deltaTime, maxSize);
bubble.localScale = Vector3.one * size;
}
if (Input.GetButtonUp("Jump") && bubble != null)
{
Debug.Log("Bubble: " + bubble.localScale.x.ToString("F1"));
bubble = null;
}
if (Input.GetMouseButtonDown(0))
{
GameObject[] bubbles = GameObject.FindGameObjectsWithTag("Bubble");
foreach (GameObject b in bubbles) Destroy(b);
Debug.Log("Popped " + bubbles.Length);
}
}
}
Todas las lecciones de Creación de juegos reales
1Texto en pantalla
Canvas y textoMuestra la puntuaciónDa formato a los númerosUn temporizador de cuenta regresivaRepaso: velocímetro4Escenas y niveles
Cargar una escenaReiniciar el nivelSiguiente nivelConservar entre escenasRepaso: selección de nivel10Proyecto: plataformas 3D
El recorridoPlataformas móviles2Botones y pantallas
Botones y onClickLambdasConectar en el InspectorPaneles activados y desactivadosBarras de saludRepaso: tienda de mejoras5Guardar con PlayerPrefs
Guardar un númeroCargar con un valor predeterminadoPuntuación más altaGuardar ajustesRepaso: monedas en el banco3El gestor del juego
Un solo script ejecuta el juegoEl SingletonEstados del juegoActivar el estadoRepaso: gestor de rondas6Proyecto: corredor infinito
Tres carrilesObstáculos por delante9El nuevo sistema de entrada
Dos sistemas de entradaTeclado y ratónPulsado en este fotogramaAcciones de entradaRepaso: cambio de entrada