找回密码
 立即注册
查看: 325|回复: 5

unity凉了是该死,这不就是unity的一个bug吗?

[复制链接]
发表于 2023-10-11 18:56 | 显示全部楼层 |阅读模式
Collider2D[] colliders = Physics2D.OverlapCircleAll(Vector2.zero, 5f);
        foreach (Collider2D collider in colliders)
        {
            Debug.Log(”与坐标为0半径为5的圆形区域发生交集的物体有” + collider.name);
        }

上面这段代码的意图是检测一个圆形区域内有多少物体与该区域重叠了。但问题是:当某物体的碰撞器是实体时,可以检测得到;可是,如果该物体的碰撞器改为触发碰撞器(isTrigger为true),就检测不到了;而我想要的效果是,不管是否为触发碰撞器,只要它与这个圆形区域交集,那就应该捕捉它!显然unity没能考虑到触发碰撞器这点(所有的重载函数我的看了),有人知道是我错了,还是unity错了?
发表于 2023-10-11 18:56 | 显示全部楼层
想了一下,还是自问自答吧,免得以后遇到同样问题的朋友,网上搜索找不到结果。这里先弄几个关键词:isTrigger, ColliderFilter.useTriggers,Physics.Overlap...
Physics或者Physics2D下的OverlapBox、OverlapCircle、OverlapCapcule函数无法识别检测出isTrigger为true的碰撞器,原来很可能是项目里的【Queries Hit Trigger】没有打勾,解决方法就是给该选项打上勾即可:打开项目的【Projuect Setting】,选中怕【Physics】或者【Physics2d】(根据你自己的项目设置来),找到那个【queries hit trigger】打上勾,如下免两张图片所示:



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2023-10-11 18:56 | 显示全部楼层
Is Trigger       
Enable this if you want this Collider 2D to behave as a trigger. The physics system ignores this Collider when this is enabled.
Unity凉不凉我不知道,但是碰见意料之外的行为不查文档就开始胡思乱想的话,你迟早得凉。
发表于 2023-10-11 18:57 | 显示全部楼层
这个提问方式可招不来友善的回答。

自行去搜索关键词“unity碰撞动作矩阵”
发表于 2023-10-11 18:58 | 显示全部楼层
找喷,回答完毕
毕竟unity是我的吃饭家伙
发表于 2023-10-11 18:58 | 显示全部楼层
大哥,好好看看碰撞器和触发器的文章吧
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-5-4 20:09 , Processed in 0.512059 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表