En este ejercicio vamos a ver como funciona el motor de físicas de unity aplicando
conceptos como la gravedad.
El motor de Unity que simula la gravedad y todo el moviemiento de los objetos se
llama Físicas.
Lo primero de todo vamos a aplicarle el componente Rigidbody a nuestro Cube.
Los Rigidbodies le permite a sus GameObjects actuar bajo el control de la física.
El Rigidbody puede recibir fuerza y choque para hacer que sus objetos se muevan en una manera realista.
Un Rigidbody es el componente principal que permite el comportamiento físico para un objeto. Con un Rigidbody adjunto, el objeto inmediatamente responderá a la gravedad. Si uno o más componentes Collider son también agregados entonces el objeto será movido por colisiones entrantes.
Debido a que un componente Rigidbody asume el movimiento del objeto el cual está adjunto, usted no debería intentar moverlo desde un script cambiando las propiedades del Transform como lo son la posición y rotación.
Hay algunos casos en los que es posible que deseemos que un GameObject tenga un Rigidbody sin que el motor de física controle su movimiento.
Por ejemplo, es posible que deseemos controlar su carácter directamente desde el código, pero aún así permitir que lo detecten los desencadenantes.
Este tipo de movimiento no físico producido a partir de un script se conoce como movimiento kinematic.
El componente Rigidbody tiene una propiedad llamada Is Kinematic que lo elimina del control del motor de física y permite que se mueva de forma cinemática desde un script.
Añadiremos este estado del objeto yendonos a la pestaña inspector pulsando la opción: Add Component> Physics > Rigidbody
Desde aquí podemos ver los diferentes parámetros del RigidBody como la masa del objeto el rozamiento o el uso de la gravedad.
Una vez activado este componente vamos a probar en la escena como cae nuestro cubo en el mapa.
Veremos que nuestro cubo cae hasta llegar al suelo. Se para ahí porque ambos objetos tanto el suelo como la caja tiene un componente llamado BoxCollider que permite la colisión entre ambos.
El suelo no se esta cayendo hacia abajo porque no tiene Rigidbody.
Como el motor de fisicas simula la gravedad del mundo real la aceleración a la que van nuestros objetos al caer es de 9,8 newtons.
Este parametro lo podemos configurar en la opción Edit > Projects Settings > Physics
Desde aquí podemos variar la aceleración de la caida de nuestros objetos. Cambiando el valor de -9,8.
Vamos a poner -3 en el eje de las Y para simular una gravedad como la de nuestro satelite, la Luna.
Esto al probarlo veremos que nuestro objeto caeramas lento que antes.
Si variamos también el valor de los ejes X y Z y de esta forma podemos simular tormentas de arena en nuestros objetos. Unas fuerzas que fueran paralelas a la superficie de la tierra.
Vamos a ver como variar el impacto de nuestro objeto con respecto al suelo. Es decir vamos a restringir las rotaciones en los ejes x, y, z es decir vamos a venirnos a la opción Constraints y desmarcar las opciones de Freeze Rotation para que de esta manera el cubo no se recoloque una vez que ha impactado contra el suelo.
De tal manera que al probar nuestras fisicas en la vista de Game el cubo no se recoloque simplemente se quede girado cuando llegue al suelo y se quede en esa posicion
Las físicas es un elemento que es necesario en un videojuego, es algo que da realismo al videojuego y lleva más allá la experiencia, estas físicas son posibles realizarlas en Unity, esto ocurre porque puede hacer uso de los cálculos de físicas realizado por Nvidia, PyshicsX, esto nos permite añadir físicas realistas para nuestros videojuegos.
Entre los tipos de físicas que podemos usar están los rigidbodies, los colliders o los joints, estos son diferentes tipos de físicas y al mismo tiempo su uso depende de diferentes aspectos.
El rigidbody es uno de los más importantes, ya que, al asignarlo al nuestro gameobject, este permite apli- carie velocidades, provocar colisiones, aplicar fuerza de gravedad, etc. Siempre que se desee modificar el objeto, también debemos modificar todas sus propiedades, no solo moverlo o rotarlo, porque esto puede provocar ciertos problemas.
El collider es un elemento que nos permite hacer una colisión con otro objeto, para explicarlo mas a fondo debemos recordar que aplicamos un rigidbody a nuestro anterior objeto (lo cual puede ser un personaje, carro, etc.), el collider nos permite hacer que se generen colisiones con nuestro anterior objeto, un ejemplo puede ser un arma, un balón, un árbol, etc.
Existen muchos tipos de colliders, algunos de estos son:
Box collider: es implementado en cajas, puertas, edificios.
Sphere collider: su uso se basa en balones, planetas, etc.
Capsule collider: su uso se basa en para brazos, piernas, o también para unir múltiples colisionadores. Wheel collider: usado para llantas.
Terrain collider: implementa una superficie con forma de algún terreno.
Mesh collider: este es uno de los mas importantes y los mas exactos en cuanto a detección de colisiones se trata, este se puede describir como una malla, las cual permite ajustarla a nuestro gusto con el fin de tener una mayor detección de colisiones.
En algunas ocasiones los colliders también son usados como triggers, un trigger nos permite saber si un objeto ya colisiono o no, si esta dentro de otro objeto o no, etc.