オブジェクトが移動する場合、すぐにフレームアウトしてしまう…
そうですね、カメラの追従を利用して解説していきましょう。
ゲームにおいて、プレイヤーが移動すると、それに追従してシーンが動くのが一般的です。この方法について、今回解説していきます。
ご理解を深めるために、実際に画面操作をしながら進めていただくことをオススメしています。
解説では、以下の続きとして解説をしていきます。
エッセンスだけを知りたい方は、スキップして本文へとお進みください。
以下の2記事の内容をベースに解説しますので、事前に実施をお願いします。
(必須)[所要時間:約10分]
▼キーボードからオブジェクトを操作▼
解説画面と全く同じ環境にしたい場合は、追加で以下の4記事を実施お願いします。
(任意)
[所要時間:約50分]
▼オブジェクトに色を付ける▼
▼オブジェクトが落ちないように壁を作る▼
▼エディタでパラメータ調整▼
▼回転するアイテム配置▼
▼当たり判定▼
▼UI配置▼
ここまでで、事前準備は完了です。早速作成していきましょう。
[Main Camera]がGameビューの見え方を決めています。
つまり、[Main Camera]が[Player]を追いかけるようにしていきます。
方法は2通りあります。
- 親子構造
- 相対距離の保持
それぞれやっていきましょう。
親子構造
やっていただくとわかりますが、[Player]は回転して移動しているため、[Main Camera]も回転しながら追従してしまいます。
歩く人などを追従する場合は、この方法で良いですが、回転物には適しません。
[Main Camera]を元の場所にドラックして離して、元に戻しておきましょう。
相対距離の保持
方法としては、[Main Camera]と[Player]が相対距離を保持したまま、[Player]に[Main Camera]が追従するコードを書いていきます。
Script作成
[Main Camera]のScriptを作成します。
作成したScriptを開いて、コードを書き込んでいきます。
Scriptが開けたら、必要な箇所にコードを追加していきます。
- inspectorウインドウから操作できるように、Public変数でGameObject型のPlayerという変数を宣言します。
- [Main Camera]と[Player]の相対距離を記憶する変数distanceを定義します。
- [Main Camera]と[Player]の相対距離を計算して、変数distanceに代入します。
- [Player]はこのScriptの他に[PlayerController]で制御されており、そのScript実行後にこのScriptを実行するためUpdateメソッドをLateUpdateに変更します。(転がる→追従→転がる→追従という順番)
- [Main Camera]と[Player]の位置が、変数distanceを常に保つように配置します。
Gameビューで確認
[▶︎]ゲームプレイをクリックしてGameビューで確認します。
[Player]の動きに合わせて、シーンが動いていれば完了です。
これで、プレイヤーが動いた時に、カメラを追従させることができました。
お疲れ様でした。