Cómo hacer un juego simple en Unity 3D

¡Unity 3D es un motor de creación de juegos potente, fácil de usar y, lo más importante, de descarga gratuita! (Hay una versión paga más poderosa, pero puedes hacer mucho con la versión gratuita).

A pesar de su nombre, Unity se puede usar para juegos en 2D y 3D. Puedes hacer programación en C #, Java o Boo, un lenguaje similar a Python. En este tutorial, lo guiaré a través del entorno de Unity y le mostraré cómo hacer un juego simple en Unity.

No necesita ninguna experiencia en codificación para seguir este Instructable; sin embargo, se recomienda porque puede que le resulte más fácil probar su código en busca de errores si tiene algún tipo de lenguaje de codificación en segundo plano.

Este Instructable se basa en el tutorial de RollaBall en el sitio web de Unity. Hay una gran cantidad de tutoriales gratuitos que se pueden encontrar en la página web de tutoriales de Unity. Creé este Instructable principalmente para mi propia práctica con Unity, pero también para complementar los tutoriales en video con un conjunto de instrucciones escritas paso a paso.

Paso 1: crear un nuevo proyecto

Open Unity3D

Cierre la ventana "Bienvenido a Unity" que aparece de forma predeterminada cuando abre Unity.

Haga clic en Archivo - Nuevo proyecto

Seleccione la ubicación para su proyecto. Me gusta usar una carpeta dedicada para guardar todos mis proyectos de Unity.

Escriba el nombre de su proyecto. En la captura de pantalla, el nuevo proyecto se llama "

Vea la captura de pantalla para ver cómo debería verse esto antes de hacer clic en el botón Crear.

Haga clic en "Crear".

Paso 2: Personaliza el diseño

Lo primero que puede hacer es personalizar el diseño. Se puede hacer clic en cada ventana y arrastrarla a su posición. Alternativamente, puede usar los diseños predeterminados provistos con Unity haciendo clic en la barra desplegable debajo de Diseño en la esquina superior izquierda de la pantalla. Me gusta el diseño alto, aunque me parece útil colocar la vista de juego debajo de la vista de escena.

Hay cinco ventanas principales que usa la mayoría de las veces con Unity. Son las ventanas Escena, Juego, Jerarquía, Proyecto e Inspector . Vea las cinco imágenes en la parte superior del paso para obtener imágenes de cada ventana.

Escena : aquí es donde ocurre la creación del juego. Muestra qué elementos tienes en tu juego y dónde están relacionados entre sí. Hay un bloque en la esquina superior derecha que muestra la orientación espacial de la escena.

Juego : muestra la vista que ve la cámara principal cuando se juega. Puedes probar tu juego en esta ventana haciendo clic en el botón Jugar en la parte superior central de la pantalla.

Jerarquía : enumera todos los elementos que ha agregado a la escena. Esta es la cámara principal por defecto. Puede crear nuevos elementos haciendo clic en Crear y seleccionando el tipo de objeto que desea. Esto también se puede hacer usando el menú desplegable GameObject en la parte superior de la pantalla.

Proyecto : muestra los archivos que se utilizan para el juego. Puede crear carpetas, scripts, etc. haciendo clic en Crear debajo de la ventana Proyecto.

Inspector : aquí es donde personaliza los aspectos de cada elemento que se encuentra en la escena. Simplemente seleccione un objeto en la ventana Jerarquía o haga doble clic en un objeto en la ventana Escena para mostrar sus atributos en el panel Inspector.

Paso 3: Guarde la escena y configure la compilación

Haga clic en Archivo - Guardar escena. Guarde la escena en la carpeta [Nombre del proyecto] - Activos. Assets es una carpeta prefabricada en la que querrás almacenar tus escenas y scripts. Es posible que desee crear una carpeta llamada Escenas dentro de Activos porque la carpeta Activos puede volverse desordenada.

Guarde la escena como Escena o Principal o algo así.

Haga clic en Archivo - Configuración de compilación.

Agregar escena actual para construir.

