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,保证地面不会受碰撞移动。

相关文章
相关标签/搜索