Cinemachineのカメラの動きを拡張して、パンするだけのやつを作るなど。標準Composeでも近いことが出来るけど、最初に動いちゃうのがね pic.twitter.com/e1Oak8jAz4
— 椿 (@tsubaki_t1) September 2, 2018
今回はCinemachineの挙動を拡張してみました。
Cinemachineの挙動を拡張
CinemachineはLookAtとFollow、カメラの向きと位置を各々の要素が補完してカメラワークを作ります。
この挙動は基本的な機能として存在する幾つかの項目(例えばComposerやTransposer)だけでなく、自分で拡張することも出来ます。
なので、今回はとあるついでに拡張してみました。
対象をX軸に追跡するだけのカメラ
カメラを横に振るだけのカメラを作ってみました。
Composerのように特定の位置にキャラクターを配置する等は出来ませんが、オフセットで角度を持って対処を追跡することは出来るようにしました。
特にパッケージを改造する必要などは無く、CinemachineComponentBase
を継承したクラスをプロジェクト内に配置しておけば、自動的に一覧に組み込まれます。
その際、CinemachineCore.Stage Stage
プロパティに何を指定するかで、BodyかAIMのどちらに指定するのかが変わります。
内容は割と単純で、MutateCameraState
でカメラの動作を指定しているだけです。最終的な位置に向けてRawPosition
やRawOrientation
を設定すれば、よしなにやってくれます。場合によってはPositionCorrection
等もどうぞ。
まぁ動けばいいやクォリティなので、実際間違いはあるかもしれませんが、自分の欲しい動きはしたので、まあいいやっていう。
Struct CameraState | Package Manager UI website
サンプルコードはPackageManagerにある
コレを実装する上で何をどう書いて良いのか分からんとなるので、コードを色々と参考にさせてもらいました。PackageManagerにあるやつです。
PackagerManagerで取得したパッケージはProjectビューから確認することが出来るので、中身を色々と参考にさせてもらいました。
幾つかのパッケージ(例えばECS)はテストも付随してるので「この機能をどうやって使えば良いの?」や「どんな想定の機能なの?」といった疑問には、コレが結構役に立ちます。
ちなみにCinemachineにテストはありません。マア、モトモト販売シテタAssetダシネ