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

Unity物体设置旋转至90度后仍持续旋转的问题求助

解决Unity物体旋转至90度后持续旋转的问题

问题根源分析

  1. 浮点数精度陷阱:你用transformZ != 90作为循环终止条件,但float类型累加0.1时,由于二进制浮点数的精度限制,永远无法精确等于90,导致循环无限执行。
  2. 旋转逻辑错误:transform.Rotate(0, 0, transformZ)是每次旋转transformZ度,而transformZ一直在递增,这会让物体旋转速度越来越快,完全偏离“转到90度停止”的需求。

修正方案一:固定步长旋转

适合需要匀速分步旋转的场景:

public class playerScript : MonoBehaviour
{
    // 每次旋转的固定步长
    public float rotateStep = 0.1f;
    // 目标Z轴旋转角度
    private readonly float targetZ = 90f;

    IEnumerator Start()
    {
        transform.position = new Vector3(0, 0, 0);
        float currentZ = transform.eulerAngles.z;
        
        // 用<=判断替代精确相等,避免精度问题
        while (currentZ < targetZ)
        {
            transform.Rotate(0, 0, rotateStep);
            currentZ += rotateStep;
            
            // 防止步长导致角度超过目标值,直接修正到目标角度
            if (currentZ > targetZ)
            {
                transform.eulerAngles = new Vector3(0, 0, targetZ);
                break;
            }
            yield return new WaitForSeconds(0.1f);
        }
    }
}

修正方案二:平滑插值旋转(推荐)

用Quaternion插值实现更自然的平滑旋转,同时避免欧拉角的万向锁问题:

public class playerScript : MonoBehaviour
{
    // 旋转速度(值越大旋转越快)
    public float rotateSpeed = 20f;
    private readonly float targetZ = 90f;

    IEnumerator Start()
    {
        transform.position = new Vector3(0, 0, 0);
        Quaternion targetRotation = Quaternion.Euler(0, 0, targetZ);
        
        // 当当前旋转与目标旋转的夹角大于0.1度时继续旋转
        while (Quaternion.Angle(transform.rotation, targetRotation) > 0.1f)
        {
            // 基于时间的平滑插值,保证不同帧率下速度一致
            transform.rotation = Quaternion.Lerp(transform.rotation, targetRotation, rotateSpeed * Time.deltaTime);
            yield return null;
        }
        // 最后直接设置到目标角度,消除微小误差
        transform.rotation = targetRotation;
    }
}

关键注意事项

  • 永远不要用==或!=判断float类型的相等,改用范围比较或>=/<=逻辑。
  • 复杂旋转场景优先使用Quaternion,避免欧拉角的万向锁问题。
  • 基于时间的插值(如Time.deltaTime)能保证旋转速度不受帧率影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 12:55:21