尽管检查了OnTriggerEnter和OnTriggerExit两次调用

时间:2017-01-31 12:33:27

标签: c# unity3d

我已经阅读了很多关于这个问题的问题,但我还是无法解决。我有一个带有球体对撞机的球和一个看不见的墙,当它通过它时重新开始球(在onTriggerExit方法上)。问题是我无法解决它,即使使用布尔值也无法进入方法。

public class ballRestart : MonoBehaviour
{
    shootController instance;
    bool isColliding;
    // Use this for initialization
    void Start()
    {
        instance = Camera.main.GetComponent<shootController>();
        isColliding = false;
    }


    public void OnTriggerEnter(Collider col)
    {
        Debug.Log("TeEnter: " + isColliding);
        if (!isColliding)
        {
            isColliding = true;
            Debug.Log("TRIGGERED: " + isColliding);
        }

    }

    void OnTriggerExit(Collider hit)
    {
        Debug.Log("TeExit: " + isColliding);
        if (isColliding)
        {
            instance.initializeBall();
            isColliding = false;
            Debug.Log("exit");
        }
    }
}

输出:

Here is the output of the Logs

如你所见,每次球进入对撞机时进入两次,每次球离开同一对撞机进入两次。我不知道这里发生了什么。

1 个答案:

答案 0 :(得分:0)

我很确定您的对象上有2个碰撞器,每个碰撞器都会引起事件触发。检查您的组件和子对象。

P.s .:我知道这是个老问题,但是我的回答可能对其他人有帮助。