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

来源:互联网 发布:抛光砖 抛釉砖 知乎 编辑:程序博客网 时间:2024/04/30 03:50

今天看到看到了 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

   

阅读全文
0 0
原创粉丝点击