【发布时间】:2019-09-06 00:46:31
【问题描述】:
我想将我的玩家载具旋转到目标对象的方向/侧面。 通过以下图片,我试图以更好的方式解释我的观点:
我想将下面的坦克对象旋转到另一个坦克对象,以便它可以指向那个方向。
我为此目的编写了这段代码,但它不起作用:
IEnumerator DoRotationAtTargetDirection(Transform opponentPlayer)
{
Quaternion targetRotation = Quaternion.identity;
do
{
Debug.Log("do rotation");
Vector3 targetDirection = opponentPlayer.position - transform.position;
targetRotation = Quaternion.LookRotation(targetDirection);
Quaternion nextRotation = Quaternion.Lerp(transform.localRotation, targetRotation, Time.deltaTime);
transform.localRotation = nextRotation;
yield return null;
} while (Quaternion.Angle(transform.localRotation, targetRotation) < 0.01f);
}
我只想平稳地旋转并停在目标物体上。 请分享您对此的建议。
编辑:
这是更新后的代码,仍然无法正常工作,坦克对象卡在旋转中,如上图所示:
IEnumerator DoRotationAtTargetDirection(Transform opponentPlayer)
{
Quaternion targetRotation = Quaternion.identity;
do
{
Debug.Log("do rotation");
Vector3 targetDirection = (opponentPlayer.position - transform.position).normalized;
targetRotation = Quaternion.LookRotation(targetDirection);
transform.rotation = Quaternion.RotateTowards(transform.rotation, targetRotation, Time.deltaTime);
yield return null;
} while (Quaternion.Angle(transform.rotation, targetRotation) < 0.01f);
}
坦克物体前进方向:
【问题讨论】:
-
而不是完全旋转到目标对象 - 它就像我上面的图像一样停止。
-
感谢您的修改,这已成为一个非常高质量的问题!