【Unity3D】刚体与碰撞体以及is Trigger属性的意义

本文深入解析Unity3D中的刚体与碰撞体概念,探讨两者关系及isTrigger属性的作用,同时介绍了碰撞与触发事件的检测方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

【Unity3D】刚体与碰撞体以及is Trigger属性的意义

 

 

刚体:个人理解就是具有物理属性(如:质量),接受物理作用(如:重力)的组件。

 

     碰撞体:个人理解就是计算碰撞后的物理量(如:弹力)。

 

     刚体与碰撞体的关系:个人判断碰撞体就是需要计算力,如果碰撞的物体有刚体组件,那么该物体就会在碰撞体计算出的力的作用下运动。如果这个物体没有刚体,那么碰撞体产生的力就没有了受体,也就没有任何意义了。

    碰撞事件产生条件:得出的结论似乎是如果碰撞双方只有一个有刚体,那么那个刚体一定要处于激活状态下才会有碰撞事件发生。

 

     is Trigger:如果勾选了该属性,那么该物体就是一个虚体,有形而无实,不受力的作用,其它对象可以穿过它,但是如果这时满足碰撞事件产生条件,那么该物体就会产生触发事件。

 

触发信息检测:
1.MonoBehaviour.OnTriggerEnter( Collider other )当进入触发器
2.MonoBehaviour.OnTriggerExit( Collider other )当退出触发器
3.MonoBehaviour.OnTriggerStay( Collider other )当逗留触发器

碰撞信息检测:
1.MonoBehaviour.OnCollisionEnter( Collision collisionInfo ) 当进入碰撞器
2.MonoBehaviour.OnCollisionExit( Collision collisionInfo ) 当退出碰撞器
3.MonoBehaviour.OnCollisionStay( Collision collisionInfo )  当逗留碰撞器

转载于:https://www.cnblogs.com/417LDS/p/6040430.html

### Unity3D碰撞触发的使用方法 在 Unity3D 中,碰撞(Collider)用于定义物之间的物理交互行为。当两个带有 Collider 的对象发生接触时,默认情况下会执行刚体间的碰撞响应。然而,通过设置其中一个或多个 Collider 为 Trigger,可以使这些对象之间不产生实际的物理碰撞效果而是触发特定事件。 #### 设置触发器 为了使某个 Collider 成为触发器,在 Inspector 面板中的该组件上勾选 **Is Trigger** 属性即可[^1]。此时此 collider 不再参常规意义上的碰撞计算,而是在其他 Rigidbody 或者同样标记为 trigger 的 collider 进入其范围时发送消息给脚本处理逻辑。 #### 编写触发回调函数 对于希望监听并响应触发事件的游戏对象来说,需要在其挂载的 MonoBehavior 脚本内实现相应的虚函数来捕获进入、停留以及离开触发区域的动作: - `OnTriggerEnter(Collider other)` 当另一个具有 Rigidbody 组件的对象首次触碰到当前作为触发器的 Collider 时调用。 - `OnTriggerStay(Collider other)` 如果另一物持续处于触发区域内,则每一帧都会被调用一次。 - `OnTriggerExit(Collider other)` 只要之前位于触发区内的物移出了这个空间就会被执行。 下面是一个简单的例子展示了如何利用上述机制销毁带有所谓 "pick up" 标签的目标实[^2]: ```csharp private void OnTriggerEnter(Collider collision) { if (collision.CompareTag("PickUp")) { // 注意这里修正了原代码中的拼写错误 Destroy(collision.gameObject); } } ``` 请注意,以上示例假设目标对象确实拥有名为 `"PickUp"` 的标签;如果没有预先设定好这样的分类标识符,那么条件判断将永远不会成立。 另外值得注意的是,如果遇到某些外部导入的模型比如 FBX 文件无法正常工作的情况,可能是因为缺少必要的几何数据支持。确保 Project 窗口中对应的资源项已开启 **Generate Colliders** 选项可以帮助解决这类问题[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值