KLingo Project Documentation 1.0.0
Unreal Engine 5.6 C++ Project Documentation
로딩중...
검색중...
일치하는것 없음
AContactTrigger 클래스 참조

플레이어 접촉 시 이벤트 메시지를 전송하는 트리거 액터 더 자세히 ...

#include <AContactTrigger.h>

+ AContactTrigger에 대한 상속 다이어그램 :
+ AContactTrigger에 대한 협력 다이어그램:

Public 멤버 함수

 AContactTrigger ()
 
ECompassMarkerType GetCompassMarkerType ()
 
virtual void SetShowOnCompass (bool bShow)
 
virtual bool ShouldShowOnCompass () const
 
virtual void Tick (float DeltaTime) override
 

Public 속성

bool bShowOnCompass = true
 
ECompassMarkerType MarkerType
 

Protected 멤버 함수

virtual void BeginPlay () override
 
void OnTriggerBeginOverlap (UPrimitiveComponent *OverlappedComponent, AActor *OtherActor, UPrimitiveComponent *OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult &SweepResult)
 트리거 박스 Overlap 시작 이벤트 핸들러
 
void ServerRPC_OnTrigger (AActor *TriggeringActor)
 서버에서 실행되는 트리거 처리 RPC
 
virtual void SetCompassMarkerInto (ECompassMarkerType InMarkerType) override
 

Protected 속성

bool bIsTriggered
 트리거 활성화 상태 (false = 활성화, true = 비활성화)
 
bool bShowDebugBox
 디버그 드로우 표시 여부
 
FColor DebugBoxColor
 디버그 박스 색상
 
FString EventMessage
 플레이어에게 전송할 이벤트 메시지 (Detail 패널에서 설정)
 
EQuestType QuestType = EQuestType::Read
 
TObjectPtr< class UBoxComponent > TriggerBox
 트리거 영역을 정의하는 박스 컴포넌트
 

Private 멤버 함수

void OnListenResponseScenario (struct FResponseListenScenario &ResponseData, bool bWasSuccessful)
 
void OnReadResponseScenario (struct FResponseReadScenario &ResponseData, bool bWasSuccessful)
 
void OnTriggerScenario (EQuestType InQuestType)
 

Private 속성

TObjectPtr< class UVoiceConversationSystem > VoiceConversationSystem
 

상세한 설명

플레이어 접촉 시 이벤트 메시지를 전송하는 트리거 액터

멀티플레이 환경에서 플레이어가 박스 콜라이더에 접촉하면 ServerRPC를 통해 이벤트 메시지를 전송합니다. 한 번 발동되면 비활성화되어 재발동되지 않습니다.

AContactTrigger.h 파일의 17 번째 라인에서 정의되었습니다.

생성자 & 소멸자 문서화

◆ AContactTrigger()

AContactTrigger::AContactTrigger ( )

AContactTrigger.cpp 파일의 17 번째 라인에서 정의되었습니다.

18{
19 PrimaryActorTick.bCanEverTick = true;
20 bReplicates = true;
21
22 // 루트 컴포넌트로 BoxComponent 생성
23 TriggerBox = CreateDefaultSubobject<UBoxComponent>(TEXT("TriggerBox"));
24 RootComponent = TriggerBox;
25
26 // 박스 크기 기본값 설정
27 TriggerBox->SetBoxExtent(FVector(100.0f, 100.0f, 100.0f));
28
29 // Overlap 이벤트 활성화
30 TriggerBox->SetGenerateOverlapEvents(true);
31 TriggerBox->SetCollisionEnabled(ECollisionEnabled::QueryOnly);
32 TriggerBox->SetCollisionResponseToAllChannels(ECR_Ignore);
33 TriggerBox->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap);
34
35 // 초기값 설정
36 bIsTriggered = false;
37 bShowDebugBox = true;
38 DebugBoxColor = FColor::Green;
39
40 VoiceConversationSystem = CreateDefaultSubobject<UVoiceConversationSystem>(TEXT("VoiceConversationSystem"));
41
44}
FColor DebugBoxColor
디버그 박스 색상
EQuestType QuestType
TObjectPtr< class UVoiceConversationSystem > VoiceConversationSystem
bool bIsTriggered
트리거 활성화 상태 (false = 활성화, true = 비활성화)
bool bShowDebugBox
디버그 드로우 표시 여부
TObjectPtr< class UBoxComponent > TriggerBox
트리거 영역을 정의하는 박스 컴포넌트

