InteractionComponent

플레이어가 엔티티와 상호작용할 수 있는 기능을 제공합니다.

# Properties

[{"index":"KeyboardKey ActionKey (Sync)","0":"Interaction에 사용할 Key를 설정합니다."}]

[{"index":"string ActionName (Sync)","0":"말풍선에 표시될 상호작용의 이름을 설정합니다."}]

[{"index":"Vector2 BoxOffset (Deprecated) (Sync)","0":"IsLegacy가 true인 이전 시스템에서 사용할 수 있습니다. 엔티티를 기준으로 충돌체 직사각형의 중심점 위치를 설정합니다."}]

[{"index":"Vector2 BoxSize (Sync)","0":"직사각형 충돌체의 너비와 높이를 지정합니다."}]

[{"index":"float CircleRadius (Sync)","0":"원형 충돌체의 반지름입니다. ColliderType이 Circle일 때 유효합니다."}]

[{"index":"string ColliderName (Deprecated) (ReadOnly) (HideFromInspector)","0":"더는 사용하지 않는 프로퍼티입니다. CollisionGroup을 사용하세요."}]

[{"index":"Vector2 ColliderOffset (Sync)","0":"엔티티를 기준으로 충돌체의 중심점 위치를 설정합니다. IsLegacy가 false인 신규 시스템에서 사용할 수 있습니다."}]

[{"index":"ColliderType ColliderType (Sync)","0":"충돌체의 타입을 설정합니다. IsLegacy가 false인 신규 시스템에서 사용할 수 있습니다."}]

[{"index":"CollisionGroup CollisionGroup (ReadOnly) (HideFromInspector)","0":"충돌체의 충돌 그룹입니다."}]

[{"index":"float HoldingDuration (Sync)","0":"InteractionType이 KeyHoldingDuration 또는 KeyUpAfterHoldingDuration일 때 얼마 동안 키를 누르고 있어야 하는지 설정합니다. 초 단위를 사용합니다."}]

[{"index":"Vector2 InfoOffset (Deprecated) (Sync)","0":"더는 사용하지 않는 프로퍼티입니다."}]

[{"index":"InteractType InteractionType (Sync)","0":"상호작용을 위해 필요한 키 입력 방식을 설정합니다."}]

[{"index":"boolean IsLegacy (ReadOnly)","0":"이 Component가 이전의 시스템으로 동작할지를 설정합니다. 신규 시스템은 충돌체가 TransformComponent의 회전과 크기에 영향을 받습니다. 또한 ColliderType을 설정해 원 모양 충돌체를 사용할 수 있습니다."}]

[{"index":"SyncList PolygonPoints (Sync)","0":"다각형 충돌체를 이루는 점들의 위치입니다. ColliderType이 Polygon일 때 유효합니다."}]

[{"index":"boolean ShowActionInfo (Sync)","0":"플레이어가 가까이 접근했을 때 말풍선이 나타나 ActionName과 ActionKey를 보여줄지 여부를 설정합니다. 말풍선을 표시하기 위해 플레이 중 자동으로 ChatBalloonComponent가 추가됩니다."}]

##### inherited from Component:

[{"index":"boolean Enable (Sync)","0":"컴포넌트 활성화 여부를 확인합니다."}]

[{"index":"boolean EnableInHierarchy (ReadOnly) (HideFromInspector)","0":"계층 구조상에서 이 컴포넌트가 Enable 상태인지를 반환합니다. Enable이 true일지라도 엔티티의 Enable이 false라면 false를 반환합니다."}]

[{"index":"Entity Entity (ReadOnly)","0":"이 컴포넌트를 소유한 엔티티입니다."}]

# Methods

[{"index":"void OnEnter() (Deprecated) (ScriptOverridable)","0":"더는 사용하지 않는 함수입니다. InteractionEnterEvent를 활용하세요."}]

[{"index":"void OnInteraction() (Deprecated) (ScriptOverridable)","0":"더는 사용하지 않는 함수입니다. InteractionEvent를 활용하세요."}]

[{"index":"void OnLeave() (Deprecated) (ScriptOverridable)","0":"더는 사용하지 않는 함수입니다. InteractionLeaveEvent를 활용하세요."}]

[{"index":"void SetOnEnter(func onEnterFunction) (Deprecated)","0":"더는 사용하지 않는 함수입니다. InteractionEnterEvent를 활용하세요."}]

[{"index":"void SetOnInteraction(func onInteractionFunction) (Deprecated)","0":"더는 사용하지 않는 함수입니다. InteractionEvent를 활용하세요."}]

[{"index":"void SetOnLeave(func onLeaveFunction) (Deprecated)","0":"더는 사용하지 않는 함수입니다. InteractionLeaveEvent를 활용하세요."}]

##### inherited from Component:

[{"index":"boolean IsClient()","0":"현재 실행 환경이 클라이언트인지 아닌지의 여부를 반환합니다."}]

[{"index":"boolean IsServer()","0":"현재 실행 환경이 서버인지 아닌지의 여부를 반환합니다."}]

# Events

[{"index":"InteractionEnterEvent","0":"Interaction영역 안으로 들어올 때 발생하는 이벤트입니다."}]

[{"index":"InteractionEvent","0":"Interaction 했을 때 발생하는 이벤트입니다."}]

[{"index":"InteractionLeaveEvent","0":"Interaction 영역 밖으로 벗어날 때 발생하는 이벤트입니다."}]

# Examples

Interaction 될 경우 Player Entity가 가지고 있는 MovementComponent의 InputSpeed가 3으로 변화합니다.
    
    
    @Component
    script InteractionEffectController extends Component
        @EventSender("Self")
        handler HandleInteractionEnterEvent(InteractionEnterEvent event)
        -- Parameters
        local InteractionEntity = event.InteractionEntity
        --------------------------------------------------------
        if self:IsClient() then
        	return
        end
    
        local effectRoot = _EntityService:GetEntityByPath(EntityPath)
        effectRoot.Enable = true
        end
    
        @EventSender("Self")
        handler HandleInteractionLeaveEvent(InteractionLeaveEvent event)
        -- Parameters
        local InteractionEntity = event.InteractionEntity
        --------------------------------------------------------
        if self:IsClient() then
        	return
        end
    
        local effectRoot = _EntityService:GetEntityByPath(EntityPath)
        effectRoot.Enable = false
        end
    
        @EventSender("Self")
        handler HandleInteractionEvent(InteractionEvent event)
        -- Parameters
        local InteractionEntity = event.InteractionEntity
        --------------------------------------------------------
        if self:IsServer() then
        	return
        end
    
        InteractionEntity.MovementComponent.InputSpeed = 3
        end
    end
    

# SeeAlso

  * MovementComponent
  * InteractionEnterEvent
  * InteractionEvent
  * InteractionLeaveEvent
  * EntityService