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

如何设置Cinemachine第三人称相机:玩家横向移动时相机保持静止

实现《马里奥64》风格的Cinemachine第三人称跟随相机

核心目标是让相机固定在世界空间的某个位置(或仅在玩家超出范围时缓慢移动),仅保持朝向玩家,同时玩家基于相机空间的输入绕相机移动。以下是具体实现步骤:

1. 重构相机的目标绑定

默认Cinemachine第三人称相机的Follow和Look At都绑定玩家,导致相机随玩家平移。修改为:

  • 将Look At保持绑定玩家对象,确保相机始终看向玩家
  • 创建一个空GameObject(命名为CameraAnchor),放置在你希望相机初始固定的位置,将相机的Follow目标改为这个空对象

这样相机的位置会锁定在CameraAnchor的位置,仅通过旋转看向玩家,不会随玩家左右移动而平移。

2. 相机视角控制(可选)

如果需要玩家能像《马里奥64》那样调整相机视角,给CameraAnchor添加旋转控制逻辑:

  • 用鼠标输入控制CameraAnchor的Y轴旋转(水平转向),示例代码:
    public float mouseSensitivity = 2f;
    
    void Update()
    {
        float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity;
        transform.Rotate(0, mouseX, 0);
    }
    
  • 可以添加角度限制,避免相机旋转到不合理的角度(比如限制Y轴旋转在±180°内)

3. 确保玩家移动基于相机空间

既然你已经确认移动脚本在自由视角下正常,只需保持移动输入转换为相机空间方向即可,示例核心逻辑:

// 获取相机的水平方向向量(忽略垂直分量)
Vector3 cameraForward = Camera.main.transform.forward;
cameraForward.y = 0f;
cameraForward.Normalize();

Vector3 cameraRight = Camera.main.transform.right;
cameraRight.y = 0f;
cameraRight.Normalize();

// 计算玩家移动方向
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");
Vector3 moveDir = cameraForward * vertical + cameraRight * horizontal;

// 应用移动(根据你的玩家控制逻辑调整)
playerRigidbody.MovePosition(transform.position + moveDir * moveSpeed * Time.deltaTime);

这样玩家的横向输入会驱动角色绕相机位置做圆周移动,而非 Strafing。

4. 可选:添加相机滞后跟随

如果希望玩家移动到一定范围后,相机才缓慢跟进(还原《马里奥64》的相机弹性),给CameraAnchor添加以下脚本:

public Transform player;
public float followRadius = 4f; // 玩家超出这个半径时相机开始移动
public float smoothSpeed = 1.5f;
public float cameraDistance = 6f; // 相机与玩家的固定距离

void Update()
{
    // 计算相机锚点的目标位置:玩家后方固定距离处
    Vector3 desiredPos = player.position - Camera.main.transform.forward * cameraDistance;
    desiredPos.y = transform.position.y; // 保持相机高度不变

    // 检查玩家是否超出跟随半径
    float distanceToDesired = Vector3.Distance(transform.position, desiredPos);
    if (distanceToDesired > followRadius)
    {
        transform.position = Vector3.Lerp(transform.position, desiredPos, smoothSpeed * Time.deltaTime);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 22:01:07