[玩转UE4动画系统>功能模块] 之 Advanced Locomotion System V4 的工具函数及工具宏详解

[玩转UE4动画系统>功能模块] 之 Advanced Locomotion System V4 的工具函数及工具宏详解

https://zhuanlan.zhihu.com/p/372660797

[玩转UE4动画系统>功能模块] 之 Advanced Locomotion System V4 的工具函数及工具宏详解

开发游戏的老王

开发游戏的老王

开发游戏的老萌新

欢迎关注 《玩转UE4动画系统》系列教程
作者|开发游戏的老王

 

本文介绍一下Advanced Locomotion System V4 的工具函数及工具宏,一方面本部分内容是ALS V4中很多功能模块的实现基础;另一方面,我们也可以在自己的项目中复用这些工具函数和工具宏。

工具宏

下面的宏库定义在Content>AdvancedLocomotionSystemV4>Blueprints>Libraries 目录下的ALS_MacroLibrary

ML_IsDifferent(Byte)

 

[玩转UE4动画系统>功能模块] 之 Advanced Locomotion System V4 的工具函数及工具宏详解_第1张图片

在Byte层级判断A和B是否相等,Inputs中的输入端A和B都是WildCard类型

ML_MultiTraceHit

 

[玩转UE4动画系统>功能模块] 之 Advanced Locomotion System V4 的工具函数及工具宏详解_第2张图片

Inputs中的Array是一个HitResult数组,这个宏实际就是判断该数组是否为空

ML_ComponentWorldToLocal

 

[玩转UE4动画系统>功能模块] 之 Advanced Locomotion System V4 的工具函数及工具宏详解_第3张图片

将ALS_ComponentAndTransform世界坐标系中的Transform转换成局部坐标系的Transform

其中ALS_ComponentAndTransform是ALS V4中定义的一个如下所示的结构体,只有两个分量Transform和Component

[玩转UE4动画系统>功能模块] 之 Advanced Locomotion System V4 的工具函数及工具宏详解_第4张图片

 

关于向量运算请参看

开发游戏的老王:[译文]游戏中的数学:向量数学(vector math)​

zhuanlan.zhihu.com[玩转UE4动画系统>功能模块] 之 Advanced Locomotion System V4 的工具函数及工具宏详解_第5张图片

 

ML_ComponentLocalToWorld

 

[玩转UE4动画系统>功能模块] 之 Advanced Locomotion System V4 的工具函数及工具宏详解_第6张图片

将ALS_ComponentAndTransform局部坐标系中的Transform转换成世界坐标系的Transform

ML_Transform-Transform

 

[玩转UE4动画系统>功能模块] 之 Advanced Locomotion System V4 的工具函数及工具宏详解_第7张图片

Transform相减,实际上把两个Transform的上述对应分量值分别相减

ML_Transform+Transform

 

[玩转UE4动画系统>功能模块] 之 Advanced Locomotion System V4 的工具函数及工具宏详解_第8张图片

Transform相加,实际上把两个Transform的上述对应分量值分别相加

ML_DoWhile(TrueFalse)

 

[玩转UE4动画系统>功能模块] 之 Advanced Locomotion System V4 的工具函数及工具宏详解_第9张图片

 

本宏节点在老王的博文

开发游戏的老王:虚幻引擎图文笔记:从ALS中淘宝 之 ML_DoWhile(TrueFalse)宏节点​

zhuanlan.zhihu.com[玩转UE4动画系统>功能模块] 之 Advanced Locomotion System V4 的工具函数及工具宏详解_第10张图片

中介绍过,本文就不再重复了

ML_SetPreviousAndNewValue

 

[玩转UE4动画系统>功能模块] 之 Advanced Locomotion System V4 的工具函数及工具宏详解_第11张图片

将New Value的值赋给New Target,并且使用Previous Target寄存New Target之旧的值,下面是该宏节点使用的例子。

 

[玩转UE4动画系统>功能模块] 之 Advanced Locomotion System V4 的工具函数及工具宏详解_第12张图片

 

ML_GetNextArrayItem

 

[玩转UE4动画系统>功能模块] 之 Advanced Locomotion System V4 的工具函数及工具宏详解_第13张图片

获取下一个数组元素。如果当前元素是最后一个元素,则返回第一个元素

ML_GetPreviousArrayItem

 

[玩转UE4动画系统>功能模块] 之 Advanced Locomotion System V4 的工具函数及工具宏详解_第14张图片

获取上一个数组元素。如果当前元素是第一个元素,则返回最后一个元素

工具函数

下面的函数定义在Content>AdvancedLocomotionSystemV4>Blueprints>CharacterLogic 目录下的ALS_Base_CharacterBP

GetControlForward/RightVector

 

[玩转UE4动画系统>功能模块] 之 Advanced Locomotion System V4 的工具函数及工具宏详解_第15张图片

获取控制器的前向和右向分量。

GetCalpsuleBaseLocation

 

[玩转UE4动画系统>功能模块] 之 Advanced Locomotion System V4 的工具函数及工具宏详解_第16张图片

计算角色脚底的位置即胶囊体底部的位置。注:1.使用GetWorldLocation获取到的是胶囊体中心的位置;2. ZOffset适用于微调的偏移量。

 

[玩转UE4动画系统>功能模块] 之 Advanced Locomotion System V4 的工具函数及工具宏详解_第17张图片

 

GetCapsuleLocationFromBase

 

[玩转UE4动画系统>功能模块] 之 Advanced Locomotion System V4 的工具函数及工具宏详解_第18张图片

从角色脚底位置即胶囊体底部位置反算出胶囊体的Location。实际就是GetCalpsuleBaseLocation的逆运算。

GetAnimCurveValue

 

[玩转UE4动画系统>功能模块] 之 Advanced Locomotion System V4 的工具函数及工具宏详解_第19张图片

安全获取动画曲线值,所谓安全就是当AnimInstance无效时,返回默认值0。

编辑于 1 小时前

虚幻引擎

虚幻 4(游戏引擎)

游戏开发

文章被以下专栏收录

玩转UE4动画系统

 

玩转UE4动画系统

一套UE4动画系统从入门到进阶的实战教程

 

 

 

你可能感兴趣的:(UE4)