Skip to content Skip to sidebar Skip to footer

Come contribuiscono i Collider tra padre e figli agli eventi di collisione in Unity

Una delle situazioni più difficili da gestire in Unity è quando si ha un oggetto composto da diversi figli i quali hanno colliders e/o rigidbody associati. In tal caso è difficile monitorare quale collider ha generato gli eventi oppure se più collider concorrono a farlo.

Va detto subito: i collider dei figli di un oggetto con anch’esso un collider NON contribuiscono direttamente all’invocazione di OnCollisionEnter e gli altri eventi di collisione sull’oggetto padre. Ci sono però alcune particolarità da tenere in considerazione:

RigidBody sull’oggetto padre:

  • Se un Rigidbody è presente sull’oggetto padre, e i collider sono distribuiti tra il padre e i figli, tutti i collider saranno considerati come un unico corpo rigido.
  • In questo caso, qualsiasi collisione che coinvolge uno dei collider (sia del padre che dei figli) invoca tutti gli eventi OnCollisonEnter, OnCollisionStay e OnCollisionExit sugli script collegati al Rigidbody, che tipicamente è presente sul padre.
  1. Rigidbody sui figli:
    • Se i figli hanno un Rigidbody proprio, essi saranno trattati come entità separate. Le collisioni sui figli invocano gli eventi SOLO sugli script presenti su quei figli specifici.
    • Il Rigidbody sul padre non riceverà gli eventi di collisione dei figli con un proprio Rigidbody.
  2. Nessun Rigidbody presente ma solo Collider:
    • Se né il padre né i figli hanno un Rigidbody allora i collider agiranno come statici. In tal caso gli eventi di collisione non saranno MAI invocati a meno che l’altro oggetto nella collisione non abbia un Rigidbody.

A questo link trovate un nostro approfondimento su come evitare eventi di doppie collisioni tra padre e figli in Unity.

Copyright © Desdinova ® / PIVA 03799780162 / Non è una testata giornalistica.
Tutti i diritti riservati ai legittimi proprietari, anche ove non citati.