전투 시작 애니메이션이 재생중일때 다른 행동으로 인한 충돌을 막는 BTS입니다.
MyCharacter에서 전투 시작 애니메이션을 재생 할 때 Attack 애니메이션과 겹치는 순간들이 생기기도 했고,
첫 전투 돌입시에만 전투시작 애니메이션이 재생 됐으면 좋겠다 생각을 했습니다.
그러기 위해 블랙보드 변수에 bool값으로 재생이 끝났는지 확인하고 다음 행동을 할 수 있도록 하였습니다.
BTS_EDR_IsFightStart.h
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "BehaviorTree/BTService.h"
#include "BTS_EDR_IsFightStart.generated.h"
/**
*
*/
UCLASS()
class EDR_API UBTS_EDR_IsFightStart : public UBTService
{
GENERATED_BODY()
UBTS_EDR_IsFightStart();
protected:
virtual void TickNode(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory, float DeltaSeconds)override;
bool bIsFightStartEnd;
};
반응형
BTS_EDR_IsFightStart.cpp
// Fill out your copyright notice in the Description page of Project Settings.
#include "BTS_EDR_IsFightStart.h"
#include "Enemy_EDR_AIController.h"
#include "BehaviorTree/BlackboardComponent.h"
#include "Mycharacter.h"
UBTS_EDR_IsFightStart::UBTS_EDR_IsFightStart()
{
bIsFightStartEnd = false;
}
void UBTS_EDR_IsFightStart::TickNode(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory, float DeltaSeconds)
{
Super::TickNode(OwnerComp, NodeMemory, DeltaSeconds);
AEnemy_EDR_AIController* AIController = Cast<AEnemy_EDR_AIController>(OwnerComp.GetOwner());
if (AIController)
{
// 캐스팅
AMyCharacter* MyCharacter = Cast<AMyCharacter>(AIController->GetPawn());
if (MyCharacter)
{
// 공격애니메이션 재생중인지
bIsFightStartEnd = MyCharacter->IsFightStarting;
if (bIsFightStartEnd)
{
//GEngine->AddOnScreenDebugMessage(-1, 2.0f, FColor::Red, TEXT("ASDFADSF"));
// 블랙보드 변수에 저장
OwnerComp.GetBlackboardComponent()->SetValueAsBool(AEnemy_EDR_AIController::FightStartEnd, bIsFightStartEnd);
}
}
}
}
MyCharacter를 캐스팅하여 전투 시작 애니메이션이 종료 되었는지 확인하는 변수를 불러와 블랙보드 변수에 추가하였습니다.
비헤이비어트리에 추가
FightStart 라는 이름의 데코레이터를 추가하여 블랙보드 변수인 FightStartEnd가 true일 경우에만 Attack 로직을 실행하게 하였습니다.
'Unreal Engine 5 > EDR_Project' 카테고리의 다른 글
EDR_Project / CanAttack (1) BTS_EDR_AbleAttack (0) | 2024.11.23 |
---|---|
EDR_Project / EDR_Boss_Knight (2) 루트 모션 (0) | 2024.11.23 |
EDR_Project / AIController (1) 블랙보드 변수 추가 (2) | 2024.11.18 |
EDR_Project / Detect (2) 전투 시작 애니메이션 재생 함수 호출 (0) | 2024.11.18 |
EDR_Project / Character (9) 전투 시작 애니메이션, 걷는 속도 천천히 증가, miss 사운드 (0) | 2024.11.18 |