Seleccione la plataforma deseada. Hay muchas opciones, que incluyen computadoras, sistemas de juegos y teléfonos inteligentes, pero si está creando proyectos por primera vez, lo más probable es que desee seleccionar Web Player o PC / Mac / Linux Standalone.

Haga clic en Configuración del reproductor en la parte inferior de la ventana Configuración de compilación. Esto abre las opciones de Configuración del reproductor en el Inspector. Aquí, puede cambiar el nombre de la empresa, el nombre del producto (juego), el icono predeterminado, etc.

Cierre la ventana de configuración de compilación. Volverás a esto cuando estés listo para terminar tu juego.

Paso 4: crea el escenario

La forma más sencilla de crear una etapa en Unity es agregar cubos.

Para hacer esto, vaya a Objeto de juego - Crear otro - Cubo, o use el menú Crear en la ventana Jerarquía. Agrega un cubo.

Restablezca la transformación del cubo haciendo clic derecho en "Transformar" en el panel Inspector. Es una buena práctica hacer esto cada vez que cree un nuevo objeto de juego.

Seleccione el cubo en la Jerarquía. Cambie el nombre de "Muro" haciendo doble clic en su nombre en Jerarquía o utilizando el panel Inspector.

Escale el cubo en la dirección X para que sea largo y parezca una pared.

Haga clic derecho en "Muro" en el panel Jerarquía, y duplíquelo tres veces, para que tenga cuatro muros. Parece que solo tienes una pared porque son idénticas y, por lo tanto, ocupan el mismo punto en el espacio. Arrástrelos a su posición y / o use las opciones de transformación para cada cubo para hacer un arreglo que parezca una arena.

Nota: Para mirar alrededor de la vista de escena, haga clic en el botón central del mouse para desplazarse y desplazarse para acercar y alejar. Haga clic y arrastre mientras mantiene presionada la tecla ALT para girar la vista.

Cree un Objeto de juego vacío, utilizando el menú desplegable Objeto de juego (Crear vacío) en la parte superior de la pantalla. Llámalo "escenario". Restablecer su transformación.

Seleccione los cuatro "Muros" y arrástrelos debajo del Objeto del juego "Etapa".

Agregue un objeto de juego plano seleccionando Crear en el panel Jerarquía y úselo para el piso. Cámbiele el nombre a "Piso" y arrástrelo debajo del Escenario en la Jerarquía.

Nota: debe presionar enter después de cambiar el nombre, de lo contrario, el cambio puede no tener efecto.

Dele al piso una transformación de -0.5 en la dirección Y para asegurarse de que se alinee perfectamente con las cuatro paredes.

Haz la escala del piso en las direcciones X, Y y Z 1/10 de la escala que usaste para dimensionar las paredes.

Paso 5: crea el reproductor

Puedes descargar personajes de varios lugares en línea, como Unity Store, pero para este tutorial, solo vamos a usar uno de los objetos de juego integrados para el jugador.

Vaya a Objetos del juego - Crear otro - Esfera.

Seleccione la esfera en la Jerarquía y cámbiele el nombre a "Jugador". Restablecer su transformación.

Ahora necesitamos física. Haga que el jugador esté sujeto a las leyes de la física haciendo clic en Agregar componente en la parte inferior del panel Inspector con el jugador seleccionado. Añadir Física - Cuerpo rígido. Deje todas las configuraciones predeterminadas.

Notará que cada objeto viene con una variedad de "componentes" agregados que puede ver en el Inspector. Cada cubo, esfera, etc. tiene un componente llamado "colisionador". Esta es el área física de la pantalla donde se considera que ese objeto ocupa espacio. Si apaga un colisionador, el objeto se vuelve como un fantasma, capaz de pasar a través de otros objetos. (Vea el video de lo que sucede cuando apaga el componente colisionador del reproductor). Puede encender y apagar los componentes marcando y desmarcando la casilla junto al nombre del componente.

Paso 6: Hacer que el jugador se mueva

Seleccione el jugador en la Jerarquía.