다음을 참조함 : bIsTriggered, bShowDebugBox, DebugBoxColor, ICompassTargetInterface::MarkerType, QuestStart, QuestType, Read, TriggerBox, VoiceConversationSystem.

멤버 함수 문서화

◆ BeginPlay()

void AContactTrigger::BeginPlay ( )
overrideprotectedvirtual

AContactTrigger.cpp 파일의 46 번째 라인에서 정의되었습니다.

47{
48 Super::BeginPlay();
49
51
52 // Overlap 이벤트 바인딩
53 if (TriggerBox)
54 TriggerBox->OnComponentBeginOverlap.AddDynamic(this, &AContactTrigger::OnTriggerBeginOverlap);
55}
void OnTriggerBeginOverlap(UPrimitiveComponent *OverlappedComponent, AActor *OtherActor, UPrimitiveComponent *OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult &SweepResult)
트리거 박스 Overlap 시작 이벤트 핸들러
FString EventMessage
플레이어에게 전송할 이벤트 메시지 (Detail 패널에서 설정)
static FString GetStageStartMessage(const EQuestType QuestType)

다음을 참조함 : EventMessage, ULingoGameHelper::GetStageStartMessage(), OnTriggerBeginOverlap(), QuestType, TriggerBox.

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ GetCompassMarkerType()

ECompassMarkerType ICompassTargetInterface::GetCompassMarkerType ( )
inlineinherited

CompassTargetInterface.h 파일의 29 번째 라인에서 정의되었습니다.

29{return MarkerType;}

다음에 의해서 참조됨 : APlayerActor::UpdateCompassMarkers().

+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ OnListenResponseScenario()

void AContactTrigger::OnListenResponseScenario ( struct FResponseListenScenario ResponseData,
bool  bWasSuccessful 
)
private

AContactTrigger.cpp 파일의 183 번째 라인에서 정의되었습니다.

184{
185 if (!bWasSuccessful)
186 return;
187
188 if (UWorld* World = GetWorld())
189 {
190 if (auto GM = ULingoGameHelper::GetLingoGameMode(World))
191 GM->BeginListenQuest(ResponseData);
192
193 // VoiceConversationSystem->PlayVoiceAudio(ResponseData.voice_data);
194
195 AFoodCourtManager* FCourtManager = Cast<AFoodCourtManager>(UGameplayStatics::GetActorOfClass(
196 World, AFoodCourtManager::StaticClass()));
197 if (FCourtManager)
198 {
199 FCourtManager->SpawnFoodContainer();
200 }
201 }
202}
static class ALingoGameMode * GetLingoGameMode(const UObject *WorldContextObject)

다음을 참조함 : ULingoGameHelper::GetLingoGameMode(), AFoodCourtManager::SpawnFoodContainer().

다음에 의해서 참조됨 : OnTriggerScenario().

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ OnReadResponseScenario()

void AContactTrigger::OnReadResponseScenario ( struct FResponseReadScenario ResponseData,
bool  bWasSuccessful 
)
private

AContactTrigger.cpp 파일의 162 번째 라인에서 정의되었습니다.

163{
164 if (!bWasSuccessful)
165 return;
166
167 // ALingoGameState에 시나리오 데이터 전체 저장
168 if (UWorld* World = GetWorld())
169 {
170 if (auto GM = ULingoGameHelper::GetLingoGameMode(World))
171 GM->BeginReadQuest( ResponseData);
172
173 ALuggageManager* LuggageManager = Cast<ALuggageManager>( UGameplayStatics::GetActorOfClass(World, ALuggageManager::StaticClass()));
174
175 if (LuggageManager)
176 {
177 LuggageManager->StartSpawning();
178 // LuggageManager->InitHolder(ResponseData);
179 }
180 }
181}

