今天來為下次要增加的 魔法攻擊 修改動畫系統。
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.h
跟 WeaponBase.h
裡 include ^^^
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";
// 沒有裝備時放的位置
iThome30daysCharacter.cpp
if (!NewWeapon) return;
NewWeapon->WeaponType = WeaponRow->WeaponType;
NewWeapon->IdleSocketName = WeaponRow->IdleSocketName;
CurrentWeapon->Holster(this, CurrentWeapon->IdleSocketName, true);
CurrentWeapon->AttachToCharacter(this, CurrentWeapon->AttachSocketName);
// 原本是 FText("BackSocket"), FText("hand_rSocket")
在玩家的動畫藍圖裡修改動畫邏輯,使用 Slot 來覆蓋某些部位的動畫。
最後的右手手勢是攻擊,利用剛剛的動畫 Slot 就可以只針對部分骨骼做動作。跟劍的攻擊一樣,有combo sections,但是還沒辦法打出遠程魔法攻擊,也就是下一次我要做的,不同武器的攻擊功能。