Cinemachine テスト2・Orbital Transposer
こんばんは。今日の進捗を報告します。
Cinemachine 実験その② Orbital Transposer
Orbital Transposer というものを導入し、右スティックで動かせるようにしました。
前々回との比較
前々回でも一応カメラは動かせたんですが、これは Cinemachine ではなく、自力でベクトルを計算していました。
ただ動きが線形で、ぎこちない感じです。Cinemachineだと慣性がついていて、プロっぽい感じがしますね。
技術的な話
前回の記事では、 Cinemachine の(Orbital ではない) Transposer というものを使っていました。 Transposer は対象を自動的に追尾してくれるカメラです。
実際の3Dゲームでは、自動追従だけでなく右スティックでカメラを操作できることが多いため、この操作に対応できるものを探していました。
Orbital Transposer というのは、対象の周囲をぐるりとまわることができるカメラです。この X Axis というものを変更するとぐるりとまわってくれます。
デフォルトでマウス操作に対応しているのですが、実際にはスティックの操作で動かしたい。ノーコードでする方法もある気がしますが、私の場合、C#から操作することにしました。
参考にしたドキュメントは以下。
- https://docs.unity3d.com/Packages/com.unity.cinemachine@2.1/api/Cinemachine.CinemachineVirtualCamera.html
- https://docs.unity3d.com/Packages/com.unity.cinemachine@2.1/api/Cinemachine.CinemachineTransposer.html
実際のコードは↓みたいな感じになります。
using UnityEngine;
using Cinemachine;
/* ...中略... */
[SerializeField]
private CinemachineVirtualCamera virtualCamera = null;
/* ...中略... */
var orbitalTransposer = virtualCamera.GetCinemachineComponent<CinemachineOrbitalTransposer>();
orbitalTransposer.m_XAxis.Value += /* 右スティックのコントローラの値 */;
それでは今回はこのへんで。また次回もよろしくお願いします~~~!!!