다음을 참조함 : ULingoGameHelper::GetLingoGameMode(), ALuggageManager::StartSpawning().

다음에 의해서 참조됨 : OnTriggerScenario().

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ OnTriggerBeginOverlap()

void AContactTrigger::OnTriggerBeginOverlap ( UPrimitiveComponent *  OverlappedComponent,
AActor *  OtherActor,
UPrimitiveComponent *  OtherComp,
int32  OtherBodyIndex,
bool  bFromSweep,
const FHitResult &  SweepResult 
)
protected

트리거 박스 Overlap 시작 이벤트 핸들러

AContactTrigger.cpp 파일의 116 번째 라인에서 정의되었습니다.

118{
119 // 이미 트리거되었으면 무시
120 if (bIsTriggered)
121 return;
122
123 // PlayerActor인지 확인
124 APlayerActor* PlayerActor = Cast<APlayerActor>(OtherActor);
125 if (PlayerActor)
126 {
127 // 서버 RPC 호출
128 ServerRPC_OnTrigger(PlayerActor);
129 }
130}
void ServerRPC_OnTrigger(AActor *TriggeringActor)
서버에서 실행되는 트리거 처리 RPC
Main character driven directly by the player.

다음을 참조함 : bIsTriggered, ServerRPC_OnTrigger().

다음에 의해서 참조됨 : BeginPlay().

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ OnTriggerScenario()

void AContactTrigger::OnTriggerScenario ( EQuestType  InQuestType)
private

AContactTrigger.cpp 파일의 145 번째 라인에서 정의되었습니다.

146{
147 if (auto KLingoNetwork = UKLingoNetworkSystem::Get(GetWorld()))
148 {
149 switch (InQuestType)
150 {
151 case EQuestType::Read:
152 KLingoNetwork->RequestReadScenario( FResponseReadScenarioDelegate::CreateUObject(this, &AContactTrigger::OnReadResponseScenario));
153 break;
154
155 case EQuestType::Listen: // 듣기
156 KLingoNetwork->RequestListenScenario( FResponseListenScenarioDelegate::CreateUObject(this, &AContactTrigger::OnListenResponseScenario));
157 break;
158 }
159 }
160}
void OnListenResponseScenario(struct FResponseListenScenario &ResponseData, bool bWasSuccessful)
void OnReadResponseScenario(struct FResponseReadScenario &ResponseData, bool bWasSuccessful)

다음을 참조함 : Listen, OnListenResponseScenario(), OnReadResponseScenario(), Read.

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ ServerRPC_OnTrigger()

void AContactTrigger::ServerRPC_OnTrigger ( AActor *  TriggeringActor)
protected

서버에서 실행되는 트리거 처리 RPC

다음에 의해서 참조됨 : OnTriggerBeginOverlap().

+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ SetCompassMarkerInto()

void AContactTrigger::SetCompassMarkerInto ( ECompassMarkerType  InMarkerType)
overrideprotectedvirtual

ICompassTargetInterface(으)로부터 재구현되었습니다.

AContactTrigger.cpp 파일의 204 번째 라인에서 정의되었습니다.

205{
206 MarkerType = InMarkerType;
207}

다음을 참조함 : ICompassTargetInterface::MarkerType.

◆ SetShowOnCompass()

virtual void ICompassTargetInterface::SetShowOnCompass ( bool  bShow)
inlinevirtualinherited

CompassTargetInterface.h 파일의 33 번째 라인에서 정의되었습니다.

◆ ShouldShowOnCompass()

virtual bool ICompassTargetInterface::ShouldShowOnCompass ( ) const
inlinevirtualinherited

CompassTargetInterface.h 파일의 32 번째 라인에서 정의되었습니다.

32{return bShowOnCompass;}

