《UE5_C++多人TPS完整教程》学习笔记46 ——《P47 蹲伏行走(Crouching Walking)》


本文为B站系列教学视频 《UE5_C++多人TPS完整教程》 —— 《P47 蹲伏行走(Crouching Walking)》 的学习笔记,该系列教学视频为计算机工程师、程序员、游戏开发者、作家(Engineer, Programmer, Game Developer, Author) Stephen Ulibarri 发布在 Udemy 上的课程 《Unreal Engine 5 C++ Multiplayer Shooter》 的中文字幕翻译版,UP主(也是译者)为 游戏引擎能吃么。
在这里插入图片描述


文章目录

  • P47 蹲伏行走(Crouching Walking)
  • 47.1 创建蹲伏行走混合空间蓝图类
  • 47.2 完善蹲伏行走状态机
  • 47.3 Summary


P47 蹲伏行走(Crouching Walking)

本节课我们将创建一个蹲伏行走的混合空间,使得人物角色在持枪时拥有蹲伏行走的能力。
在这里插入图片描述


47.1 创建蹲伏行走混合空间蓝图类

  1. 在 “/Game/Contents/Blueprints/Character/Animation” 目录下以 “SK_EpicCharacter_Skeleton” 为骨骼创建混合空间1D(Blend Space 1D)蓝图类,命名为 “CrouchWalking”。打开 “CrouchWalking” 混合空间编辑器,在左侧 “资产详情”(Asset Details)面板的 “Axis Settings” 选项卡下展开 “水平坐标”(Horizontal Axis),设置 “名称”(Name)为 “YawOffset”,并设置 “最小轴值”(Minimum Axis Value)为 -180.0,“最大轴值”(Maximum Axis Value)为 180.0
    在这里插入图片描述

  2. 在右侧资产浏览器中拖拽向前蹲伏行走的动画资产 “Crouch_Walk_Fwd_Rifle_Hip” 的同时按下键盘 Shift 键,将其放置在资产编辑器坐标轴 (0.0, 0.0) 处生成采样点。同理,分别将向左蹲伏行走的动画资产 “Crouch_Walk_Lt_Rifle_Hip” 和向右蹲伏行走 “Crouch_Walk_Rt_Rifle_Hip” 放置在 (-90.0, 0.0)(90.0, 0.0) 处,然后将向后蹲伏行走的动画资产 “Crouch_Walk_Bwd_Rifle_Hip” 放置在 (-180.0, 0.0)(180.0, 0.0) 处。
    在这里插入图片描述

  3. 在虚幻引擎中打开动画蓝图 “BlasterAnimBP”,然后在 “AnimGraph” 面板中打开状态机 “Equipped” 的编辑界面,双击 “Crouching” 状态节点进入编辑界面,在蓝图编辑面板中删除之前的蓝图节点, 并 “添加新的状态机”(Add New State Machine),命名为 “Crouching”,将 “Crouching” 的输出引脚与 “输出动画姿势”(Out Animation Pose)节点的 “Result” 引脚连接。
    在这里插入图片描述

  4. 双击 “Crouching” 进入状态机编辑界面,在面板中 “添加状态”(Add State)“Crouch”,并将 “Entry” 节点的输出引脚与 “Crouch” 进行连接。
    在这里插入图片描述

  5. 双击进入 “Crouch” 状态编辑界面,在右下角资产浏览器中拖拽混合空间动画蓝图类 “CrouchingWalking” 至面板中生成蓝图节点,将该节点的 “Animation Pose” 输出引脚与 “输出动画姿势”(Out Animation Pose)节点的 “Result” 引脚连接。添加 “获取 YawOffset”(Get YawOffset)节点,将该节点的输出引脚与 “CrouchingWalking” 节点的 “YawOffset” 输入引脚连接。
    在这里插入图片描述

  6. 编译、保存后进行测试,可以发现人物角色在持枪时拥有了蹲伏行走的能力,虽然蹲伏行走的速度较慢。
    在这里插入图片描述

  7. 我们需要增加人物角色在持枪时蹲伏行走的速度,打开人物角色蓝图类 “BP_EpicCharacter”,在左侧组件面板选中 “角色移动(CharMoveComp)(角色移动组件)”,然后在右侧细节面板中将 “角色移动:行走”(CHARACTER MOVEMENT: WALKING) 下的 “最大蹲伏行走速度”(Max Walk Speed Crouched)改为 350.0 cm/s
    在这里插入图片描述

  8. 编译、保存后进行测试,可以发现人物角色在持枪蹲伏行走时的速度会快一些。


