首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Unity3D中检查哪个对撞机触发器

在Unity3D中检查哪个对撞机触发器
EN

Stack Overflow用户
提问于 2019-09-16 22:04:24
回答 2查看 2.8K关注 0票数 3

上下文

我正在开发一个AbstractAliveEntity,它基本上有三个功能:

  • Sight:检测可插入的对象。(对撞机+雷射)
  • 检测:检测其他人AbstractAliveEntities (对撞机+ Raycast)
  • 听觉:听觉噪声(对撞机)

目前,我正在使用这些对撞机通过脚本创建空的gameObjects。

我想要的

我想知道哪个对撞机是在OnTriggerEnterOnTriggerExit中触发的

代码

创建球对撞机

代码语言:javascript
复制
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;
}

检出

代码语言:javascript
复制
private void OnTriggerEnter(Collider other) {

        // How can i detect which collider was?? this.gameObject = "Player" (i want "Sight")

    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-17 01:55:54

由于统一最初是围绕基于组件的方法设计的,我的方法是将三个独立的“检测”系统分割成单独的GameObjects,并使用它们自己的对撞机和脚本。

  • AliveEntity
    • SightController
      • ColliderA

代码语言:javascript
复制
- DetectionController  
    - ColliderB

代码语言:javascript
复制
- HearingController  
    - ColliderC

然后,您可以在每个单独的脚本中使用OnTrigger向主AbstractAliveEntity发送通知,然后主AbstractAliveEntity逐个处理它们。

主脚本

代码语言:javascript
复制
OnSight(Collider other) {
  // Do sight related actions here
}

OnDetection(Collider other) {
  // Do detetction related actions here
}

OnHearing(Collider other) {
  // Do hearing related actions here
}

然后,对于每一个响应检测器:

代码语言:javascript
复制
// reference to master script
public AbstractAliveEntity aae;

OnTriggerEnter(Collider other) {
  // replace function with whatever you want to use
  aae.OnSight(other)
}

这里的额外优势是,你现在也可以自由地设计“盲”或“聋”实体,而不需要太多麻烦。(您只是不添加相应的组件)

票数 3
EN

Stack Overflow用户

发布于 2019-09-16 22:34:06

other.gameObject以获得另一个对撞机所连接的gameObject。

查看有关对撞机这里的统一文档以获得更多信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57964946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档