ゲームビューでコライダーを可視化&動的に切替する

Unity

衝突判定の調整用に、テストプレイ中にColliderを可視化できないか調べてみると、Unity標準機能の「Physics Debugger」ではシーンビューでしか表示できません。

こちらの記事で紹介されている「ColliderVisualizer」を導入すると、ゲームビューでもColliderを表示できるようになります。感謝!

しかし、1つ問題が。筆者が制作中のゲームでは立ち/しゃがみ等の姿勢変化に合わせてプレイヤーのBoxColliderのPositionとScaleが変化するように設定しているのですが、その変化は反映されませんでした。

そこで、可視化されたColliderを動的に切替できるように少し改造してみました。

ColliderVisualizerを改造

姿勢変化のタイミングで ColliderVisualizer.cs 内の「可視コライダーのTransformを設定する」メソッド “SetVisualizerTransform” を実行させます。

試行錯誤の末、なんとか思った通りに動作したスクリプトがこちらです↓

まずはColliderを設定しているプレイヤーオブジェクトに、下記のスクリプトを設定します。
※可視化だけならこの時点でできます。

別途、対応するColliderを取得した上で、姿勢変化を制御するスクリプトから必要なタイミングで “SendMessage” を実行します。

次に、ColliderVisualizer.cs 内の該当箇所を少し改造します。

この改造無しでは、”SetVisualizerTransform” を実行する度に可視化Colliderの位置とサイズがだんだんズレてしまいます。BoxColliderでしか試していませんが、Sphere/Capsuleでも対応する箇所を同様に改造すれば良いかと思います。

Unity