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

如何修改第三人称角色移动 实现侧移不转向(类似PUBG/Control)

第三人称侧移不转向的实现方案
  • 核心思路:区分前后移动和左右侧移逻辑,仅在前后移动时让角色转向移动方向,左右移动时保持当前朝向,只执行横向位移。

替换你提供的stateMachine.transform.rotation = Quaternion.LookRotation(movement);代码片段,修改为以下逻辑:

// 获取角色水平前向(忽略Y轴,避免地形坡度干扰转向)
Vector3 forward = stateMachine.transform.forward;
forward.y = 0;
forward.Normalize();

// 获取角色水平右向
Vector3 right = stateMachine.transform.right;
right.y = 0;
right.Normalize();

// 拆分移动输入为前后、左右分量
float forwardAxis = Vector3.Dot(movement.normalized, forward);
float rightAxis = Vector3.Dot(movement.normalized, right);

// 仅当存在有效前后输入时,才让角色转向前后移动方向
if (Mathf.Abs(forwardAxis) > 0.1f)
{
    Vector3 targetForward = forwardAxis * forward;
    stateMachine.transform.rotation = Quaternion.LookRotation(targetForward);
}

// 构建最终移动向量,给左右侧移添加减速系数实现缓慢效果
Vector3 finalMovement = forwardAxis * forward + rightAxis * right;
finalMovement *= rightAxis != 0 ? 0.7f : 1f;
  • 关键细节:
    • 忽略Y轴的方向计算,避免角色因上下坡出现不必要的俯仰旋转
    • 用向量点积精准拆分输入意图,区分前后/左右移动
    • 给左右移动设置速度系数(如示例中的0.7f),实现你需要的缓慢侧移效果
    • 设置输入阈值(0.1f),避免微小输入导致的角色转向抖动

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 15:10:42