Contexto


En todo videojuego, los objetos de la escena deben tener algún comportamiento; en Unity se utiliza la física. Unity cuenta con un motor de física que provee componentes que manejan la física de los objetos. Existen dos motores de física en Unity, uno para 3D y el otro para 2D. Los conceptos básicos son los mismos para ambos, excepto por las tres dimensiones que se manejan en el 3D.

Al utilizar la física para el 2d, los componentes funcionan en dos dimensiones. Es importante comprender que ambos son comparables, pero no compatibles. Se pueden colocar ambos en una escena, pero no podrán interactuar el uno con el otro.

Explicación


10.1 Componentes

La física 2D de Unity cuenta con auxiliares para distintos tipos de movimientos y comportamientos de los GameObjects.

La física en 2D cuenta con sus propios ajustes, que puedes modificar; da clic en el menú principal, Edit/Proyect Settings/Physics 2D. Estos ajustes contienen propiedades tales, como fuerza, dirección, gravedad, el material por defecto y la capa collision matrix, por mencionar algunas.

A continuación, aprenderás sobre los componentes para la física 2D y sus propiedades.

Haz clic en cada elemento.

Rigidbody es un componente que permite a un GameObject ser afectado por la física 2D. El GameObject también debe tener el componente Collider 2D para interactuar con otros GameObjects.

El Rigidbody se requiere para trabajar con componentes especiales, como las articulaciones 2D. También se utiliza para definir propiedades físicas de un GameObject, tales como masa, gravedad, escala.

Rigidbody 2D tiene una escala de gravedad que permite ajustar la gravedad. El componente Rigidbody 2D permite que un GameObject se vea afectado por la física 2D.

Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.

Propiedades:

  • Body Type: En esta opción elegirás el tipo de body (cuerpo) para manipular el movimiento. Existen tres tipos, que son Dynamic, Kinematic y Static.
  • Material: Es la opción para especificar el material del Rigidbody.
  • Simulated: Al estar activada esta casilla, el Rigidbody 2D, los Colliders y Joints que estén unidos, interactuarán con la física en la simulación.
  • Mass: La masa del objeto se encuentra en kilogramos.
  • Linear / Angular Drag: Opción para modificar la velocidad. Linear Drag, reduce la velocidad y Angular reduce la rotación y velocidad angular.
  • Gravity Scale: Controla la manera en la que la gravedad afecta al Rigidbody 2D.
  • Collition Detection: Los ajustes controlan el tipo de colisión detectado, al utilizar un Rigidbody 2D.
  • Sleeping Mode: Controla cómo el Rigidbody 2D dormirá o guardará tiempo para el procesamiento. Contiene las opciones never sleep, start awake, start asleep.
  • Interpolate: Ayuda a suavizar el movimiento de un GameObject del fotograma previo.
  • None: No afecta a ninguna interpolación.
  • Extrapolate: Suaviza, con base en una posición estimada del siguiente fotograma.
  • Constraints: Restricción en el movimiento del Rigidbody 2D.
  • Info: Datos del Rigidbody 2D, tales como posición, rotación y velocidad.

Para tener presente la física dentro de la escena, los Gameobjects deben utilizar uno de los componentes Collider, para definir su forma física e interactuar con lo más relevante del motor de física.

Existen cuatro tipos de Colliders en la física 2D, optimizados para una figura en particular.

Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.

Propiedades:

  • Circle Collider: Funciona para objetos circulares.
  • Box Collider: Funciona para objetos rectangulares.
  • Polygon Collider: Funciona para objetos complejos.
  • Edge Collider: Funciona bien con superficies.

Propiedades que comparten:

  • Trigger: Este collider será usado para eventos de triggering.
  • Material: Es la referencia al material de Physics 2D que es utilizado por el collider 2D. El material también determina en qué forma reaccionarán cuando se encuentren, define los rebotes y la fricción de la superficie del collider.

Las demás propiedades sirven para definir la forma de cada uno de los diversos colliders.

Este componente permite añadir física a un objeto 2D; para que un Area Effector funcione, debe estar unido a un GameObject, el cual debe tener un collider 2D.

Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.

Propiedades:

  • Mask Collider: Es la máscara que se utiliza para seleccionar determinadas capas, que permiten interactuar con el área Effector 2D.
  • Global Angle: Al estar activada esta casilla, se define la fuerza del ángulo global.
  • Force Angle: Es el ángulo en el que se aplicará la fuerza, en escala de 0 a 360 grados.
  • Force Magitude: Es la magnitud de la fuerza que se le aplica a cada objeto.
  • Force Variaton: Permite añadir o sustraer una cantidad aleatoria, entre 0 y la cantidad que el usuario desee.
  • Force Target: El objetivo donde el Area Effector aplica cualquier fuerza.

