Unity3d中多足怪的物理RagDoll實現

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

1.在3DsMax中建立怪物模型及骨骼;測試

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

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

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

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

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

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

 

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

      Unity  x  ==>  Max  -xjoin

      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,保證地面不會受碰撞移動。

相關文章
相關標籤/搜索