관리 메뉴

Mini

[UE5] 특정액터에만 반응하도록 구현 본문

UE5

[UE5] 특정액터에만 반응하도록 구현

Mini_96 2023. 9. 18. 00:25

1. 가고일에 태그달기

 

 

2. 문-Trigger파일 수정

해당태그 액터만 반환하도록

// Fill out your copyright notice in the Description page of Project Settings.


#include "TriggerComponent.h"

UTriggerComponent::UTriggerComponent()
{
	//문제 : 컴포넌트는 틱 작동안하게 되어잇음 (성능문제)
	//해결 : tick 함수 활성화
	PrimaryComponentTick.bCanEverTick = true;
}

// Called when the game starts
void UTriggerComponent::BeginPlay()
{
	Super::BeginPlay();


}

void UTriggerComponent::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
{
	Super::TickComponent(DeltaTime, TickType, ThisTickFunction);

	AActor* Actor = GetAcceptableActor();
	if (Actor != nullptr) {
		UE_LOG(LogTemp, Display, TEXT("unlocking"));
	}
	else {
		UE_LOG(LogTemp, Display, TEXT("locking"));
	}
	
}

/*
* 태그에 해당하는 액터포인터 반환
*/
AActor* UTriggerComponent::GetAcceptableActor() const
{
	//액터들 포인터 저장하는 벡터
	TArray<AActor*> Actors;
	GetOverlappingActors(Actors);	//오버랩된 액터들을 포인터로 Actors에 담아줌.

	for (auto Actor : Actors) {
		//태그가 언락일때만 반응하도록
		if (Actor->ActorHasTag(AcceptableActorTag)) {
			return Actor;
		}

	}

	return nullptr;
}