Unity - Personajes (Colisionadores + particulas) , Rigs y constraints
Descripción General
Esta guía funciona para aprender sobre colisionadores básicos y como aplicarlos en particulas además de aprender a utilizar constraints en conjunto con rigs
Guía de trabajo
Animation Rigging
Animation rigging es un package gratis de unity que permite crear rigs secundarios para personajes y objetos animados, que se integran fácilmente con animaciones existentes y permiten agregar restricciones de posición o rotación, ajustes de postura, entre otros.
Es compatible con Timeline y Animator.

Bone Renderer
Mediante animation rigging podemos obtener una visualización sencilla de nuestro rig original en unity, además de que podemos personalizar nuestra visualización del rig, esto no se vera cuando le demos play a nuestra escena. Para agregarlo, seleccionamos nuestro objeto y en la parte superior nos vamos a animation Rigging >Bone Renderer Setup

Rig Effectors
Estos nos funcionaran como controladores de nuestro rig en unity, podemos cambiarles el color

Multi - Aim Constraint
Este Sirve para casos donde necesitas que un hueso mire hacia uno o más objetivos, para poder utilizar este constraint necesitamos crear nuestro rig secundario seleccionando en la parte superior Rigging > Rig Setup esto nos creara un componente que contenga nuestro rig secundario.
Explicaremos cada uno de sus componentes principales:
Weight: Controla cuanto afecta el constraint al objeto
Constrained object: Aqui agregas el objeto que va a ser afectado ej. el hueso de la cabeza
Aim Axis: Define que del objeto apunta hacia el objetivo
Source Objects: Define que objetivos apuntará según su peso
Min Limit - Cuanto es lo minimo que puede rotar
Max Limit - Cuanto es lo maximo que puede rotar
Mantain Offset: Si activamos este valor, el objeto conservara su posición inicial

Ejemplo
Una vez creado nuestro rig agregaremos dentro de este un Empty (en este caso sera nuestra cabeza) y en su inspector Add Component >Multi Aim Constraint

En constrain object asignamos el hueso de nuestra cabeza. Agregamos un empty nuevo dentro de nuestro empty que se llame target, en la esquina inferior derecha tenemos un mini inspector de Animation Rigging, si le damos click al target, podremos tener un gizmo para nuestro target. Si damos play y movemos nuestro target, veremos que funciona y si teniamos aisgnado algún idle funciona junto con el idle.

IK en unity
Para crear un ik en unity necesitas ir a animation Rigging > Rig Setup una vez que tengas tu rig crea un nuevo GameObject y nómbralo Arm_IK_Right.
Agrega el componente Two Bone IK Constraint.
Este constraint requiere 3 referencias:
Root: Hombro (ej. RightUpperArm)
Mid: Codo (ej. RightLowerArm)
Tip: Mano (ej. RightHand)
Si colocamos el asset de Tip, podemos hacer que automáticamente nos asigne los otros huesos, además nos creara un hint y un target


Como queremos que el target sea la mano ya que va a ser lo que controlemos, necesitamos copiar la posición de la mano y pegársela al target. El hint lo acomodaremos atrás del codo ya que va a ser nuestro controlador de este.

Consideraciones
Para poder agregar el ik en animaciones previas, hay que duplicar la animación o ponerlo como override en timeline
Guía de trabajo
Constraints
¿Qué son? Son componentes que vinculan ya sea la posición, rotación o escala de un objeto a otro. Estos vienen de default con unity, no es necesario bajar algún paquete.
Para agregar un constraint, seleccionamos el objeto de la jerarquía que llevaría el constraint Le damos click en Add Component > Aim Constraint.
Estos son los tipos de constraints que hay:
***Aim Constraint:***Hace que un objeto oriente un eje especifico hacia un objetivo como si estuviera apuntando hacia él. A diferencia del Look At, tiene más ajustes y es más preciso.
Look At Constraint: Hace que un objeto siempre mire hacia otro.
***Parent Constraint:***Combina posición y rotación
Position Constraint: El objeto copia la posición de otro.
Rotation Constraint: El objeto copia la rotación de otro.
Scale Constraint: El objeto iguala la escala de otro.
Componentes generales de los constraints en inspector:
Sources: Lista de targets con los cuales el objeto cumplirá el constraint
Weight: Cuánto influye ese target individualmente. Puedes tener más de uno y mezclar pesos para blending.
Is Active: Si esta activado o no el constraint
Ejemplos de cuando es aplicable cada uno:
| Situación / Constraint | Position | Rotation | Scale | Parent | LookAt | Aim |
| Seguir posición de un objeto (ej. marcador) | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
| Girar igual que otro objeto | ❌ | ✔️ | ❌ | ✔️ | ❌ | ❌ |
| Imitar escala de otro objeto | ❌ | ❌ | ✔️ | ❌ | ❌ | ❌ |
| Mover objeto con posición y rotación (tipo padre) | ✔️ | ✔️ | ❌ | ✔️✔️ | ❌ | ❌ |
| Cabeza que mira al jugador | ❌ | ✔️ | ❌ | ❌ | ✔️ | ✔️✔️ |
| Ojos que siguen a un objetivo | ❌ | ✔️ | ❌ | ❌ | ❌ | ✔️✔️ |
| Cámara que sigue y mira al jugador | ✔️ | ✔️ | ❌ | ✔️ | ✔️ | ❌ |
| Arma o accesorio que cambia de mano | ✔️ | ✔️ |