上下文
我正在开发一个AbstractAliveEntity,它基本上有三个功能:
AbstractAliveEntities (对撞机+ Raycast)目前,我正在使用这些对撞机通过脚本创建空的gameObjects。
我想要的
我想知道哪个对撞机是在OnTriggerEnter和OnTriggerExit中触发的
代码
创建球对撞机
private void Start() {
// Creating empty gameObject
sightGameObject = new GameObject("Sight");
sightGameObject.transform.parent = transform;
sightGameObject.transform.localPosition = new Vector3(0, 0, 0);
// Add Component Sphere
_sightInteractable = sightGameObject.AddComponent<SphereCollider>();
// _sightInteractable = gameObject.AddComponent<SphereCollider>();
_sightInteractable.radius = radiusInteractableDetection;
_sightInteractable.isTrigger = true;
}检出
private void OnTriggerEnter(Collider other) {
// How can i detect which collider was?? this.gameObject = "Player" (i want "Sight")
}发布于 2019-09-17 01:55:54
由于统一最初是围绕基于组件的方法设计的,我的方法是将三个独立的“检测”系统分割成单独的GameObjects,并使用它们自己的对撞机和脚本。
- DetectionController
- ColliderB
- HearingController
- ColliderC
然后,您可以在每个单独的脚本中使用OnTrigger向主AbstractAliveEntity发送通知,然后主AbstractAliveEntity逐个处理它们。
主脚本
OnSight(Collider other) {
// Do sight related actions here
}
OnDetection(Collider other) {
// Do detetction related actions here
}
OnHearing(Collider other) {
// Do hearing related actions here
}然后,对于每一个响应检测器:
// reference to master script
public AbstractAliveEntity aae;
OnTriggerEnter(Collider other) {
// replace function with whatever you want to use
aae.OnSight(other)
}这里的额外优势是,你现在也可以自由地设计“盲”或“聋”实体,而不需要太多麻烦。(您只是不添加相应的组件)
发布于 2019-09-16 22:34:06
other.gameObject以获得另一个对撞机所连接的gameObject。
查看有关对撞机这里的统一文档以获得更多信息。
https://stackoverflow.com/questions/57964946
复制相似问题