我想将我的玩家车辆旋转到目标物体的方向/侧面。 通过以下图像,我试图更好地解释我的观点:
我想将我的坦克对象朝向另一个坦克对象旋转,以便它可以指向该方向。
我为此编写了以下代码,但它没有起作用:
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);
}
坦克对象前进方向: