【Unity入門】キー入力でプレイヤーを中心にカメラを回転させる方法!

2019年5月18日

今回の記事はキー入力でプレイヤーを中心にカメラを回転させる方法について解説します。

それではやっていきましょう!

今回できるようになること

『←』か『→』のキーを入力するとプレイヤーを中心にカメラを回転させる。

準備

まずは準備としてオブジェクトを作成しましょう。

CubeとSphereオブジェクトを作成しましょう。

今回はSphereオブジェクトをプレイヤーとします。

CubeオブジェクトのScaleのXとZを100にして、地面として扱います。

Gameビューが下記の画像のようになるようにCameraオブジェクの位置を移動させておいてください。

また、今回はカメラオブジェクトをスクリプトで制御して回転させるのでスクリプトをつけておきましょう。

これで準備ができたのでプレイヤーを中心にカメラを回転させましょう。

キー入力でプレイヤーを中心にカメラを回転させる

コードを記述してキー入力でプレイヤーを中心にカメラを回転させましょう。

カメラを回転させるのでカメラに追加したスクリプトに記述していきます。

カメラを回転させるには、『RotateAround』という関数を使います。

この関数は位置と回転を同時に変更することができます。

使い方は、

transform.RotateAround(どこを中心とするか(Vector3), どの軸で回るか(Vector3), 
回転させる角度(float));

記述内容は、

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour {

    //プレイヤーを変数に格納
    public GameObject Player;

    //回転させるスピード
    public float rotateSpeed = 3.0f;

	// Use this for initialization
	void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {

        //回転させる角度
        float angle = Input.GetAxis("Horizontal") * rotateSpeed;

        //プレイヤー位置情報
        Vector3 playerPos = Player.transform.position;

        //カメラを回転させる
        transform.RotateAround(playerPos, Vector3.up, angle);
    }
}

簡単に説明すると、一番下の『RotateAround』関数の第一引数(どこを中心とするか(Vector3))にはプレイヤーの位置を入れます。

第二引数(どの軸で回るか(Vector3))には第一引数に入れた中心の点と結んで軸にする点が入ります。Vector3.upというはVector3(0, 1, 0)と同じ意味なので、y軸を中心に回ることになります。

第三引数(回転させる角度(float))には、キー入力された値にスピードをかけた値を入れます。スピードの値はUnityエディターから変更できます。

実行して行くのですが、Player変数にSphereオブジェクトを格納しましょう。ドラッグ&ドロップで格納できます。

それでは実行してみましょう!

実行結果は、

『←』か『→』のキーを入力するとプレイヤーを中心にカメラが回転するようになりましたね!

まとめ

この記事ではキー入力でプレイヤーを中心にカメラを回転させる方法について扱ってきました。

今回はキー入力でしたが、マウスをドラッグして回転させることもできるので、気が向いたらやってみてください!