tanaka's Programming Memo

プログラミングについてのメモ。

Unity:Sceneビューのカメラでキャラを追跡と、Physicsのデバッグ表示

Unity1週間ゲームジャムの3回目「積む」に参加しました。ゲームはこちらから遊んでいただけます。是非遊んでみてください!

Unity Star Dust!

では本題です。

クリックしてユニティちゃんをジャンプさせて、音符を踏んで進んでいくというゲームなのですが、ジャンプ中にユニティちゃんが止まったり、ジャンプが途中で終わってしまうバグが発生していました。ユニティちゃんはRigidbodyの物理挙動で動かしているので、何かに衝突したことによる副作用だとは思ったのですが、観察している限りぶつかるものは見当たりません。

そこで、Colliderを見えるように設定した上で、動画キャプチャをして観察することにしました。

Colliderを表示

[Physics Debug Visualization] 機能を使って、PhysicsのColliderを見えるようにします。

Unityの[Window]メニューから[Physics Debugger]を選択します。

f:id:am1tanaka:20170626235329p:plain

Sceneビューの右下に[Physics Debug]メニューが表示されます。[Collision Geometry]にチェックを入れると、SceneビューでColliderやTriggerが表示されるようになります。

f:id:am1tanaka:20170626235433p:plain

f:id:am1tanaka:20170626235622p:plain

Sceneビューのカメラでキャラを追尾

Physics Debug VisualizationによるColliderの表示は、Sceneビューのみ有効です。スクロールするゲームなので、シーンビューのカメラがユニティちゃんを追いかけてくれないと画面から見えなくなってしまいます。

そこで、Hierarchyビューでユニティちゃんを選択したら、Sceneビュー上にマウスカーソルを移動して、[Shift]+[F]キーを押します。これで、Sceneビューはユニティちゃんを追いかけてくれます。

追尾をキャンセルする時は、他のゲームオブジェクトを選択します。

キャプチャの録画

動画キャプチャには、動画編集ソフトのおすすめ!|『Filmora 動画編集』無料ダウンロードを使いました。それほどパワーの無いPCでも、30fps程度でキャプチャできます。私は製品版を購入しましたが、無料の試用版でも変換時間に制限があったり、透かしが入りますが、今回の用途なら使えると思います。

原因判明

問題が発生した画面を観察したら、ユニティちゃんの頭の上や足元に球体のコライダーが赤く表示されることが分かりました。

f:id:am1tanaka:20170627042837p:plain

これは、音符を出現させるゲームオブジェクトに、目印代わりに追加していたSphereのColliderを削除し忘れたものでした。メッシュを非表示にしていたため、Colliderだけが残っている状況で、視覚化して初めて気づきました。

実は、最初に表示した画面のユニティちゃんの足元に、元凶の球体が表示されていました。そのときは当たり判定が表示できたことに喜んでスルーしてしまっていました。

まとめ

Physics Debuggerと[Shift]+[F]超便利!

参考URL