【ue5】滑铲系统蓝图笔记
大致逻辑如下:
一、导入动画
- 滑铲
- 蹲待机
- 蹲行走
导入到文件夹中
可以右键设置颜色,便于区分。
二、调整动画
1.启动根运动
启动根运动后,人物才可以位移,不然只能在原地。
打开动画序列,勾选启用根运动Enabled root motion.
2.创建蒙太奇
对动画序列右键创建动画蒙太奇,用户释放技能时播放。
3.调整蒙太奇
因为我们要延长滑铲的时间,现在我们的滑铲蒙太奇是滑铲后站起来,但是我们只需要滑铲这个动作。
找到刚刚开始滑铲的时间,调整蒙太奇结束时间=0.71。现在我们的末尾动作就是滑铲。
4.设置循环
现在你可以看到人物一直滑铲后站起来再继续滑铲。
右键新建一个蒙太奇片段Create New Montage,名字为“循环”。
将“循环”拖拽到滑铲结尾,并勾选“循环”。现在人物滑铲后就停住了。
三、条件判断
打开人物蓝图
1.设置按键
Ue5改版后,需要新建一个操作输入。并命名为IA_Sliding。
在默认输入映射情境中选择我们刚才创建IA_Sliding,并将输入键设置为C。
2.当人物速度>200时,才可滑铲。
Slide输入键——获取角色移动Get CharacterMovement——获取速度Get Velocity——获取向量长度Vector Length——>200
接下来判断,当玩家正在掉落时或者滑铲时,不能触发。
1.正在掉落
获取角色移动Get CharacterMovement——正在掉落is falling
2.正在滑铲
网格体Get Mesh——获取动画实例Get Animin Instance——蒙太奇正在播放Montage is playing
使用“与门”And布尔值叠加。
3.是否滑铲?
创建一个布尔变量“滑铲?”。
4.播放蒙太奇
创建一个序列Sequence——序列0
设置正在滑铲=真。
设置通过网格体获取动画实例——播放蒙太奇Montage Play,选取上面创建好的滑铲蒙太奇。
四、缩放胶囊体
虽然现在我们已经可以位移了,但是如果不调整胶囊体,你会发现腿部动作形变得很厉害。
通过时间轴来缩放胶囊体。
1.创建时间轴
序列1——添加时间轴Add Timeline,命名“缩放胶囊体”。
打开时间轴,添加浮点型轨道,命名为“值”,长度=0.2
右键创建两个关键帧:
第一个关键帧:时间=0,值=0;
第二个关键帧:时间=0.2,值=1;
2.设置胶囊体大小
将时间轴的开始执行引脚改为Play from start。
胶囊体组件Get capsual component——设置胶囊体半高Set capsual half height——通过插值Lerp,将胶囊体半高变化设置在35-90之间。(平滑过度)
胶囊体大小在细节面板中看。
3.胶囊体随着滑铲缩小
网格体——设置相对位置Set relevant location
在视口中点击网格体,将动画模式改为使用动画资产,选取滑铲蒙太奇。
将胶囊体半高改为35,调整网格体的腿与胶囊体最下方对齐。
还原胶囊体高度和动画。
将两个高度数值填入相对位置的插值,作为胶囊体移动的高度变化范围。
4.起身胶囊体恢复
在时间线前加一个事件。
创建自定义事件“反转胶囊体”——通过“角色移动”判断是否处于蹲伏状态——未蹲时,反转时间线timeline(即胶囊体恢复为90)
五、滑铲时是否在地板上
通过玩家手部胶囊体检测判断人物是否与地板对齐。
通过胶囊体检测玩家滑铲时是否在地面上,如果掉落则停止滑铲、停止播放滑铲动作。
1.滑铲检测事件
添加一个序列,用于检测玩家是否处于滑铲中。
创建一个自定义事件“滑铲时检测地板”——以事件设置定时器set timer by event,time设置为0.01,勾选循环looping(每0.01秒运行一次)——新建序列。
2.创建宏进行检测
创建宏Macros:检测玩家是否在地板上——滑铲时手在地板上、是否掉落。
按通道进行胶囊体追踪Capsule trace by channel——获取网格体的世界位置作为检测起始点,检测半径和半高作为输入
检测半径默认值设为4,检测半高默认值设为18.
当检测不到时,即滑铲停止——停止播放蒙太奇动画——输出
Blend out Time作为输入值,默认值为0.2.
完整如下:
3.滑铲停止
将定时器返回值提升为变量“滑铲追踪句柄”。
将宏拖入并连接序列0——地板检测结束后——通过滑铲追踪句柄使定时器失效(重置定时器)。
整理一下:开始滑铲检测地板事件后,每0.01s检测一次玩家是否在滑铲,若未检测到碰撞(地板),则玩家不处于滑铲状态、停止播放滑铲动画蒙太奇、停止检测。
六、玩家与地板对齐
找到与当前地板的旋转值,通过插值平滑地将玩家对齐。
1.创建宏玩家对齐地板
在宏中设置Actor旋转set Actor rotation。
设置new rotation旋转参数。
角色运动character movement——获得当前地板信息get current floor——中断Finding Floor result——中断hit result——impact normal地板法线作为“利用zx轴旋转Make Rot From ZX”的Z轴,获取玩家向前向量Get Actor forward vector作为X轴。
使用“R插值到RInterp to”创建平滑旋转:从玩家当前旋转角度,转到地板的平行角度,时间为场景差量Get world delta seconds(同步游戏时间),旋转速度Interp Speed作为输入值设为5.
完整如下:
大致思路:通过玩家向前向量,和垂直地板向量,找到地板的角度,让玩家旋转到与地板平行。
2.触发对齐
序列1——执行宏
七、滑铲时是否与物体碰撞
避免滑铲时穿墙,对滑铲时最前面的脚进行球体检测,如果碰到墙,则停止滑行
1.创建宏进行球体检测
创建宏“检测玩家滑动时碰撞表面”。
输入——按通道进行球体追踪
检测点:获取骨骼的插槽位置,插槽名为脚部的骨骼名ball_I——“+”向量相加函数,分割相加向量的结构体引脚,将Z向量作为输入,保持为0(可自行输入数值进行调试)
排除检测数组:将地板检测的那一段复制过来,将地面排除检测。
将检测半径作为输入,默认值=20
2.条件判断
是否击中:检测的返回值若为“真”,则进行下一个判断。
击中的物体是否与地面垂直:中断检测的命中结果(out hit)——获取法线向量(Impact Normal)——乘以向量(0,0,1)“dot product”——反余弦Acos degree——获取绝对值——若击中角度>80——输出
将对比角度作为输入,默认值80
3.调用宏
序列2连接宏“检测玩家滑铲时碰撞表面”——将上面的使定时器失效复制过来。
完整如下:
4.调试
为了便于调试,将球体检测的Draw Debug Type作为输入。
在宏界面选择类型:针对一帧For One Frame
滑铲时就可以看到脚部的运动轨迹。
滑铲的蓝图就建好了,全选后右键添加注释“滑铲”。
八、是否持续滑铲
在这里完成两个逻辑:
- 停止滑铲
- 当玩家在斜坡上滑动时,可以持续滑动完整个斜坡。
通过与地板的角度判断是否继续滑铲。角度确定,继续滑行,否则起身。
1.建立蒙太奇通知
通知notify:通过动画调用动画蓝图,在动画蓝图中调用角色蓝图。
滑铲动画快结束时通过蒙太奇通知在动画蓝图中计算速度、调用角色蓝图进行判定是否继续滑铲。
创建“当前滑动速度”向量。
打开滑铲蒙太奇动画——添加一个通知轨道
在轨道中新建通知Notify“计算速度”,并将该通知放在最后一帧前面。
然后再新建一个通知“查看是否滑铲”,将该通知放在最后一帧。
2.设置滑动速度
打开动画蓝图的事件图表——新建“AnimNotify_计算速度”事件
将“预览实例”改为“未选中调试对象”(不知道有什么用)。
获取角色的character movement——get velocity——set 当前滑动速度,滑动速度=当前角色速度
在人物蓝图中新建一个自定义事件“检查是否继续滑铲”。
是否继续滑铲=是否滑铲。
在动画蓝图中,新建“AnimNotify_查看是否滑铲”事件——调用刚才创建的事件“检查是否继续滑铲”。
3.检测地面角度函数
创建函数“寻找当前楼层角度和方向”——返回节点return node,将对齐地板宏中的中断floor结果那一段复制过来。
中断命中结果的normal与向量(0,0,1)相乘——获取逆角度,作为返回节点的“角度”输出值。
Normal作为X旋转轴,向前向量作为Y轴,利用XY创建旋转Make rot from XY——分割返回值引脚,X轴的返回值*Y轴返回值——乘积>0,是否向上倾斜Is slope up=真,作为返回节点输出值。
4.是否继续滑铲事件
回到角色蓝图,继续写之前的“检查是否继续滑铲事件”。
检查是否继续滑铲事件——正在滑铲为真——调用寻找当前楼层角度和方向函数。
是否向上倾斜=真,斜坡——设置角色移动速度=当前滑动速度,当前滑动速度在动画蓝图中已经设置过,即滑铲结束时的速度—— 以函数名设置定时器,每0.001s循环“继续滑铲”事件(在后面写),返回值提升为变量“继续滑铲句柄”——调用寻找当前楼层角度和方向函数,当前角度提升为变量。
复制一个滑铲蒙太奇,删掉通知1、2,将开始时间设为滑铲开始0.71s,结束时间设置为站起来1.53s。这样就是一个倒放的滑铲动画,玩家从滑铲起身。
注意:“选取下一个片段”不要选循环,不然会一直重复播放。
是否向上倾斜=假,平地——播放滑铲起身动画自定义事件——播放滑铲起身蒙太奇——延迟0.02s——序列
序列0——滑动追踪句柄是否有效Is valid——为真,使句柄无效,停止地板检测。
序列1——翻转胶囊体事件。
完整如下:
5.继续滑铲事件
- 平地,速度不够时停止
- 斜坡,加速
继续滑铲自定义事件——调用寻找当前楼层角度和方向函数,当前角度=角度——将F插值于Finterp to(平滑过度),当前=当前角度、目标=角度、delta time=获取场景差量Get world Delta seconds、Interp speed=0.4——判定插值后的角度<3?
角度<3,平地——创建变量“停止滑铲速度”,默认值50——角色速度<停止滑铲速度时,清除继续滑铲句柄,播放起身动画。
角度>=3,斜坡——序列
序列0——获取Actor旋转,获取向前向量。分割这两个结构引脚,Z轴相连——添加移动输入,世界方向=Z轴方向——设置最大滑铲速度=1500——设置最大滑铲加速度=500
序列1——检测玩家滑铲时碰撞表面宏——为真,撞墙——清除继续滑铲句柄
完整如下:
是否持续滑铲整个蓝图如下:
6.滑铲后重置旋转
滑铲后重置旋转,让玩家面对正前方。
自定义事件“重置旋转体”——获取Actor旋转Get Actor Rotation,提升返回值引脚,将Z轴“创建旋转体Create Rotator”,将旋转体的返回值提升为变量“默认轴旋转Defualt Yaw rotaion”——复制胶囊体的时间轴改名为“重置滑铲旋转”,旋转体连接时间轴的play from start
时间轴的update——设置Actor旋转,new rotation拉出新建“插值(旋转体)Lerp”——Lerp的alpha连接胶囊体的“值”,A连接获取Actor旋转,B连接变量“默认轴旋转”。
复制滑铲时设置速度和加速度,最大行走速度=500,最大加速度=1500——胶囊体finished连接
完整如下:
在“检查继续滑铲”事件的播放起身动画新增一个序列——调用“重置XY旋转”事件。
九、调整
在滑铲的“滑动时检测地板”的“地板检测”——判定“继续滑铲”句柄是否有效Is valid?
为真:清除继续滑铲句柄——翻转胶囊体——重置XY旋转
为假:翻转胶囊体——重置XY旋转
玩家在空中,则停止滑铲。
在检测玩家滑铲时碰撞表面——播放滑铲起身动画(玩家踢中物体则站起来)
十、滑铲结束时下蹲
当头顶空间不够时,玩家滑铲结束后要进入下蹲状态。
1.动画通知
在滑铲结束蒙太奇的第1帧添加通知“检查天花板”。
在人物蓝图中新建自定义事件“天花板追踪”
在动画蓝图中调用通知“检查天花板”——调用人物蓝图的“天花板追踪”事件。
2.下蹲
天花板追踪——按通道进行胶囊体追踪,起点和终点都=当前位置+70(z),半径=34,高度=50,trace channel=可见,actors to ignore=创建数组make array,draw debug type=每帧时长——如果检测到物体——判定character movement的is crouching正在蹲伏
创建“天花板追踪?”变量。
天花板追踪=真——解除蹲伏un crouching——天花板追踪=假
天花板追踪=假——蹲伏is crouching——将“滑铲”逻辑中的获取动画实例复制过来,停止蒙太奇stop montage,in blend out time=0.2——天花板追踪=真
完整如下:
3.创建动画混合空间
创建动画>旧有>混合空间1D“下蹲_BS”
打开混合空间,水平坐标名称改为“速度”、最大速度=150。
将下蹲待机动画拖到第一帧,下蹲行走动画拖到最后一帧。
在人物蓝图>视口中点击角色移动chracter movement,在细节中修改:
可下蹲=true,最大蹲伏行走速度=150 cm/s
4.调整动画蓝图
在动画蓝图中,找到已有的蓝图。
Movement Component——正在蹲伏Is Crouching,提升为变量“是否正在蹲伏?”
在Locomotion状态机中创建按布尔混合姿势Blend pose by bool:
真姿势=下蹲混合动作、速度=ground speed;
假姿势=locomotion;
Active value=是否正在蹲伏?
滑铲结束后,头顶有东西则下蹲。
5.退出下蹲状态
在原有蓝图Movement Input的最后面——若天花板追踪=真——调用天花板追踪事件。
头顶无障碍自动站起。
相关文章:

