unity3d 理解刚体(Rigidbody)和碰撞体(Collider),边学边更新,内有问题,求高手答疑

刚体(Rigidbody)的官方(摘自Unity3d的官方指导书《Unity4.x从入门到精通》)解释如下:

Rigidbody(刚体)组件可使游戏对象在物理系统的控制下来运动,刚体可接受外力与扭矩力用来保证游戏对象像在真实世界中那样进行运动。任何游戏对象只有添加了刚体组件才能受到重力的影响,通过脚本为游戏对象添加的作用力以及通过NVIDIA物理引擎与其他的游戏对象发生互动的运算都需要游戏对象添加了刚体组件。

个人理解就是刚体是用来模拟物体受到一个力作用时候的表现,这个从刚体中的参数就可以看出:

unity3d 理解刚体(Rigidbody)和碰撞体(Collider),边学边更新,内有问题,求高手答疑

全是关于物体受到力之后,怎么运动的参数,比如Mass质量,Drag阻力。


碰撞体的官方(摘自Unity3d的官方指导书《Unity4.x从入门到精通》)解释如下:

碰撞体是物理组件的一类,它要与刚体一起添加到游戏对象上才能触发碰撞。如果两个刚体相互撞在一起,除非两个对象有碰撞体时物理引擎才会计算碰撞,在物理模拟中,没有碰撞体的刚体会彼此相互穿过。


个人是这样理解的,为什么要判断碰撞,判断碰撞就是需要计算力,无论是阻力也好,动力也好,如果此时物体有刚体组件,那么物体就会在力的作用下运动。如果这个物体没有刚体,那么碰撞产生的力就没有任何意义了,那计算碰撞也就没有任何意义了。

所以,我们可以推断出,如果两个碰撞体都没有刚体组件,那么这两个物体即使相互发生了碰撞,那么也不会有碰撞事件的。


官网上的碰撞的图如下(注:据说是官网的图,我在网上很多地方看到了,但我目前为止还没找到在官网的哪个位置哈):

unity3d 理解刚体(Rigidbody)和碰撞体(Collider),边学边更新,内有问题,求高手答疑

从上面的图中我们看出来碰撞的双方中一定要有一个Rigidbody存在。


但做实验的时候发现了一个很诡异的事情,就是发生碰撞的主体一定是要带刚体的,即只有带刚体的碰撞体去撞其他碰撞体时,双方才会收到碰撞事件,以下是我做的实验:

一、控制A(刚体加碰撞体)撞击 静止的B(碰撞体),双方能收到碰撞事件。

二、控制B(碰撞体)撞击 静止的A(刚体加碰撞体),双方收不到碰撞事件。


对于上面的第二种情况,我也觉得很诧异,不知道为啥,感觉不是很好理解,有高手可以指导下不?



unity3d 理解刚体(Rigidbody)和碰撞体(Collider),边学边更新,内有问题,求高手答疑,布布扣,bubuko.com

unity3d 理解刚体(Rigidbody)和碰撞体(Collider),边学边更新,内有问题,求高手答疑

上一篇:Apache+MySQL+PHP开发环境的搭建(二)


下一篇:Sql Server 2008 R2占用内存一直增长,直到死锁的问题(已解决)