Unity2Dのカメラ挙動(アクション向け)

今回は上記の動画のように横軸のみのカメラ挙動を実装しました。
縦軸を固定する事で、ジャンプ実装時に挙動を分かりやすくするためです。
進行方向をより広くカメラに映す事で、先を確認しやすくしてます。

コーディング

カメラの挙動はLastUpdate()に書き込むようにしましょう。
動きの後に反映させる事でカメラがカクカクしてしまう事を防ぐ事ができます。

using UnityEngine;

public class CameraMove : MonoBehaviour
{
    public GameObject target;               // ターゲット(プレイヤー)の割り当て変数
    [SerializeField] private float shiftX;  // カメラの横位置を調整するための変数

    private float cameraPosX = 3.0f;        // カメラの初期位置

    private void Update()
    {
        float inputX = Input.GetAxis("Horizontal");
        if (inputX > 0)
        {
            shiftX = Mathf.Abs(shiftX);     // 絶対値を取得
        }
        else if (inputX < 0)
        {
            shiftX = -Mathf.Abs(shiftX);    // 絶対値を取得してマイナスにする
        }

        cameraPosX = Mathf.Lerp(cameraPosX, shiftX, Time.deltaTime * 5.0f);
    }

    // Updateが終わった後に実行される
    private void LateUpdate()
    {
        Vector3 cameraPos = Camera.main.gameObject.transform.position; // 縦位置を保持するために、初期位置をカメラの現在の位置に設定

        cameraPos.x = target.transform.position.x + cameraPosX; // カメラの横位置に対象の位置を入れる

        Camera.main.gameObject.transform.position = cameraPos; // カメラの位置に変数cameraPosの位置を入れる
    }
}

この記事が気に入ったらサポートをしてみませんか?