【Unity】プレイヤーを追うカメラを実装する

スポンサーリンク

はじめに

Unityの玉転がしのチュートリアルを受講しました。そこで出てきたプレイヤーを追うカメラを改造してみました。

プレイヤーを追うカメラを実装する

チュートリアルにあったプレイヤーを追うカメラに各軸を固定できる機能を追加してみました。
freezePositionXにチェックすることでx軸、freezePositionYにチェックすることでy軸、freezePositionZにチェックすることでz軸を固定することができます。
下記がコードになります。

using UnityEngine;

public class CameraController : MonoBehaviour
{
    // カメラが追うターゲット
    [SerializeField]
    private GameObject target;

    // x軸を固定するかどうか
    [SerializeField]
    private bool freezePositionX;

    // y軸を固定するかどうか
    [SerializeField]
    private bool freezePositionY;

    // z軸を固定するかどうか
    [SerializeField]
    private bool freezePositionZ;

    private Vector3 offset;

	void Start ()
    {
        this.offset = this.transform.position - this.target.transform.position;
	}

	void LateUpdate ()
    {
        Vector3 currentPosition = this.target.transform.position + this.offset;
        float x = this.freezePositionX ? this.transform.position.x : currentPosition.x;
        float y = this.freezePositionY ? this.transform.position.y : currentPosition.y;
        float z = this.freezePositionZ ? this.transform.position.z : currentPosition.z;
        this.transform.position = new Vector3(x, y, z);
    }
}

よりスムーズにプレイヤーを追うカメラを実装する

「Survival Shooter」のチュートリアルでスムーズにプレイヤーを追うカメラを実装していました。
Vector3.Lerpメソッドを使って、移動位置を補間しています。
下記がサンプルコードになります。

using UnityEngine;

public class SmoothCameraController : MonoBehaviour
{
    // カメラが追うターゲット
    [SerializeField]
    private Transform target;

    // スムーズにする係数(1の場合は1秒で指定の位置まで移動、5の場合は0.2秒で指定の位置まで移動)
    [SerializeField]
    private float smoothing = 5f;

    private Vector3 offset;

    private void Start()
    {
        this.offset = this.transform.position - this.target.position;
    }

    private void FixedUpdate()
    {
        Vector3 currentPosition = this.target.transform.position + this.offset;
        this.transform.position = Vector3.Lerp(this.transform.position, currentPosition, Time.deltaTime * this.smoothing);
    }
}

参考サイト

Unity – Roll-a-ball tutorial
https://unity3d.com/jp/learn/tutorials/s/roll-ball-tutorial

Unity – Camera setup
https://unity3d.com/jp/learn/tutorials/projects/survival-shooter/camera-setup?playlist=17144

検証環境

Windows 10 Pro
Unity 2017.3.0f3

スポンサーリンク

シェアする

フォローする