Unity (2021.3.2f1)
今回はキャラに合わせてカメラも動的に移動させるスクリプトを作ってみたいと思います!
追尾しないカメラだとどうなるのか?
置いてかれた(笑)
Unity
ではCamera
で映したものがゲーム画面として表示されますが、
Camera
がキャラに合わせて動くわけではありませんのでキャラが移動するとこのように置いてかれます。
横軸以外のカメラ画角を決める
横軸以外は位置固定にするので、エディタで好きな画角になるように調整します。
スクリプト実装
新規スクリプトをCamera
にアタッチしてプログラムを作っていきます。
追尾するターゲットをスクリプトで参照
追尾するターゲットを外から設定できるように変数を追加します。
[SerializeField] GameObject _target;
target
にはプレイヤーなどの追尾したいものをセットするイメージです。
ターゲットの位置を取得しカメラの位置と同期させる
ターゲット座標のXとカメラ座標のXを同値にしていきます。
void Update() { if (_target == null) return; Vector3 pos = transform.position; pos.x = _target.transform.position.x; transform.position = pos; }
これで実行すると・・・
結構いい感じですが常に画面に中心にになります。
中心からずらすためのオフセットを設ける
プレイヤーの中心ではなく少しずらすことで見た目を変えることができます。
これは簡単でオフセット用の変数を作ってそれを足し込んであげればおkです。
[SerializeField] float _offset; ~~~~~~~省略~~~~~~~~ pos.x = _target.transform.position.x + _offset;
offset
を調整することでこのように少しずらすことができます。
あとがき
Unityで追尾と言ったらCinemachine
を使うのが一般的な選択肢だと思いますが、
Cinemachine
は理解していないと逆に思ったことができないと思います。
もし簡単なカメラ操作であればスクリプトで実装した方が思った通りになってくれます。