《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
英文地址,請注明出處:http://en.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設備,就能開啟一場奇妙的森林之旅。在虛擬森林中,他們可以盡情探索&…