纳金网

标题: Ragdoll 的设置与用法 [打印本页]

作者: 艾西格亚    时间: 2013-5-17 16:35
标题: Ragdoll 的设置与用法
本帖最后由 艾西格亚 于 2013-9-26 06:30 编辑

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

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

setup_1.jpg

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

1.jpg

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

2.jpg

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

3.jpg

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

4.jpg

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

5.jpg

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

6.jpg

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

7.jpg

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

8.jpg

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

9.jpg

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

10.jpg

11.jpg

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

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

12.jpg

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

13.jpg

现在我们来看看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的作用。

setup_2.jpg

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

14.jpg

15.jpg

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

16.jpg

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




作者: ku    时间: 2013-5-17 17:37
请问楼主,这样将敌人换成ragdoll模式,当敌人替换完成后,敌人的手,腿等位置并不起替换前一致?可以解决吗?
作者: 艾西格亚    时间: 2013-5-17 17:41
当敌人替换完成后,敌人的手,腿等位置并不起替换前一致?

这是何意?不太明白,麻烦多些说明

作者: ku    时间: 2013-5-17 20:13
艾西格亚 发表于 2013-5-17 17:41
当敌人替换完成后,敌人的手,腿等位置并不起替换前一致?

这是何意?不太明白,麻烦多些说明

比如当你用木仓射死一个敌人时,而这个敌人正是向你跑来的动作(比如是跑步的姿势),但如果你用换成ragdoll模型的办法,你会发现,敌人姿势变成ragdoll模型的原始姿态(有可能是站姿或是别的,但不可能是与当时的敌人的跑步姿态一样),而不是敌人从跑步资源到摔倒姿态
作者: 艾西格亚    时间: 2013-5-17 20:36
ku 发表于 2013-5-17 20:13
比如当你用木仓射死一个敌人时,而这个敌人正是向你跑来的动作(比如是跑步的姿势),但如果你用换成ragd ...

这个问题很好,由于正常动作与ragdoll的几乎是感觉不出来,不过有一个插件估计就是用来修正这个问题的:
http://www.narkii.com/club/forum ... p;highlight=ragdoll

作者: 狂风大尉    时间: 2013-5-18 01:38
艾西格亚 发表于 2013-5-17 20:36
这个问题很好,由于正常动作与ragdoll的几乎是感觉不出来,不过有一个插件估计就是用来修正这个问题的:
...

原来这个插件是用在这个地方的啊
作者: zroe2011    时间: 2013-5-18 07:11
谢谢楼主分享,下来瞧一下
作者: ku    时间: 2013-5-18 08:56
艾西格亚 发表于 2013-5-17 20:36
这个问题很好,由于正常动作与ragdoll的几乎是感觉不出来,不过有一个插件估计就是用来修正这个问题的:
...

版主,人物动作与 Ragdoll 调整器 - Biped Editor不是在unity3d中设置动作的吗?这与把ragdoll匹配到敌人的最后姿态有什么关系呢?请明示哦,这个问题真是不明白哦
作者: animan    时间: 2013-5-18 09:24
谢谢楼主啊,真给力
作者: 艾西格亚    时间: 2013-5-18 12:56
ku 发表于 2013-5-18 08:56
版主,人物动作与 Ragdoll 调整器 - Biped Editor不是在unity3d中设置动作的吗?这与把ragdoll匹配到敌人 ...

This package contains code for components and editors to instantly set up properties for biped characters to enter and exit ragdoll on the fly, and to get up off the ground.

从字面的解释来看是做你所说的这个调整功能,也就是修正角色替换到ragdoll时的动作,这个插件的版本查看看是否有更新的版本
作者: 艾西格亚    时间: 2013-5-18 14:57
https://www.assetstore.unity3d.com/#/search/AdvancedRagdoll
另外是这个资源也是在Ragdoll替换时做处理

作者: ku    时间: 2013-5-18 18:41
艾西格亚 发表于 2013-5-18 14:57
https://www.assetstore.unity3d.com/#/search/AdvancedRagdoll
另外是这个资源也是在Ragdoll替换时做处理
...

谢谢这两个软件我都没有找到适合unity 4的版本
作者: 艾西格亚    时间: 2013-5-18 18:50
ku 发表于 2013-5-18 18:41
谢谢这两个软件我都没有找到适合unity 4的版本

经过测试,将上传AdvancedRagdoll,可用在4.1.2
作者: Sora    时间: 2013-5-20 17:59
教學不錯喔~
作者: Sora    时间: 2013-5-20 17:59
教學不錯喔~
作者: 查穆1    时间: 2013-5-22 10:19
给力,学到知识了
作者: lgy218    时间: 2013-5-22 15:15
感谢分享!!!
作者: 烟雨    时间: 2013-9-20 22:56
这个教程刚好要用到,找了好久
作者: ZackD    时间: 2013-9-21 00:46
简单的说明就了解用法。。好!
作者: zoeyun520    时间: 2013-9-26 12:09
不错的教程啊,感谢分享
作者: 2002jin    时间: 2013-9-26 15:20

谢谢楼主分享,下来瞧一下
作者: 狂风大尉    时间: 2013-11-30 13:07
很不错,现在看看还是方便多了
作者: 张动画    时间: 2013-12-2 13:02
Ragdoll 的设置与用法
作者: oelongeo    时间: 2014-3-9 15:30
给力 !! 感谢楼主指导




欢迎光临 纳金网 (http://old.narkii.com/club/) Powered by Discuz! X2.5