打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Unity3D RagDoll(布娃娃系统)详解

unity版本:2019.2.1

Unity RagDoll 布娃娃系统

  • 添加Ragdoll系统后的效果

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

  • 怎样控制布娃娃系统

  • 深入应用

    • 1、Rogdoll纯物理控制

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

一些游戏中的角色死亡时,死亡的肢体动作十分逼真,例如人类一败涂地,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.关于倒地之后抖动问题,这个只能加个检测,如果所有刚体速度小于某个数则关闭刚体功能

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
[转帖]unity3D OnTriggerEnter和OnCollisionEnter的一点个人心得(主要讲区别)
Unity的一些笔试题
Unity零基础到入门 | Unity中必备组件技能学习!
Unity3d中的新版动画
基于Unity3D的起重机结构组成 与检测技术教学系统研究
Unity面试题(含答案)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服