Camera漫游控制脚本

作者:追风剑情 发布于:2025-3-14 15:16 分类:Unity3d

using UnityEngine;
/// <summary>
/// 镜头漫游控制
/// </summary>
public class CameraRoaming : MonoBehaviour
{
    [Tooltip("移动速度")]
    public float moveSpeed = 1.0f;
    [Tooltip("旋转速度")]
    public float rotationSpeed = 40.0f;
    [Header("按键设置")]
    [Tooltip("向前移动按键")]
    public KeyCode forwardKey = KeyCode.W;
    [Tooltip("向后移动按键")]
    public KeyCode backKey = KeyCode.S;
    [Tooltip("向左移动按键")]
    public KeyCode leftKey = KeyCode.A;
    [Tooltip("向右移动按键")]
    public KeyCode rightKey = KeyCode.D;
    [Tooltip("向左旋转按键")]
    public KeyCode leftRotateKey = KeyCode.Q;
    [Tooltip("向右旋转按键")]
    public KeyCode rightRotateKey = KeyCode.E;

    private Transform m_Transform;

    private void Awake()
    {
        m_Transform = transform;
    }

    private void Update()
    {
        ForwardMove();
        BackMove();
        LeftMove();
        RightMove();
        LeftRotate();
        RightRotate();
    }

    // 向前移动
    private void ForwardMove()
    {
        if (Input.GetKey(forwardKey))
        {
            m_Transform.Translate(m_Transform.forward * moveSpeed * Time.deltaTime, Space.World);
        }
    }

    // 向后移动
    private void BackMove()
    {
        if (Input.GetKey(backKey))
        {
            m_Transform.Translate(-m_Transform.forward * moveSpeed * Time.deltaTime, Space.World);
        }
    }

    // 向左移动
    private void LeftMove()
    {
        if (Input.GetKey(leftKey))
        {
            m_Transform.Translate(-m_Transform.right * moveSpeed * Time.deltaTime, Space.World);
        }
    }

    // 向右移动
    private void RightMove()
    {
        if (Input.GetKey(rightKey))
        {
            m_Transform.Translate(m_Transform.right * moveSpeed * Time.deltaTime, Space.World);
        }
    }

    // 向左旋转镜头
    private void LeftRotate()
    {
        if (Input.GetKey(leftRotateKey))
        {
            m_Transform.Rotate(-Vector3.up * rotationSpeed * Time.deltaTime, Space.World);
        }
    }

    // 向右旋转镜头
    private void RightRotate()
    {
        if (Input.GetKey(rightRotateKey))
        {
            m_Transform.Rotate(Vector3.up * rotationSpeed * Time.deltaTime, Space.World);
        }
    }
}

标签: Unity3d

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号