unity3d 碰撞器和触发器的区别

首先得先明白什么是碰撞器,什么是触发器


碰撞器:Box Collider 盒碰撞器、Capsule Collider 胶囊碰撞器、Mesh Collider 网格碰撞器、Sphere Collider 球碰撞器  等等这一类组件。

触发器:以上这些碰撞器在检视面板中勾选IsTrigger属性就变成了触发器


区别:

(1)碰撞器有碰撞效果

(2)IsTrigger=false

(3)碰撞信息检测
MonoBehaviour.OnCollisionEnter(Collision collision) 
MonoBehaviour.OnCollisionExit(Collision collision) 
MonoBehaviour.OnCollisionStay(Collision collision) 

(1)触发器没有碰撞效果

(2)IsTrigger=true;

(3)触发信息检测:
MonoBehaviour.OnTriggerEnter(Collider collider)
MonoBehaviour.OnTriggerExit(Collider collider)
MonoBehaviour.OnTriggerStay(Collider collider)


要明白什么时候才会产生碰撞?或者说怎样才能触发以上那些函数?

刚体(Rigidbody)

刚体使物体能在物理控制下运动。刚体可通过接受力与扭矩,使物体像现实方式一样运动。任何物体想要受重力影响,受脚本施加的力的作用,或通过NVIDIA PhysX物理引擎来与其他物体交互,都必须包含一个刚体组件。

碰撞器(那些Collider,例如BoxCollider)和刚体(Rigidbody)要一起使用才会产生碰撞,才会触发以上那些函数,只是不同的组合方式触发的函数不同,例如是否勾选IsTrigger。




一些专业术语需要了解

1、Static Collider 静态碰撞器

指的是没有附加刚体而附加了碰撞器的游戏对象。这类对象会保持静止或者很轻微的移动。对于环境模型十分好用,当和刚体碰撞时而不会移动。

2、Rigidbody Collider 刚体碰撞器

指的是同时附加了刚体和碰撞器的游戏对象。通过脚本的力量和碰撞完全受物理引擎的影响。可以和只包含碰撞器的游戏对象碰撞。将会成为你游戏中使用物理效果的基本类型碰撞器。

3、Kinematic Rigidbody Collider 运动学刚体碰撞器

指的是同时包含碰撞器和刚体,并且激活IsKinematic的一类游戏对象,要移动这类游戏对象,要修改它的Transform组件,而不是用力。它们很像静态碰撞器不过对于想要不停地到处移动的碰撞器很好用。

如果有刚体有时候变得静止不动了,那么它们就是进入休眠了。意味着它们将不受物理变化影响,也就不会移动。如果你把一个运动学刚体从一个休眠的普通刚体下边移走,那休眠的刚体就会被唤醒并重新被物理变化时时影响。



举例:两个方块,Cube1和Cube2 ,移动一个方块去碰撞另外一个方块。

(1)如果这两个方块都只挂着碰撞器(例如BoxCollider)没有挂刚体(Rigidbody),不会触发消息

(2)两个方块都挂着碰撞器(例如BoxCollider)和 刚体(Rigidbody),IsTrigger=false的情况下响应碰撞检测函数,IsTrigger=true的情况下响应触发检测函数


仅提供以上两个思路,大家可以试着尝试各种组合,查看触发哪些函数。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值