【Unity】CinemachineとInput Systemを連携させる

CinemachineでTPSカメラを作っているんだけど、Input System経由で動かしたいの。

CinemachineInputProviderを使えば出来るわ!

Cinemachine Free Look Cameraなど、プレイヤーの操作入力によって視点を動かすバーチャルカメラは、通常は内部的には旧式のInput Managerが使われます。 [1]

そのため、新しいInput Systemのみ機能している環境では、Input Managerを参照できずエラーとなってしまいます。

Input Systemを操作入力と使用したい場合は、CinemachineInputProviderコンポーネントを用いれば良いです。

参考:代替の入力システム | Cinemachine | 2.6.0

本記事では、CinemachineInputProviderを用いてInput System経由でカメラ操作を行う方法を解説していきます。

この作品はユニティちゃんライセンス条項の元に提供されています

動作環境
  • Unity2021.1.25f1
  • Cinemachine2.7.9
  • Input System1.0.2

パッケージのインストール

CinemachineとInput Systemを連携させるためには、両者のパッケージをインストールする必要があります。

両方インストールされていないと、CinemachineInputProviderを使うことができません。インストールされていない場合は、Package Managerよりインストールしてください。

なお、Input Systemをインストールすると、次のようなメッセージが表示されることがあります。

これは、旧型式のInput Managerを無効化して新しいInput Systemを有効化するかどうかを尋ねる画面です。Input Managerを使わないのであれば、YesボタンをクリックしてUnityを再起動してください。

ここまでの手順を成功させると、CinemachineInputProviderコンポーネントを追加できるようになります。

ここから先は、Cinemachineのカメラ設定がされている前提で解説を進めていきますので、設定が分からない方は以下ページをご覧ください。

【Unity】三人称視点のカメラワークを簡単に実装する方法
UnityパッケージのCinemachineには、ゲームでよく扱われるカメラワークが用意されています。 CinemachineのFreeLook Cameraを使うと、TPSのような三人称視点のカメラワークを簡単に素早く ...
注意

旧Input Managerでキャラクターなどを操作している場合、ここでYesを選択するとInput Managerが無効化されて操作入力ができない状況に陥ります。Input Managerを併用したい場合は、メニューのEdit > Project Settings… > Player > Configuration > Active Input Handling*Bothに設定してください。

Input Actionsの設定

本記事では、カメラ制御専用のキーバインドを作成して使うことを前提に解説していきます。すでにキーバインドを設定している場合は、読み飛ばして問題ありません。

Input Actions定義ファイルの作成

トップメニューのAssets > Create > Input Actionsの順に選択し、Input Actionsの定義ファイルを作成します。

どんな名前でも構いません。

キーバインドの定義

カメラ操作に使うキーバインド情報を作成していきます。必要な操作は、カメラ回転に使う2軸操作です。

先ほど作成したInput Actionsファイルをダブルクリックで開き、Action Mapsの右の+ボタンから新しいマップを作成します。

Actionsのアクション名(New actionの部分)を適当なものに変更し、Properties > Action項目を設定します。

2軸操作となるため、Action TypeにはPath ThroughControl TypeにはVector 2を指定すればOKです。

アクションの三角マークをクリックし、<No Binding>をクリックし、Properties > Binding > Pathより2軸入力を設定します。

マウス移動を設定する場合は、Mouse > Deltaを選択します。

ここまでの設定が完了したら、Save AssetボタンをクリックしてInput Actionsの設定を保存してください。

これでInput Actionsの設定は完了です。

CinemachineInputProviderの追加

Input Systemでカメラ操作させたいバーチャルカメラオブジェクトにCinemachineInputProviderコンポーネントをアタッチします。

例では、TPSカメラ制御するCinemachine Free Look Cameraオブジェクトにアタッチすることとします。

なお、アタッチする場所は、バーチャルカメラオブジェクトおよびその子(孫含む)オブジェクトのどちらでも構いません。 [2]

無事に追加出来たら、次の項目を設定します。

  • Player Index – プレイヤーのインデックス。シングルプレイヤーなら-1を設定します。
  • XY Axis – XY方向のカメラ操作に割り当てるInput Actionを指定します。使用しない場合はnullを設定できます。
  • Z Axis – Z方向のカメラ操作に割り当てるInput Actionを指定します。使用しない場合はnullを設定できます。

Cinemachine Free Look Cameraなどのバーチャルカメラでは、基本的にXY Axisしか使わないため、Z Axisはnullでも問題ありません。

注意

Cinemachine FreeLook Cameraなどをマウスやスティックで動かしたい場合は、Axis Controlの速度や感度調整が必要になる場合があります。Input ActionのProcessor側の設定も必要になるかもしれません。この辺は、開発するコンテンツに合わせて各自で判断の上、実施してください。

実行結果

Cinemachine Free Look CameraがInput System経由で操作できるようになりました。

また、バーチャルジョイスティックを適用すると、動画のような操作が実現できます。

デモ動画のジョイスティック表示部分には、以下アセットを使用させていただきました。

バーチャルジョイスティックが使えると、スマホゲームにも対応できるね!

Input Systemを使いこなせば、様々なプラットフォームへの拡張がスムーズにできるようになるわ!

さいごに

Input System経由でCinemachineカメラを操作したい場合、CinemachineInputProviderを用いれば実現可能です。

事前にInput Systemパッケージのインストールと、Input Actionsの設定を行う必要があることに注意が必要です。

Unity公式が提供しているStarter Assetsでも、CinemachineとInput Systemを用いたカメラ操作を実現しています。
Starter Assetsの使い方は、以下記事でまとめていますので、必要ならばご参考にしてください。

【Unity2021版】Starter Assetsの動かし方
Standard Assetsに代わる新しいUnity標準パッケージとして、Starter Assetsが登場しました。2021/7/7現在、Starter Assetsには次の2つのパッケージがあります。 これらのパッ ...

参考サイト