如何找出轮换结束的时间

时间:2018-09-12 21:00:36

标签: unity3d rotation

好的,所以我有多个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();
     }
 }

0 个答案:

没有答案