您的位置:首页 > 移动开发 > Unity3D

Unity 理解刚体(Rigidbody)和碰撞体(Collider)和触发器(Is Trigger)以及刚体休眠(Rigidbody Sleeping)

2015-08-27 00:05 525 查看
前言:

今天看到看到了 Rigidbody
Sleeping
这个知识点,解决了我疑惑很久的一个物理学的问题。本来笔者遇到问题会想办法去解决的,但是那是想了蛮久也没想通为什么两个物体碰撞要发生碰撞的事件前提是运动的那个要有刚体,为什么没运动的物体带有刚体就不行?嘿嘿,今天Rigidbody
Sleeping
解决了我这个问题。

进入主题:

虽然主题中有关于理解刚体(Rigidbody)和碰撞体(Collider)和触发器(Is Trigger),但是笔者在这里就不去讲解了,因为都很简单,这里给出晚上已经有的一篇关于他的理解,写的和能深刻,链接地址:http://blog.csdn.net/Monzart7an/article/details/22739421其实在他的文章里,他对于我遇到的问题没有给出解释,在这里我接下来会详细解释下其原因。

下面这段话给出了解释:

Rigidbody sleeping happens completely automatically.
Whenever a rigidbody is slower than the sleepAngularVelocity and sleepVelocity it will start falling asleep. After a few frames of resting it will then be set to sleep. When the body is sleeping, no collision detection or simulation will be performed anymore.
This saves a lot of CPU cycles.

刚体休眠完全自动发生。只要刚体的速度低于sleepAngularVelocity和sleepVelocity,该刚体就会开始休眠。其空闲一些帧后,就会被设置成休眠状态。处于休眠状态中的物体,不会再对其进行碰撞检测和模拟。这会节约大量的CPU开销。

小小总结:
呵呵,知道原因了吗?原来是Unity对带了刚体的物体,但其速度低于sleepAngularVelocity和sleepVelocity这个时,就会自动处于休眠状态,不会再对其进行碰撞检测和模拟,是Unity优化了。这里sleepAngularVelocity和sleepVelocity两个值在(Edit
-> Project Settings -> Physics)中一般默认设置好低,自己也可以手动去改。
具体的刚体的休眠在什么情况下关闭和开启,圣典里讲的很详细,链接地址:http://game.ceeger.com/Components/RigidbodySleeping.html

最后的最后:

通过这次发现,有问题不要紧,因为问题总会有解决的办法。在遇到问题时,不要发大量时间一直去想,因为发了大量时间的你还没想出来的话,那么你的思维可能会禁锢在那个时刻,你可以先放下来,过几天再去想,也许,放下来之后就会在某个时间,解决方法就出现在你面前!嘿嘿,个人的经历罢了,希望大家不要吐槽哦!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: