在使用LookAt
时,我需要限制骨骼的旋转。
LookAt
函数的工作原理很好,但是它没有提供任何钳位的可能性,据我所知,LookAt
没有提供一种方法来查看最终的旋转
而不将其应用于转换。
因此,我想知道是否有可能先计算LookAt
的结果而不先应用它。
答案 0 :(得分:3)
计算所需的方向向量:
Vector3 direction = bone.transform.position - targetTransform.position;
使用Quaternion.LookAt计算所需的旋转角度:
Quaternion newRotation = Quaternion.LookAt(direction);
现在执行要在提供的旋转上执行的所有数学运算,例如,如果仅想将骨骼每秒旋转最大10度,则可以执行以下操作:
newRotation = Quaternion.RotateTowards(bone.transform.rotation, newRotation, 10f * time.deltaTime);
最后,将旋转应用于骨骼:
bone.rotation = newRotation;
答案 1 :(得分:1)
仅应用LookAt
,查看结果,然后应用最终旋转将结果钳位。
在帧(update
函数或类似函数)中应用中间变换并不罕见。重要的是,在Update
(或LateUpdate
或FixedUpdate
)函数的末尾,转换为所需的转换。