見出し画像

【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が自動的に設定されている。

Cameraのインスペクター

FreeLookCamera(CM FreeLook)のインスペクターでは、CineMachineFreeLookコンポーネントがある。
背面追従カメラの詳細設定は、ここで行う。

カメラをPlayerに注視するようにLook Atに、Playerを設定。
続けてFollowにも、Playerを設定。

カメラフレームに被写体(Player)が、いい感じに収まるようにカメラの位置合わせをする。
なお、インスペクター>CineMachineFreeLook>Game Window Guidsを有効にすると表示されるガイド枠を表示すると調整しやすい。

Game Window Guidsを有効

カメラリグは、Top Rig、Middle Rig、Bottom Rigが用意されている。
今回は、Middle Rigを使い、そのパラメーターでカメラ位置を調整。
・カメラの高さ:Height
・カメラの接近具合(半径):Radius

カメラフレームに納まるようする上下調整は、
Orbits>Aim>Tracked Object Offset>Y で行うとやりやすい。
Yの位置にマウスカーソルを移動し、左右Dragで、数値調整可能。

FreeLookCamera(CM FreeLook)のインスペクター

※ゲームプレイ中、マウス操作の一時抑制
インスペクターのAxis Control>Input Axis Name のMouse XとMouse Yの入力値で接頭語にアンダーバーが付与されているのは、ゲームプレイ中、カメラ方向を調整するマウス操作を一時的に無効にしている。

動作チェック

■プレイヤーの操作性を向上

チュートリアルのプレイヤーの動きは、慣性具合を調整したとしても、少々もっさりしていて操作しづらいので、もっと操作が直接反映するような挙動に改良し、なんとなく動作しているものの、ノード構成が適切なものかどうは不明・・・。

Playerのノード構成(変数名は、Pow、Camera Direction)
動作チェック

Rigidbodyの設定>

Player>インスペクター>Rigidbodyの各値
(初期値は、質量:1、抗力:0、回転効力:0.05)
  • 質量(MASS):物体の質量 (Kg 単位)

  • 抗力(Drag):力によって動く際に、オブジェクトに影響する空気抵抗の大きさ。0 の場合、空気抵抗は 0。無限の場合、オブジェクトは動きを止めます。

  • 回転効力(Angurar Drag):トルクによって回転する際に、オブジェクトに影響する空気抵抗の大きさ。0 の場合、空気抵抗は 0。このパラメーターの値を無限に設定するだけでは、オブジェクトの回転を止められないことに注意してください。

  • Is Kinematic:有効にすると、オブジェクトは物理エンジンによって駆動されず、その Transform によってのみ操作されます。これは、プラットフォームを移動したい場合や、Hinge Joint を加えたリジッドボディをアニメーション化したい場合に便利です。

  • Interpolate:リジッドボディの動きがぎこちないとき、以下のオプションの 1 つを利用すると改善する場合があります。

■所感

よさげなカメラ動作は、Visual Scriptingのサンプルも見つからないし、Cinemachineを利用した方が、手早くできてよい感じ。

以上。

この記事が気に入ったらサポートをしてみませんか?