Unity3d中多足怪的物理RagDoll實現


Unity3D 4.5中的物理只支持雙足人形的RagDoll,對於非雙足人形的怪物,需要自己動手在每根骨骼上添加物理關節(joint)。具體做法是:

1.在3DsMax中創建怪物模型及骨骼;

2.使用NVIDIA_PhysX_For_Autodesk_3ds_Max插件生成怪物模型的RagDoll,設置骨骼碰撞體參數及關節約束(Joint Constraint)參數;

3.將生成的RagDoll導出生成.FBX和.xml文件,導出的路徑名不能包含中文,否則導出.xml文件失敗,xml是用來描述生成的物理信息,記錄物理材質,碰撞體及約束參數;

4.將.FBX和.xml文件導入到Unity3D場景中,可看到怪物模型的骨架信息;

5.對怪物模型的每根骨骼添加Configurable Joint或Character Joint組件和RigidBody組件(加載joint時自動加入),以及Collider組件;

6.解析xml文件,將碰撞體和關鍵約束的參數設置到對應的骨骼中。

這樣Unity3D中多足怪的物理便設置好了。

 

下面說一下設置參數時需要注意的一些問題。首先,Max的坐標系和Unity中的坐標系不同,在導入模型后發現兩個坐標系間的對應關系是:

      Unity  x  ==>  Max  -x

      Unity  y  ==>  Max   z

      Unity  z  ==>  Max  -y

設置時需要注意變換。其次,在設置Collider參數時需要注意Max中是以cm為單位,而Unity中是以m為單位,因此xml中Collider的參數需要在Unity中乘以0.01。另外,一定需要注意的是如果需要該Collider生效,一定要把Collider中的IsTrigger屬性選為false,否則Collider不會生效,碰撞時會穿過去。

最后需要測試一下添加RagDoll后的效果,創建一個空場景,在場景中添加一個Cube作為地面,為Cube添加RigidBody組件,將做好的帶物理的多足怪模型放置在地面上方,勾選每根骨骼RigidBody的UseGravity參數,使重力影響生效。將地面RigidBody組件的UseGravity參數選為false,將IsKinematic設為true,保證地面不會受碰撞移動。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM