iT邦幫忙

2025 iThome 鐵人賽

DAY 24
0

今天來為下次要增加的 魔法攻擊 修改動畫系統。

1. 程式修改

  1. 之前武器的地基 WeaponBase 的 Enum 是直接寫在 WeaponBase.h 裡,這是把 Enum 分離出來要的時候就不用兩邊都要改。
    WeaponType.h
#pragma once
#include "WeaponType.generated.h"

UENUM(BlueprintType)
enum class EWeaponType : uint8
{
	Hand UMETA(DisplayName = "Hand"),
	Sword UMETA(DisplayName ="Sword"),
	Staff UMETA(DisplayName ="Staff"),
	Book  UMETA(DisplayName ="Book")
};

然後在 WeaponData.hWeaponBase.h 裡 include ^^^

  1. WeaponBase.h 新增:
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Weapon")
EWeaponType WeaponType = EWeaponType::Hand;

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Weapon")
FName AttachSocketName = "hand_rSocket";
// 裝備位置

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Weapon")
FName IdleSocketName = "BackSocket";
// 沒有裝備時放的位置
  1. iThome30daysCharacter.cpp
  • AddWeapon()
if (!NewWeapon) return;
NewWeapon->WeaponType = WeaponRow->WeaponType;
NewWeapon->IdleSocketName = WeaponRow->IdleSocketName;
  • EquipWeapon()
CurrentWeapon->Holster(this, CurrentWeapon->IdleSocketName, true);
CurrentWeapon->AttachToCharacter(this, CurrentWeapon->AttachSocketName);
// 原本是 FText("BackSocket"), FText("hand_rSocket")

2. Anim Blueprint 修改

在玩家的動畫藍圖裡修改動畫邏輯,使用 Slot 來覆蓋某些部位的動畫。

  • 拿著書的動作,這裡只會提取左手的動畫,所以不用做全身動畫,還能跟其他走路動畫之類的融合。
    https://ithelp.ithome.com.tw/upload/images/20251008/201710362H2i1MExKg.png
  • 設定 Slot 後面會用到
    https://ithelp.ithome.com.tw/upload/images/20251008/20171036N3dPdNLV3I.png
  • 在 Blueprint Update Animation 裡獲取目前武器類型 (記得在 Anim BP 設 EWeaponType 變數)
    https://ithelp.ithome.com.tw/upload/images/20251008/20171036x1KKGW41kW.png
  • 使用 Layerd blend per boneSlot 來控制動畫撥放的覆蓋部位。
    WeaponType 用在 BlendePose (Enum),拿Current Weapon Type 拉出 EWeaponType 的 Blend Pose 就可以用 Enum 決定要使用什麼動畫 (Blend Pose 右鍵添加腳位)
    https://ithelp.ithome.com.tw/upload/images/20251008/20171036uvxiUSHkmw.png
  • 每個 Layerd blend per bone 可以設置受影響的 bone
    https://ithelp.ithome.com.tw/upload/images/20251008/20171036IH9OlSx5aZ.png

!完成!!


最後的右手手勢是攻擊,利用剛剛的動畫 Slot 就可以只針對部分骨骼做動作。跟劍的攻擊一樣,有combo sections,但是還沒辦法打出遠程魔法攻擊,也就是下一次我要做的,不同武器的攻擊功能。


上一篇
# Day 23|敵人生成系統
系列文
30 天用 Unreal Engine 5 C++ 開發遊戲24
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言