CameraControllerを使ってみる-導入

ドキュメント(英語)

カメラを、FPSだったり1人称視点だったり、ズームしたり、指定した曲線にそって動かしたりできるアセットです。自分で実装するの面倒なんすよね……。

ちょっと使い方に詰まったことがあったので、自分なりに使い方をまとめてみました。


早速導入

CameraControllerコンポーネント

空のゲームオブジェクトにCameraControllerコンポーネントを追加します。

CameraControllerのインスペクタから好きなスタイルを選択します。

1人称、3人称。MOBAはMultiplayer Online Battle Arenaの略だそう。敵味方に分かれて一斉に争うゲーム形式。カメラの動きとしては上から見下ろすような感じになるものと思ってます(詳細は違うかも)。

どれかのアイコンをクリックすると、自動でMainCameraがCameraControllerオブジェクトの子に移動されます。

分かりやすくするために、CameraControllerコンポーネントを持ったオブジェクトの名前をCameraControllerとかに変えておきます。

CameraControllerはこのアセットのメインです。このコンポーネントが色んな処理をしているみたいです。スクリプトも数百行あるみたい。


Input Source

アイコンをクリックするとUnityInputSourceというコンポーネントを持ったオブジェクトが自動で追加されています。

そして、CameraControllerの[Input Source]というフィールドにこのInput Sourceというオブジェクトが設定されています。

このUnityInputSourceはカメラへの入力を管理するコンポーネントです。これを通じてキーボードやゲームパッド、マウスなどの入力からカメラを動かしたりします。


カメラの基準となるキャラクターの設定

カメラが追尾するターゲットのオブジェクトを設定します。通常、プレイヤーキャラクターになるものです。

CameraControllerのインスペクタから[Anchor]にオブジェクトを設定します。

ここではCubeを設定しました。

この[Anchor]ですが、自動で設定されるようにもなっているようです。

[Anchor]がNone(未設定)だと、Tagが"Player"のゲームオブジェクトをStart()内で設定するようになっています。

ゲーム開始時にInstantiateするような場合、シーンを編集中では設定できないので、その場合はTagを"Player"にするか、スクリプトから設定する必要があります。

スクリプトから設定する場合、

のような感じで設定できます。

実行してみる

ともかく、Anchorに設定したオブジェクトであるCubeの動きに応じて、カメラが動くようになりました。

今の状態では、Cubeに何の処理もいれていないので、キーボードで何を入力しても移動はしません。動画はシーンビューから直接動かしています。


次の記事