You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Unity正交相机绕玩家旋转后松开鼠标滑动问题

问题原因

你遇到的松开鼠标后相机滑动偏移问题由三个逻辑错误导致:

  • RotateAroundPlayer默认值设为true,游戏启动后、第一次点击鼠标前,相机就会全局响应鼠标移动输入,积累初始偏移。
  • 位置移动误用Vector3.Slerp(球面插值,设计用于旋转计算),插值路径是弧形而非直线,松开鼠标停止旋转后,弧形位移没有走完,就会出现持续滑动的视觉效果。
  • 相机朝向逻辑的触发条件有误:仅当LookAtPlayer或RotateAroundPlayer为true时才执行LookAt,松开鼠标后RotateAroundPlayer变为false,如果没有手动勾选LookAtPlayer,相机角度会停止更新,和位置插值不同步,进一步放大偏移感。
修复步骤
  1. 将RotateAroundPlayer默认值改为false,初始状态下不触发旋转逻辑,仅在鼠标按住时开启旋转权限。
  2. 位置插值从Vector3.Slerp换成Vector3.Lerp,走直线路径平滑移动,消除弧形滑动。
  3. 调整相机朝向的判断逻辑,保证位置移动时角度同步更新;如果不需要始终看向玩家,可保留原判断,但建议适当调高SmoothFactor避免不同步。
  4. (可选)旋转输入改用Input.GetAxisRaw("Mouse X"),关闭Unity输入系统自带的轴值平滑衰减,避免松开鼠标瞬间的输入残留导致多余旋转。
修复后完整代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerFollow : MonoBehaviour {

    public Transform PlayerTransform;

    private Vector3 _cameraOffset;

    [Range(0.01f, 1.0f)]
    [SerializeField] float SmoothFactor = 0.5f;

    [SerializeField] bool LookAtPlayer = false;

    // 修正默认值:初始状态不开启旋转
    [SerializeField] bool RotateAroundPlayer = false;

    [SerializeField] float RotationsSpeed = 5.0f;

    void Start () {
        _cameraOffset = transform.position - PlayerTransform.position;  
    }
   
    void LateUpdate () {
        // 直接判断鼠标按住状态,避免Down/Up事件帧丢失导致的状态异常
        RotateAroundPlayer = Input.GetMouseButton(0);

        if (RotateAroundPlayer)
        {
            // 用GetAxisRaw读取无平滑的鼠标增量,避免松开后的输入残留
            Quaternion camTurnAngle =
                Quaternion.AngleAxis(Input.GetAxisRaw("Mouse X") * RotationsSpeed, Vector3.up);

            _cameraOffset = camTurnAngle * _cameraOffset;
        }
        Vector3 newPos = PlayerTransform.position + _cameraOffset;
        // 改用Lerp做直线位置插值
        transform.position = Vector3.Lerp(transform.position, newPos, SmoothFactor);

        // 始终保持看向玩家,若需要可改回原判断条件
        transform.LookAt(PlayerTransform);
    }
}

如果你不需要相机始终朝向玩家,可以把最后一行的LookAt逻辑换回原判断条件,注意将SmoothFactor调整到0.3以上,避免位置和角度更新速度差导致的滑动感。

内容的提问来源于stack exchange,提问作者elaaa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 09:27:09