2

我已经开始慢慢地使用 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。

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

非常感谢您的帮助!:)

4

1 回答 1

2

OnTriggerEnter需要一个参数(其他碰撞器),否则它将与 Unity 期望的签名不匹配。

private bool triggered = false;

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

    public bool Triggered {

        get { return this.triggered; }
    }
}

此外,正如文档所述:

请注意,仅当其中一个对撞机还附加了刚体时才会发送触发事件。

于 2012-08-27T07:38:51.540 回答