如果我的问题令人困惑,我提供了一个视频演示。
我选择更换相机装置以围绕球体旋转以使用Quaternion.Slerp。到目前为止,我已经主要成功,但我正在努力实现一定的轮换。
对于y移动,我使用此代码:
currentRotation = perspective.transform.localRotation;
goalRotation = currentRotation * Quaternion.Euler (controlInput.y * speed.y * 90 * draggable.transform.forward);
perspective.transform.rotation = Quaternion.Slerp (currentRotation, goalRotation, Time.deltaTime);
就我而言,y运动是正确的。 X运动虽然有点棘手。因为它是一个摄像机装备,我不想围绕物体摆动,而是旋转物体。所以我不能使用这段代码:
currentRotation = perspective.transform.localRotation;
goalRotation = currentRotation * Quaternion.Euler(controlInput.x * speed.x * 180 * draggable.transform.up);
perspective.transform.rotation = Quaternion.Slerp (currentRotation, goalRotation, Time.deltaTime);
把它想象成火箭联盟的主菜单,除了汽车之外,我们有一个球体。
在this video中,我演示了使用RotateAround()的旧功能以及它与我当前的Slerp()技术的比较。
所以我的问题是,我怎样才能以类似于RotateAround的方式使用Slerp?我已经尝试了几种不同载体的交叉产物,但由于交叉积不是常数,这显然不是如何构造四元数。
我不怕复杂的数学,但我不想听到“不要使用四元数”作为答案。