CinemachineのVirtual CameraのOrbital Transposerの使い方をまとめます。
- はじめに
- 対象の周囲をぐるっと回るカメラを作れる
- カメラが向くデフォルトの方向を決めるHeading
- 何に使うのか① キャラのビューアー
- 何に使うのか② キャラのコントロールができない場面におけるユーザ入力用
- 関連
- 参考
Unity2018.4
Cinemachine2.2.9
はじめに
この記事では、CinemachineのVirtual CameraのBodyをOrbital Transposerに設定した時のモードについて説明します。
説明の前提として、Binding ModeはLock To Target With World Upにします。
Binding Modeについては、詳細を知りたい方はTransposerの記事を参照してください。
またVirtual CameraのAimはComposerにして常にキャラの方向を向かせておきます。
なお、Cinemachineの基本的な使い方やVirtual Cameraの設定方法は本記事では説明しません。
これらは以下の記事にまとめていますので、必要に応じて参照してください。
対象の周囲をぐるっと回るカメラを作れる
さてそれでは基本的な設定をしていきます。
Virtual CameraのBodyをOrbital Transposerに設定し、Binding Modehは前述の通りLock To Target With World Upに設定しておきます。
またRecenter To Target HeadingをOFFにしておきます。このHeading周りについては後述します。
この状態でXAxisのValueを動かすと対象の周囲の円に沿ってカメラが動くことがわかります。
この対象の周囲の円上をカメラが動く、というのがOrbital Transposerの本質的なポイントです。
ちなみにXAxisのValueは直接スクリプトから操作してもいいし、Input Axis Nameを入力してUnityのInput Systemと連動させることもできます。
カメラが向くデフォルトの方向を決めるHeading
さて次に、前節でさりげなくOFFにしたRecenter To Target HeadingをONにします。
これはXAxisのValueに一定時間変化がなかったらカメラをデフォルト方の位置に戻します。
要はユーザ入力がしばらくなかったらカメラをデフォルト位置に戻す機能です。
じゃあデフォルトの位置とは何なのか?
それを決めるのがHeadingという概念です。
例えばHeadingのDefinitionをTarget Forwardにすると「対象が向いている方向を映す位置」がカメラのデフォルト位置となります。
HeadingのDefinitionには以下の種類があります。
名前 | 説明 |
---|---|
Target Forward | 対象が向いている方向を映す位置 |
Position Delta | 前フレームから位置が動いた方向を映す位置 |
Velocity | Rigid BodyのVelocityが示す方向を映す位置 Rigid BodyがなかったらPosition Deltaと同じ動きになる |
World Forward | ワールド空間のZ方向を映す位置 |
またBiasの値をいじればDefinitionからのオフセットを定義できます。
何に使うのか① キャラのビューアー
さてこれでOrbital Transposerの説明は大体終わりました。
となるとじゃあこれは何に使うのか?キャラに追従するだけならTransposerでよくない?という話になります。
パッと思いつくのはキャラクターのビューアーです。
このようなものはOrbital Transposerを使えばすごく簡単に作れます。
何に使うのか② キャラのコントロールができない場面におけるユーザ入力用
もう一つ思いつくのは、キャラが自動的に歩いてるようなシーンでユーザ入力でキャラの周囲を見れるような仕組みです。
例えば自由にキャラを動かせるゲームで、部屋間を移動するときだけユーザからコントロールを奪って自動でキャラが動く、という仕様があるとします。
このような時に単純にコントロールを奪って固定のカメラにするだけでは味気ないので、上記のようなカメラにすることが考えられます。