Hi Dnulke,
All hands have 3 colliders per finger, and 1 collider for palm (Total of 16 colliders).
All finger colliders have a HandModel component attached to its parent's parent (Except for Palm).
The hierarchy looks like:
HandModel
| FingerModel (Index)
|| Bone #1 (Collider)
|| Bone #2 (Collider)
|| Bone #3 (Collider)
| FingerModel (Middle)
|| Bone #1 (Collider)
|| Bone #2 (Collider)
|| Bone #3 (Collider)
| ... (Repeat for Ring, Pinky, and Thumb)
| Palm (Collider)
So what you can try is:
private bool IsHand(Collider other)
{
if (other.transform.parent && other.transform.parent.parent && other.transform.parent.parent.GetComponent<HandModel>())
return true;
else
return false;
}
void OnTriggerEnter(Collider other)
{
if (IsHand(other))
{
Debug.Log("Yay! A hand collided!");
}
}
Similarily, if you want to keep track of the Hand after colliding or to do something with it (Example: Change its colors), you can try:
private HandModel GetHand(Collider other)
{
if (other.transform.parent && other.transform.parent.parent && other.transform.parent.parent.GetComponent<HandModel>())
return other.transform.parent.parent.GetComponent<HandModel>();
else
return null;
}
void OnTriggerEnter(Collider other)
{
HandModel hand_model = GetHand(other);
if (hand_model != null)
{
Debug.Log(hand_model.GetPalmPosition()); // Give me pal position of the hand! (Vector3)
}
}
Cheers,
Wilbur