前言
之前研究一AdvancedLocomotionV4的8方向运动,就是旋转模式中的LookingDirection与Aiming方式。AdvancedLocomotionV4没有直接使用BlendSpace对8方向动作进行融合,而是手动构建了自定义的融合方式,本质上是将一个4方向运动动画融合成8方向。
PS4 的血源诅咒在8方向运动上做的不是很好,如果尝试做出360度锁定运动就会硌脚的现象。其原因是没有前后运动切换过度动画。这里我们看一下AdvancedLocomotionV4的实现方式
之前研究一AdvancedLocomotionV4的8方向运动,就是旋转模式中的LookingDirection与Aiming方式。AdvancedLocomotionV4没有直接使用BlendSpace对8方向动作进行融合,而是手动构建了自定义的融合方式,本质上是将一个4方向运动动画融合成8方向。
PS4 的血源诅咒在8方向运动上做的不是很好,如果尝试做出360度锁定运动就会硌脚的现象。其原因是没有前后运动切换过度动画。这里我们看一下AdvancedLocomotionV4的实现方式
之前一直都没有研究过GAS如何debug,所以大致翻译了相关内容
最近群里大佬发现一个VScode Ue4 辅助编码插件:Sleeping Forest
文档网址:
https://suvam0451.netlify.app/docs/sleeping-forest/getting-started/
AdvancedLocomotionV4是一个不错的Ue4动画项目,它的动画蓝图的层级结构与数据处理结构可以说是教科书级别,不管是拿来学习,还是直接拿来做项目都是不错的选择。本人通过将这个项目手动移植到自己的Demo中进行学习,现写此文作为学习笔记并分享给打算学习该项目者。在大致了解这个项目的思路以后不但可以少走一些弯路,提升学习速度,而且可以将这个设计思想用在公司的其他项目中。
在AdvancedLocomotionV4中大量使用同步组、AnimNotify、AnimationCurve。但那么多动画Asset都要手动添加,我肯定是拒绝的。
幸亏Ue4在4.16推出了AnimModifier功能以进行自动化操作。
文档地址:
https://docs.unrealengine.com/en-US/Engine/Animation/AnimModifiers/index.html
本人有幸找到了一篇相关Blog:
http://www.aclockworkberry.com/automated-foot-sync-markers-using-animation-modifiers-unreal-engine/
并以此为基础编写了生成LocoMotion相关同步组、AnimNotify、AnimationCurve的AnimModifier(主要还是因为作者写的东西不太行),并且已经将其放入之前写的插件中,如觉得好用请给我点赞
本人最近在学习AdvancedLocomotionV4,并尝试将其中可用部分移植到自己的项目上。在此分享一些自己的心得。
前段时间研究使用Maya重定向动画,但一个一个手动操作还是有点心烦,所以我花了2天时间学习了Pyhton并写了这个插件(本人有c++、qt、JavaScript经验所以学的快),在这个过程也积累了一些心得在此分享给大家。另外祝大家劳动节快乐。
以下是我写的插件,一个通过HumanIK批量重定向动画的工具:
https://github.com/blueroseslol/DccTool
可以帮助动画公司将biped骨骼动画批量重定向到Ue4或者其他骨骼上。里面有很多HumanIK控制代码以及文件导入与导出代码可以参考。如果有什么问题欢迎交流。
本人最近给自己的Demo外包了若干角色动画,也遇到了一些坑。所以这里给大家分享一下相关经验,避免大家再次采坑,尤其是那些缺乏经验、精力的独立游戏制作者。当然本人对3DMax完全不熟悉,大部分信息都是本人与外包大哥沟通过程中产生的个人认知,如有错误还请指正,谢谢。
PS.本人因为布料碰撞问题导致重新导入6次角色,包括绘制布料、设置碰撞与编写动画蓝图。真是太痛苦了!
逻辑位于BP_PlayerCharacter中,通过按键事件执行ActivateAbilitiesWithTags(定义于ARPGCharacterBase,本质上是执行AbilitySystemComponent的TryActivateAbilitiesByTag函数)、ActivateAbilitiesWithItemSlot(定义于ARPGCharacterBase,本质上通过查询ItemSlot来激活对应的Ability,使用了AbilitySystemComponent的TryActivateAbility函数)来施放“Ability”。