【ue5】滑铲系统蓝图笔记
大致逻辑如下: 一、导入动画 滑铲蹲待机蹲行走 导入到文件夹中 可以右键设置颜色,便于区分。 二、调整动画 1.启动根运动 启动根运动后,人物才可以位移,不然只能在原地。 打开动画序列,勾选启用根运动Enabled…...

linux系统Jenkins工具参数化构建
Jenkins参数化构建 web服务器jenkins服务器编写主机清单编写脚本代码 jenkins服务web页面操作 web服务器 下载nginx 下载gitcd /usr/share/nginxrm -rf htmlgit clone http://root:Qq123456192.168.188.176/ximu/test-nginx.gitmv test-nginx/ htmljenkins服务器 下载ansible…...
生活里的英语应该【怎么说】
文章目录 一、生病的各种症状用英语怎么说?二、关于天气的英语怎么说? 一、生病的各种症状用英语怎么说? Im coughting! I have a sore throat. Ive lost my voice. I have a runny nose and a stuffy nose. I have shivers and a body a…...

Centos安装Jenkins
1、更新系统 (1)更新下系统 sudo yum -y update 安装用于下载java 17二进制文件的wget命令行工具 sudo yum -y install wget vim 2、卸载centos自带的jdk 由于我们安装的版本比较高,需要jdk17,卸载centos自带的jdk。用 下面的…...
软考中级系统集成必备100题(71-80)真题精炼
文章目录 71.简述配置管理的主要活动?72.配置管理和变更管理的区别?73.CMO的具体工作有哪些?74.配置标识的基本内容由哪些?75.配置审计包括哪些内容?76.配置审计的功能是什么?77.为什么要进行配置项的版本控制?78.简述配置项的版本控制流…...
visual studio的使用
文章目录 1.visual studio要加的宏命令2.清屏操作 1.visual studio要加的宏命令 #define _CRT_SECURE_NO_WARNINGS这是一个预处理器宏,它在 Visual Studio 中被广泛使用。其主要目的是禁用一些在 C 和 C 标准库中被认为不安全的函数的编译器警告。这些不安全的函数…...

