浅谈Unity中的碰撞检测

欢迎大家来到我的博客http://unity.gopedu.com/home.php?mod=space&uid=3352&do=blog&view=me&from=space

碰撞检测

    首先,我们得明确一点:即产生碰撞信息所需要的条件。事实上,在U3D中,能检测碰撞发生的方式有两种,一种是利用碰撞器,另一种则是利用触发器。这两种方式的应用非常广泛。为了完整的了解这两种方式,我们必须理解以下概念:
    
(一)碰撞器是一群组件,它包含了很多种类,比如:Box Collider,Capsule Collider等,这些碰撞器应用的场合不同,但都必须加到GameObjecet身上。
    
(二)所谓触发器,只需要在检视面板中的碰撞器组件中勾选IsTrigger属性选择框。
    
(三)在Unity3d中,主要有以下接口函数来处理这两种碰撞检测:


触发信息检测:
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 )  
当逗留碰撞器


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

我们就需要完善的了解一下有关碰撞器方面的知识啊。我把我们还得了解的概念列举如下:
1.Static Collider 
静态碰撞器
指的是没有附加刚体而附加了碰撞器的游戏对象。这类对象会保持静止或很轻微的移动。这对于环境模型十分好用,比如刚体和墙面碰撞时而不会移动。

2.Rigidbody Collider 
刚体碰撞器
指的是附加了刚体和碰撞器的游戏对象。

3.Kinematic Rigidbody Collider 
运动学刚体碰撞器
在第2点得基础上勾选了刚体组件中的IsKinematic属性,如果要移动这类对象,就只能修改它的Transform,而不是用力。这类游戏对象还有许多其他的独特的使用情景。
这三种碰撞器如果勾选了IsTrigger复选框,就变成了相应的触发器了。

 

两个碰撞器要想检测到碰撞信息,至少有一个是Rigidbody Collider

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

 

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

请继续关注我的博客

http://unity.gopedu.com/home.php?mod=space&uid=3352&do=blog&view=me&from=space

更多精彩尽在http://www.gopedu.com/

你可能感兴趣的:(U3D培训,Unity学习,Unity培训)