Unity学习笔记:对Collider和Rigidbody以及OnTriggerEnter2D事件函数和OnCollisionEnter2D的个人理解【By Myself】

如果我们要让两个对象发生碰撞,并判断他们碰撞后的反应的话,定然离不开Collider和Rigidbody这两个东西,但刚刚接触这两个东西时会混淆他们之间的概念,下面本菜就来讲解这两者之间的区别:

1:刚体,相当于应该接收器,接收物理效果,比如其他对象传来的力、重力等等;

2:碰撞体,相当于计算器,如果两个精灵都有刚体,这两个对象仅仅是只有相互接收对方的力的功能,因为没有碰撞体,那么说明两个没有计算力的工具,所以会产生不了效果【在这一点疑惑的人,是被生活误导了,误以为接收即碰撞,但...这是二进制的世界】,如果要产生效果,则必须要有碰撞器来计算碰撞后的反应;

【但如果仅仅有碰撞体,没有刚体,那么就相当于一个没有输入数据的程序一样,也没有反应】

了解这两者的差别,那么我们来看看Collider中is Trigger选项:

如果我们有两个对象A、B,且这两个对象都有自己的Rigidbody和Collider,但如果我们把其中一个或者都将is Trigger选项选上,会发现两个对象可以相互穿过了,这是为什么呢?

因为我们选上某一个对象的is Trigger选项后,Unity引擎就会将该对象的碰撞的位移效果抹除,即虽然有“刚体”组键,但是却向空气一样可以被穿过,这时这个对象就是一个触发器了,相当于一个开关。

另外一个问题也随着is Trigger选项的开启产生了,即A、B都有碰撞器和刚体,但如果选上了is Trigger,那么就有反弹【或者粘黏】、穿过两种不同的效果。

打个比喻:如果我们要写一个地刺对象和一个刺猬对象,两个对象碰到玩家后都会让玩家损失生命值,地刺对应的就是选上is Trigger,刺猬对应的就是不选is Trigger,因为玩家可以在底层上移动,而不能在刺猬上移动;

然后两种效果Unity用了两种不同的事件来处理,即OnTriggerEnter2D、OnCollisionEnter2D,前者是处理地刺与玩家的碰撞,后一个是处理刺猬与玩家的碰撞。

要注意,两个对象不可能同时触发和碰撞,因为不存在即可以穿过又不可以穿过的对象;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值