Minimice los componentes que no desea ver abiertos en el Inspector haciendo clic en las flechas hacia abajo a la izquierda del nombre de cada componente. Esto aclarará un poco su espacio de trabajo.

Haga clic en Agregar componente en la parte inferior de la ventana del Inspector. Seleccione Nueva secuencia de comandos, nombre la secuencia de comandos como "PlayerController" y elija un lenguaje de programación. Yo uso CSharp. Haz clic en Crear y Agregar.

En aras de mantener los archivos organizados, abra la carpeta Activos en la ventana Proyecto y cree una carpeta llamada Scripts. Pon tu nuevo script en esta carpeta.

Para abrir el guión para editarlo, haga doble clic en el nombre del guión en el Inspector o ábralo desde la ventana Proyecto. Esto abre un entorno de programación llamado MonoDevelop.

Nota: Si esta es la primera vez que codifica, debe saber que puede ser realmente quisquilloso. Asegúrese de ser coherente con la ortografía, los casos y tener corchetes de apertura y cierre, paréntesis, corchetes, citas, etc. Además, tenga cuidado con los errores que resultan de no tener un punto y coma al final de una línea de código.

Ya debería haber dos secciones incluidas en su código por defecto: void Start () y void Update (). El inicio se ejecuta tan pronto como el objeto entra en el juego, y la actualización se ejecuta continuamente mientras el objeto está en el juego. Agregaremos un tercero, llamado FixedUpdate para manejar protocolos relacionados con la física. Debe tener un aspecto como este:

 nulo FixedUpdate () {} 

Antes de que podamos ingresar comandos, necesitamos declarar variables. Esto se realiza hacia la parte superior de la página, dentro de los corchetes que siguen a Public Class PlayerController (o similar): Monobehaviour, pero antes de la función nula Start (). Para el movimiento, utilizaremos una variable llamada "velocidad", que podemos ajustar para determinar la velocidad a la que nuestro personaje se mueve por la arena. Declare el tipo de variable (flotante) y el nombre (velocidad) así:

 velocidad de flotación pública; 

El punto y coma le dice al programa que este es el final de la línea de código. Obtendrá un error si olvida incluir un punto y coma al final de cada / más línea (s) de código, ¡así que no lo omita!

En FixedUpdate, declare dos flotadores más, moveHorizontal y moveVertical. Estos toman valores dependiendo de los comandos del teclado del usuario, y FixedUpdate los actualiza en cada cuadro.

 flotador moveHorizontal = Input.GetAxis ("Horizontal"); float moveVertical = Input.GetAxis ("Vertical"); 

El caso importa.

Aún dentro de FixedUpdate, cree un nuevo Vector3, un tipo de variable con tres dimensiones útiles para mover objetos en el espacio 3D. Esto tomará el valor de la entrada del usuario para el movimiento horizontal y vertical, y será cero en la dirección arriba / abajo porque en este juego, el jugador solo puede moverse en dos dimensiones.

 Movimiento Vector3 = nuevo Vector3 (moveHorizontal, 0.0f, moveVertical); 

Finalmente, ingrese una fuerza en el reproductor para moverlo, usando rigidbody.AddForce, un protocolo incorporado al componente del cuerpo rígido del jugador.

 rigidbody.AddForce (movimiento * velocidad * Time.deltaTime); 

Time.deltaTime se utiliza para suavizar el movimiento. Ajustaremos la variable de velocidad más tarde, en el editor de Unity.

Guarde el archivo CSharp y vuelva a Unity.

Vaya al panel Inspector del jugador y observe el guión de movimiento que acaba de crear. Debe haber un cuadro para su variable pública, velocidad. Puede cambiar el valor de las variables públicas utilizando el Inspector.

Por ahora, haga que la velocidad sea igual a un número entre 100-1000, y haga clic en el botón de reproducción en la parte superior central de la pantalla. Deberías poder mover la pelota usando las teclas de movimiento predeterminadas de Unity, ya sea ASWD o las teclas de flecha.

