jairogarcíarincón

Introducción



El objetivo del ejercicio es crear una escena llamada Colisiones con 2 sprites (uno de ellos con gravedad y otro no) y conseguir que cuando se choquen, la consola muestre un mensaje indicando el nombre de los dos sprites.

Para su resolución, dividiremos el ejercicio en los siguientes apartados:

  • La escena y los sprites
  • El componente Collider
  • El componente Rigidbody
  • El script y la consola de depuración de errores (Debug)


La escena y los sprites



Empezaremos creando una nueva escena en nuestro proyecto 2D. Para ello, en la Project window, entramos dentro de la carpeta Assets > Scenes, hacemos clic derecho, seleccionamos Create > Scene y la renombramos como Colisiones.

A continuación, y tal y como aprendimos en el capítulo anterior, crea 2 sprites cuadrados desde la Hierarchy window, y coloca uno encima de otro (a una cierta distancia).

Cambiales el color y llámalos, por ejemplo, Sprite rojo y Sprite azul.

Observa el resultado en la vista de Game, seleccionando como modo de visualización Full HD (1920x1080). El resultado debería ser similar a éste:

05 Unity 2D - Escena Colisiones y sprites
Fuente: Elaboración propia


NOTA: Si quieres cambiar el fondo de la pantalla, selecciona la Main Camera desde la Hierarchy window y, en su Inspector window, cambia el color de la propiedad Background al que más te guste.


El componente Collider



Si seleccionas cualquiera de los dos sprites, en su Inspector window podrás observar que tienen un componente de tipo Box Collider 2D. Es la caja de colisión que nos permitirá detectar si otro objeto se choca con él (o si lo atraviesa). Prueba a seleccionar el botón a la derecha de la propiedad Edit Collider para comprobar su forma y, si quisieras, modificarla, pues la caja de colisión no tiene por qué ser idéntica al sprite asociado.

También se pueden utilizar otros tipos de estructuras de colisión en función de la forma del sprite, como veremos más adelante.

Puesto que ambos sprites tienen su caja de colisión, en este punto no tenemos que hacer nada más.


El componente Rigidbody



Si en este punto ejecutas el juego pulsando el botón de Play, verás que no ocurre nada. Efectivamente, tenemos dos objetos con caja de colisión, pero ninguno de ellos tiene asociada física o script alguno.

El componente Rigidbody nos permite añadir propiedades físicas (gravedad, masa, etc.) a un objeto del juego, y además, hay un principio básico de Unity que dice que:

"Para que dos objetos colisionen o interactúen entre ellos, ambos deben tener un Collider, y al menos uno de elos debe tener un Rigidbody".

Por este motivo, vamos a añadir un componente de tipo Rigidbody 2D al sprite que está encima (en mi caso, el rojo). Para ello, desde su Inspector window, haz clic en el botón Add component, empieza a escribir el nombre del componente y, cuando lo veas, selecciónalo para que aparezca. En principio, usaremos sus opciones por defecto, que, entre otras cosas, incluye gravedad:

06 Unity 2D - Rigidbody 2D
Fuente: Elaboración propia


Si ahora ejecutas el juego, verás que el sprite de arriba cae y se "apoya" sobre el de abajo.


El script y la consola de depuración de errores (Debug)



Para terminar el ejercicio, nos faltaría crear un script, asociárselo como componente al sprite y añadir el código correspondiente para que la consola muestre sus nombres cuando se choquen, pero vayamos por partes.

Desde la Project window, empieza por crear una nueva carpeta llamada Scripts dentro de la carpeta Assets. para ello, clic derecho y Create > Folder.

A continuación, dentro de la carpeta recién creada, clic derecho y Create > C# Script y llámalo Informacion.

Haz doble clic en el archivo recién creado y espera a que se abra el editor Jetbrains Rider (cuando te pregunte si confías en la carpeta del proyecto, selecciona Trust and Open).

El archivo recién creado debería tener esta pinta, salvo por la cantidad de comentarios que yo he añadido como explicación e introducción a la programación en C#. Atiende ahora a las explicaciones del profesor y, a continuación, copia y pega los comentarios a tu script:



Te recomiendo conservar este script para futuras consultas, pues en lo sucesivo solo incluiremos aquellos comentarios que sean adecuados en cada momento.

Así vamos a crear a continuación otro script, que es el que necesitamos para resolver el ejercicio, y al que llamaremos Colision.

Antes de rellenar su código, debemos recordar que el objetivo era que la consola de depuración de Unity, nos mostrara el nombre los objetos cuando se chocaran pero ¿Qué es la consola de depuración de Unity?

Por norma general, todos los programas que incluyen interactividad y/o programación, tiene una ventana destinada a mostrar mensajes informativos o de error en diferentes niveles, acerca de lo que está ocurriendo en el juego. en el caso de Unity, puedes acceder a ella desde la ventana Console. Si no estuviera abierta, puedes abrirla desde el menú superior haciendo clic en Window > General > Console o con el atajo de teclado Ctrl + Mayus + C.

Una vez que tengas la consola abierta, rellena el script Colision con el siguiente código, y fíjate bien en los comentarios para entender su funcionamiento:



Para finalizar y comprobar el funcionamiento del script, debemos guardarlo (Ctrl + S), volver a Unity y asociárselo al objeto correspondiente (en este caso, el sprite que está encima).

Para ello hay varias opciones:

  • Selecciona el script y arrástralo al objeto (sprite) correspondiente.
  • Selecciona el objeto (sprite) y arrástra el script a su Inspector window
  • O haz clic en Add component, empieza a escribir el nombre del script y, en cuanto lo veas, selecciónalo.


Una vez que lo hayas hecho y si no has encontrado errores, al pulsar Play deberías ver cómo cae un sprite sobre otro y se muestran en la Consola los mensajes correspondientes:

07 Unity 2D - Script de Colision
Fuente: Elaboración propia


Publicado el 03 de Octubre de 2022

unityvideojuegos2d