El Point Effector 2D aplica fuerzas para atraer o rechazar un punto, que puede ser definido como la posición del Rigidbody o el centro de un collider. Cuando otro collider tiene contacto con el effector, entonces una fuerza es aplicada al objetivo.

Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.

Propiedades:

  • Use Collider Mask: Al estar activada, esta casilla utiliza la propiedad de máscara.
  • Collider Mask: La máscara es utilizada para seleccionar capas que interactuarán con el Point Effector 2D.
  • Force Magnitude: Es la magnitud de la fuerza que se aplicará al Point Effector 2D.
  • Force Variation: Es la variación de la magnitud que se aplica a la fuerza.
  • Distance Scale: Es la escala aplicada a la distancia entre la fuente y el objetivo.
  • Drag: Es la fricción lineal.
  • Angular Drag: Es la fricción angular.
  • Force Source: Es la fuente que atrae o rechaza objetivos.
  • Force Target: Es el punto de un objetivo, en donde el effector aplica su fuerza.
  • Force Mode: El modo en el cual la fuerza es calculada.

10.2 2D Joints

Los joints, articulaciones en español, funcionan para unir GameObjects. Se pueden unir a GameObjects que tengan el componente Rigidbody 2D.

Existen nueve tipos de 2D joints, a continuación, te explicaremos cada uno de los componentes y sus propiedades.

Haz clic en cada elemento.

El Distance Joint une dos GameObjects controlados por un Rigidbody, manteniendo cierta distancia entre ellos.

Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.

Propiedades:

  • Enable Collision: Si la casilla está activada, los objetos conectados pueden chocar uno con el otro.
  • Connected Rigidbody: Al estar activada la opción None, la articulación será colocada en cierto punto del espacio, definiendo el Connected Anchor. Para ver una lista de objetos para conectar, da clic en el círculo a la derecha de la propiedad.
  • Auto Configure Connected Anchor: Se activa esta casilla para ajustar la locación del anchor, de manera automática.
  • Anchor: Es el punto final de la articulación que se conecta con el primer objeto.
  • Connected Anchor: Es el punto final de la articulación que se conecta con el segundo objeto.
  • Auto Configure Distance: Automáticamente, se detecta la distancia entre dos GameObjects.
  • Distance: La distancia que mantienen dos GameObjects.
  • Max Distance Only: Si la casilla está activada, la articulación tendrá una distancia máxima. Si no está activada, la distancia entre los objetos se ajusta.
  • Break Force: El nivel de fuerza que se necesita para romper una articulación. La opción Infinity es para hacer la articulación inquebrantable.

El Fixed Joint 2D se aplica para mantener la posición relativa entre dos objetos, de tal manera que los objetos mantienen una posición y ángulo. Es una articulación de tipo resorte.

Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.

Propiedades:

  • Enable Collision: Esta propiedad se activa para tener la habilidad de colisión entre dos objetos.
  • Connected Rigidbody: Ayuda a especificar el otro objeto con el que se une la articulación.
  • Auto Configure Connected: Se activa esta casilla para fijar automáticamente la locación del Anchor Point.
  • Anchor: Es el punto final de la articulación, se conecta con el primer objeto.
  • Connected Anchor: Es el punto final de la articulación, se conecta con el segundo objeto.
  • Damping Ratio: Es el grado en el cual se busca suprimir la oscilación del resorte. Entre más alto sea el valor, menor es el movimiento.
  • Frequency: Es la frecuencia con la que oscila el resorte.
  • Break Force: El nivel de fuerza que se necesita para romper una articulación. La opción infinity es para hacer la articulación inquebrantable.
  • Break Torque: Especifica el grado de torsión que se necesita para romper una articulación. La opción Infinity es para hacer la articulación inquebrantable.

El Friction Joint 2D conecta los GameObjects controlados por la física de Rigidbodys.

Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.

Propiedades:

  • Enable Collision: Esta propiedad se activa para tener la habilidad de colisión entre dos objetos.
  • Connected Rigidbody: Ayuda a especificar el otro objeto con el que se une la articulación.
  • Auto Configure Connected: Se activa esta casilla para fijar automáticamente la locación del Anchor Point.
  • Anchor: Es el punto final de la articulación, que se conecta con el primer objeto.
  • Connected Anchor: Es el punto final de la articulación, se conecta con el segundo objeto.
  • Max Force: Ajusta el movimiento lineal.
  • Max Torque: Ajusta el movimiento angular.
  • Break Force: El nivel de fuerza que se necesita para romper una articulación. La opción Infinity es para hacer la articulación inquebrantable.
  • Break Torque: Especifica el grado de torsión que se necesita para romper una articulación. La opción Infinity es para hacer la articulación inquebrantable.

