24.11.25 TurnToTarget 수정 사항 입니다.
기존에 코드에서 잘못 캐스팅 했어서 회전이 안되었었는데 수정 했습니다.
공격시에 플레이어 캐릭터를 계속해서 바라보게 회전하고 전투 시작 애니메이션 재생시에도 똑같이 플레이어 캐릭터를 바라보게 하였습니다.
BTT_EDR_TurnToTarget.h
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "BehaviorTree/BTTaskNode.h"
#include "BTT_EDR_TurnToTarget.generated.h"
/**
*
*/
UCLASS()
class EDR_API UBTT_EDR_TurnToTarget : public UBTTaskNode
{
GENERATED_BODY()
public:
UBTT_EDR_TurnToTarget();
virtual EBTNodeResult::Type ExecuteTask(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory)override;
};
반응형
BTT_EDR_TurnToTarget.cpp
// Fill out your copyright notice in the Description page of Project Settings
#include "BTT_EDR_TurnToTarget.h"
#include "Enemy_EDR_AIController.h"
#include "MyCharacter.h"
#include "EDR/YS/EDRCharacter.h"
#include "BehaviorTree/BlackboardComponent.h"
UBTT_EDR_TurnToTarget::UBTT_EDR_TurnToTarget()
{
NodeName = TEXT("Turn");
}
EBTNodeResult::Type UBTT_EDR_TurnToTarget::ExecuteTask(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory)
{
EBTNodeResult::Type Result = Super::ExecuteTask(OwnerComp, NodeMemory);
// MyCharacter 캐스팅
auto MyCharacter = Cast<AMyCharacter>(OwnerComp.GetAIOwner()->GetPawn());
if (nullptr == MyCharacter)
{
GEngine->AddOnScreenDebugMessage(-1, 2.0f, FColor::Red, TEXT("MyCharacter NULL"));
return EBTNodeResult::Failed;
}
// target 캐스팅
auto Target = Cast<AEDRCharacter>(OwnerComp.GetBlackboardComponent()->GetValueAsObject(AEnemy_EDR_AIController::TargetKey));
if (nullptr == Target)
{
GEngine->AddOnScreenDebugMessage(-1, 2.0f, FColor::Red, TEXT("Target NULL"));
return EBTNodeResult::Failed;
}
// target과 mycharacter의 차이 벡터값
FVector LookVecter = Target->GetActorLocation() - MyCharacter->GetActorLocation();
// 로케이션 변경
LookVecter.Z = 0.0f;
FRotator TargetRot = FRotationMatrix::MakeFromX(LookVecter).Rotator();
MyCharacter->SetActorRotation(FMath::RInterpTo(MyCharacter->GetActorRotation(), TargetRot, GetWorld()->GetDeltaSeconds(), 2.0f));
return EBTNodeResult::Succeeded;
}
비헤이비어트리
전투시작 애니메이션이 끝나지 않았을경우에도 오른쪽 노드에서 플레이어를 계속 쳐다봅니다.
Attack실행시에도 플레이어를 계속 쳐다봅니다.
실행화면
'Unreal Engine 5 > EDR_Project' 카테고리의 다른 글
EDR_Project / EDR_Boss_Knight (3) 피격시 이펙트, 사운드 (0) | 2024.11.26 |
---|---|
EDR_Project / CanAttack (3) (0) | 2024.11.25 |
EDR_Project / IsFightStart (1) 비헤이비어트리 수정 (0) | 2024.11.25 |
EDR_Project / Character (10) (2) | 2024.11.23 |
EDR_Project / CanAttack (1) BTS_EDR_AbleAttack (0) | 2024.11.23 |