다음에 의해서 참조됨 : APlayerActor::UpdateCompassMarkers().

+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ Tick()

void AContactTrigger::Tick ( float  DeltaTime)
overridevirtual

AContactTrigger.cpp 파일의 57 번째 라인에서 정의되었습니다.

58{
59 Super::Tick(DeltaTime);
60
62 {
63 FVector BoxCenter = TriggerBox->GetComponentLocation();
64 FVector BoxExtent = TriggerBox->GetScaledBoxExtent();
65 FRotator BoxRotation = TriggerBox->GetComponentRotation();
66
67 // 디버그 박스 표시 (트리거 활성화 상태일 때만)
68 if (!bIsTriggered)
69 {
70 DrawDebugBox(
71 GetWorld(),
72 BoxCenter,
73 BoxExtent,
74 BoxRotation.Quaternion(),
76 false,
77 -1.0f,
78 0,
79 2.0f
80 );
81 }
82
83 // 트리거 정보를 텍스트로 표시
84 FString StatusText = bIsTriggered ? TEXT("[TRIGGERED]") : TEXT("[ACTIVE]");
85 FColor TextColor = bIsTriggered ? FColor::Red : FColor::Green;
86
87 FVector TextLocation = BoxCenter + FVector(0.0f, 0.0f, BoxExtent.Z + 50.0f);
88
89 // 상태 표시
90 DrawDebugString(
91 GetWorld(),
92 TextLocation,
93 StatusText,
94 nullptr,
95 TextColor,
96 0.0f,
97 true,
98 1.2f
99 );
100
101 // 이벤트 메시지 표시
102 FVector MessageLocation = TextLocation + FVector(0.0f, 0.0f, 30.0f);
103 DrawDebugString(
104 GetWorld(),
105 MessageLocation,
106 FString::Printf(TEXT("Message: %s"), *EventMessage),
107 nullptr,
108 FColor::White,
109 0.0f,
110 true,
111 1.0f
112 );
113 }
114}

다음을 참조함 : bIsTriggered, bShowDebugBox, DebugBoxColor, EventMessage, TriggerBox.

멤버 데이터 문서화

◆ bIsTriggered

bool AContactTrigger::bIsTriggered
protected

트리거 활성화 상태 (false = 활성화, true = 비활성화)

AContactTrigger.h 파일의 63 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : AContactTrigger(), OnTriggerBeginOverlap(), Tick().

◆ bShowDebugBox

bool AContactTrigger::bShowDebugBox
protected

디버그 드로우 표시 여부

AContactTrigger.h 파일의 67 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : AContactTrigger(), Tick().

◆ bShowOnCompass

bool ICompassTargetInterface::bShowOnCompass = true
inherited

CompassTargetInterface.h 파일의 27 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : APlayerActor::APlayerActor().

◆ DebugBoxColor

FColor AContactTrigger::DebugBoxColor
protected

디버그 박스 색상

AContactTrigger.h 파일의 71 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : AContactTrigger(), Tick().

◆ EventMessage

FString AContactTrigger::EventMessage
protected

플레이어에게 전송할 이벤트 메시지 (Detail 패널에서 설정)

AContactTrigger.h 파일의 59 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : BeginPlay(), Tick().

◆ MarkerType

◆ QuestType

EQuestType AContactTrigger::QuestType = EQuestType::Read
protected

AContactTrigger.h 파일의 55 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : AContactTrigger(), BeginPlay().

◆ TriggerBox

TObjectPtr<class UBoxComponent> AContactTrigger::TriggerBox
protected

트리거 영역을 정의하는 박스 컴포넌트

AContactTrigger.h 파일의 52 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : AContactTrigger(), BeginPlay(), Tick().

◆ VoiceConversationSystem

TObjectPtr<class UVoiceConversationSystem> AContactTrigger::VoiceConversationSystem
private

AContactTrigger.h 파일의 75 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : AContactTrigger().


이 클래스에 대한 문서화 페이지는 다음의 파일들로부터 생성되었습니다.: