Unity四元数小问题整理

1.Unity中,四元数不能保存超过360度的旋转,所以如此大范围的旋转不能直接两个四元数做插值(当你用0度和721度的四元数做插值,它只会转1度,而不会转两圈)。

 

2.要把旋转设置成某个方向,用LookRotation,不要用FromToRotation。前者结果测试过,是绝对准确的。

 

3.四元数插值报错:!CompareApproximately (aScalar, 0.0F)。是由于四元数值过小造成的,需要判断模平方是否小于最小值

拿到四元数模平方:

Quaternion.Dot(a, a)

比较,归零 即可:

if (Quaternion.Dot(a, a) < Quaternion.kEpsilon)
    a = Quaternion.identity;

 

你可能感兴趣的:(Unity四元数小问题整理)