千家信息网

碰撞器和触发器

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,1、什么是碰撞器碰撞器是一群组件,它包含了很多种类,比如: Box Collider 盒碰撞器、Capsule Collider 胶囊碰撞器、Mesh Collider 网格碰撞器、Sphere Co
千家信息网最后更新 2026年11月02日碰撞器和触发器


1、什么是碰撞器

碰撞器是一群组件,它包含了很多种类,比如: Box Collider 盒碰撞器、Capsule Collider 胶囊碰撞器、Mesh Collider 网格碰撞器、Sphere Collider 球碰撞器 等等这一类组件,这些碰撞器应用的场合不同,但都必须加到GameObjecet身上。(如下图):

2、什么是触发器

所谓触发器,只需要在检视面板中的碰撞器组件中勾选IsTrigger属性选择框。如下图:

3、区别:
碰撞器
1)碰撞器有碰撞效果
2)IsTrigger=false
3)碰撞信息检测回调函数
1.OnCollisionEnter( Collision other ) 当进入碰撞器(开始碰撞时)
2.OnCollisionStay( Collision other ) 当逗留碰撞器(一直碰撞时)
3.OnCollisionExit( Collision other) 当退出碰撞器(结束碰撞时)

触发器
1)触发器没有碰撞效果
2)IsTrigger=true;
3)触发信息检测:

1.OnTriggerEnter( Collider other )当进入触发器
2.OnTriggerExit( Collider other )当退出触发器
3.OnTriggerStay( Collider other )当逗留触发器
4、碰撞和触发的必要条件

碰撞测试

1)两个cube上面都添加了collider,游戏运行发生了穿透

2)我们为×××cube添加rigidbody,取消rigidbody上面的重力选项

游戏运行,我们发现×××cube被弹飞,而红色cube没有发生改变

3)我们为红色cube也加上rigidbody ,取消重力选项

游戏运行,两个cube都被弹开了

碰撞总结

1、如果两个物体,只要有一个没有Collider,即使任意一个物体有rigidbody,都会发生穿越(即,没Collider就穿越);

2、如果两个物体都有Collider,有rigidbody的物体会发生碰撞,而没有rigidbody的一方则不会受到影响(注意一下谁碰谁);

3、如果两个物体都有Collider,无rigidbody的物体碰有rigidbody的物体,则并不会发生碰撞
(易忽略,单独拿出来讲。另外这种情况下,当高速移动无rigidbody的物体时,偶尔会出现发生碰撞的现象,不知道是不是unity的一个bug)
综上,两物体发生碰撞的必要条件是:
两个物体都必须带有碰撞器(Collider),其中至少一个物体带有Rigidbody刚体。(只有带Rigidbody刚体的一方会受到物理引擎的影响)
可能会有人想如果为物体都加上刚体不就不需要这么纠结了吗?
有两方面原因:
一是游戏场景物体很多,都加刚体,系统的开销会很大;
二是有时候我就需要其中一个物体是不动的,比如地面。
注意:
1、在一次碰撞中,"刚接触"和"接触完"只被调用一次,而"碰撞中"则是在接触时一直被调用。
2、函数的参数则是被撞的那个物体。我们可以通过此参数获取被撞物体信息。

我们检测一下回调函数:

我们首先创建一个这种场景


我们给红色小球添加rigidbody,勾选上重力选项,并添加脚本

下图为脚本内容:

运行游戏,输出结果为:

由此上面的测试我们可以清楚的看到三个方法的调用时机

其中other参数为碰撞到的物体

触发测试

1、我们做碰撞测试的例子,我们创建一个下图这样的场景,把红色cube的IsTrigger勾上(由于IsTrigger是触发器身上的一个属性,所以两个物体都要加collider,我们暂且不加rigidbody,再红色cube身上添加脚本)


运行游戏我们发现红色cube会穿过×××cube但是没有打印任何一句话。

所以触发器的触发条件是基于碰撞的基础上的,我们分别给两个cube加上rigidbody,取消重力选项

红色cube穿过×××cube并且调用了触发器的三个回调函数,其中

逗留函数调用了50次,说明红色cube再穿过×××cube的时候(重叠)期间,一直再重复调用逗留触发器

触发结论
1、和碰撞不同,触发无论谁碰谁,结果都一样;
2、触发的必要条件:至少有一个碰撞器勾选了IsTrigger,至少有一个物体具有刚体,才会触发;
3、碰撞和触发的联系和区别以及何时使用它们
由于碰撞是可以发生物理效果的同时触发事件,而触发是不发生物理效果的情况下触发事件;
所以,还是具体情况具体对待,知道了原理就灵活运用吧。
举个例子来说吧。
足球射到墙上会发生碰撞,而足球出界了并不会发生碰撞,而是裁判吹哨这个事件被触发。
那么你就可以在墙上加一个碰撞体不勾选IsTrigger,而出界线加一个Collider并勾上IsTrigger。

碰撞和检测的相关的注意点
两个注意
注意1:
两个物体发生碰撞,如果要检测到碰撞信息,那么其中必有一个物体既带有碰撞器,又带有刚体,且检测碰撞信息的脚本必须附着在带有刚体的碰撞器上。

注意2:
两个GameObject发生碰撞,要想检测到触发信息,最少要有一个刚体碰撞器并且勾选了IsTrigger复选框,另一个最少要有一个碰撞器组件,此时检测碰撞的脚本必须附加在那个带有刚体的触发器上。


碰撞 物体 触发器 两个 刚体 红色 检测 信息 函数 脚本 运行 效果 条件 组件 重力 测试 必要 必要条件 事件 参数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技有限公司 互联网与科技 百单网互联网科技有限公司怎么样 美国互联网科技巨头监管 没上市的科技互联网公司 科技与互联网发展 世界互联网领先科技成果 银优互联网科技有限公司 深圳卡尔迅互联网科技有限公司怎么样 太原新华互联网科技学校怎么样 创业天下互联网科技有限公司 厦门千工互联网科技有限公司 速维有品互联网信息科技(苏州)有限公司 互联网科技和法律行业 明优互联网科技有限公司 合肥互联网科技公司公章图片 沐思想互联网科技有限公司 领航科技大厦互联网公司 云鲸互联网络科技有限公司 数字互联网科技有限公司 北京路客互联网科技有限公司 华宇互联网科技 喔噻互联网科技 互联网和黑科技的看法 世界互联网科技公司市值排名 互联网科技研发水平 中科明德北京互联网科技 世界互联网科技成果奖 马化腾互联网科技教学 上海旺乐尼互联网科技有限公司
0