Usuari/a: -- Sortir --

Basic Gameplay Tutorial

Resumen:

En esta unidad, programarás un juego de arriba hacia abajo con el objetivo de lanzar comida a los animales hambrientos - que están estampidando hacia ti - antes de que puedan correr más allá de ti. Para hacer esto, te familiarizarás mucho más con algunos de los conceptos de programación y Unity más importantes, incluidas las declaraciones if-then, la generación de valor aleatorio, las matrices, la detección de colisiones, los prefabs y la creación de instancias. Al completar esta Unidad, aprenderás cómo programar un juego básico con la capacidad de lanzar proyectiles i maniobrar al jugador para mantener el juego vivo.

Introduccion:

Comenzarás esta unidad creando un nuevo proyecto para tu segundo prototipo y haciendo funcionar el movimiento básico del jugador. Primero elegirás qué personaje te gustaría, con qué tipos de animales te gustaría interactuar y qué comida te gustaría alimentar a esos animales. Le darás al jugador un movimiento básico de lado a lado, luego usarás declaraciones if-then para mantener al Jugador en unos límites.

Resultado del proyecto:

El jugador podrá moverse a la izquierda y a la derecha en la pantalla en función de las pulsaciones de teclas izquierda y derecha del usuario, pero no podrá abandonar el área de juego a ambos lados.

Crear un nuevo proyecto

Abre Unity Hub y crea un nuevo proyecto llamado "Prototype 2" en tu directorio del curso.

Haga clic en el enlace para acceder a los archivos de inicio del prototipo 2, luego impórtelos en Unity

Abre la escena del prototipo 2 y elimina SampleScene sin guardar.

En la parte superior derecha del Editor de Unity, cambia tu diseño de Predeterminado a tu diseño personalizado.

Añadir el jugador, los animales y la comida:

Arrastre 1 humano, 3 animales y 1 objeto de alimento en la jerarquía.

Ajusta la escala XYZ de la comida para que pueda ver fácilmente desde arriba X=2 Y=2 Z=2.

Obtener la entrada horizontal del usuario:

En la carpeta Assets, cree una carpeta "Scripts" y un script "FarmerController" dentro.

Adjunta el script al Jugador y ábralo.

En la parte superior de PlayerController.cs, declare un nuevo float público horizontalInput.

En el Update(), establezca horizontalInput á Input.GetAxis("Horizontal"), a continuación, pruebe para asegurarse de que funciona en el inspector.

Mover el jugador de izquierda a derecha:

Declaramos una nueva variable publica float que le diremos speed.

En el Update(), Traducimos el movimiento lado a lado del jugador basandonos en el horizontal Input i speed.

Mantener al jugador dentro de unos limites:

En Update(), escribe una declaración if comprobando si la posición X izquierda del jugador es menor que un valor determinado.

En la instrucción if, establece la posición del jugador en su posición actual, pero con una ubicación X fija.

Limpia tu codigo y tus variables:

Repita el proceso anterior para el lado derecho de la pantalla.

Declare nueva variable xRange y, a continuación, reemplace los valores codificados de forma rígida con ellos.

Haga que el proyectil vuele hacia adelante:

Cree un nuevo script "MoveForward", adjúntelo al objeto food y ábralo.

Declare una nueva variable speed de tipo float pública.

En Update(), agregue transform. Translate(Vector3.forward * Time.deltaTime * speed); a continuación, guardar.

En el Inspector, establecer la variable de velocidad del proyectil, a continuación, probar.

Convierta el proyectil en un prefab:

Cree una nueva carpeta "Prefabs", arrastre su comida en ella y elija Original Prefab.

En el script FarmerController declare una variable publica gameObject de nombre projectilePrefab.

Seleccione el jugador en la jerarquía y, a continuación, arrastre el objeto desde la carpeta Prefabs al nuevo cuadro projectilePrefab en el inspector.

Dale play en unity i arrastra el proyectil para asegurar-se de que funciona i el proyectil se mueve hacia delante.

Barra Espaciadora para disparar el proyectil

