调用OnTriggerEnter但从未设置变量

时间:2012-08-26 12:40:34

标签: unity3d

我已经开始使用C#慢慢学习Unity了,到目前为止它已经爆发了!

我遇到了一个小问题(我希望这是一个小问题)并且卡住了,从那以后一直在质疑我的理智。

在我首先运行的主脚本中,我有代码可以动态生成基元(球体)并附加脚本,脚本会检查球体是否已被触发。

主要脚本

bool createNav (Vector3 _start) {

        GameObject nav = GameObject.CreatePrimitive(PrimitiveType.Sphere);
        nav.AddComponent<NavTrigger>();

        nav.collider.isTrigger = true;

        nav.transform.localScale = new Vector3(1f,1f,1f);
        nav.transform.position = _start;

        return nav.GetComponent<NavTrigger>().Triggered;
    }

我的其他剧本

private bool triggered = false;

    void OnTriggerEnter() {

        this.triggered = true;
    }

    public bool Triggered {

        get { return this.triggered; }
    }

可悲的是,无论是否运行OnTriggerEnter代码,它仍会返回false。

如果有任何想法或建议,请告诉我,我会尝试做任何事情来完成这项工作。

非常感谢你的帮助! :)

1 个答案:

答案 0 :(得分:2)

OnTriggerEnter需要一个参数(Collider other)或者它与Unity期望的签名不匹配。

private bool triggered = false;

    void OnTriggerEnter(Collider other) {
        Debug.Log("Triggered");
        this.triggered = true;
    }

    public bool Triggered {

        get { return this.triggered; }
    }
}

此外,正如文件所述:

  

请注意,触发事件仅在其中一个碰撞器发送时发送   有一个僵硬的身体。