Cinemachineで3Dキャラを追尾する感じの奴

多分、簡単に出来る方法で2通りあるかと。探したらもっとたくさんあると思うんですけど。

CinemachineVirtualCameraを使う

  1. メニュー[Cinemachine]→「CreateVirtualCamera」
  2. VirtualCameraのインスペクタからFollowとLookAtにプレイヤーキャラを入れる
  3. Bodyを「Orbital Transposer」に変更
  4. Bodyの「BlendingMode」を「Lock To Target Assign」にする
  5. XaxisのValueを変更すれば、キャラクターを中心に円形軌道上で回転する
  6. XAxisのInputAxisNameはUnityのInputシステムを使った名前です
  7. カメラの高さとプレイヤーからの距離は「FollowOffset」のYとZを変更する

補足

RecenterToTargetHeadingをEnableにしておくと(デフォルトではOn)Xaxisの値が勝手に0になります。

X軸の値を変更するときは、UnityのInputシステムを使っていればAxisNameに入力名を入れるだけですが、スクリプトから変更したい場合は、

みたいな感じで入力できるはず。

それとAxisStateはVector3と同じようにstructで値型です。

上のようにやると、orbtransのm_Xaxisを参照してないので変化しません。ちょっとはまってしまった……。

CinemachineFreeLookを使う

設定項目が多くて手間取る。

出来ることは、OrbitalTransposerに加えて、Y軸の値からTop,Middle、Bottomの3段階で軌道を調整できることです。

要はカメラの移動を細かく調整できるってことが言いたい。

Orbits(軌道)タブからターゲットへの距離を設定できます。

カメラの位置は、ターゲットから「Height」の高さで「Radius」距離の円状の起動になります。

YAxisの値から「TopRig」「MiddleRig」「BottomRig」の範囲を移動します。

動画の赤い線上をカメラが移動することになります。

各RigのRadiusの値を揃えると、ぐりぐり動かなくて見やすくなるかも。


ざっくりですが。

パラメータを微調整すれば良い感じに出来るはず。