茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1704350 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
PIMG_00134.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

Game Play Maker : [轉貼] Unity 剛體

發表者 討論內容
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[轉貼] Unity Rigidbody Class

unity——Rigidbody類

遊戲對像添加Rigidbody組件後即具備物理屬性,當其受力和扭矩影響時可產生更加真實的行為。當操作剛體參數的時候,你應該在FixedUpdate函數中使用它,物理模擬以離散的時間步執行。FixedUpdate函數在每一步之前被立即調用。使用剛體時應注意,父物體和子物體不應同時具有剛體,也不應該縮放剛體的父級。

 

變量:

var velocity : Vector3                            剛體的速度向量

var angularVelocity : Vector3               剛體的角速度向量。

var drag : float                                      物體的阻力


var angularDrag : float                         物體的角阻力

var mass : float                                      剛體的質量

var useGravity : bool                             是否受重力影響

var isKinematic : bool                           


       是否是運動學剛體。運動學剛體不受力、碰撞或關節控制,完全由動畫或代碼(Transform)驅動,但運動學剛體可以通過碰撞或關節影響其他剛體的運動。非運動學剛體則受力、碰撞或關節控制。

var freezeRotation : bool                      凍結旋轉,使物理因素不能改變物體的旋轉

var collisionDetectionMode :CollisionDetectionMode

       剛體的碰撞檢測模式。為了獲得最佳效果,對於快速移動的物體,應設置動態連續碰撞檢測模式(ContinuousDynamic),以防止物體還沒檢測到碰撞就穿越了被碰撞物體;對於被碰撞物體,應設置連續碰撞檢測模式(Continuous,連續碰撞檢測是基於網格幾何體的靜態碰撞)。由於碰撞檢測模式的選擇對物理性能有很大的影響,默認情況下,應採用非連續碰撞檢測模式(Discrete)。

var centerOfMass : Vector3                     

       重心。如果你不在腳本中設置重心,它將從所有附加到剛體上的碰撞器自動計算。重心的設置關係到物理運動的真實性。


var worldCenterOfMass : Vector3         在世界坐標中剛體的重心。(只讀)

var detectCollisions : bool                     碰撞檢測是否啟用(默認總是啟用的)。

var position : Vector3                             

       剛體的位置,只在物理步結束才應用到變換,不能用於連續移動。

var rotation : Quaternion                       剛體的旋轉,只在物理步結束才應用到變換,不能用於連續旋轉。

var interpolation : RigidbodyInterpolation

剛體插值,用以平滑物理運動的顯示效果,默認是關閉的(None)。物理運動以離散的時間步運行,而顯卡以可變的幀率渲染,這可能導致物體抖動。對於主角或相機跟隨的物體,建議使用插值。

 

函數:

 


移動

function AddForce (force : Vector3, mode :ForceMode = ForceMode.Force) : void

       添加一個力到剛體。作為結果剛體將開始移動。

       枚舉類型ForceMode

       值:       Force                      添加一個可持續力到剛體,使用它的質量。

                     Acceleration          添加一個可持續加速度到剛體,忽略它的質量。

                     Impulse                  添加一個瞬間衝擊力到剛體,使用它的質量。


                     VelocityChange     添加一個瞬間速度變化給剛體,忽略它的質量。

function AddForce (x : float, y : float, z: float, mode : ForceMode = ForceMode.Force) : void

       添加一個力到剛體。作為結果剛體將開始移動。

function AddRelativeForce (force : Vector3,mode : ForceMode = ForceMode.Force) : void

       添加一個力到剛體。相對於本地坐標。

function AddRelativeForce (x : float, y :float, z : float, mode : ForceMode = ForceMode.Force) : void

       添加一個力到剛體。相對於本地坐標。

function MovePosition (position : Vector3): void 


       移動剛體到position。

 

旋轉

function AddTorque (torque : Vector3, mode: ForceMode = ForceMode.Force) : void

       添加一個轉矩到剛體。作為結果剛體將繞著torque軸旋轉,torque的長度決定轉速。

function AddTorque (x : float, y : float, z: float, mode : ForceMode = ForceMode.Force) : void

       添加一個轉矩到剛體。作為結果剛體將繞著torque軸旋轉,torque的長度決定轉速。

function AddRelativeTorque (torque :Vector3, mode : ForceMode = ForceMode.Force) : void 

       添加一個轉矩到剛體,相對於本地坐標。

function AddRelativeTorque (x : float, y :float, z : float, mode : ForceMode = ForceMode.Force) : void


       添加一個轉矩到剛體,相對於本地坐標。

function MoveRotation (rot : Quaternion) :void 

       旋轉剛體到rot。

 

向物體表面施加力

function AddForceAtPosition (force :Vector3, position : Vector3, mode : ForceMode = ForceMode.Force) : void 

       在position位置應用force力。作為結果這個將在這個物體上應用一個力矩和力。為了效果的真實性,position的位置應在剛體的表面。

 

爆炸

function AddExplosionForce (explosionForce: float, explosionPosition : Vector3, explosionRadius : float, upwardsModifier: float = 0.0F, mode :ForceMode = ForceMode.Force) : void 

       應用一個力到剛體來模擬爆炸效果。爆炸力將隨著到剛體的距離線形衰減。


       explosionForce                             爆破力

       explosionPosition                        爆炸位置

       explosionRadius                           爆破半徑,為0時表示無窮大

       upwardsModifier                         可以理解為爆炸產生的向上衝擊波的衰減值。值越大,威力越小。

function ClosestPointOnBounds (position :Vector3) : Vector3

       計算剛體表面離position最近的點。可用於計算作用到剛體表面上一個點的爆炸力。

 

獲取速度

function GetRelativePointVelocity(relativePoint : Vector3) : Vector3

       獲取剛體上的點相對本地坐標系的速度。獲取的速度有考慮剛體的角速度。

function GetPointVelocity (worldPoint :Vector3) : Vector3

       獲取剛體上的點相對世界坐標系的速度。獲取的速度有考慮剛體的角速度。

 

休眠

function Sleep () : void 

       強制一個剛體休眠至少一幀。剛體休眠有利於性能優化

function IsSleeping () : bool 

       判斷剛體是否在休眠

function WakeUp () : void

       強制喚醒一個剛體

 

碰撞掃瞄


function SweepTest (direction : Vector3,out hitInfo : RaycastHit, distance : float = Mathf.Infinity) : bool 

       碰撞掃瞄,返回是否將要發生碰撞。

       direction                       掃瞄方向

       hitInfo                           如果將要發生碰撞(即返回true),hitInfo將包含更多碰撞信息

       distance                        掃瞄長度


function SweepTestAll (direction : Vector3,distance : float = Mathf.Infinity) : RaycastHit[] 

       碰撞掃瞄,返回所有碰撞點。



原文出處: unity——Rigidbody类_Quibos_百度空间
前一個主題 | 下一個主題 | | | |

討論串




Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|