最近仕事でUnityを触っているのですが、Collision(いわゆる当たり判定)の設定で迷うことが多く、グーグル先生の力をたびたび借りていました。しかし、UnityのCollisionは想像以上に自由度が高く、文章で説明しているブログなどではなかなか「完全に理解した」という気持ちにはなれずにいました。
そこで!このたびUnityのCollisionをさまざまな設定で試せるブラウザアプリを作成しました。興味のある方はこのリンクから試してみてください! → Collision Tester
使い方
最初の状態です。どのキューブにもBox Colliderがついていますが、Rigidbodyがついていないため OnCollision** 判定も OnTrigger** 判定も起きていません。
“Object B”の行の “Rigidbody”にチェックを入れると、青いキューブにRigidbodyがつきます。これにより“Object A”, “Object B”の間で OnCollision** 判定が発生し、それぞれの行に”Collision”と表示されます。
次にObject Aの行の”IsTrigger”にチェックを入れると、赤いキューブについているBox ColliderのIs TriggerフラグがONになります。これにより、Object A, Object Bの間で OnTrigger** 判定が発生し、それぞれの行から”Collision”が消えて”Trigger”がつきます。
Rigidbodyがついているオブジェクトに対しては、”Kinematic”チェックボックスを設定できます。Object BにRigidbodyをつけるとObject A, Object Bの間で“Collision”が表示されますが、Object Bの”Kinematic”チェックボックスをONにすると、Object BのRigidbodyのIs KinematicフラグがONになり、Object A, Object Bの間でCollisionがが起きなくなります。
ピンク色のキューブは、ヒエラルキー上で言うと赤色のキューブの親オブジェクト(Object A Parent)です。Object AともObject Bとも重なっていないのでCollisionもTriggerも基本的に発生しませんが、Object A ParentにRigidbodyがついていて、かつ子オブジェクトであるObject AにRigidbodyがついていない場合には、子オブジェクトであるObject Aが重なっている相手ともCollisonやTriggerが検出されます。
ね?UnityのCollision、自由度高いでしょ?
まとめ
なんでこういうツールが出回ってないのかな~と思いながら作ったのですが、もしかしてもうあるんですかね?とりあえずこれで、「UnityのCollision、完全に理解した!」と言えるかもしれませんね。「Collision Tester」、お友達にも教えてあげてください!
あと宣伝!当サークルNumber-Animalでは、7/10の夏コミに向けて新作RPG「逃亡性痛み症候群」を制作中です!「痛みで怯ませ、逃げろ!」がキャッチコピーです!頒布場所は「金曜日 西地区 “ら” ブロック 37a」です!コミケに来られない方も、Steamなどで配信予定なのでお楽しみに~