Programación: Tutorial videojuegos con Unity 2D en español (Parte 4 Físicas)

Unity

Las físicas de un juego son muy importantes, son la parte que se encarga de que cuando un muñeco salte vuelva a caer de forma natural (con gravedad 1g) o de que cuando un muñeco choque con un objeto lo desplace con determinada fricción.

Motores de físicas en Unity

Unity dispone de dos motores para controlar las físicas:

  1. Physics 2D
  2. Physics 3D

El motor de phycics 3D se sale del ámbito de este tutorial ya que este tutorial se encargará sólo de la parte 2D de Unity. Nosotros veremos el motor Physics 2D que es el encargado de manejar los sprites por la pantalla en 2D, controlar sus posiciones, comprobar las colisiones, etc.

Como os podéis imaginar, el motor 2D de Unity ignora la coordenada Z de los componentes de la escena, sólo tiene encuenta las coordenadas XY

Podemos configurar múltiples cosas del motor 2D desde Edit-> Project Settings-> Physics 2D, accederemos al inspector con estas características:

  • Velocity y Position iterations: Número de veces que el motor hace la corrección de posicion y velocidad de un objeto por cada frame
  • Max Traslation speed y Max Rotation speed: Máxima velocidad que se permite rotar y mover los objetos
  • Gravity: Vector de gravedad (X=0, Y=-9,81) con esto definimos que los objetos caen verticalmente hacia abajo. Podemos cambiarlo para simular mundos extraños (mayor gravedad por ejemplo)
  • Matriz de colisión: Aquí tendremos una matriz de los objetos para que definamos qué objetos colisionan con cuales. Por ejemplo una nube no colisionaría con nada. Un enemigo no colisionaría con una llave que tiene que coger el usuario

RigidBody en Unity

El RigidBody nos servirá en Unity para definir las características de los objetos dentro del mundo físico. A un GameObject (un sprite) en unity como hemos visto antes puede añadírsele un RigidBody, desde ese momento el objeto comenzará a estar controlado por el motor de físicas del Unity: tendrá gravedad, aceleración, rozamiento, etc. Si queremos tener control sobre este objeto para cambiar su posición, rotación, etc deberemos cambiarle la propiedad Kinematic a true, una vez hecho esto podremos cambiar las propiedades de posición y rotación del objeto editando su Transform. Un RigidBody puede también cambiársele otras propiedades:

  1. Masa: Cuanta más masa, más pesará el objeto a la hora de los choques. Ocurre como en el mundo real. Eso sí, para los que sepáis poco de física, la masa no influye para la velocidad de caida de los cuerpos.
  2. Drag: Coeficiente de rozamiento
  3. Otras muchas que podéis ver listadas aqui: RigidBody2D Atributtes

 

Continuará

Votos totales: 508