Es un componente 2D que permite al sprite rotar alrededor de un punto, mientras es controlado por la física de un rigidbody 2D, esto quiere decir que el movimiento es restringido para que se mueve como si fuera una bisagra. Se puede utilizar para mover puertas, péndulos, entre otros.

También se puede utilizar Mutiples Hinge Joints para crear una cadena.

Un solo Hinge Joint debería ser aplicado a un GameObject. La bisagra girará en el punto especificado por la propiedad Anchor, moviéndose alrededor de la propiedad Axis específica.

Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.

Propiedades:

  • Enable Collision: Esta propiedad se activa para tener la habilidad de colisión entre dos objetos.
  • Connected Rigidbody: Ayuda a especificar el otro objeto con el que se une la articulación.
  • Auto Configure Connected: Se activa esta casilla para ajustar automáticamente la locación del anchor, para que el GameObject conecte con la articulación.
  • Anchor: Es el punto final de la articulación que se conecta con el primer objeto.
  • Connected Anchor: Es el punto final de la articulación, se conecta con el segundo objeto.
  • Use Motor: Este motor hace que el objeto gire. Al estar seleccionado, brinda las propiedades Motor Speed y Maximum Motor Force.
  • Use Limits: Si esta casilla es activada, el ángulo de la bisagra es restringido. Al activarse esta propiedad, puedes indicar si quieres el ángulo más pequeño o el ángulo mayor al que puede llegar la rotación.
  • Angle Limits: Se utiliza para simular el punto más alto o más bajo del movimiento de un sube y baja. Incluye Lower y Upper level.
  • Break Force: El nivel de fuerza que se necesita para romper una articulación. La opción Infinity es para hacer la articulación inquebrantable.
  • Break Torque: Especifica el grado de torsión que se necesita para romper una articulación. La opción Infinity es para hacer la articulación inquebrantable.

Esta articulación permite a dos GameObjects, controlados por un Rigidbody, mantener la posición basada en la colocación de cada uno.

Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.

Propiedades:

  • Enable Collision: Esta propiedad se activa para tener la habilidad de colisión entre dos objetos.
  • Connected Rigidbody: Ayuda a especificar el otro objeto con el que se une la articulación.
  • Max Force: Ajusta el movimiento lineal.
  • Max Torque: Ajusta el movimiento angular.
  • Correction Scale: Corrige la articulación, para asegurar que tiene el comportamiento requerido.
  • Auto Configure Offset: Activa esta casilla para colocar y mantener, de manera automática, la distancia y ángulo entre los dos objetos.
  • Linear Offset: Coloca las coordenadas para especificar y mantener la distancia entre los objetos conectados.
  • Angular Offset: Coloca las coordenadas para especificar y mantener el ángulo entre los objetos conectados.
  • Break Force: El nivel de fuerza que se necesita para romper una articulación. La opción Infinity es para hacer la articulación inquebrantable.
  • Break Torque: Especifica el grado de torsión que se necesita para romper una articulación. La opción Infinity es para hacer la articulación inquebrantable.

El componente Slider Joint 2D le permite a un GameObject sprite que es controlado por la física de un Rigidbody, deslizarse a lo largo de una línea en el espacio.

Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.

Propiedades:

  • Enable Collision: Esta propiedad se activa para tener la habilidad de colisión entre dos objetos.
  • Connected Rigidbody: Ayuda a especificar el otro objeto con el que se une la articulación.
  • Auto Configure Connected: Se activa esta casilla para fijar automáticamente la locación del Anchor Point.
  • Anchor: Es el punto final de la articulación, se conecta con el primer objeto.
  • Connected Anchor: Es el punto final de la articulación, se conecta con el segundo objeto.
  • Auto Configure Angle: Activa esta casilla para detectar el ángulo entre los dos objetos.
  • Angle: Introduce el ángulo que mantiene la articulación entre los dos objetos.
  • Use Motor: Este motor hace que el objeto gire. Al estar seleccionado, brinda las propiedades siguientes.
    • Motor: Se especifica la velocidad y fuerza deseada.
    • Use Limits: Se activa para limitar la línea de fuerza.
  • Translation Limits: Especifica un segmento de línea para los objetos.
  • Break Force: El nivel de fuerza que se necesita para romper una articulación. La opción Infinity es para hacer la articulación inquebrantable.
  • Break Torque: Especifica el grado de torsión que se necesita para romper una articulación. La opción Infinity es para hacer la articulación inquebrantable.

El componente Spring Joint 2D permite que dos objetos, controlados por la física de un Rigidbody, estén juntos, como si fueran un resorte.

Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.

