Crea tu propio matamarcianos con Unity (I)

Crea tu propio matamarcianos con Unity (I)
42 comentarios Facebook Twitter Flipboard E-mail

Ha llegado el momento de mancharse las manos de sangre, el momento de bajar a luchar y comprobar si somos capaces de desarrollar nuestro pequeño videojuego con Unity. Os prometí un tutorial al respecto visto el éxito del post especial sobre Unity y hoy empezamos la aventura.

¿A quién está dirigido este tutorial? A todos aquellos que hayan tenido la ilusión de adentrarse en este complicado pero absorbente mundo del desarrollo de videojuegos y no hayan tenido tiempo o paciencia para intentarlo. Ojalá estos pequeños pasos para crear un simplísimo videojuego logren que perdáis el miedo y os animen a coger Unity por los cuernos. Puede que para entender algunas partes del código necesitéis conceptos muy básicos de programación, es inevitable. Aunque no os preocupéis que el código os lo daremos entero. Al final con paciencia y mimo todo acaba saliendo. Bienvenidos a vuestro primer prototipo de videojuego con Unity.

Antes de empezar quiero agradecer la colaboración de Rafa Gonzalez, el lead programmer de A Crowd of Monsters, que ha sido el encargado de hacer el scripting que da vida al juego. Juntos hemos preparado este sencillo matamarcianos. Digamos que lo que vamos a hacer es una versión 0.0001 de lo que sería un matamarcianos real. Pero quien sabe, el tutorial sentará las bases y seréis vosotros los que a base de tiempo y dedicación acaben convirtiendo el juego en algo más digno. Las cartas están sobre la mesa, ¿empezamos?

Descarga de Unity Free y configuración del proyecto

Lo primero que tendréis que hacer es descargar una copia de la versión gratuita de Unity desde su página oficial e instalarla en vuestro ordenador. Para este tutorial nosotros vamos a usar un Mac pero si disponéis de Windows no pasa nada. Podéis descargar la versión correspondiente y seguir todos los pasos al pie de la letra.

Una vez instalado Unity procedemos a crear un proyecto nuevo. Puede que algunas versiones de Unity abran por defecto el proyecto tutorial que acompaña al motor gráfico, ‘Angry Bots’. No os preocupéis, vamos a crear un proyecto totalmente nuevo. También necesitáis descargar un "Unity Package" que os he preparado con los archivos gráficos del juego. Una pequeña nave y una roca que nos servirá de enemigo. Se trata de un paquete que genera unity con archivos dentro, en este caso los modelos 3D y un script. Es una manera fácil de llevar contenido de un proyecto a otro y podéis bajarlo desde aquí.

Con Unity instalado y el VX-Fighter.unitypackage descargado es hora de empezar el vídeo.

El script que añadir a la nave

Recordad que este script también viene incluido en el VX-Fighter.unitypackage que debéis descargar antes de empezar el tutorial.

using UnityEngine;
using System.Collections;
//Character Controller es un script interno de Unity que sirve para facilitar el control de un personaje o un objeto
// La nave necesita un Character Controller. Esta línea hace que si no lo tiene, cuando arrastres el script se colocará uno.
[RequireComponent(typeof(CharacterController))]
// Creamos la clase NaveScript 2
public class NaveScript2 : MonoBehaviour {
// Definimos la variable "speed", la velocidad a la que se mueve la nave en una variable en una variable pública.
// Al definirla como pública podremos cambiar sus valores desde el Inspector.
public float speed = 10.0f;
// Definimos la variable que almacenará el character controller
private CharacterController controller;
// Lo que vaya dentro del Start se ejecutará cuando le das al "PLAY"
void Start () {
// Creamos la variable "controller", lugar donde guardamos el Character Controller
controller = GetComponent<CharacterController>();
}
// Lo que vaya dentro del Update se ejecutará a cada ciclo del juego (para entendernos, a cada frame)
void Update () {
//Input.GetAxis Horizontal mira si has tocado el teclado. Si devuelve -1 has tocado la flecha izquierda,
//si devuelve 1 has tocado la derecha. Lo mismo con "Vertical" y arriba y abajo.
Vector3 movement = new Vector3(Input.GetAxis("Horizontal"),0,Input.GetAxis("Vertical"));
//El vector de movimiento que hemos creado lo multiplicamos por la velocidad y le decimos al Character Controller
// (recordad que ahora nos referimos a él como "controller") que lo aplique a la nave. Así obtenemos su movimiento.
controller.SimpleMove(movement * speed);
}
//Esta línea crea un GameObject que podremos ver en el Inspector y allí colocar nuestras particulas de explosión al colisionar
public GameObject explosion_prefab;
//Esta función la usamos para saber cuando algo choca con el Character Controller de la nave
void OnTriggerEnter(Collider collider)
{
//Miramos si lo que ha chocado tiene el nombre "Asteroide". Si lo tiene destruímos el objeto nave.
if (collider.gameObject.name == "Asteroide")
GameObject.Destroy(this.gameObject);
}
// Una función que se llama de manera automática cuando se destruye un objeto.
void OnDestroy()
{
//Creamos una instancia del prefab de las partículas, eso hace que aparezcan las partículas de explosión cuando destruimos este objeto .
GameObject explosion = (GameObject)GameObject.Instantiate(explosion_prefab,transform.position,Quaternion.identity);
//Cuando las partículas se acaban, desaparecen. Se autodestruyen
explosion.GetComponent<ParticleAnimator>().autodestruct = true;
}
}
view raw gistfile1.cs hosted with ❤ by GitHub

En el próximo capítulo

Bueno chicos, felicidades. No ha sido tan duro, ¿no? Hemos llegado a tener un prototipo semi-funcional. Nuestro aguerrido VX Fighter ya navega por el espacio y, como es lógico, revienta al tocar los asteroides que lo pueblan. En el siguiente capítulo crearemos un scroll de asteroides que avance lentamente a por nosotros (o rápidamente, eso ya lo veremos) y le brindaremos a nuestra pequeña nave un par de láseres para que pueda defenderse.

Cambiar texturas, añadir un fondo espacial, efectos de post-proceso, partículas de ambiente, iluminación dinámica... eso son cosas que podéis ir haciendo vosotros ya mismo. Os recomiendo además que visitéis los foros de la comunidad de Unity.

Y es que un gran programa no es nada si no tiene una grandísima comunidad de usuarios dedicada detrás. Unity, por supuesto, la tiene. Allí encontraréis respuesta a muchas de vuestras dudas, ejemplos e incluso assets artísticos que la gente comparte por el mero hecho de compartir. También podéis encontrar más contenido 3D para vuestro juego en la Assets Store que incorpora el programa. En definitiva, perded el miedo y explorad el montón de opciones que se os abren.

Gracias a Rafa González, de A Crowd of Monsters, por su tiempo y por sus líneas de código.

Música | Oxygen Garden (Chris Zabriskie) / CC BY 4.0
Comentarios cerrados
Inicio
×

Utilizamos cookies de terceros para generar estadísticas de audiencia y mostrar publicidad personalizada analizando tu navegación. Si sigues navegando estarás aceptando su uso. Más información