Я бы посоветовал не добавлять все коллайдеры на один и тот же GameObject
, а дать каждому коллайдеру свой собственный дочерний элемент GameObject
(таким образом, вы также можете легко увидеть, каким коллайдерам принадлежит какой контур в представлении сцены;))
Затем вы можете использовать класс с перечислением, чтобы определить, какой у вас там тип коллайдера:
public class BodyPart : MonoBehaviour
{
public BodyPartType Type;
}
public enum BodyPartType
{
Head,
LeftArm,
RightArm,
Body,
LeftLeg,
RightLeg
}
и прикрепить его ко всем частям тела рядом с каждым коллайдером.
Тогда вы могли бы сделать что-то вроде
virtual protected void OnTriggerEnter2D(Collider2D collider2D)
{
if (collider2D.gameObject.tag.Equals("Zombie"))
{
Destroy(gameObject);//destroy bullet
// Note you then should use GetComponentInParent here
// since your colliders are now on child objects
Zombie zombie = collider2D.gameObject.GetComponentInParent<Zombie>();
var bodyPart = collider2D.GetComponent<BodyPart>();
switch(bodyPart.Type)
{
case BodyPartType.Head:
zombie.HeadShot(demage);//headshot
break;
// you now could differ between more types here
default:
zombie.BulletHit(demage);//normal hit
break;
}
}
}