Unity3D RagDoll(布娃娃系统)详解

unity版本:2019.2.1

一些游戏中的角色死亡时,死亡的肢体动作十分逼真,例如人类一败涂地,Unity3D物理引擎中的Ragdoll系统,可以用来创建这种效果。在这里插入图片描述

添加Ragdoll系统后的效果

技术先不说,先上视屏让大家看看加了RagDoll系统的人物模型效果:

Unity Ragdoll布娃娃系统

如何给模型添加布娃娃系统

官方文档:https://docs.unity3d.com/Manual/wizard-RagdollWizard.html
布娃娃系统只能用在具有Rigging(骨骼)的模型上,添加方法是:GameObject—>3D Object—>Ragdoll
在这里插入图片描述
在这里插入图片描述
把需要附加Ragdoll的模型拖到Hierarchy视图中,接下来就很简单也很麻烦了,需要把模型骨骼对应的游戏体拖到Ragdoll面板一一对应,建立好引用,一个都不要错,会导致刚体和碰撞体附加到错误的游戏体上。感觉不准切可以提前看下骨骼界面:在这里插入图片描述
全部拖好以后,根据需求修改一下质量(TotalMass)和力(Strength),点击create就OK了,可以看到模型中拖到Ragdoll面板的游戏体添加了如图下组件。布娃娃系统是以Create Ragdoll窗口中的骨骼映射信息为基础,以各关节为单位,添加Capsule Collider和Rigidbody组件,关节与关节之间以Character Joint组件连接。若产生的Collider不符合要求,可在骨骼结构中调整radius的大小。至此,给模型天添加布娃娃系统的部分就成功了。

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

怎样控制布娃娃系统

布娃娃系统的核心是由物理引擎实现的,所以在角色死亡或需要时,通过勾选和取消关节添加的Rigidbody组件的Is Kinematic选项来激活和关闭布娃娃系统。 由于由此开发者可以通过获取模型的某个节点的Rigidbody组件来控制特定的运动。要注意的是在打开布娃娃系统时,模型最好不要播放动画。同时,不要在场景中大量使用布娃娃系统,毕竟是用物理引擎实现的比较耗性能。

        foreach (var temp in this.transform.GetComponentsInChildren<Rigidbody>()) {
            //关闭头关节
            if (temp.name == "head")
                temp.isKinematic = false;
            //激活其他关节
            else
                temp.isKinematic = true;
        }

深入应用

1、Rogdoll纯物理控制

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

2、使用布娃娃系统需要注意的坑:

1.布娃娃系统需要用物理力来控制,不能在使用布娃娃系统的时候同时使用骨骼动画。

2.部位穿插拉伸,要把部位Character Joint组件上面的Enable Projection勾上

3.激活布娃娃弹得很高,就是刚体的速度,把rigidbody的速度置为0

4.如果布娃娃动作僵硬,肯定用错骨骼来绑定布娃娃导致的

5.布娃娃穿透场景碰撞的问题,其实这个由于速度太快引起的,可以设置rigidbody的碰撞检测模式collisionDetectionMode

6.受力不要全部部位都给力,一般都是给一个部位就够了,不然各种力作用引起怪异表现

7.关于倒地之后抖动问题,这个只能加个检测,如果所有刚体速度小于某个数则关闭刚体功能

评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小程小程,永不消沉

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

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

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

打赏作者

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

抵扣说明:

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

余额充值