[实例教程] unity3d教程 Ragdoll 的设置用法将角色击倒在地

关于Ragdoll的制作方式FPS游戏中的敌人受到攻击后阵亡后,通常有两种动作,一种是设置敌人的Death动画进行播放,另一种则是将敌人换成ragdoll模式。以效果来看,ragdoll会得到比较真实的反馈现象,在敌人倒地后,玩家仍可以继续攻击来发泄一下情绪,所以这种方式也普遍的运用在众多的FPS游戏里面。

现在,我们就来看看如何在场景中设置敌人的ragdoll,如图,在场景里面设置了一个攻击用的机器士兵,士兵已经具备了攻击与待命的一些动作,同时也写入了AI进行搜索玩家的功能。

 

首先将机器士兵做出一个Prefab,然后打开一个新的场景,使用Plane创建一个地板,这个地板的用途主要是测试士兵与地面的碰撞效果。

 

将制作好的士兵Prefab拖曳到地板上,注意士兵的底部与地板要保持一定的距离,这样在测试ragdoll与地板的碰撞时才不会发生无法预期的错误。

 

由于士兵后面的动作全部交由ragdoll来控制,所以必须将原来的动画设置取消,直接使用Remove Component将士兵上面的Animation组件移除。

 

选择Game Object > Create Other > Ragdoll, 这个名称就是我们常听到的布偶娃娃功能,顾名思义就像是角色身上捆绑了控制线,然后可任人摆布一样。

 

在Create Ragdoll的面板的左边面显示出骨架的名称,右边则是士兵模型需要对应的Game Object, 这表示我们必须使用手动的方式进行每一个骨架的指定,有一点需特别注意,模型必须以T字姿态站立,才能确保ragdoll的动作不会出现任何的错误。

 

在Hierarchy面板里面将士兵模型的中心点 roothandle拖曳到Root的栏位,指定完成后,面板下方会提示未完成的骨架部分。

 

接着进行左脚的三个结构指定,分别将模型的upleg L,lowLeg L,heel L指定到对应的栏位,以此类推,依序将右脚的三个物拖曳到Right Hips,Right Knee,Right Foot的栏位。

 

如图所示,通过六个骨架的拖曳,我们就完成了士兵腿部的指定工作,从名称上不难理解ragdoll是依序从腿部到手部架构,再往上指定左右手臂与头部。

 

指定完成所有的骨架后,将Total Mass设定到一个比较低的数值,这样可以让ragdoll在作用时的反应更为明显些。

 

完成后按下Create,士兵模型上面就会出现ragdoll的控制器,这些控制器的功能与Mesh Collider的作用是相同的,按下Play进行测试,士兵会从原本的站立状态直接倒地,就像是受到攻击后所呈现出来的效果。

 

 

现在有一个问题是,士兵动作已经ok,但是上的武器并没有掉落,原因是武器没有受到rigid body的作用,所以变成停留在空中的一个现象。

选择武器模型,在上面增加 Rigidbody与Box Collider,然后将Box Collider的绿色框调整到与武器的大小一致或是略微大些即可,再进行Play测试,武器就会跟着士兵一起向下掉落。

 

将设置好的ragdoll士兵做成一个Prefab,如图,Robot是攻击用的士兵,Robot-Ragdoll则是被攻击后倒地的士兵,我们用了两个不同的名称来区分模型的设置状态。

 

现在我们来看看ragdoll在脚本内的设置情况:

function Detonate () {
    // 摧毁原来的物体
    Destroy(gameObject);
    
    //  播放士兵阵亡的音效
    if (dieSound)
        AudioSource.PlayClipAtPoint(dieSound, transform.position);

    // 替换士兵阵亡的模型 
    if (deadReplacement) {
        var dead : Transform = Instantiate(deadReplacement, transform.position, transform.rotation);
        
        //  在士兵原来的位置进行复制
        CopyTransformsRecurse(transform, dead);
    }
}

将Robot-Ragdoll拖曳到脚本里面的Dead Replacement后,就完成了士兵整体的动作设定,接下来进行测试,看看士兵是否会根据我们的设置产生ragdoll的作用。

 

按下Play,现在我们开始攻击士兵。

 

 

在我方强大的火力下,士兵受到一定的伤害后被击倒在地。

 





从这个案例的操作,我们知道如何设置Ragdoll的绑定,并且了解在一下里面的实际用途,在后面的教程中,我们将会推出更多关于FPS游戏的相关设置内容,也希望更多的朋友能进入FPS的开发行列!

转载自:http://www.unitymanual.com/thread-4524-1-1.html

你可能感兴趣的:(游戏编程)