Haga clic en el botón de reproducción nuevamente para salir del modo de prueba.

Paso 7: agregar iluminación

Crea un objeto de juego vacío y llámalo "Luces". Para ello, haga clic en GameObject en la barra de herramientas superior y seleccione "crear vacío".

Cree una luz direccional seleccionando la opción de la barra de herramientas "crear" en el panel Jerarquía. Nómbrela "Luz principal". Conviértalo en un objeto secundario de Lights arrastrándolo en la Jerarquía al objeto del juego Lights. Este es un concepto similar a poner un archivo en una carpeta.

Con Luz principal seleccionada, cambie la configuración de la luz en el panel Inspector cambiando el Tipo de sombra a "Sombras suaves" y la Resolución a "Resolución muy alta".

En el panel Inspector, cambie la rotación de la luz principal para inclinarla hacia abajo sobre la arena. Usé 30X, 60Y, 0Z.

Haga clic derecho en la Luz principal en el panel Jerarquía para duplicarla. Nombre el duplicado "Luz de relleno", y el niño debajo de Luces.

Humedezca la intensidad de la luz de relleno cambiando el color a un tinte azul claro y reduciendo el campo de intensidad a 0.1 (en el Inspector).

Cambia las sombras a "Sin sombras".

Incline la luz de relleno en la dirección opuesta a la luz principal. Para mí, esto fue (330, 300, 0).

Paso 8: ajuste el ángulo de la cámara

Queremos que la cámara esté en ángulo hacia abajo sobre la arena, así que seleccione la Cámara principal en la Jerarquía y ajuste su transformación hasta que la imagen en la vista previa de la cámara (la parte inferior derecha del panel Escena, con la cámara seleccionada) se vea bien.

Usé (0, 10.5, -10) para la posición, y (45, 0, 0) para la rotación.

También puede arrastrar la cámara en la vista de escena para colocarla, si lo desea.

Paso 9: Haz que la cámara siga al jugador

Queremos que la cámara siga al jugador por la pantalla mientras se mueve. Para este propósito, cree un script llamado "cameraMovement" agregando un nuevo componente de script a la Cámara Principal en el panel Inspector. Haga doble clic en el script para abrirlo en MonoDevelop.

Este script accederá a otro objeto del juego, el jugador, por lo que debe declarar esto antes de la función Start () del script escribiendo

 jugador público de GameObject; 

Cree un Vector3 llamado "desplazamiento" escribiendo

 desplazamiento privado de Vector3; 

Bajo la función Start (), asigne el valor de offset a

 offset = transform.position; 

cual es la posición (x, y, z) de la cámara.

Bajo una función llamada LateUpdate (), defina la posición de la cámara como la posición del jugador más algún desplazamiento:

 nulo LateUpdate () {transform.position = player.transform.position + offset;} 

Guarde el script y regrese a Unity.

Necesitamos asignar un objeto de juego al "jugador" que definimos en el script cameraMovement. Seleccione la cámara principal y mire el panel Inspector. Debajo del script cameraMovement, debería haber una casilla llamada "Player". Actualmente está asignado a Ninguno (GameObject). Arrastre el Jugador desde la Jerarquía a este cuadro para asignar el objeto del juego del jugador al guión CameraMovement.

Asegúrese de arrastrar el nuevo script a la carpeta de scripts (en el panel Proyecto), que creó en Activos.

Pruebe el juego haciendo clic en el botón de reproducción en la parte superior central de la pantalla. Debes poder mover al jugador con las teclas de flecha y la cámara debe seguir tu movimiento.

Guarde la escena y guarde el proyecto.

Paso 10: hacer artículos

Crea un nuevo objeto de juego. Puede ser una esfera, un cubo, una cápsula o un cilindro. Yo usé un cubo.

Llámalo "Artículo".

Etiquete el elemento como "elemento" seleccionando Etiquetas y creando una nueva etiqueta llamada "elemento", luego regrese a Etiquetas para ese objeto del juego y seleccione la nueva etiqueta "elemento" que creó. Etiquete todos sus artículos como artículos. Asegúrese de que coinciden exactamente con la ortografía y las mayúsculas.

