今回はプレイヤーを追いかけるようにカメラを動かしてみす。プレイヤーが画面の中心に来るようにする感じですね。
はじめに
Unityのバージョンは2021.3.14f1です。
カメラを動かす方法はいくつかありますが、「Cinemachine」のパッケージを使っていきます。
実装開始
キー操作で動くプレイヤーを作成した後に、プレイヤーを追いかけるカメラを実装していきます。
動くオブジェクト(Player)の作成
「2D Object」→「Sprites」→「Circle」を追加します。
![](https://nosystemnolife.com/wp-content/uploads/2023/04/20230410001.png)
名前をPlayerに変更して「Rigidbody2D」をアタッチします。GravityScaleは0に。
![](https://nosystemnolife.com/wp-content/uploads/2023/04/20230410002.png)
下記スクリプトを作成してアタッチします。
using UnityEngine; public class Movement : MonoBehaviour { private float speed = 5.0f; private Rigidbody2D _rb; private Vector2 movement; private void Awake() { _rb = GetComponent<Rigidbody2D>(); } private void Update() { movement.x = Input.GetAxisRaw("Horizontal"); movement.y = Input.GetAxisRaw("Vertical"); _rb.velocity = movement * speed; } }
下記のように左右キーでプレイヤーが動きます。カメラ位置が固定されているので、範囲外にプレイヤーが行くと見えなくなります。
![](https://nosystemnolife.com/wp-content/uploads/2023/04/20230410004.gif)
カメラをオブジェクトの配下に
下記のようにMainCameraをPlayerの配下に移動してみます。
![](https://nosystemnolife.com/wp-content/uploads/2023/04/20230410005.png)
下記のように、プレイヤーに合わせてカメラも動くので常に中心にプレイヤーが来ます。
![](https://nosystemnolife.com/wp-content/uploads/2023/04/20230410006.gif)
分かりやすいように床と壁のようなものを作成してあります。
Cinemachineを利用
次にCinemachineを使ってカメラを動かしていきます。
画面上部「Window」にある「Package Manager」を選択します。
![](https://nosystemnolife.com/wp-content/uploads/2023/04/20230410007.png)
「Packages:Unity Registry」にして、右の検索窓に「cinema」と入力。「Cinemachine」を選んで「Install」を選びます。
![](https://nosystemnolife.com/wp-content/uploads/2023/04/20230410008.png)
インストールが完了後、「GameObject」→「Cinemachine」→「2D Camera」を選びます。
![](https://nosystemnolife.com/wp-content/uploads/2023/04/20230410009.png)
「CM vcam1」が追加されるので、「CinemachineVirtualCamera」のFollowにPlayerをセットします。
![](https://nosystemnolife.com/wp-content/uploads/2023/04/20230410017.png)
これでカメラがプレイヤーを追いかけます
カメラの範囲設定
このままだとカメラはどこまでもついてくるので、カメラの移動範囲を設定してみます。
「CM vcam1」のインスペクターにある「Add Extension」から「CinemachineConfiner」を選択。
![](https://nosystemnolife.com/wp-content/uploads/2023/04/20230410011.png)
CreateEmptyで空のオブジェクトを追加して名前を「CinemachineConfiner」にします。
![](https://nosystemnolife.com/wp-content/uploads/2023/04/20230410012.png)
「AddComponent」から「PolygonCollider2D」をアタッチ。
![](https://nosystemnolife.com/wp-content/uploads/2023/04/20230410013.png)
「EditCollider」から頂点をマウスで設定、もしくはPointsのElementで座標を指定できます。
下記のように壁と床が端になるように設定。
![](https://nosystemnolife.com/wp-content/uploads/2023/04/20230410014.png)
「CM vcam1」の「Cinemachine Confiner」の「Bunding Shape 2D」に適用します。
![](https://nosystemnolife.com/wp-content/uploads/2023/04/20230410015.png)
これでカメラの範囲設定完了、動かすと、下記のようにカメラは範囲内でプレイヤーを追いかけます。
![](https://nosystemnolife.com/wp-content/uploads/2023/04/20230410016.gif)
他にも遅延して追いかけるなどの設定もできます。