您好,登錄后才能下訂單哦!
Unity3D使用的是Physx物理引擎,但這里的用法跟純粹的Physx不一樣,這里是由剛體和碰撞體兩種組件組成的物理對象。
【剛體】
RigidBody 用于物理模擬,有質量,受重力影響,可以和其他可碰撞對象在碰撞的過程中發生相互作用的力,不要在運動中直接操作它們的位置(你要知道這不合物理),要通過施加力的方式來操作它,或者使用Joint
剛體的腳本API:http://game.ceeger.com/Script/Rigidbody/Rigidbody.html
Tips:
兩個剛體的相對質量Mass決定它們之間碰撞之后的表現
阻力Drag越大,物體看起來越輕
【碰撞器】
Collider 用于碰撞檢測,包含物理材質,剛體的碰撞檢測是基于碰撞器的,一個對象必須有碰撞器,它的剛體才有效果,而一個沒有剛體的碰撞器,就是物理世界中的一個靜態對象,例如地板和樓房這些不會運動的物體,但能作用于其他剛體,逐幀移動一個靜態碰撞器將重置Physt引擎,極耗資源
碰撞器的腳本API:http://game.ceeger.com/Script/Collider/Collider.html
【運動學剛體】
Kinematic Rigidbodies isKinematic屬性為true的物體,不受力,重力,扭力的影響,但可以影響其他非運動學剛體,也可以直接設置它的位置,無敵模式,只有我可以打別人,別人不可以打我
【角色控制器】
Character Controllers 一個垂直膠囊形狀的碰撞體,用于模擬類似人的控制器,它不受力的影響,但可以被代碼施加的力推動,通常,所有類似人的角色都用角色控制器來執行,角色控制器本身不具備物理特性,如果要應用真正的物理特性,必須使用剛體。
角色控制器API: http://game.ceeger.com/Script/CharacterController/CharacterController.html
【關于碰撞和觸發的回調函數】
OnTriggerXXX和OnCollisionXXX回調,這系列的回調函數都是在發生碰撞的時候回調的,都包含了Enter,Exit和Stay三種狀態,但觸發的規則以及傳入的參數不一樣
OnTrigger系列是當碰撞體Collider和Trigger(自身的碰撞體)發生作用時調用的,當碰撞體的isTrigger屬性為true時才會發送,但當它為true時,原先的碰撞屬性消失。這系列回調是由Collider發出的,碰撞對象將作為Collider被傳入(可以通過collider.gameObject來操作這個gameObject,它繼承于Component,Component包含了非常多的組件對象)
OnCollision系列是當剛體直接發生碰撞的時候回調的,是由剛體發出的,它傳入的對象是Collision,它包含更加詳細的信息,接觸點,碰撞速度等等,OnCollision要求兩個對象都是剛體+碰撞體,傳入參數是可選的,非動力學剛體發生的碰撞僅發送碰撞事件,而不發送Collision
【菜鳥使用物理引擎】
1.創建一個游戲對象
2.添加剛體
3.添加物理材質(需導入Asset,導入方法如下所示)
腳本調用物理引擎
要使對象受物理引擎控制,簡單的辦法就是給它加個 Rigidbody 。當你這么干了,對象就會受到重力影響,而且會和世界中的其他對象碰撞
剛體是模擬物理效果的對象。剛體用在玩家可以四處推動的東西,比如箱子或者沒有固定的對象,或者,你可以直接用腳本添加力給對象來讓他四處移動。
如果你直接移動一個非運動學剛體的Transform,它和其他對象的碰撞可能出問題。正確地方法應該是通過施加力或者扭矩來移動剛體。也可以添加Joints 來讓剛體的行為更加復雜。比如,你可以制作一扇逼真的門或者是一臺有擺動鏈條的吊機。
剛體通常和原型碰撞器配合使用。
Tips: 提示
You should never have a parent and child rigidbody together
絕不要把父子剛體放在一起。(無法單獨控制)
You should never scale the parent of a rigidbody
絕不要縮放剛體的父對象。
運動學剛體指的是激活了isKinematic屬性的剛體。運動學剛體不受力、重力或扭矩的影響。可以通過設置Transform 的position和rotation來準確的操作它們或者讓它們動起來,但是,它們可以和其他的非運動學剛體互相作用。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。