Unity – Reglas basicas al usar Rigibody y colisionadores

Cuando uno empieza a trabajar en Unity, es típico encontrase en problemas que GameObject no colisionan entre ellos o no funciona como debería (y en proyectos grandes, notaremos que se alenté el juego). Por eso mismo dejo aquí unas reglas básicas al usar Rigibody y Colisionadores para evitar problemas y correcta funcionalidad.

  • Un GameObject con Colisionador pero SIN Rigibody se le considera estático. Esto quiere decir que si movemos un objeto con cierta frecuencia hay que agregarle el Rigibody, ya que para que las físicas funcione fluido, se tienen que calcular unos datos para que el impacto entre objetos de mejores resultados, y cuando un objeto no tiene Rigibody, algunos de estos valores son precalculados para un futuro impacto sea mayor rápido las físicas, pero si movemos con frecuencia un objeto sin Rigidoby, estos calculos se harán cada frame en que sea movido y volviéndose en contra la ventaja de precalcular valores. Por lo que si tienes que mover un GameObject con solo Colisionador, hazlo realmente solo cuando sea necesario.
  • Un GameObject con Rigibody siempre hay que moverlo usando el mismo Rigibody y no el Trasnform, solo usar el Transform para «Resetear» o iniciar un GameObject. De ahí usar Velocity, AddForce, AddTorque o MovePosition de las funciones de Rigibody al menos que este asignado como «Kinematic» podemos usar transform.
  • Todos los GameObject hijos con Colisionador donde el GameObject padre tiene Rigibody, estos colisionadores son parte del Rigibody del padre, si un hijo tiene otro Rigibody entonces ya es independiente y este dejara ser afectado por el Rigibody del padre. (Para que los hijos afecten a los padres, requiere uso de joins).
  • Los GameObject con Rigibody procura tenerlos en una escala lo más posible a 1/1.
  • Es mejor usar varios colisionadores primitivos ante los mesh o polygon collider.
  • Si usaras Raycast procura que solo sea con colisionadores primitivos.
  • OnCollisionStay no se llama si el Rigibody ya se encuentra en ‘sleep’ (Ya no se mueve ni rota).
  • No te alejes más 6,000 del origen para que los float no pierdan precision.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.