本教程采用图文教程+视频教程的多元化形式,我会为不同的知识点选择适当的表达方式。
教程内容将同步免费发布于 开发游戏的老王(知乎|CSDN)的专栏《玩转UE4/UE5动画系统》。
教程中使用的资源及工程将以开源项目的形式更新到GitHub:玩转UE4上。


工程文件: 玩转UE4(GitHub)

0. 效果演示

[玩转UE4/UE5动画系统>应用篇>功能模块] 之 布娃娃系统(ALS V4实现方案详解)

文章目录

  • 0. 效果演示
  • 1. 概述
  • 2. 核心函数
    • 2.1 RagdollStart
    • 2.2 RagdollUpdate
    • 2.3 RagdollEnd
    • 2.4 GetGetUpAnimation
    • 2.5 SetActorLocationDuringRagdoll
  • 3. 动画蓝图
    • 3.1 动画状态机
    • 3.2 动画事件图
  • 4. 状态控制
    • 4.1 Movement Mode
    • 4.2 Movement State
    • 4.3 Movement Action
  • 5. 小结

1. 概述

ALS V4的布娃娃系统(Ragdoll System或Ragdoll系统)实现的重点和难点并不在于Ragdoll本身,而是当Ragdoll恢复到原始状态时,需要有一个合理的恢复过程,其中包括:

  • 合理的起身动画:一般来说角色落地以后会有面朝上和面朝下两种可能,对于这两种可能要采取不同的恢复动画。
  • 合理的位置:进入Ragdoll状态以后,角色模型受物理系统控制会偏离角色自身位置。因此,在Ragdoll状态时,需要不断更新角色位置,使其跟随Ragdoll。

Ragdoll系统工作流程图如下。

2. 核心函数

  • RagdollStart:负责进入布娃娃状态时的初始化设置。
  • RagdollUpdate:更新布娃娃的状态,最重要的是使角色的位置跟随布娃娃的位置。
  • RagdollEnd:退出布娃娃状态,播放角色的起身蒙太奇动画,并恢复初始设置。

2.1 RagdollStart


注释

布娃娃状态关键就是开启物理骨骼的模拟,这时需要把角色自身的物理关闭。

2.2 RagdollUpdate


注释

更新角色的位置,使其跟随Ragdoll位置。

2.3 RagdollEnd


注释

ALS V4的实现非常严谨,考虑到了,如果Ragdoll是在下落过程中恢复到非Ragdoll状态,那么落地之前应该恢复到下落状态。

到此为止,角色的骨骼动画一直由物理系统支配,但是后面播放起身动画蒙太奇的时候,需要一个合理的初始姿态,因此在这里使用了Save Snapshot节点,目的是保存一个当前角色骨骼的姿态,这个姿态会在后面蓝图中用到。

注意:如果发现角色恢复站立以后,方向是倾斜甚至是倒立的,请查看物理骨骼的设置,确保Root骨骼添加了碰撞体,并且被设置为Kinematic

2.4 GetGetUpAnimation

2.5 SetActorLocationDuringRagdoll


注释

将角色位置设置到Ragdoll位置。

各个参数的物理意义如下图(两个Offset Z的值相等)

3. 动画蓝图

3.1 动画状态机

注:动画蓝图部分,我做了简化,在保留ALS V4的Ragdoll核心逻辑的基础上,去除了无关的逻辑部分。

注意:起身动画依然是使用蒙太奇实现。

在Ragdoll状态机中,由两个状态:

  • Ragdoll Out Pose:这里就调用了刚才保存的Snapshot。
  • In Ragdoll:播放角色的下落动画,这个状态主要是装饰性的,使Ragdoll的过渡更自然。

3.2 动画事件图


动画事件图中的Update Ragdoll Values方法就是通过Ragdoll的速度,更新In Ragdoll状态中下落动画的播放速率。也属于一个装饰性的功能。

4. 状态控制

4.1 Movement Mode

CharacterMovementMovement Mode标志位的切换比较简单

  • RagdollStart中切换到None
  • RagdollEnd中切换回WalkingFalling

4.2 Movement State

  • RagdollStart中切换到Ragdoll
  • 通过Character的自身事件OnMovementModeChange切换回其它状态。

4.3 Movement Action

Movement Action的状态切换都是在NotifyState中进行的。

注:在ALS V4中 Movement Action的作用主要是标记蒙太奇动画行为,当动画未执行完毕时,阻止用户输入,从而防止角色出现滑动现象。

5. 小结

Ragdoll系统(ALS V4实现方案)就介绍完毕了,另外还有一些实现细节,由于篇幅的原因就不在本文中解释了,再次建议大家结合我提供的项目学习。如果只想在项目中实现Ragdoll系统,而不想使用ALS V4,大家可以把附带的工程直接移植到自己的项目中。

再次感谢ALS V4的作者为我们提供了优秀的ALS V4,它不仅是强大的插件工程,同时也是绝佳的学习资料!同时也感谢Epic的慷慨,让每一个虚幻开发者都能够免费享受到这样的实惠!

