123 第1页 | 共3 页下一页
返回列表 发新帖
查看: 13575|回复: 23
打印 上一主题 下一主题

[教程] Ragdoll 的设置与用法

[复制链接]

955

主题

164

听众

7万

积分

版主

Rank: 7Rank: 7Rank: 7

纳金币
59338
精华
28

活跃会员 荣誉管理 突出贡献 优秀版主 论坛元老

跳转到指定楼层
楼主
发表于 2013-5-17 16:35:41 |只看该作者 |倒序浏览
pstatus"> 本帖最后由 艾西格亚 于 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的开发行列!



分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

ku 智囊团   

89

主题

2

听众

5万

积分

首席设计师

Rank: 8Rank: 8

纳金币
25
精华
1

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2013-5-17 17:37:32 |只看该作者
请问楼主,这样将敌人换成ragdoll模式,当敌人替换完成后,敌人的手,腿等位置并不起替换前一致?可以解决吗?
回复

使用道具 举报

955

主题

164

听众

7万

积分

版主

Rank: 7Rank: 7Rank: 7

纳金币
59338
精华
28

活跃会员 荣誉管理 突出贡献 优秀版主 论坛元老

板凳
发表于 2013-5-17 17:41:40 |只看该作者
当敌人替换完成后,敌人的手,腿等位置并不起替换前一致?

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

使用道具 举报

ku 智囊团   

89

主题

2

听众

5万

积分

首席设计师

Rank: 8Rank: 8

纳金币
25
精华
1

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

地板
发表于 2013-5-17 20:13:09 |只看该作者
艾西格亚 发表于 2013-5-17 17:41
当敌人替换完成后,敌人的手,腿等位置并不起替换前一致?

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

比如当你用木仓射死一个敌人时,而这个敌人正是向你跑来的动作(比如是跑步的姿势),但如果你用换成ragdoll模型的办法,你会发现,敌人姿势变成ragdoll模型的原始姿态(有可能是站姿或是别的,但不可能是与当时的敌人的跑步姿态一样),而不是敌人从跑步资源到摔倒姿态
回复

使用道具 举报

955

主题

164

听众

7万

积分

版主

Rank: 7Rank: 7Rank: 7

纳金币
59338
精华
28

活跃会员 荣誉管理 突出贡献 优秀版主 论坛元老

5#
发表于 2013-5-17 20:36:18 |只看该作者
ku 发表于 2013-5-17 20:13
比如当你用木仓射死一个敌人时,而这个敌人正是向你跑来的动作(比如是跑步的姿势),但如果你用换成ragd ...

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

使用道具 举报

2722

主题

42

听众

3万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
38268
精华
111

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

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

原来这个插件是用在这个地方的啊
回复

使用道具 举报

2

主题

1

听众

65

积分

设计初学者

Rank: 1

纳金币
59
精华
0

活跃会员 灌水之王

7#
发表于 2013-5-18 07:11:25 |只看该作者
谢谢楼主分享,下来瞧一下
回复

使用道具 举报

ku 智囊团   

89

主题

2

听众

5万

积分

首席设计师

Rank: 8Rank: 8

纳金币
25
精华
1

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

8#
发表于 2013-5-18 08:56:16 |只看该作者
艾西格亚 发表于 2013-5-17 20:36
这个问题很好,由于正常动作与ragdoll的几乎是感觉不出来,不过有一个插件估计就是用来修正这个问题的:
...

版主,人物动作与 Ragdoll 调整器 - Biped Editor不是在unity3d中设置动作的吗?这与把ragdoll匹配到敌人的最后姿态有什么关系呢?请明示哦,这个问题真是不明白哦
回复

使用道具 举报

0

主题

2

听众

6150

积分

高级设计师

Rank: 6Rank: 6

纳金币
62
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

9#
发表于 2013-5-18 09:24:08 |只看该作者
谢谢楼主啊,真给力
回复

使用道具 举报

955

主题

164

听众

7万

积分

版主

Rank: 7Rank: 7Rank: 7

纳金币
59338
精华
28

活跃会员 荣誉管理 突出贡献 优秀版主 论坛元老

10#
发表于 2013-5-18 12:56:02 |只看该作者
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时的动作,这个插件的版本查看看是否有更新的版本
回复

使用道具 举报

123 第1页 | 共3 页下一页
返回列表 发新帖
您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-17 20:24 , Processed in 0.102386 second(s), 35 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部