当前位置: 首页 > news >正文

[玩转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)

 

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

ML_MultiTraceHit

 

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

ML_ComponentWorldToLocal

 

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

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

 

关于向量运算请参看

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

zhuanlan.zhihu.com图标

 

ML_ComponentLocalToWorld

 

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

ML_Transform-Transform

 

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

ML_Transform+Transform

 

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

ML_DoWhile(TrueFalse)

 

 

本宏节点在老王的博文

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

zhuanlan.zhihu.com图标

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

ML_SetPreviousAndNewValue

 

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

 

 

ML_GetNextArrayItem

 

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

ML_GetPreviousArrayItem

 

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

工具函数

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

GetControlForward/RightVector

 

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

GetCalpsuleBaseLocation

 

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

 

 

GetCapsuleLocationFromBase

 

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

GetAnimCurveValue

 

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

编辑于 1 小时前

虚幻引擎

虚幻 4(游戏引擎)

游戏开发

文章被以下专栏收录

玩转UE4动画系统

 

玩转UE4动画系统

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

 

 

 

相关文章:

  • Lua5.4新特性
  • 探究光线追踪技术及UE4的实现 -- good
  • Unity游戏项目性能优化总结
  • 【UE4源代码观察】观察DDC(DerivedDataCache)
  • Chrome 抓包
  • float.Parse 在不同区域小数表示是不一样的
  • C# GC 垃圾回收
  • Android Studio NDk调试(基于gradle-experimental插件与LLDB)
  • android studio调试c/c++代码
  • 在开发过程中使用 git rebase 还是 git merge,优缺点分别是什么?
  • Visual Studio 2019 远程调试工具(Remote Debugger)使用方法
  • Windbg使用说明书
  • 使用Windbg查看CrashDump
  • 【无标题】windbg 分析dump文件
  • Dump文件有三种:完整内存转储,内核内存转储,小内存转储。System Properties中的高级选项中可以看到这些设置。
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • JS 中的深拷贝与浅拷贝
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • Angular4 模板式表单用法以及验证
  • Bootstrap JS插件Alert源码分析
  • css属性的继承、初识值、计算值、当前值、应用值
  • ES6 学习笔记(一)let,const和解构赋值
  • express如何解决request entity too large问题
  • HashMap剖析之内部结构
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • PAT A1092
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • tensorflow学习笔记3——MNIST应用篇
  • VUE es6技巧写法(持续更新中~~~)
  • Vue官网教程学习过程中值得记录的一些事情
  • 产品三维模型在线预览
  • 成为一名优秀的Developer的书单
  • 如何实现 font-size 的响应式
  • 算法系列——算法入门之递归分而治之思想的实现
  • 温故知新之javascript面向对象
  • 学习笔记TF060:图像语音结合,看图说话
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (学习日记)2024.01.19
  • ******之网络***——物理***
  • ***监测系统的构建(chkrootkit )
  • .gitattributes 文件
  • .jks文件(JAVA KeyStore)
  • .NET Core 和 .NET Framework 中的 MEF2
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)