47.2 完善蹲伏行走状态机

  1. 在 “Crouching” 状态编辑界面中,将节点 “Crouch” 重命名为 “CrouchWalking”,并从该节点中引出一条线,连接新的状态节点 “CrouchIdle”,接着再从 “CrouchIdle” 引回一条线连接 “CrouchWalking”。然后,将节点 “Entry” 的指向修改为 “CrouchIdle
    在这里插入图片描述

  2. 进入 “CrouchWalking 到 CrouchIdle” 转换规则蓝图编辑界面,在面板中添加蓝图节点 “获取 Is Accelarating”(Get Is Accelarating)和 “NOT布尔”(NOT Boolean),按下图所示连线绘制蓝图,这段蓝图表示当人物角色不在加速时,就从 “CrouchWalking” 状态转换到 “CrouchIdle” 状态。
    在这里插入图片描述

  3. 进入 “CrouchIdle 到 CrouchWalking” 转换规则蓝图编辑界面,在面板中添加蓝图节点 “获取 Speed”(Get Speed)、“大于”(>)、“获取 Is In Air”(Get Is In Air)、“NOT布尔”(NOT Boolean)、“获取 Is Accelarating”(Get Is Accelarating)以及 “AND布尔”(AND Boolean),在为节点 “AND布尔” “添加引脚”(Add pin)后,按下图所示连线绘制蓝图。这段蓝图表示当 “Idle” 状态下的人物角色同时满足速度大于 0(Speed > 0)、不在空中 (bIsInAir == false)且在加速(bIsAccelarating == true)三个条件时,就可以由 “CrouchIdle” 转换到 “CrouchWalking” 状态。
    在这里插入图片描述

  4. 进入 “CrouchIdle” 状态编辑界面,在右下角资产浏览器中拖拽动画资产 “Crouch_Idle_Rifle_Hip” 至面板中生成蓝图节点,将该节点的 “Animation Pose” 输出引脚与 “输出动画姿势”(Out Animation Pose)节点的 “Result” 引脚连接。
    在这里插入图片描述

  5. 编译、保存后进行测试,可以看到在人物角色持枪并进行蹲伏时如果我们不进行任何移动操作,人物角色会保持待机状态,如果我们移动人物角色,人物角色就会进入蹲伏行走状态;并且,人物角色在站立奔跑状态下按下 Shift 键,人物角色也可以立即进入蹲伏状态。
    在这里插入图片描述
    在这里插入图片描述


47.3 Summary

本节课我们实现了人物角色在装备武器状态下的蹲伏移动动画,进一步完善了 “Equipped” 状态机。首先,我们创建了蹲伏行走 “混合空间1D”(Blend Space 1D)“CrouchWalking”,为其水平轴 “YawOffset” 配置了范围(-180.0180.0),并将向前 “Crouch_Walk_Fwd_Rifle_Hip”)、向后 “Crouch_Walk_Bwd_Rifle_Hip”)、向左 “Crouch_Walk_Lt_Rifle_Hip” 和向右 “Crouch_Walk_Rt_Rifle_Hip” 的蹲伏行走动画资产精确放置在坐标轴的关键点上。
接着,我们在动画蓝图的 “Crouching” 状态中,将计算好的 “YawOffset” 变量连接到 “CrouchWalking” 混合空间节点的对应输入引脚,驱动角色根据移动方向播放正确的蹲伏行走动画。随后,我们通过调整角色移动组件的 “最大蹲伏行走速度”(Max Walk Speed Crouched)参数至 350.0 cm/s,优化了蹲伏状态下的移动体验。
然后,我们完善了 “Crouching” 状态机,创建了蹲伏待机 “CrouchIdle” 和蹲伏行走 “CrouchWalking”两个子状态,并设置了它们之间的转换规则。从 “CrouchWalking” 转换到 “CrouchIdle” 的条件是检测到不在加速 (!bIsAccelerating);反向转换则需同时满足速度大于0 (Speed > 0)、不在空中 (bIsInAir) 且正在加速 (bIsAccelerating) 三个条件。在 “CrouchIdle” 状态蓝图中,设置播放 “Crouch_Idle_Rifle_Hip” 待机动画,使得人物角色蹲伏未行走时能够进行蹲伏待机。
最终实现的动画状态机使得角色在持枪蹲伏时,能够根据输入在待机和行走状态间平滑切换,并且蹲伏行走能够响应不同移动方向,与站立状态的奔跑、跳跃动画共同构成了一个完整、流畅的角色移动动画系统。
在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/95442.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/95442.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TiDB v8.5.3 单机集群部署指南

