この記事は約5分43秒で読むことができます。

Unity カメラをプレイヤーに追従させる方法

Unityなどでゲームを作っている時、必ずカメラを配置すると思います。

アクションゲームなどではプレイヤーが動いた分だけカメラの表示範囲を変更したいですよね。そのような時は、プレイヤーにあわせてカメラも移動させましょう。

はじめに

Unityではカメラ内に映っているオブジェクトのみを画面に表示するのですが、必ずしもすべてのオブジェクトを画面内に表示するのは難しいです。

特にアクションゲームなどでは、プレイヤーが動くので実際に配置したカメラの範囲より大きなステージになると思います。

そこでUnityカメラをプレイヤーオブジェクトと同じ分だけ動かす方法と、カメラを動かす時の注意点を紹介します。

コードを書いてみよう

では早速「プレイヤーとカメラを一緒に動かす」コードを書いてみましょう。新しいスクリプトを作成してください。

using UnityEngine;
using System.Collections;

public class Move : MonoBehaviour {

	GameObject Player;
	GameObject mainCamera;

	// Use this for initialization
	void Start () {
		Player = GameObject.Find ("Player");
		mainCamera = GameObject.Find ("Main Camera");
	}
	// Update is called once per frame
	void Update () {
	
		mainCamera.transform.position = new Vector3 (Player.transform.position.x, Player.transform.position.y, Player.transform.position.z - 10);

	}
}

たったこれだけです。簡単ですね。

ちなみにプレイヤーを動かしているコードは以下のようになっています。

using UnityEngine;
using System.Collections;

public class Run : MonoBehaviour {

	GameObject Player;
	int horizon;
	int vertical;
	// Use this for initialization
	void Start () {
		Player = GameObject.Find ("Player");
	}
	
	// Update is called once per frame
	void Update () {
	
		if (Input.GetKey (KeyCode.RightArrow)) {
			horizon = 10;
			Player.GetComponent ().velocity = new Vector3(horizon, Player.GetComponent().velocity.y, 0);
		} else if (Input.GetKey (KeyCode.LeftArrow)) {
			horizon = 10;
			Player.GetComponent ().velocity = new Vector3(-horizon, Player.GetComponent().velocity.y, 0);
		}
		if (Input.GetButtonDown ("Jump")) {
			vertical = 100;
			Player.GetComponent ().velocity = new Vector3 (Player.GetComponent ().velocity.x, vertical, 0);
		}
	}
}

とても簡易的なコードなので、他にも動きを改善する方法はあります。例えば「カメラの移動範囲を制限する」などですね。

Unity オブジェクトの移動範囲を制限するMathf.Clampの使い方
アクションゲームを作っていると、オブジェクトの移動できる範囲を制限したい時がよくあります。 たとえば、「プレイヤーが画面外に出ない」ようにしたり、「ある範囲内でのみ、カメラが追従...

これを使えば、プレイヤーがステージの端に行った時はカメラの移動を抑えるなどという使い方ができます。ぜひ試してみてください。

まとめ

今回の方法を使えば、簡単にプレイヤーにあわせてカメラを移動させることができるようになります。そうすることで、無理してカメラ内にステージを作らなくてもよくなります。

カメラが移動してくれるので、どれだけ大きなステージを作成したとしてもカメラに映らないなどということを避けることができますね。

ぜひ使ってみてください。

ではまた。

1+