[玩转UE4/UE5动画系统>应用篇>功能模块] 之 布娃娃系统(ALS V4实现方案详解)相关推荐

  1. [玩转UE4/UE5动画系统>应用篇>功能模块] 之 Foot IK系统(ALS V4实现方案详解)

    本教程采用图文教程+视频教程的多元化形式,我会为不同的知识点选择适当的表达方式. 教程内容将同步免费发布于 开发游戏的老王(知乎|CSDN)的专栏<玩转UE4/UE5动画系统>. 教程中使 ...

  2. [玩转UE4/UE5动画系统>应用篇>功能模块] 之 ALS V4地面站立动作状态机详解

    本教程采用图文教程+视频教程的多元化形式,我会为不同的知识点选择适当的表达方式.教程内容将同步免费发布于 开发游戏的老王(知乎|CSDN)的专栏<玩转UE4/UE5动画系统>.教程中使用的 ...

  3. [玩转UE4/UE5动画系统>Control Rig篇] 之 Control Rig + Fullbody IK版的足部IK实现(附项目代码)

    本教程采用图文教程+视频教程的多元化形式,我会为不同的知识点选择适当的表达方式.教程内容将同步免费发布于开发游戏的老王(知乎|CSDN)的专栏<玩转UE4/UE5动画系统>.教程中使用的资 ...

  4. [玩转UE4/UE5动画系统>应用篇>功能模块] 之 ALS V4 主状态机详解

    本教程采用图文教程+视频教程的多元化形式,我会为不同的知识点选择适当的表达方式.教程内容将同步免费发布于 开发游戏的老王(知乎|CSDN)的专栏<玩转UE4/UE5动画系统>.教程中使用的 ...

  5. [玩转UE4/UE5动画系统>Control Rig篇] 之 使用Control Rig实现目标偏移(Aim Offset)(附项目代码)

    本教程采用图文教程+视频教程的多元化形式,我会为不同的知识点选择适当的表达方式.教程内容将同步免费发布于开发游戏的老王(知乎|CSDN)的专栏<玩转UE4/UE5动画系统>.教程中使用的资 ...

  6. 短信平台系统搭建 后台功能管理 web源码架构 多线路由通道详解介绍

    一:短信通道路由模块 系统根据需要开发了专业版本的功能,主要特色功能是: 1:通道路由模块 2:客户模板审核和管理模块 3:客户账号审核和管理模块 4:客户签名审核和管理哦快 二:后台账号管理 1:权 ...

  7. Windows系统下nodejs、npm、express的下载和安装教程详解

    这篇文章主要介绍了Windows系统下nodejs.npm.express的下载和安装教程详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下 1. node.js下载 首先进入http://nod ...

  8. erp系统有哪些功能模块?

    erp系统(又称:企业资源规划系统)是一套集成的业务应用程序,它可帮助企业有效管理财务.销售和运营等业务.在实际使用erp的过程中,我们可以分解为3个核心领域: 1.财务方面:erp系统包含会计功能, ...

  9. 网络考试系统主要由哪些功能模块组成

    使用网络考试系统,可以实现考试的信息化管理,企业.学校.机构,也可以通过局域网或公网进行考试,方便考试管理,而部署在公网更适合考生分布广.不易集中的远程培训考试. 网络考试系统主要由哪些功能模块组成? ...

最新文章

  1. 通用数据库连接执行类(SQL)
  2. Tensorflow_yolov3 Intel Realsense D435奇怪的现象,多摄像头连接时一旦能检测到深度马上就会卡(卡住)
  3. Spring Cloud Gateway
  4. tomcat如何增大并发_Tomcat 7最大并发连接数的正确修改方法
  5. C++未定义行为-数组越界
  6. UNIX时间戳及日期的转换与计算
  7. oracle 9 插入日期,oracle date日期类型 精析
  8. Python-运算符和其优先级
  9. NPC问题及其解决方法
  10. 安利超实用的游戏unity3d场景模型素材网站
  11. 当我在荒废时间的时候会有多少人在拼命
  12. 国外14部经典励志电影推荐
  13. Wireshark数据抓包分析之互联网协议(IP协议)
  14. VS一个解决方案中有多个项目,如何快速选择启动项
  15. 微信公众号(订阅号)文章阅读数监控V0.1
  16. unitoy机器人怎么联网_乐乐智能机器人怎么联网?
  17. 张蔷《手扶拖拉机斯基》编舞动作分解
  18. android开发 之 Canvas绘制文字,图片
  19. 关于服务器的使用——深度学习菜鸡入门(1)
  20. 【木头Cocos2d-x 004】HelloWorld倒底怎么玩?

热门文章

  1. 请你谈谈GET和POST的区别?
  2. 。颜色 网页色彩转载 白底
  3. unity 2D人物精灵动画控制
  4. 【Android】接入高德地图SDK
  5. opencv-python合成模糊图像
  6. 关于linear-gradient在不同浏览器下的兼容差异
  7. Word里面进行了替换操作文档却没有任何反应
  8. cordova+vue使用插件cordova-plugin-qrscanner自定义扫码页面
  9. 位(bit)、字节(byte)、字符之间的关系(数字占即为字节)
  10. springboot2.6版本因循环引用导致启动时报错的问题Relying upon circular references is discouraged and they are prohibite