This document is about: QUANTUM 2
SWITCH TO

상호작용

개요

InteractionsSystem은 엔티티들 간의 상호작용 메커니즘을 제공합니다.

설정

상호작용을 구현하는 방법에는 IInteractableObjectController에 의존하는 직접 상호 작용 또는 IInteractableTriggerController에 의존하는 트리거 콜라이더를 사용하는 두 가지가 있습니다. 이러한 접근 방식은 별도로 사용하거나 서로 조합하여 사용할 수 있습니다.

상호작용 할 수 있는 객체

IInteractableObjectController는 상호 작용 가능한 엔티티의 엔티티 컨트롤러에 의해 구현됩니다. Interact() 메소드에서 true를 반환하는 것은 상호 작용이 성공했음을 의미합니다.

C#

public interface IInteractableObjectController
{
    bool Interact(Frame frame, EntityRef entity, EntityRef instigator);
}

Interactions 컴포넌트를 가진 모든 엔티티는 다음을 통해 상호작용을 할 수 있습니다:

  • InteractCommand (플레이어) 전송 또는,
  • InputDesires (AI) 내의 속성 설정.

또는 InteractionsDesires를 직접 설정할 수 있습니다.

상호작용 가능한 트리거

상호 작용 가능한 트리거를 생성하려면 객체에 트리거 PhysicsCollider가 있어야 하며 엔티티 컨트롤러는 IInteractableTriggerController를 구현해야 합니다. 비트리거 PhysicsCollider 그리고 PhysicsBody를 가진 모든 엔티티가 이 단계내로 들어갈 수 있습니다.

C#

public interface IInteractableTriggerController
{
    bool OnEnter(Frame frame, EntityRef entity, EntityRef instigator, TriggerInfo3D info);
    void OnExit(Frame frame, EntityRef entity, EntityRef instigator, ExitInfo3D info);
}

OnEnter() 메소드에서 true를 반환하면 상호 작용이 성공했음을 의미합니다. InteractableTrigger 컴포넌트에서 현재 상호 작용하는 지시자(엔티티) 목록을 얻을 수 있습니다. 엔티티(또는 모든 하위 부분)가 트리거 볼륨에서 이동되어 발생자 목록에서 제거되면 OnExit()가 호출됩니다.

예제

PLAYGROUND_Interactions 씬에서 발견된 문은 몇 가지 상호작용을 나타냅니다. 예를 들어 DoorControllerIInteractableObjectController를 구현합니다. 그러나 에이전트가 문 자체와 직접 상호 작용하는 대신 에이전트는 버튼과 상호 작용하여 문과의 상호 작용을 발생시킵니다. 이 동작을 활성화하기 위해 Interactable Button 컴포넌트를 사용하며 SignalReceivers 목록 속성을 통해 DoorController와 연결됩니다.

door interaction example
Door Interaction Example

InteractableToggle 컴포넌트도 유사한 방식으로 동작합니다.

Back to top