首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >碰撞层矩阵与父/子对象关系

碰撞层矩阵与父/子对象关系
EN

Stack Overflow用户
提问于 2021-09-22 08:23:40
回答 1查看 678关注 0票数 0

我来这里是经过了一些测试,因为在谷歌搜索后,我无法找到一个直接的答案。

假设我有一个播放器字符,标记设置为Player,图层设置为Humanoid。我也有一群全国人大执行巡逻,漫游,和其他的运动行为。它们的标记设置为NPC,其层设置为Humanoid。因为这是一个使用2D物理的2D游戏,所以我用Project Settings碰撞矩阵来制作它,这样Humanoids就不会相互碰撞。

换句话说,在尊重重力、力、冲力等的同时,NPC和玩家角色可以通过对方。这很好用。当我想要一个NPC的子GameObject,它位于Default层,并且有一个Trigger类型的CircleCollider2D,为了执行一些操作(例如:显示对话、停止或切换父对象或其他对象的AI行为)时,我的问题出现了。

从我的测试来看,这似乎不起作用,但我可能做错了什么。所以我的问题是:

  • 如果GameObject A忽略与X层的冲突,则如果C是X层中GameObject PE 219>的子层,则会忽略与层Y中的GameObject C的冲突?<代码>H 220<代码>F 221

代码语言:javascript
复制
private void OnCollisionEnter2D(Collision2D other) {
      if (other.gameObject.CompareTag("Player")) {
        Debug.Log("Collided with player");
      }
      
      if (!eventConsumed && other.gameObject.CompareTag("Player")) {
        var draw = Random.Range(0.001f, 1.0f);

        if (draw > 1.0f - eventChance) {
          dialogueEvent.Play();
          dialogueEvent = null;
        }

        eventChance = Mathf.Clamp(eventChance * 1.33f, 0.0f, 1.0f);
      }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-23 17:39:25

为了检测被设置为触发器的物理对撞机是否发生了碰撞。您需要使用OnTriggerEnter2D函数而不是OnCollisionEnter2D函数。

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

https://stackoverflow.com/questions/69280629

复制
相关文章

相似问题

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