1.Collider(碰撞器)有很多种,从大体上分2D和3D colider
3D Collider: Box Collider Sphere Collider CapsureCollider Mesh Collier Terrian Collider Whell Collider
2D Collider: Box Collider2D Circle Box Collider 2D Edge Collider 2D Polygon Collider 2D
看上去很多,单作用都是一样的,都是与刚体配合发生碰撞使用的,2D和3D的区别就是 2D是一个面,而3D是体,根据自己游戏中物体的形状选择合适的碰撞盒,能更好的节省CPU的开销;
2.Rigidbody(刚体),作用是让游戏物体具有物体的属性,如重力,摩擦力、弹力等
3.从碰撞盒与刚体结合上分,又可以分为下面3大类:
这时他是不受力、扭力(相当于旋转)、重力的作用,只能使用运动学,就是控制Transform组件的position、rotation、scale属性,让它动起来,似乎好像没有存在的必要吧??
请您注意:虽然他不受物理引擎的影响,但他可以进行碰撞检测和触发检测,这在游戏中是很重要的哦,当你的物体不想有碰撞效果,又想有碰撞/触发检测,他就派上用场了。
说了那么多有点晕了了吧,接下来做几个实验验证一下在什么情况,能有碰撞效果,穿透效果,能否进行碰撞检测
触发检测(没有物理效果),只需勾选IsTrigger
首先在场景中建立2个Cube,一个RedCube,一个BlueCube
在为其各自添加2个脚本,写入碰撞函数、触发函数,让够手动拖动其中的一个cube,为不让地面对实验产生影响,我在添加刚体的时候去掉重力。
一:移动静态碰撞器 VS 其他
1.静态碰撞器 VS 静态碰撞器>>穿透,不检测
2.移动静态碰撞 VS 静止刚体碰撞器>>穿透,不检测
3.移动的静态碰撞器 VS 静止的运动学刚体碰撞器>>穿透效果,不检测
4.移动的静态碰撞器 VS 静止的角色控制器>>穿透效果,不检测
没有任何碰撞效果。运动学刚体碰撞器是不受到任何外力作用的
二:移动刚体 VS 其他
1.移动刚体碰撞器 VS 静态碰撞静止》有碰撞效果,检测
对于移动的刚体碰撞器在遇到静态碰撞器后会产生物理效果,如反弹、无法前进等;对于静止的静态碰撞器,会产生轻微的碰撞效果,如轻微的晃动,但是不会移动
2.移动的刚体碰撞器VS静止的刚体碰撞器>>有碰撞效果,检测,
出现正常的物理效果,如反弹
3.移动的刚体碰撞器VS静止的运动学刚体碰撞器>>有碰撞效果,检测
,运动学刚体碰撞器就像一堵墙一样一动不动。
4.移动的刚体碰撞器VS静止的角色控制器>>有碰撞效果,检测
刚体碰撞器遇到角色控制器后会发生反弹,无法继续前进,而角色控制器没有任何效果
三:移动的运动学刚体碰撞器 VS 其他
1.移动的运动学刚体碰撞器VS静止的静态碰撞器,穿透,不检测
2.移动的运动学刚体碰撞器VS静止的刚体碰撞器,有碰撞效果,检测(刚体动了)
仅刚体碰撞器有碰撞效果,如反弹等,运动学刚体碰撞器不受力的作用(不动)
3.移动的运动学刚体碰撞器VS静止的运动学刚体碰撞器,穿透,不检测
没有任何反应……就像两个静态碰撞器一样
4.移动的运动学刚体碰撞器VS静止的角色控制器(同上)穿透,不检测
四:移动的角色控制器 VS 其他
1.移动的角色控制器 VS 静止的静态碰撞器 ,穿透,不检测
2.移动的角色控制器 VS 静止的刚体碰撞器,碰撞,检测,
刚体碰撞器被弹开
3.移动的角色控制器 VS 静止的运动学刚体碰撞器,穿透,不检测
4..移动的角色控制器 VS 静止的角色控制器,穿透,不检测
五:补充性:双方都不带碰撞器的,穿透,不检测
总结:运动静态碰撞器与任何碰撞器接触,都不碰撞,不检测
运动的刚体与任何碰撞器接触,碰撞,检测,只是效果不同,与刚体反弹,与其他当刚体被撞翻,其他不动
运动的运动学刚体,只与刚体发生碰撞,并且刚体被撞翻,与其他,都不碰撞,不检测
运动的角色控制器 ,与运动学刚体一样
那为什么:运动的刚体能碰撞?
刚体是有个休眠线性速度(Sleep Velocity)和休眠角速度(sleepAngularVelocity),一旦刚体的Velocity和Angular小于他的休眠速度,刚体就会进入休眠状态,一旦休眠了他就不可能碰撞/检测了。
那什么情况刚体离开休眠状态?
1.通过脚本的AddForce/Torque方法,施加了外力,或属性属性变化。实质是刚体由了速度
2.被其他刚体碰撞器碰撞(刚体碰撞器,运动学刚体碰撞器,角色控制器),并且只有处于运动状态中才能唤醒休眠中的刚体,静态碰撞器不能唤醒休眠中的刚体。
所以:碰撞的必要条件是》》
碰撞检测的条件及碰撞效果:
1.两方必须要有碰撞器(角色控制器)
2.运动的一方必须要有刚体
等有空将触发实验补上,先将总结说一下
触发检测的条件
1.两方必须要有碰撞器
2.运动的一方必须要有刚体
3.任意一方IsTrigger设为 True, 双方都可以触发检测
但是必须注意:若与角色碰撞器接触,带刚体的且运动的一方必须勾选IsTrigger,否则,2者不会触发检测
若勾选,都可以触发检测