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

Unity玩家斜向移动速度优化:如何将斜向移动速度减半?

修复Unity角色斜向移动速度异常问题

你的代码中,当同时按下水平和垂直方向键时,生成的移动向量模长是直线移动时的√2倍(约1.414倍),导致斜向移动速度更快。下面提供两种解决方案:

方案一:保持所有方向移动速度一致(行业通用)

通过归一化方向向量,确保角色不管是直线还是斜向移动,速度都等于设定的moveSpeed:

void Update()
{
    // 获取原始输入方向
    Vector3 rawDirection = new Vector3(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"), 0f);
    
    // 避免归一化零向量引发异常
    if (rawDirection.magnitude > 0)
    {
        // 归一化后向量模长固定为1,保证移动速度统一
        rawDirection = rawDirection.normalized;
    }
    
    // 计算最终移动向量
    Vector3 direction = rawDirection * moveSpeed * Time.deltaTime;
    transform.position += direction;
}

方案二:严格实现斜向移动速度减半

如果确实需要让斜向移动速度为直线的一半,可通过判断输入状态调整速度倍率:

void Update()
{
    float horizontal = Input.GetAxisRaw("Horizontal");
    float vertical = Input.GetAxisRaw("Vertical");
    
    Vector3 direction = new Vector3(horizontal, vertical, 0f);
    float speedMultiplier = 1f;
    
    // 检测是否为斜向移动(水平和垂直方向同时有输入)
    if (horizontal != 0 && vertical != 0)
    {
        speedMultiplier = 0.5f;
    }
    
    if (direction.magnitude > 0)
    {
        direction = direction.normalized;
    }
    
    // 应用倍率计算移动向量
    direction = direction * moveSpeed * speedMultiplier * Time.deltaTime;
    transform.position += direction;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 21:05:20