1
我创建了一个协程来处理我的相机移动和方向看,在这种协程,我有:统一线性插值和球面线性插值不动的顺利
public IEnumerator MoveCameraLookAtObject(Transform _cameraTransform, Vector3 startPos, Vector3 endPos, Vector3 lookAt, float time)
{
// Loop through a timed based situation.
for (float i = 0f; i <= 1.0f; i += Time.deltaTime/time)
{
// Lerp the Movement.
_cameraTransform.position = Vector3.Lerp(startPos, endPos, i);
// Slerp the rotation.
Vector3 relativePos = lookAt - _cameraTransform.position;
Quaternion rotation = Quaternion.LookRotation(relativePos);
_cameraTransform.rotation = Quaternion.Slerp(_cameraTransform.rotation, rotation, i);
}
yield return null;
}
}
的问题是,当我真正感到Lerping和Slerping它看起来可怕并且不流畅的东西。我很困惑我做错了什么,因为我花了好几天的时间来想清楚这一点。我看着Lerp and Slerp Question,看到这几乎是同样的问题,但人们需要我已经有了答案。
感谢您的回复,但为什么我不计算循环中的旋转,如果我的对象将移动?由于我的目标正在朝着它的方向前进,所以它一直在变化。 – JoeyL
哦,等等,我想我可以得到最终位置,然后从那里看角度。让我试试这个速度真快。 – JoeyL
老兄,如果你刚刚开始,我会鼓励你尝试一下上面显示的“正常方式”。你可以看到100000例如何正确使用它(如上所述)。一旦你有丰富的经验,你可以看看变化!说实话,我不能解释为什么你不这样做“内循环”:)你会完成理解,一旦你做了几次。请享用! – Fattie