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

C#(Unity)实现FPS游戏后坐力 解决MouseLook脚本重置相机旋转问题

你的问题根源是MouseLook脚本每帧都直接通过内部维护的xRotation变量计算相机旋转并强制赋值,完全覆盖了其他脚本对相机旋转的修改,所以后坐力的改动会被每帧重置。

以下是两种可直接落地的实现方案:


方案1:修改MouseLook脚本,新增后坐力接口(最稳定)

直接在原有视角控制逻辑中加入后坐力偏移计算,确保后坐力和鼠标输入的旋转可以叠加生效,修改后的代码如下:

using UnityEngine;

public class MouseLook : MonoBehaviour
{
    public float mouseSensitivity = 1500f;
    public Transform playerBody;
    // 后坐力衰减系数,数值越大后坐力回弹越快
    public float recoilDecay = 15f;

    float xRotation = 0f;
    // 新增后坐力偏移变量,分别对应垂直、水平方向的后坐力
    float recoilXOffset = 0f;
    float recoilYOffset = 0f;

    void Start()
    {
        Cursor.lockState = CursorLockMode.Locked;  
    }

    void Update()
    {
        float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity * Time.deltaTime;
        float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity * Time.deltaTime;

        xRotation -= mouseY;
        xRotation = Mathf.Clamp(xRotation, -90f, 90f);

        // 每帧衰减后坐力偏移,实现自动回弹效果
        recoilXOffset = Mathf.Lerp(recoilXOffset, 0f, recoilDecay * Time.deltaTime);
        recoilYOffset = Mathf.Lerp(recoilYOffset, 0f, recoilDecay * Time.deltaTime);

        // 计算最终旋转时叠加后坐力偏移
        transform.localRotation = Quaternion.Euler(xRotation + recoilXOffset, recoilYOffset, 0f);
        // 水平后坐力可以叠加到人物身体旋转上,也可以只加在相机上,根据需求调整
        playerBody.Rotate(Vector3.up * (mouseX + recoilYOffset * Time.deltaTime));
    }

    // 公共方法,给武器脚本开枪时调用,传入后坐力数值
    public void AddRecoil(float recoilX, float recoilY)
    {
        recoilXOffset += recoilX;
        recoilYOffset += recoilY;
    }
}

使用方法:在开枪逻辑中获取相机上的MouseLook组件,调用AddRecoil方法即可,示例:

// 垂直后坐力一般为正数,代表镜头上抬;水平后坐力可以加随机值模拟左右偏移
mouseLook.AddRecoil(Random.Range(0.8f, 1.2f), Random.Range(-0.3f, 0.3f));

方案2:层级拆分法(无需修改原有MouseLook代码)

如果你不想改动已经跑通的MouseLook逻辑,可以通过调整节点层级实现:

  • 给相机新增一个父节点,把原来挂在相机上的MouseLook脚本移到这个父节点上
  • 后坐力的旋转逻辑直接写在相机节点上,修改相机本身的localRotation即可

这种方式下MouseLook控制父节点的旋转,后坐力控制相机相对父节点的偏移,两者互不干扰,也不会出现被重置的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:27:02