unity中的碰撞检测

      本人学生一枚,初学unity若有理解的不对的地方,希望大家多多指教,不胜感激。

      同样是在学习过程中遇到关于碰撞器的小问题,查阅相关的材料后,对于碰撞检测的原理有了一定了解,整理相关笔记,与大家分享。

      unity中的两个物体要想发生碰撞,必须依赖于自身的碰撞器组件(Collider),并且至少其中一个物体必须附有刚体组件(Rigidbody),其中附带碰撞检测脚本的物体必须有刚体组件。

      unity中的碰撞检测,主要有两种接口函数,一种是碰撞信息检测,一种是触发信息检测(在检视面板碰撞器组件中勾选IsTrigger属性选择框,则为触发器模式),这两种接口函数具体为:

       碰撞信息检测:


         1.MonoBehaviour.OnCollisionEnter(Collision collisionInfo)         只有进入碰撞器时,调用该方法,在两个物体离开碰撞器之前只调用一次

         2.MonoBehaviour.OnCollisionStay(Collision collisionInfo)          在两物体保持接触时调用,在两个物体碰撞器离开之前每帧调用一次

         3.MonoBehaviour.OnCollisionExit(Collision collisionInfo)          只有两个物体碰撞器离开时,调用该方法一次

      

       触发信息检测:

  

         1.MonoBehaviour.OnTriggerEnter(Collider colliderInfo)         只有进入触发器时,调用该方法,在两个物体离开触发器之前只调用一次

         2.MonoBehaviour.OnTriggerStay(Collider colliderInfo)          在两物体保持接触时调用,在两个物体触发器离开之前每帧调用一次

         3.MonoBehaviour.OnTriggerExit(Collider colliderInfo)          只有两个物体触发器离开时,调用该方法一次

        以上的接口函数都是MonoBehaviour的函数,由于我们新建的脚本都继承这个MonoBehaviour这个类。所以我们的脚本里面可以直接写这些函数。


        需要注意的是这两类函数中的参数类型是不一样的,在碰撞信息检测中,所传递进来的参数是Collision类型,而在触发信息检测中,所传递进来的参数是Collider类型

       那么这两种模式下的碰撞检测有什么区别呢?区别是这样的:

       在使用碰撞器类型检测时,两个物体是不能进入相互内部的,并且两个物体的碰撞器接触时,在附有刚体组件的物体是会受到力的反馈作用的;

       而在使用触发器类型检测时,这时候两个物体是可以进入内部的,附有刚体组件的物体并不会受到力的反馈作用,这样一来,如果我们需要检测两个物体是否有接触,同时又不希望他们产生力的影响,就可以使用触发器检测来监测两个物体是否有接触了。

        

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值