我已经开始使用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。
如果有任何想法或建议,请告诉我,我会尝试做任何事情来完成这项工作。
非常感谢你的帮助! :)
答案 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; }
}
}
此外,正如文件所述:
请注意,触发事件仅在其中一个碰撞器发送时发送 有一个僵硬的身体。