【Unity】アクションゲームで使える攻撃判定を作る
やりたいこと
任意の座標・大きさの範囲内にあるコライダーを取得したい
結論
Physics.OverlapBoxNonAlloc
Physics.OverlapSphereNonAlloc
Physics.OverlapCapsuleNonAlloc
を使う
解説(?)
3Dで攻撃判定を作るときBoxColliderやCapsuleColliderを使う手段もありますが、攻撃判定を一度に複数用意したい・判定の大きさを変えたいとなった際ちょっと不便です
また、Colliderは触れたものすべてをメモリに溜め込むため(Layerである程度ふるいにかけることはできますが)一度の判定で膨大な数のオブジェクトを取得してしまうこともあります
対してPhysics.Overlap~NonAllocは個数や大きさ、座標を簡単に変えられたり、決めた要素数以上のオブジェクトを取得しない仕組みになっているため、GCの発生を抑えることができます
以下サンプル