Propiedades:

  • Enable Collision: Esta propiedad se activa para tener la habilidad de colisión entre dos objetos.
  • Connected Rigidbody: Ayuda a especificar el otro objeto con el que se une la articulación.
  • Auto Configure Connected: Se activa esta casilla para fijar la locación del Anchor Point automáticamente.
  • Anchor: Es el punto final de la articulación, que se conecta con el primer objeto.
  • Connected Anchor: Es el punto final de la articulación, que se conecta con el segundo objeto.
  • Auto Configure Distance: Activa esta casilla si quieres que, automáticamente, se detecte la distancia y se ajuste la distancia de la articulación entre los dos objetos.
  • Distance: Es la distancia en la cual el resorte debería mantenerse entre los dos objetos.
  • Damping Ratio: Es el grado en el cual se busca suprimir la oscilación del resorte. Entre más alto sea el valor, menor es el movimiento.
  • Frequency: Es la frecuencia con la que oscila el resorte.
  • Break Force: El nivel de fuerza que se necesita para romper una articulación. La opción Infinity es para hacer la articulación inquebrantable.

El Target Joint 2D conecta un objetivo específico. Es una articulación de tipo resorte que puedes utilizar para levantar y mover un objeto, utilizando la gravedad.

Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.

Propiedades:

  • Anchor: Es el punto final de la articulación, que se conecta con el primer objeto.
  • Target: Es el lugar a donde uno de los puntos de la articulación pretende moverse.
  • Auto Configure Target: Activa esta casilla para ajustar la posición del otro punto de la articulación, que no cuenta con ella.
  • Max Force: Ajusta la fuerza que la articulación, puede aplicar cuando se busca mover el objeto a la posición que se tiene como objetivo. Entre más alto sea el rango, mayor será la fuerza.
  • Damping Ratio: Es el grado en el cual se busca suprimir la oscilación del resorte. Entre más alto sea el valor, menor es el movimiento.
  • Frequency: Es la frecuencia con la que oscila el resorte.
  • Break Force: El nivel de fuerza que se necesita para romper una articulación. La opción Infinity es para hacer la articulación inquebrantable.

Un Wheel Joint 2D es utilizado para simular una rueda rodando, esta rueda utiliza un resorte para mantener la distancia del cuerpo del vehículo.

Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.

Propiedades:

  • Enable Collision: Esta propiedad se activa para tener la habilidad de colisión entre dos objetos.
  • Connected Rigid Body: Ayuda a especificar el otro objeto con el que se une la articulación.
  • Auto Configure Connected: Se activa esta casilla para fijar automáticamente la locación del Anchor Point.
  • Anchor: Es el punto final de la articulación que se conecta con el primer objeto.
  • Connected Anchor: Es el punto final de la articulación que se conecta con el segundo objeto.
  • Suspension: La suspensión se encarga de mantener las ruedas en contacto con el suelo, contiene las siguientes variantes.
    • Damping Ratio: Es el grado en el cual se busca suprimir la oscilación del resorte en la suspensión. Entre más alto sea el valor, menor es el movimiento.
    • Frequency: Es la frecuencia con la que el resorte en la suspensión oscila, mientras los objetos se acercan a la distancia deseada.
    • Angle: Introduce el ángulo de movimiento de la suspensión.
  • Use motor: Al estar activada la casilla, se aplica un motor de fuerza a la rueda.
  • Motor: Se especifica la velocidad y fuerza deseada.
  • Break Force: El nivel de fuerza que se necesita para romper una articulación. La opción Infinity es para hacer la articulación inquebrantable.
  • Break Torque: Especifica el grado de torsión que se necesita para romper una articulación. La opción Infinity es para hacer la articulación inquebrantable.

10.3 Aplicando Physics a GameObjects

Recuerda que para crear GameObjets puedes hacer uso de imágenes previamente guardadas en tu carpeta de Assets.

En el siguiente ejemplo, vas a crear GameObjects para, posteriormente, agregarles componentes Physics 2D, a los cuales les agregarás material para aplicar el efecto de Deslizar y Rebotar.

En el siguiente video puedes visualizar el funcionamiento correcto de los componentes de Physics 2D, aplicados en la actividad 10:

Cierre

En el tema has aprendido sobre la física en Unity, para qué sirve y cómo se controla. También conociste los componentes de Physics 2D, con los que modificarás el comportamiento de los GameObjects. Puedes usar estos conocimientos para darle valor visual a tu juego.

Pudiste comprobar que los componentes de Physics 2D provocan un gran cambio en el juego y brindan realismo a tus GameObjects.

Checkpoint


Asegurate de:

  • Conocer los componentes de Physics 2D.
  • Aplicar los componentes de Physics 2D a tu videojuego.

Referencias