unity collider rigidbody zz

 
 
其中最基本的關係:
Collider是最基本的觸發物理的條件,例如碰撞檢測。基本上,沒有Collider物理系統基本沒有意義(除了重力)。
 
Rigidbody是物體的基本物理屬性設置,當檢測碰撞完以後,就要計算物理效果,而Rigidbody就是提供計算基本參數的玩意。
 
PhysicMaterial則是附加的基本物理參數,是一個物理材質,UNITY3D有自帶默認的物理材質的係數(在Edit/Project Settings/Physic下設置),它參與碰撞的計算例如反彈效果摩擦效果等。
 
Rigidbody部分:
 
Rigidbody組件的中文手冊:http://game.ceeger.com/Script/Rigidbody/Rigidbody.html
 
Rigidbody相關具體函數我就不解釋了,看官方手冊就很明朗,不過有幾個仍是要講一下。
1.
若是沒有Rigidbody而設置了Collider碰撞的話,那這個物體就是個死死不會動的物體。
假設有Rigidbody去撞它的話,那將會被彈開。不過,假設該腳本控制的是位移而不是物理加力的方式的話,將穿透過去。
兩個沒有Rigidbody的物體,也是穿透。
兩個只有collider而沒有rigidbody啥都不會發生,碰撞時連OnTriggerEnter等函數也不會觸發。
若碰撞體設置了isTrigger屬性,將取代UNITY的物理函數來運算。能夠在觸發函數裏將其屏蔽,再次觸發碰撞等效果。
 
2.
若是物理系統感受不真實很差,那極可能是縮放的問題。若是你的遊戲世界很是大,因此的東西將顯示移動很是慢,確保你全部的模型爲真實世界大小。例如,一個汽車應該有4米長,一個角色約2米高。物體以相同的加速度下落,不論大或小,重或輕。若是你的遊戲世界有較大的縮放,物體仍以相同的加速度下落,可是由於全部的物體都比較大,物體的下落顯得就比較慢。(BY U3D聖典的翻譯)
 
3.
當改變剛體參數的時候(例如質量等),應該在FixedUpdate函數中使用它,物理模擬以離散的時間步執行。FixedUpdate函數在每一步以前被當即調用。(修改自U3D聖典的翻譯)
 
4.
isKinematic這個參數指的是是否受物理力的影響,若是勾上則不收AddForce等物理添加力的函數影響了。
 
5.
collisionDetectionMode 碰撞檢測模式
使用這個建立一個剛體的連續碰撞檢測,從沒有碰撞檢測的其餘物體傳遞,用來防止快速移動的物體,爲了得到最佳效果,爲快速移動的物體設置這個值爲CollisionDetectionMode.ContinuousDynamic,以及爲其餘與之須要碰撞的物體設置這個值,爲CollisionDetectionMode.Continuous。這個對物理性能有很大影響,因此只要給它設置爲默認值 CollisionDetectionMode.Discrete,假如快速物體的碰撞沒有任何問題。連續碰撞檢測只支持剛體的球體、膠囊或盒子碰撞器。(BY U3D聖典的翻譯)
 
6.
AddTorque()
添加一個讓物體旋轉的力——力矩。
參照百度百科:http://baike.baidu.com/view/36869.htm
 
 
7.
關於爆炸和聚攏。
AddForceAtPosition()提供一個聚攏的力
AddExplosionForce()可用於炸彈爆炸的效果
ClosestPointOnBounds()能夠計算範圍內從內到外的傷害,能夠計算爆炸範圍內不一樣地點受到的傷害。好東西。
 
8.
與collider相應的時間觸發
OnCollisionEnter/OnCollisionExit/OnCollisionStay
 
9.
當collider的isTrigger屬性爲true的時候,其碰撞事件將轉移到自定義腳本那。若想兩方同時觸發,再加個碰撞體來檢測。或者直接觸發完後將isTrigger設爲false,則會再觸發rigidbody的碰撞。
 
 
Collider部分:
Collider倒沒啥好講的,主要就是一個isTrigger屬性。還有選用怎麼樣的Collider,選用的話看狀況而定了。
其中物理材質在下面提一下,這個對於物理效果來講仍是挺重要的。
 
兩Collider相碰,至少要有一個物體具備Rigibody剛體纔會觸發Trigger函數。
 
當物體進來,OnTriggerEnter固然會觸發。出去時,OnTriggerExit也固然觸發。那麼物體在進來後Destory後會如何?通過測試是:不會調用OnTriggerExit。
 
不只是OnTriggerEnter,OnCollisionEnter這個由碰撞引發的函數也頗有用,具體以項目所用爲標準把,多查查函數手冊。
 
PhysicMaterial部分:
 
PhysicMaterial的各屬性手冊:http://game.ceeger.com/Script/PhysicMaterial/PhysicMaterial.html
 
通常來講只用前三個吧。
1.dynamicFriction
移動時候使用的摩擦力。這個值在0到1之間。
2.staticFriction
當物體在表面靜止時使用的摩擦力。一般在0到1之間。
3.bounciness
表面的彈力怎樣?0值沒有彈力。1值沒有能量損失的反彈。
 
設置好材質直接用就能夠了,拖到collider裏面。
相關文章
相關標籤/搜索