前言 最近在做 TiDB 的恢复演练,需要在单台 Linux 服务器上部署一套 TiDB 最小的完整拓扑的集群,本文记录一下安装过程。 环境准备 开始部署 TiDB 集群前,准备一台部署主机,确保其软件满足需求: 推荐安装 CentOS 7…

ClickHouse常见问题——ClickHouseKeeper配置listen_host后不生效

ClickHouseKeeper配置listen_host后不生效ClickHouseKeeper配置listen_host后不生效ClickHouseKeeper配置listen_host后不生效 3节点部署ClickHouse集群后,ClickHouse Server执行报错: Poco::Exception. Code: 1000, e.code() 111, Connection refuse…

《Python × MongoDB 实战指南:从连接到查询,构建高效数据操作流程》

《Python MongoDB 实战指南:从连接到查询,构建高效数据操作流程》 一、引言:当 Python 遇上 MongoDB 在当今数据驱动的开发世界里,MongoDB 以其灵活的文档结构、强大的查询能力和良好的扩展性,成为 NoSQL 数据库中的佼佼者。而 Python,作为一门简洁优雅、生态丰富的编…

【Flask + Vue3 前后端分离管理系统】

Flask Vue3 前后端分离管理系统 项目概述 本项目是一个基于 Flask 后端和 Vue3 前端的前后端分离管理系统。项目实现了用户管理、角色管理、菜单管理、权限控制等完整的后台管理功能。 技术栈 后端技术栈: Flask 3.0.0 - Python Web框架Flask-SQLAlchemy 3.1.1 - O…

51c视觉~3D~合集5

自己的原文哦~ https://blog.51cto.com/whaosoft/14165531 #AnimateAnyMesh 文本驱动通用网格动画新范式,实现高效高质量4D内容生成 4D 内容生成,即包含时间维度信息的 3D 内容创建,在 VR/AR、游戏等领域具有广阔的应用前景。…

开悟篇Docker从零到实战一篇文章搞定

目录 一:概述 1:why docker 2:Docker是什么? 3:Docker核心概念 二:初步体验 1:Docker核心架构图 2:准备工作 1:服务器 2:Docker安装 3:阿里云docker安装 4:镜像加速 三:Docker命令和帮助文档的使用 1:帮助文档 2:镜像的基本操作 1:查看本地…

LINUX驱动篇(二)驱动开发

系列文章目录 文章目录系列文章目录总结介绍字符设备驱动工作原理驱动框架加载卸载注册注销设备号详解打开关闭等操作实例分析led驱动编写地址映射LED驱动改进驱动方式总结自动注册注销设备号自动创建设备节点设备树设备树LED驱动实验pinctrl和gpio并发和竞争原子操作自旋锁块设…

【工具】开源大屏设计器 自用整理

【工具】开源大屏设计器 自用整理 GoView低代码数据可视化 GoView 说明文档 | 低代码数据可视化开发平台 JimuReport积木报表(免费报表工具) https://github.com/jeecgboot/JimuReport 「数据可视化:报表、大屏、数据看板」积木报表是一款类Excel操作风格&#xf…

.NetCore MVC

