Unity3D,仅更改对象变换旋转时的俯仰

9njqaruj  于 2022-11-30  发布在  其他
关注(0)|答案(2)|浏览(137)

晚上好。我有一个游戏对象,我需要改变它的音调(并且不影响它的偏航和滚动)。我有一个四元数,它存储旋转,我需要从它获得所需的俯仰角,并设置为我的游戏对象。但从四元数到欧拉角的转换操作并不是唯一的(一个四元数可以表示为多个欧拉角的三元组)。有没有可能在不转换为欧拉角的情况下做到这一点?

bf1o4zei

bf1o4zei1#

是的,通过处理四元数的原始分量(可怕)或使用Unity的内置函数之一
Quaternion.AngleAxis()-可能就是您要找的,您可以轻松地将旋转与俯仰分离。
但是在“Static Methods”标题下有很多类似的here函数。

rur96b6h

rur96b6h2#

可以像这样合并旋转(基于Unity example),在本例中,当前旋转与增量俯仰旋转:

public class Example2 : MonoBehaviour
{
    float rotateSpeed = 90;

    // Applies a rotation of 90 degrees per second around the X axis for pitch
    void Update()
    {
        float angle = rotateSpeed * Time.deltaTime;
        transform.rotation *= Quaternion.AngleAxis(angle, Vector3.right);
    }
}

相关问题