Хорошо, у меня есть кратное значение GameObjects
, к которому я поворачиваюсь.Я пытаюсь увидеть, если playerAgentBase.transform.rotation == lookRotation
.
Проблема, с которой я сталкиваюсь, заключается в том, что иногда поворот playerAgentBase
имеет отрицательные значения, а lookRotation
имеет положительные значения.Таким образом, оператор if никогда не становится true
.Я не уверен, почему это происходит.Иногда это работает, а иногда нет.Когда он не работает, он поворачивается к неправильному объекту.
Есть ли лучший способ проверить, когда мой поворот достиг цели?
Любая помощь будет оценена.Спасибо.
private void Start()
{
rotate = true;
}
public void RotateTowards()
{
float strength = 1.5f;
float str = 0f;
if (playerAgentBase != null)
{
Vector3 direction = (transform.position - playerAgentBase.transform.position);
direction.y = 0;
str = Mathf.Min(strength * Time.deltaTime, 1);
Quaternion lookRotation = Quaternion.LookRotation(direction);
playerAgentBase.transform.rotation = Quaternion.Slerp(playerAgentBase.transform.rotation, lookRotation, 10f);
//Here is where my problem is
if (playerAgentBase.transform.rotation == lookRotation) //<-------------------
{
rotate = false;
InteractA();
}
}
}
public void Update()
{
if (rotate)
{
RotateTowards();
}
}