在前幾天的開發中,我們已經完成角色的攻擊動畫與攻擊判定,角色能夠進行連擊,並依據判定範圍對目標造成傷害。下一步,我們要延伸系統,新增武器裝備功能,讓角色可以手持不同武器並切換武器,豐富戰鬥體驗。
透過這樣的設計,我們可以實現一個 可擴充、可模組化、穩定的武器裝備系統,並與已完成的攻擊動畫和判定無縫結合,為角色戰鬥系統增加更多彈性與深度。
iThome30daysCharacter.h
public:
bool bbHavingWeapon=false;
UStaticMeshComponent* WWeaponMeshComponent;
iThome30daysCharacter.cpp
void AiThome30daysCharacter::DoAttack(UAnimMontage* AnimMontage, FName ComboNotify, bool bHavingWeapon, UStaticMeshComponent* WeaponMeshC)
{
if (!bIsAttacking)
{
bbHavingWeapon = bHavingWeapon;
WWeaponMeshComponent = WeaponMeshC;
...
void AiThome30daysCharacter::DoAttackTrace(FName TraceSocketStart, FName TraceSocketEnd, float Radius, TArray<TEnumAsByte<EObjectTypeQuery>> CollideObjectType)
{
if (WWeaponMeshComponent)
{
Start = WWeaponMeshComponent->GetSocketLocation(TraceSocketStart);
End = WWeaponMeshComponent->GetSocketLocation(TraceSocketEnd);
}else
{
Start = GetMesh()->GetSocketLocation(TraceSocketStart);
End = (TraceSocketEnd!=NAME_None) ? GetMesh()->GetSocketLocation(TraceSocketEnd) : Start;
}
...
在武器 Mesh 增加兩個 Socket:
完成!