【Unity】Visual Scripting-玉転がし改良:背面追従カメラに変更してみる
Visual Scripting、玉転がし公式チュートリアルの改良メモ。
・TPS(サードパーソン)ゲームのような背面追跡カメラに変更
・プレイヤーを直接操作作に変更(クイック操作になるよう改良)
<前回記事>
<Unity 2021.3.16f1 LTS>
■背面追跡カメラの適用
カメラの動作は、Visual Scriptingで行わず、Unityで用意されているCinemachineを使う。
TPS(サードパーソンゲーム)のようにプレイヤーの動きに対して、背後を追跡するカメラにしてみる。
まず、ゲームオブジェクト>カメラ を追加。
カメラ(Camera)の移動回転拡大縮小ツールで、Playerが映るように調整しておく。数値入力は、インスペクター>Transformで行うとよい。
次にゲームオブジェクト>Cinemachine>FreeLookCamera を追加。
すると、カメラ(Camera)のインスペクターにCinemachineBrainコンポーネントが追加される。また、ヒエラルキーのCameraをみると右側にアイコンが追加されて印がつけられる。また、CinemachineBrain>LiveCameraの欄には、CM FreeLookが自動的に設定されている。
FreeLookCamera(CM FreeLook)のインスペクターでは、CineMachineFreeLookコンポーネントがある。
背面追従カメラの詳細設定は、ここで行う。
カメラをPlayerに注視するようにLook Atに、Playerを設定。
続けてFollowにも、Playerを設定。
カメラフレームに被写体(Player)が、いい感じに収まるようにカメラの位置合わせをする。
なお、インスペクター>CineMachineFreeLook>Game Window Guidsを有効にすると表示されるガイド枠を表示すると調整しやすい。
カメラリグは、Top Rig、Middle Rig、Bottom Rigが用意されている。
今回は、Middle Rigを使い、そのパラメーターでカメラ位置を調整。
・カメラの高さ:Height
・カメラの接近具合(半径):Radius
カメラフレームに納まるようする上下調整は、
Orbits>Aim>Tracked Object Offset>Y で行うとやりやすい。
Yの位置にマウスカーソルを移動し、左右Dragで、数値調整可能。
※ゲームプレイ中、マウス操作の一時抑制
インスペクターのAxis Control>Input Axis Name のMouse XとMouse Yの入力値で接頭語にアンダーバーが付与されているのは、ゲームプレイ中、カメラ方向を調整するマウス操作を一時的に無効にしている。
■プレイヤーの操作性を向上
チュートリアルのプレイヤーの動きは、慣性具合を調整したとしても、少々もっさりしていて操作しづらいので、もっと操作が直接反映するような挙動に改良し、なんとなく動作しているものの、ノード構成が適切なものかどうは不明・・・。
<Rigidbodyの設定>
質量(MASS):物体の質量 (Kg 単位)
抗力(Drag):力によって動く際に、オブジェクトに影響する空気抵抗の大きさ。0 の場合、空気抵抗は 0。無限の場合、オブジェクトは動きを止めます。
回転効力(Angurar Drag):トルクによって回転する際に、オブジェクトに影響する空気抵抗の大きさ。0 の場合、空気抵抗は 0。このパラメーターの値を無限に設定するだけでは、オブジェクトの回転を止められないことに注意してください。
Is Kinematic:有効にすると、オブジェクトは物理エンジンによって駆動されず、その Transform によってのみ操作されます。これは、プラットフォームを移動したい場合や、Hinge Joint を加えたリジッドボディをアニメーション化したい場合に便利です。
Interpolate:リジッドボディの動きがぎこちないとき、以下のオプションの 1 つを利用すると改善する場合があります。
■所感
よさげなカメラ動作は、Visual Scriptingのサンプルも見つからないし、Cinemachineを利用した方が、手早くできてよい感じ。
以上。