Coloque el elemento en un objeto de juego vacío llamado "elementos".

Restablecer sus transformaciones.

Agregue un cuerpo rígido al artículo.

Duplica el artículo varias veces y coloca las copias alrededor de la arena.

Paso 11: Haz que el jugador recoja los artículos y muestre la puntuación

Abra el script de movimiento del jugador desde el panel del Inspector con el objeto de juego Player seleccionado, y modifique el script para permitir que el jugador recopile y realice un seguimiento de los elementos que ha recopilado.

Haga dos declaraciones: una es una variable que realiza un seguimiento de su puntaje y la otra es un texto GUI que mostrará su puntaje en la vista de escena.

 recuento privado int; GUIText público countText; 

Bajo la función void Start (), inicialice count y CountText, una función que escribiremos más adelante.

 cuenta = 0; CountText (); 

Escriba una nueva función para lo que sucede cuando el jugador colisiona con los elementos. Esta debería ser su propia sección, al igual que las secciones void Start () y void Update.

 void OnTriggerEnter (Collider other) {if (other.gameObject.tag == "item") 
 {other.gameObject.SetActive (false); 
 cuenta = cuenta + 1; 
 CountText ();} 
 } 

Escriba la función CountText, que actualizará la puntuación en la pantalla de la GUI.

 CountText vacío () {countText.text = "Count:" + count.ToString (); 
 } 

Guarde el código y vuelva a Unity.

Seleccione todos sus artículos, asegúrese de que estén etiquetados como artículos y marque el botón "Se activa" en el componente Box Collider del Inspector.

Compruebe también el botón "Es cinemática" debajo del cuerpo rígido. Esto evita que sus artículos caigan por el piso, esencialmente al apagar la gravedad.

Para countText, cree un nuevo texto GUI (interfaz gráfica de usuario) utilizando la opción Crear en Jerarquía.

Establezca la transformación del Texto GUI en (0, 1, 0) y dele un desplazamiento de píxeles de (10, -10) en el componente GUIText en el panel Inspector.

Arrastre el Texto de la GUI al cuadro Texto de conteo en el Inspector con el Reproductor seleccionado.

Paso 12: Haz peligros

Estos paneles difíciles de ver lanzarán al jugador al aire, y posiblemente sobre el borde de la arena, en cuyo caso se terminará el juego. Hacer peligros es un proceso similar a hacer artículos.

Crea un nuevo objeto de juego vacío llamado "Peligros".

Cree un nuevo Quad y llámelo "Peligro".

Etiquetarlo como peligro y marcar "Es un disparador".

Cambie su color para que pueda verlo seleccionando Mesh Renderer en el Inspector, con el peligro seleccionado, y cambiando su material. Haga clic en el menú desplegable por Materiales y use el pequeño círculo gris a la derecha del cuadro para seleccionar un material diferente al gris predeterminado para el peligro. Tenía un material blanco preinstalado, así que lo usé.

Cambie la rotación del peligro a 90 alrededor del eje X y baje su altura Y a -0.4 para que sea un pequeño cuadrado blanco que yace justo sobre el piso de la arena.

Edite el script del jugador, bajo la función OnTriggerEnter (), de modo que tenga en cuenta la posibilidad de que el objeto con el que se encuentra el jugador sea un peligro, y no un elemento. Dile al jugador que salte si golpea el peligro.

 nulo OnTriggerEnter (Collider other) {if (other.gameObject.tag == "item") {other.gameObject.SetActive (false); cuenta = cuenta + 1; CountText (); } if (other.gameObject.tag == "hazard") {other.gameObject.SetActive (false); Vector3 jump = nuevo Vector3 (0.0f, 30, 0.0f); rigidbody.AddForce (jump * speed * Time.deltaTime); } 

Guarde el código, regrese al editor de Unity y duplique el peligro varias veces.

¡Coloca los peligros alrededor de la arena y prueba el juego!

Artículos Relacionados