(Unity6)追跡カメラの実装(Cinemachineの活用)

(インポート)

・PackageManagerを使って、Cinemachineをインポートする。(バージョン3.1.3)


(設定)

「+」「Cinemachine」「Cinemachine Camera」を追加

「Tracking Target」「Ball」(追跡させたいオブジェクト)を設定

「Position Control」「Position Composer」を設定

*「Cinemachine Position Composer」が自動的に追加されます

「Camera Distance」→自由に設定(ターゲットとの距離感)

「Damping」0に設定(カメラがターゲットに遅れてついて行く)

「Rotation Control」「Pan Tilt」を設定

*「Cinemachine Pan Tilt」が自動的に追加されます

「Add Input Controller」をクリック

「Cinemachine Input Axis Controller」が自動で追加されます

・ゲームを再生して、壁の背後も確認できればOK!


<カメラが向いている方向に進めるようにする>

(サンプルコード)

using UnityEngine;

public class Ball : MonoBehaviour
{
    private InputSystem_Actions isa;
    public float moveSpeed;
    private Rigidbody rb;
    public float jumpPower;
    private bool isJumping = false;

    void Start()
    {
        isa = new InputSystem_Actions();
        isa.Enable();
        rb = GetComponent<Rigidbody>();
    }

    void Update()
    {
        Vector2 movement2 = isa.Player.Move.ReadValue();
        Vector3 movement3 = new Vector3(movement2.x, 0, movement2.y);

        // ★追加
        Vector3 desiredMove = Camera.main.transform.forward * movement3.z + Camera.main.transform.right * movement3.x;

        // ★変更
        rb.AddForce(desiredMove * moveSpeed);

        if (isa.Player.Jump.triggered && isJumping == false)
        {
            rb.linearVelocity += Vector3.up * jumpPower;
            isJumping = true;
        }
    }

    private void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.CompareTag("Floor"))
        {
            isJumping = false;
        }
    }
}

(実行確認)

・カメラの方向に進むことができれば成功です。