En el script FarmerController, en Update(), agregue una comprobación IF para comprobar cuando se pulsa la barra espaciadora.

Dentro del IF agregue un comentario que diga que debe // Disparar el proyectil des del jugador.

Disparar el proyectil al pulsar la barra espaciadora:

Dentro de la instrucción if, usa el método Instantiate para generar un proyectil en la ubicación del jugador con la rotación del prefab.

Convertir animales en prefabs

Gire todos los animales en el eje Y 180 grados para mirar hacia abajo.

Seleccione los tres animales en la jerarquía y Add Component > MoveForward.

Editar sus valores de velocidad y probar para ver cómo se mueven.

Arrastrar los tres animales en la carpeta Prefabs, eligiendo "Prefab original".

Prueba arrastrando prefabs en la jerarquia despues de darle play para ver que los animales se mueven.

Destruyamos los proyectiles que se salgan de la pantalla

Creamos un script “DestroyOutOfBounds” y le assignamos el script al proyectile.

Abrimos el script creamos una variable privada float de nombre topBound i la inicializamos a un valor fijo.

Escribimos el codigo para destruir el proyectil si este llega al valor de topBound.

Assignamos el script al proyectil i damos a Apply para guardar el prefab.

Hagamos lo mismo con los animales

Creamos una variable privada float de nombre bottomBound i la inicializamos a un valor fijo.

Escribimos el codigo para destruir los animales si llegan al valor de bottomBound.

Assignamos el script a todos los prefabs animales i damos a Apply para guardar.

Spawn Manager

En Jerarquia creamos un empty object de nombre SpawnManager.

Creamos tambien un script SpawnManager, lo ponemos el el empty object que hemos creado y abralo.

Declaramos una variable publica: public GameObject[ ] animalPrefabs.

En el inspector, cambiamos el tamaño del array para que sea igual al numero de animales que tenemos, luego assignamos los prefabs de los animales arrastrandolos.

Generar un animal si S es presionada

En Update(), escriba una instrucción if-then para crear una instancia de un nuevo prefab animal en la parte superior de la pantalla si se presiona S.

Declare un nuevo int animalIndex público e incorpórelo en la llamada Instantiate, luego pruebe editando el valor en el Inspector.

Fem que els animals apareguin aleatoriament de l'array:

En la comprobación if si se presiona S, genere un int animalIndex aleatorio entre 0 y la longitud del array.

Eliminar la variable global animalIndex, ya que solo se necesita localmente en la instrucción if.

Fem que els animals apareguin en una posicio random:

Reemplace el valor X para vector3 por Random.Range(-20, 20), luego pruebe.

Dentro de la sentencia if, cree una nueva variable local Vector3 spawnPos.

En la parte superior del script, cree variables float privadas para spawnRangeX y spawnPosZ.

Creamos un nuevo método para generar animales:

En el script SpawnManager creamos una funcion void SpawnRandomAnimal() {} debajo del Update().

Copiamos i pegamos el codigo del if a la nueva funcion.

Llamamos a la funcion si pulsamos S.

Generar los animales a intervalos cronometrados:

En Start(), utilice InvokeRepeating para generar los animales en función de un intervalo y, a continuación, pruebe.

Quitamos el if que comprueba si pulsamos la letra S.

Declarar nuevas variables startDelay y spawnInterval privadas.

Añadir componentes Collider i Trigger:

Haga doble clic en uno de los prefabs animales, luego Añadir componente > Box Collider.

Haga clic en Editar Collider, luego arrastre los manejadores del Collider para abarcar el objeto.

Compruebe la casilla de verificación “Is Trigger”.

Repetir este proceso para cada uno de los animales y el proyectil.

Añadir una componente RigidBody al proyectil y desmarque "Use Gravity".

Destruir objetos en caso de colisión:

Cree un nuevo script DetectCollisions, agréguelo a cada prefab animal y, a continuación, ábralo .

Fem servir la funcio OnTriggerEnter de unity.

En OnTriggerEnter posem Destroy(gameObject); i provem