今天要來實作角色的 近戰攻擊功能,透過輸入按鍵觸發動畫 Montage,讓角色可以進行揮擊攻擊。
跟其他按鍵一樣,新增一個 Input Action 然後在IMC_Defulat 設置按鍵。
新增一個 DoAttack()
函式,裡面播放動畫 Montage。
iThome30daysCharacter.h
:
UFUNCTION(BlueprintCallable, Category="Input")
virtual void DoAttack(UAnimMontage* AnimMontage);
UPROPERTY(Category="Character: Camera", EditAnywhere, BlueprintReadWrite)
bool bIsAttacking;
iThome30daysCharacter.cpp
:
void AiThome30daysCharacter::DoAttack(UAnimMontage* AnimMontage)
{
float duration = AnimMontage->GetPlayLength();
if (AnimMontage && !bIsAttacking)
{
PlayAnimMontage(AnimMontage);
bIsAttacking = true;
}else
{
bIsAttacking = false;
}
}
目前的系統只做到「播放揮擊動畫」。未來可以再加:
今天先完成最基本的近戰攻擊輸入與動畫播放,明天可以在這基礎上繼續擴充攻擊判定。