7#include "Components/BoxComponent.h"
8#include "DrawDebugHelpers.h"
12#include "GameFramework/PlayerController.h"
18 PrimaryActorTick.bCanEverTick =
true;
22 TriggerBox = CreateDefaultSubobject<UBoxComponent>(TEXT(
"TriggerBox"));
26 TriggerBox->SetBoxExtent(FVector(100.0f, 100.0f, 100.0f));
30 TriggerBox->SetCollisionEnabled(ECollisionEnabled::QueryOnly);
31 TriggerBox->SetCollisionResponseToAllChannels(ECR_Ignore);
32 TriggerBox->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap);
53 Super::Tick(DeltaTime);
57 FVector BoxCenter =
TriggerBox->GetComponentLocation();
58 FVector BoxExtent =
TriggerBox->GetScaledBoxExtent();
59 FRotator BoxRotation =
TriggerBox->GetComponentRotation();
68 BoxRotation.Quaternion(),
78 FString StatusText =
bIsTriggered ? TEXT(
"[TRIGGERED]") : TEXT(
"[ACTIVE]");
79 FColor TextColor =
bIsTriggered ? FColor::Red : FColor::Green;
81 FVector TextLocation = BoxCenter + FVector(0.0f, 0.0f, BoxExtent.Z + 50.0f);
98 UPrimitiveComponent* OverlappedComponent, AActor* OtherActor,
99 UPrimitiveComponent* OtherComp, int32 OtherBodyIndex,
100 bool bFromSweep,
const FHitResult& SweepResult)
111 APlayerActor* PlayerActor = Cast<APlayerActor>(OtherActor);
117 PRINTLOG(TEXT(
"ATeleportTrigger: TeleportOut이 설정되지 않았습니다!"));
122 FTransform TargetTransform =
TeleportOut->GetActorTransform();
127 BroadcastActor->SendTeleportAllPlayers(TargetTransform,
this);
128 PRINTLOG( TEXT(
"텔레포트 요청: %s"), *TargetTransform.ToString());
133 if (ActorHasTag(FName(
"ReadQuestEnd")))
135 GS->SetAllCompassVisibility(
false);
136 GS->SetCompassVisibilityByTag(
"ListenQuestStart",
true);
138 else if (ActorHasTag(FName(
"ListenQuestEnd")))
140 GS->SetAllCompassVisibility(
false);
141 GS->SetCompassVisibilityByTag(
"Whitney",
true);
148 BroadcastActor->SendDoorMessage(
DoorIndex,
true,
this);
153 PRINTLOG(TEXT(
"ATeleportTrigger: NetworkBroadcastActor를 찾을 수 없습니다!"));
네트워크 복제를 위한 전역 브로드캐스트 Actor
Declares the player-controlled character actor.
YiSan 전반에서 사용하는 공용 인터페이스를 선언합니다.
#define PRINTLOG(fmt,...)
#define PRINT_STRING(fmt,...)
네트워크 복제를 위한 전역 브로드캐스트 Actor
static ANetworkBroadcastActor * Get(const UObject *WorldContextObject)
싱글톤 인스턴스 가져오기
Main character driven directly by the player.
virtual void Tick(float DeltaTime) override
void OnTriggerBeginOverlap(UPrimitiveComponent *OverlappedComponent, AActor *OtherActor, UPrimitiveComponent *OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult &SweepResult)
트리거 박스 Overlap 시작 이벤트 핸들러
TObjectPtr< class ATeleportOut > TeleportOut
텔레포트 목표 위치를 나타내는 TeleportOut Actor
FColor DebugBoxColor
디버그 박스 색상
bool bIsOneShot
원샷 모드 활성화 여부 (true = 한 번만 작동, false = 반복 작동 가능)
bool bShowDebugBox
디버그 드로우 표시 여부
virtual void BeginPlay() override
virtual void OnActivate_Implementation()
TObjectPtr< class UBoxComponent > TriggerBox
트리거 영역을 정의하는 박스 컴포넌트
virtual void SetCompassMarkerInto(ECompassMarkerType InMarkerType) override
bool bIsTriggered
트리거 활성화 상태 (false = 활성화, true = 비활성화)
ECompassMarkerType MarkerType