Unity Ragdoll 实现死亡效果 心得+坑点总结

本文介绍了如何使用Unity的Ragdoll系统创建逼真的死亡效果,包括蒙皮拉伸、关节撕裂等问题的解决方案。关键步骤包括正确绑定关节、调整Collider和Rigidbody设置。在角色死亡时,需要动态改变刚体和触发器的属性,并关闭Animation组件。遇到的问题如第一帧蒙皮拉伸、死亡后布娃娃不生效和Ragdoll动画角度不正确,可以通过检查和调整Character Joint参数、防止Collider重叠和设置关节转动限制来解决。
摘要由CSDN通过智能技术生成

在一些游戏中当NPC或玩家死亡的时候,死亡的肢体动作十分逼真,这一物理现象如何用Unity来实现呢?Unity物理引擎中的Ragdoll系统,可以用来创建这种效果,具体请参阅Ragdoll Wizard

在场景中新建 3D Object → Ragdoll…

在这里插入图片描述

接下来是一个初见复杂的绑定界面

在这里插入图片描述在这里插入图片描述

我们需要将模型对应的关节部位一一拉进这个表

创建完成后,可以发现模型中的每个所选部位中多了一个Rigibody,一个Collider和一个Character Joint组件,在Joint面板里可以调节转动限制等

在这里插入图片描述

在这里插入图片描述
这里要注意的一个坑点是,root节点是没有Character Joint的,当你找不到root节点时,没有Character Joint但是添加了Box Collider和Rigibody的是root节点,是上图中的Pelvis节点。

root节点应在这个位置,不熟悉朋友有可能将盆骨附近Pelvis 与 胸部附近Middle Spine的两个Collider互换位置,或者重叠,这将导致整个人物的抽搐,蒙皮拉伸

在这里插入图片描述

调整四肢Collider大小位置,如下:

在这里插入图片描述

如果我需要的效果是:

  • 让角色存活(isDead =
    false)时:每个部位的Rigibody的isKinematic一直为true,每个部位的Collider的isTrigger也为true
  • 角色死亡(isDead =
    true)时:每个部位的Rigibody的isKinematic变为false,每个部位的Collider的isTrigger也变为false,同时,必须将角色的Animation组件去除

使用GetComponentsInChildren函数获得所有刚体,再通过每个刚体获取这个部位上的Collider,用两个List将他们存储起来。就可以方便的设置isKinematic和isTrigger

同时在死亡的下一帧用协程关闭动画组件,(如果想让角色复活,Anmiaton组件的enable属性设置为true即可)

	public List<Rigidbody> ragdollRigidbodys 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

染指流年丨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值