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

角度转Vector3异常:游戏飞刀右键朝向移动功能失效

问题解决:飞刀朝向移动功能修复

核心错误分析

你当前代码的问题出在角度获取与方向计算上:

  1. transform.rotation是四元数,它的x/y/z/w分量不是直观的欧拉角度,直接拿transform.rotation.x计算会得到完全错误的角度值,这是方向失效的根本原因。
  2. 你绕Y轴旋转飞刀,却在XY平面计算方向,不符合3D空间的移动逻辑(飞刀应该在XZ平面水平移动)。

修复方案(两种可选)

方案1:基于欧拉角计算正确方向

直接获取绕Y轴的欧拉角,转换为弧度后计算XZ平面的移动方向:

private void Update()
{
    if (Input.GetKeyDown(KeyCode.Mouse0))
    {
        Jump();
        _rotationSpeed = 250;
    }
    if (Input.GetKeyDown(KeyCode.Mouse1))
    {
        _rotationSpeed = 0;

        // 获取Y轴欧拉角并转弧度(绕Y轴旋转的角度)
        float angle = transform.eulerAngles.y * Mathf.Deg2Rad;
        // 计算XZ平面的方向向量(Y轴保持0,确保水平移动)
        Vector3 direction = new Vector3(Mathf.Cos(angle), 0f, Mathf.Sin(angle)).normalized;
        Debug.Log(direction);

        // 施加力,可选改用ForceMode.Impulse获得更直接的瞬时效果
        _rigidbody.AddForce(direction * 600, ForceMode.Force);
    }
    transform.Rotate(new Vector3(0, _rotationSpeed, 0) * Time.deltaTime);
}

方案2:直接使用Transform方向向量(更简洁)

不需要计算角度,直接利用物体自身的朝向向量,更高效且不易出错:

private void Update()
{
    if (Input.GetKeyDown(KeyCode.Mouse0))
    {
        Jump();
        _rotationSpeed = 250;
    }
    if (Input.GetKeyDown(KeyCode.Mouse1))
    {
        _rotationSpeed = 0;

        // 根据你的飞刀模型朝向选择:
        // 如果尖端指向X轴正方向 → 使用transform.right
        Vector3 direction = transform.right;
        // 如果尖端指向Z轴正方向 → 使用transform.forward
        // Vector3 direction = transform.forward;
        
        // 确保方向水平(可选,根据需求调整)
        direction.y = 0f;
        direction = direction.normalized;
        Debug.Log(direction);

        _rigidbody.AddForce(direction * 600, ForceMode.Force);
    }
    transform.Rotate(new Vector3(0, _rotationSpeed, 0) * Time.deltaTime);
}

额外优化建议

  • 如果希望飞刀移动更“灵敏”,可以把ForceMode.Force换成ForceMode.Impulse,后者是瞬时冲量,不受物体质量影响,更符合点击后立刻冲刺的手感。
  • 确保你的Rigidbody组件勾选了Use Gravity,否则跳跃后飞刀不会下落,影响游戏体验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 04:43:10