
Lección 5.1: ¿Cómo destruir con un clic?
Tutorial
Beginner
+10XP
60 mins
(371)
Unity Technologies

Descripción general:
¡Llegamos a la última unidad! Primero crearemos un nuevo proyecto e importaremos los archivos de inicio; después cambiaremos la vista del juego a 2D. A continuación, haremos una lista de objetivos para que el jugador haga clic en ellos: tres objetos «buenos» y uno «malo». Los objetivos se lanzarán girando por los aires después de generarse en una posición aleatoria en la parte inferior del mapa. Por último, permitiremos que el jugador los destruya con un clic.
Resultado del proyecto:
Tres objetivos buenos y un objetivo malo se generarán en una posición aleatoria en la parte inferior de la pantalla, los cuales se lanzarán por el aire con fuerza y torsión aleatorias. Estos objetivos se destruirán cuando el jugador haga clic en ellos o salgan del área activa.
Resources
1. ¿Cómo crear un proyecto y cambiar la vista a 2D?
Por última vez... necesitamos crear un nuevo proyecto y descargar los archivos de inicio para comenzar.
- Abre Unity Hub y crea un proyecto «Prototype 5» vacío en el directorio de tu curso en la versión correcta de Unity.
Si olvidaste cómo hacerlo, consulta las instrucciones en la Lección 1.1. Paso 1. - Haz clic para descargar los Archivos de inicio del Prototype 5, extrae la carpeta comprimida y después importa el .unitypackage a tu proyecto.
Si olvidaste cómo hacerlo, consulta las instrucciones en la Lección 1.1. Paso 2. - Abre la Escena Prototype 5 y elimina la Escena de muestra sin guardar.
- Haz clic en el ícono 2D en la vista de Escena para cambiar la vista de la Escena a 2D.
- (opcional) Cambia la textura y el color del fondo y el color de los bordes.
2. ¿Cómo crear objetivos buenos y malos?
Lo primero que necesitamos en nuestro juego son tres objetos buenos para recolectar y un objeto malo para evitar. Te corresponde a ti decidir qué es bueno y qué es malo.
- De Library, arrastra 3 objetos «buenos» y 1 objeto «malo» hasta la Escena, cambia sus nombres a «Good 1», «Good 2», «Good 3» y «Bad 1».
- Agrega los componentes Rigidbody y Box Collider, después asegúrate de que los colisionadores rodeen a los objetos de forma adecuada.
- Crea una nueva carpeta Scripts con un nuevo Script «Target.cs» dentro y adjúntala a los objetivos.
- Arrastra los 4 objetivos a la carpeta Prefabs para crear «original Prefabs», luego elimínalos de la Escena.
3. ¿Cómo arrojar los objetos al aire de forma aleatoria?
Ahora que tenemos 4 Prefabs objetivo con el mismo script necesitamos lanzarlos por el aire con fuerza, torsión y posición aleatorias.
- En Target.cs, declara un nuevo private Rigidbody targetRb; e inicialízalo en Start().
- En Start(), agrega un impulso hacia arriba multiplicado por una velocidad aleatoria.
- Agrega una torsión con valores XYZ aleatorios.
- Define la posición con un valor X aleatorio.
4. ¿Cómo cambiar el código complicado con nuevos métodos?
En lugar de dejar las fuerzas, torsiones y posiciones aleatorias que hacen que nuestra función Start() sea complicada e ilegible, vamos a almacenar cada una de ellas en métodos personalizados nuevos y les daremos nombres claros.
- Declara e inicializa nuevas variables private float para minSpeed, maxSpeed, maxTorque, xRange, y ySpawnPos;
- Crea una nueva función para Vector3 RandomForce() y llámala en Start()
- Crea una nueva función para float RandomTorque() y llámala en Start()
- Crea una nueva función para RandomSpawnPos() haz que devuelva un nuevo Vector3 y llámala en Start()
5. ¿Cómo crear una lista de objetos en Game Manager?
Lo siguiente que debemos hacer es crear una lista desde la cual se generarán estos objetos. En lugar de crear un Spawn Manager para estas funciones de instanciación, vamos a crear un Game Manager (Administrador del juego) que también controlará los estados del juego más adelante.
- Crea un nuevo objeto vacío «Game Manager», adjunta un nuevo Script GameManager.cs y ábrelo.
- Declara una nueva public List<GameObject> targets;, después en el Inspector de Game Manager cambia el Size de la lista a 4 y asigna tus Prefabs.
6. ¿Cómo crear una corrutina para generar objetos?
Ahora que tenemos una lista de Prefabs de objetos, debemos crear instancias de ellos en el juego mediante corrutinas y un nuevo tipo de bucle.
- Declara e inicializa una nueva variable private float spawnRate.
- Crea un nuevo método IEnumerator SpawnTarget ().
- Dentro del nuevo método, while(true), espera 1 segundo, genera un índice aleatorio, y genera un objetivo aleatorio.
- En Start(), utiliza el método StartCoroutine para comenzar a generar objetos.
7. ¿Cómo destruir objetivos con clics y sensores?
Ya que nuestros objetivos se generan y lanzan al aire, necesitamos una forma para que el jugador pueda destruirlos con un clic. También necesitamos destruir cualquier objetivo que caiga y salga por la parte inferior de la pantalla.
- En Target.cs, agrega un nuevo método para private void OnMouseDown() { } y dentro de ese método, destruye el gameObject.
- Agrega un nuevo método para private void OnTriggerEnter(Collider other) y dentro de esa función, destruye el gameObject.
8. Resumen de la lección
Nueva funcionalidad:
- Objetos aleatorios se lanzan al aire en intervalos
- Los objetos reciben velocidades, posiciones y torsiones aleatorias
- Si haces clic en un objeto, se destruye
Nuevos conceptos y habilidades:
- Vista 2D
- AddTorque
- Game Manager
- Lists
- While Loops
- Eventos de mouse
Siguiente lección:
- ¡Agregaremos algunos efectos y llevaremos el puntaje!