gpt4 book ai didi

c# - 增加超过 360 度的欧拉角

转载 作者:行者123 更新时间:2023-11-30 21:43:41 26 4
gpt4 key购买 nike

我对一些与欧拉角有关的 Unity 文档感到有点困惑。我只是想知道我是否没有理解差异,或者样本没有遵循最佳实践。文档 here状态:

Only use this variable to read and set the angles to absolute values. Don't increment them, as it will fail when the angle exceeds 360 degrees. Use Transform.Rotate instead.

同时,代码示例似乎使用了可能超过 360 度的增量:

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
public float yRotation = 5.0F;
void Update() {
yRotation += Input.GetAxis("Horizontal");
transform.eulerAngles = new Vector3(10, yRotation, 0);
}
void Example() {
print(transform.eulerAngles.x);
print(transform.eulerAngles.y);
print(transform.eulerAngles.z);
}
}

如果变量超过 360 度,递增一个变量然后使用该变量设置值是否绝对仍然存在超过 360 度的风险?

最佳答案

当您使用欧拉角旋转对象时,当它达到 360 度并尝试进一步超过时,它会变成(负)-360 度并逐渐从 -359 增加到 -1。

执行以下代码后,您的值将不会超过 360,并将保持正数。

float rotateAngle = rotateObject.transform.localEulerAngles.y;
// Convert negative angle to positive angle
rotateAngle = (rotateAngle > 180) ? rotateAngle - 360 : rotateAngle;
rotateObject.transform.localEulerAngles = new Vector3(rotateObject.transform.localEulerAngles.x, rotateAngle, rotateObject.transform.localEulerAngles.z);

关于c# - 增加超过 360 度的欧拉角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41499656/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com