这个是我自己记得笔记,最好有点基础看我的。 html 辅助标签 Html.DropList 分布视图 使用 RenderPartialAsync 呈现分部视图。 此方法不返回 IHtmlContent。 它将呈现的输出直接流式传输到响应。 因为该方法不返回结果,所以必须在 Razor 代码块内调用它…

@GitLab 介绍部署使用详细指南

文章目录**GitLab 介绍&部署&使用详细指南****1. GitLab 介绍与核心概念****1.1 什么是 GitLab?****1.2 核心特性****1.3 版本区别****2. 部署指南 (以 Ubuntu 22.04 LTS 为例)****2.1 环境准备****2.2 安装步骤****2.3 重要配置文件****3. 基本使用入门***…

如何通过 AI IDE 集成开发工具快速生成简易留言板系统

在当今快速迭代的软件开发环境中,AI 辅助编程工具已经成为开发者提高效率的重要手段。本文将详细介绍如何利用 AI IDE 集成开发工具快速构建一个功能完整的简易留言板系统,涵盖从需求分析到部署上线的全过程,并提供完整代码、流程图、Prompt …

机器学习:从技术原理到实践应用的深度解析

目录引言一.什么是机器学习(ML)?——从技术本质到核心目标1.与传统编程的本质区别:规则的“来源不同”2.核心目标:在“偏差-方差权衡”下优化性能指标二.机器学习的核心分类——基于“数据标签”与“学习范式”的技术划…

[muduo网络库]-muduo库TcpServer类解析

本贴用于记录muduo库的学习过程,以下是关于TcpServer的个人理解。 TcpServer内含Acceptor、threadpool等类,算是把主线程所有要做的事封装了起来。 重要成员变量 EventLoop *loop_; // baseloop 用户自定义的loopconst std::string ipPort_;const std…

工作两年,最后从css转向tailwind了!

菜鸟上班已经两年了,从一个对技术充满热情的小伙子,变成了一个职场老鸟了。自以为自己在不停的学习,但是其实就是学一些零碎的知识点,比如:vue中什么东西没见过、js什么特性没用过、css新出了个啥 …… 菜鸟感觉自己也…

macOS 更新后找不到钥匙串访问工具的解决方案

macOS 更新后找不到钥匙串访问工具的解决方案 随着macOS的不断更新,一些系统工具的位置可能会发生变化,给用户带来不便。钥匙串访问(Keychain Access)是macOS中一个非常重要的工具,用于管理密码、证书等敏感信息。最近…

深入理解Go 与 PHP 在参数传递上的核心区别

$run_return_data []; $ret $this->handleData($event_req_info, $run_return_data); public function handleData($event_req_info, &$run_return_data): array {$run_return_data [ //使用引用变量返回数据shop_id > $shop_id,request_id > $request_…

【Dify智能体】2025 最新版Linux部署Dify教程(Ubuntu)

一、前言 Dify 是一款开源的智能体工作流平台,可以用来快速构建 AI 应用。相比手动搭建复杂的依赖环境,Docker Compose 部署方式更简单、更快速、更稳定。本文将一步步带你在 Ubuntu 22.04 + Docker Compose v2 上安装 Dify,并给出常见问题与优化方案。 ps:如果还没有安装…

基础思想:动态规划与贪心算法

一、动态规划核心思想:将复杂问题分解为相互重叠的子问题,通过保存子问题的解来避免重复计算(记忆化)。动态规划需要通过子问题的最优解,推导出最终问题的最优解,因此这种方法特别注重子问题之间的转移关系…

使用生成对抗网络增强网络入侵检测性能

文章目录前言一、GAN 模型介绍二、研究方法1.数据集选择与处理2.IDS 基线模型构建3. GAN 模型设计与样本生成4.生成样本质量评估三、实验评估四、总结前言 网络入侵检测系统(Network Intrusion Detection System, NIDS)在保护关键数字基础设施免受网络威…

VR森林经营模拟体验带动旅游经济发展

将VR森林经营模拟体验作为一种独特的旅游项目,正逐渐成为旅游市场的新热点。游客们无需长途跋涉前往深山老林,只需在旅游景区的VR体验中心,戴上VR设备,就能开启一场奇妙的森林之旅。在虚拟森林中,他们可以尽情探索&…