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;