对于爬虫的学习
本地爬取 package MyApi.a08regexdemo;import java.util.regex.Matcher; import java.util.regex.Pattern;public class RegexDemo03 {public static void main(String[] args) {//要求:找出里面所有javaxxString str"Java自从95年问世以来,经历了…...

【学习笔记】开源计算机视觉库OPENCV学习方案
本文中,我们试图提供一些学习OpenCV的详细和实用资源,这些资源包括基础知识、进阶技巧以及实践项目,旨在帮助初学者和进阶学习者更好地掌握和使用OpenCV库。 一、学习资源 官方文档:OpenCV的官方文档是学习OpenCV的最佳起点。它包…...

LVS负载均衡集群基础概念
目录 一、集群 1、集群概述 1.1 什么是集群 1.2 集群系统扩展方式 1.2.1 Scale UP(纵向扩展): 1.2.2 Scale OUT(横向扩展): 1.2.3 区别 1.3 分布式系统 1.4 分布式与集群 1.5 集群设计原则 1.6 …...
pwn学习笔记(5)--格式化字符串漏洞(未完全完成)
pwn学习笔记(5)–格式化字符串漏洞 前言:由于条件有限,因此对于该漏洞的学习不算很多, 格式化字符串漏洞基础: 格式化字符串介绍: 格式化字符串函数可以接收可变数量的参数࿰…...

HTML标签之表单标签,web开发实例教程
标签语义化: 语义和默认样式的区别: 默认样式是浏览器设定的一些常用tag的表现形式;语义化的主要目的就是让大家直观的认识标签和属性的用途和作用; 标签语义化作用: 当只有HTML页面时,没有CSS…...
数据库-第四/五章 数据库安全性和完整性【期末复习|考研复习】
前言 总结整理不易,希望大家点赞收藏。 给大家整理了一下计数据库系统概论中的重点概念,以供大家期末复习和考研复习的时候使用。 参考资料是王珊老师和萨师煊老师的数据库系统概论(第五版)。 文章目录 前言4 第四章 数据库安全性4.1 数据库安全性定义4.…...

网站维护页面404源码
网站维护页面404源码,源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面,重定向这个界面 下载地址 https://www.qqmu.com/2407.html...

CSS的文本样式属性值,web开发难点
什么是css块元素? 块级元素是独占一行显示的。它的兄弟元素必定不会与其在同一行中(除非脱离了文档流)。通俗点来说,就是块元素(block element)一般是其他元素的容器元素 戳这里领取完整开源项目:【一线大厂前端面试题…...

springboot+jsp汽车配件管理系统idea maven 项目lw
springbootweb汽车配件销售业绩管理系统服务于汽车配件公司业务,实现了客户管理,主要负责对客户相关数据的增删改查方面、渠道管理,主要对渠道信息也就是设备的供应商渠道信息进行管理、项目管理,主要是一些项目信息的记录与整理、销售数据管…...

计算机网络-网络安全(二)
1.应用层安全协议: S-HTTP或SHTTP(Sec HTTP),安全超文本传输协议,是HTTP扩展,使用TCP的80端口。HTTPS:HTTPSSL,使用TCP的443端口。和TLS(传输层安全标准)是双…...
Flutter App代码混淆
Flutter 应用混淆 Flutter 应用的混淆非常简单,只需要在构建 release 版应用时结合使用 --obfuscate 和 --split-debug-info 这两个参数即可。 flutter build apk –obfuscate --split-debug-info 命令需要指定输出调试文件的位置,该命令会生成一个符号映…...
pandas中apply函数的坑——错误信息Must provide ‘func‘ or tuples of ‘(column, aggfunc)的解决办法
近期需要获取某网站上的文章标题,并对文章来源以及不同来源的文章数量进行分析。已通过爬虫完成对文章标题、日期和文章链接的爬取,并存入pandas中的dataframe中,准备进行下一步的分析。 该网站一般情况下,文章标题前两个字是信息…...

《操作系统真相还原》读书笔记二:环境搭建 xshell连接virtualbox
修改 sshd_config 使用 vi /etc/ssh/sshd_config命令进入sshd服务配置,键盘输入i进行编辑,将监听端口、监听地址前的 # 号去除,开启允许远程登录,开启使用用户名密码来作为连接验证。修改完成,按一下Esc,输…...

CSS盒模型居中方法,大学生必备
96道前端面试题 下面给大家分享96道前端面试题 1,一些开放性题目 自我介绍:除了基本个人信息以外,面试官更想听的是你与众不同的地方和你的优势。项目介绍如何看待前端开发?平时是如何学习前端开发的?未来三到五年的…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...

【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...

ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...