第三者視点のプレイヤーコントロール

3月 7, 2021Unity,ゲーム開発アクションゲーム,ゲーム開発Unity,ゲーム開発

第三者視点のゲームには多彩なパターンがあり、毎回実装を忘れるのでメモ。
新しいもの好きなのでInput SystemとVisual Scripting連携をする前提で書きます。

今回作るものの特徴は大体こんなものですかね?

  • カメラの距離は遠め、(移動速度早め)
  • ロックオンあり(2オブジェクトを同時に視界に入れる必要あり)
  • 射撃モードあり(AIMボタンでカメラが後方に回り込む)
  • 格闘あり(格闘時はカメラが自動操作)
  • 移動モードあり(進行方向後ろへ自動でカメラが回り込む機能アリ)
  • 場合によっては定点カメラ的な状態に遷移する可能性あり
  • カットシーンあり

記事作成中…

プレイヤーコントロールっていうけどカメラの話じゃんって思うかもしれませんが、TPSだと基本カメラからの位置関係で移動させることになるのでカメラがいい感じに動いてくれれば移動自体は簡単なスクリプトで解決します。

ただこの手のカメラ機能を自力で作るのはめっちゃハードル高いです、全部実装するとなったらどれほど労力がいるか…
せっかくの公式が用意してくれてるのでCinemachineを使いましょう。

  1. Package MangagerからCinemachine追加
  2. Hierarchyから追加 Cinemachine>FreeLook Camara
  3. Followにプレイヤー移動用の親オブジェクトを指定
  4. Look Atにキャラクターの胸あたりにあるオブジェクトを指定
  5. 設定を任意の値へ変更 よく変えるのは以下
    • Axis Control>* Axis>Speed
    • Axis Control>* Axis>Invert
    • Orbits>*Rig>Height/Radius
  6. Package ManagerからInput Systemを追加
  7. 作成したCM FreeLookにCinemachine Input Providerコンポーネント追加
  8. XY Axisに Input Actionを割り当て