[task] | wikipedia [title] | InputService [category] | Services [rephrased] | # InputService InputService는 사용자가 입력하는 키보드, 마우스, 터치 등의 조작을 감지하고 이를 처리하기 위한 서비스입니다. 다양한 입력 상황에 따라 여러 유형의 이벤트가 발생하며, 스크립트는 해당 이벤트를 수신하여 게임 로직을 수행할 수 있습니다. ## 이벤트 InputService는 다음과 같은 이벤트들을 제공합니다. **키보드 입력 관련 이벤트** * **KeyDownEvent**: 사용자가 키를 눌렀을 때 1회 발생합니다. * **KeyHoldEvent**: 사용자가 키를 누르고 있는 [original] | - **ExitPopupClosedEvent** 종료 팝업을 닫을 때 발생하는 이벤트입니다. - **ExitPopupOpenedEvent** 종료 팝업을 열 때 발생하는 이벤트입니다. - **KeyDownEvent** Key를 눌렀을 때 1회 발생합니다. - **KeyHoldEvent** Key를 누르는 동안 발생합니다. 짧게 누르면 발생하지 않습니다. - **KeyReleaseEvent** Key를 눌렀다 뗐을 때 1회 발생합니다. 짧게 누르면 발생하지 않습니다. - **KeyUpEvent** Key를 눌렀다 [chunk_id] | Services:306:1
[task] | knowledge_list [title] | InputService [category] | Services [rephrased] | 제공된 문서 내용만 근거로 InputService 관련 핵심 사실을 추출한 목록입니다. 1. `ExitPopupClosedEvent`는 종료 팝업이 닫힐 때 발생하는 이벤트입니다. 2. `ExitPopupOpenedEvent`는 종료 팝업이 열릴 때 발생하는 이벤트입니다. 3. `KeyDownEvent`는 키(Key)가 눌렸을 때 1회 발생하는 이벤트입니다. 4. `KeyHoldEvent`는 키(Key)를 누르고 있는 동안 발생하는 이벤트이며, 짧게 누르는 경우 발생하지 않습니다. 5. `KeyReleaseEvent`는 키(Key [original] | - **ExitPopupClosedEvent** 종료 팝업을 닫을 때 발생하는 이벤트입니다. - **ExitPopupOpenedEvent** 종료 팝업을 열 때 발생하는 이벤트입니다. - **KeyDownEvent** Key를 눌렀을 때 1회 발생합니다. - **KeyHoldEvent** Key를 누르는 동안 발생합니다. 짧게 누르면 발생하지 않습니다. - **KeyReleaseEvent** Key를 눌렀다 뗐을 때 1회 발생합니다. 짧게 누르면 발생하지 않습니다. - **KeyUpEvent** Key를 눌렀다 [chunk_id] | Services:306:1
[task] | distill [title] | InputService [category] | Services [rephrased] | # InputService 유저 입력 처리를 담당하는 서비스입니다. 모든 메서드는 `[ClientOnly]`로 클라이언트에서만 실행됩니다. ## Methods - **`void CursorLockMode(CursorLockMode lockMode)`** 마우스 커서 조작 방식을 설정합니다. Windows PC 환경만 지원합니다. - **`CursorLockMode GetCursorLockMode()`** 현재 마우스 커서 제어 방식을 반환합니다. Windows PC 환경만 지원합니다. - **`Vector2 GetCur [original] | 유저의 입력과 관련된 기능을 제공합니다. # Methods - **void CursorLockMode(CursorLockMode lockMode) [ClientOnly]** 마우스 커서 조작 방식을 제어합니다. Windows PC 환경만 지원합니다. - **CursorLockMode GetCursorLockMode() [ClientOnly]** 마우스 커서 제어 방식을 반환합니다. Windows PC 환경만 지원합니다. - **Vector2 GetCursorPosition() [ClientOnly]** 커서의 현재 위 [chunk_id] | Services:306:0
[task] | distill [title] | InputService [category] | Services [rephrased] | ### InputService: HandleKeyReleaseEvent **시그니처** ```lua [service: InputService] HandleKeyReleaseEvent (KeyReleaseEvent event) ``` **속성** * **실행 공간**: Client * **발신자**: InputService * **파라미터**: `event` (`KeyReleaseEvent`) * `event.key`: `KeyboardKey` enum **동작 규칙** * 키가 **해제(release) [original] | ```lua Event Handler: [service: InputService] HandleKeyReleaseEvent (KeyReleaseEvent event) { --------------- Native Event Sender Info ---------------- -- Sender: InputService -- Space: Client --------------------------------------------------------- -- Parameters local key = event.key --- [chunk_id] | Services:306:3
[task] | diverse_qa [title] | InputService [category] | Services [rephrased] | 질문: InputService는 어떤 기능을 제공하는 서비스인가요? 답변: InputService는 유저의 입력과 관련된 기능을 제공하는 서비스입니다. 질문: `CursorLockMode` 메서드를 호출할 때 필요한 조건은 무엇이며, 그 기능은 무엇인가요? 답변: `CursorLockMode` 메서드는 [ClientOnly] 환경에서 사용 가능하며, 마우스 커서 조작 방식을 제어하는 기능을 합니다. 또한 Windows PC 환경만 지원합니다. 질문: `GetCursorPosition()` 메서드가 모바일 환경에서 두 곳 이상을 [original] | 유저의 입력과 관련된 기능을 제공합니다. # Methods - **void CursorLockMode(CursorLockMode lockMode) [ClientOnly]** 마우스 커서 조작 방식을 제어합니다. Windows PC 환경만 지원합니다. - **CursorLockMode GetCursorLockMode() [ClientOnly]** 마우스 커서 제어 방식을 반환합니다. Windows PC 환경만 지원합니다. - **Vector2 GetCursorPosition() [ClientOnly]** 커서의 현재 위 [chunk_id] | Services:306:0
[task] | diverse_qa [title] | EffectService [category] | Services [rephrased] | 질문: 이 문서의 예제 스크립트는 어떤 기능들을 구현하나요? 답변: 2단 점프와 스킬을 간단하게 만드는 기능을 구현합니다. 질문: 2단 점프는 어떤 조건에서 발동되도록 설정되어 있나요? 답변: 공중에서 점프(Alt or Space)를 사용할 때 발동되도록 `InputService`의 이벤트를 사용하여 설정되어 있습니다. 질문: Q키를 눌렀다가 떼는 순간 스킬을 사용하도록 만들기 위해 어떤 메서드를 사용하나요? 답변: `RemoveEffect()` 메서드를 사용합니다. 질문: 스크립트의 Property 블록에 선언된 프로퍼티의 [original] | 2단 점프와 스킬을 간단하게 만드는 예제입니다. 2단 점프는 공중에서 점프(Alt or Space)를 사용할 때 발동되도록 `InputService`의 이벤트를 사용합니다. Q키를 눌렀다가 떼는 순간 스킬을 사용하도록 만들기 위해 `RemoveEffect()`를 사용합니다. ```lua Property: [None] number EffectSerial = 0 Event Handler: [service: InputService] HandleKeyDownEvent (KeyDownEvent event) { -- Paramet [chunk_id] | Services:304:1
[task] | knowledge_list [title] | InputService [category] | Services [rephrased] | 제공된 문서에는 `InputService`와 관련된 다음 핵심 사실이 포함되어 있습니다. 1. `InputService`의 `HandleKeyReleaseEvent` 이벤트 핸들러는 클라이언트 공간에서 실행되며, 매개변수로 `KeyReleaseEvent` 타입의 `event` 객체를 수신합니다. 2. `KeyReleaseEvent` 이벤트 객체의 `key` 프로퍼티는 `KeyboardKey` 타입의 값(예: `KeyboardKey.Z`)을 반환하여 어떤 키가 해제되었는지 식별합니다. 3. 키 해제 이벤트 핸들러 내부에서 `self [original] | ```lua Event Handler: [service: InputService] HandleKeyReleaseEvent (KeyReleaseEvent event) { --------------- Native Event Sender Info ---------------- -- Sender: InputService -- Space: Client --------------------------------------------------------- -- Parameters local key = event.key --- [chunk_id] | Services:306:3
[task] | extract_knowledge [title] | SpawnService [category] | Services [rephrased] | # SpawnService: 엔티티 복제 및 모델 스폰 ## 개념 설명 `SpawnService`는 월드에 새로운 엔티티를 생성(스폰)하는 역할을 담당합니다. 주로 두 가지 방식으로 엔티티를 생성할 수 있습니다: 1. **기존 엔티티 복제**: 이미 존재하는 엔티티를 템플릿으로 사용하여 동일한 구조와 컴포넌트를 가진 엔티티를 복제합니다. 2. **모델 ID 기반 스폰**: 에디터에서 설정된 모델 ID를 기반으로 엔티티를 생성하며, 특정 엔티티의 자식으로 생성할 수 있습니다. ## API 사용법 ### `_SpawnServ [original] | 엔티티 하나를 복제하고, 복제된 엔티티의 자식 엔티티로 모델을 스폰하는 예제입니다. ```lua Method: [server only] void OnBeginPlay() { local entity = _EntityService:GetEntityByPath("Entity Path") local clone1 = _SpawnService:SpawnByEntity(entity, "clone1", Vector3(1, 0, 0)) local modelId = "Model Entry Id" local clone2 = _SpawnS [chunk_id] | Services:305:1
[task] | diverse_qa [title] | InputService [category] | Services [rephrased] | 질문: `ExitPopupClosedEvent`는 어떤 시점에 발생하는 이벤트인가요? 답변: 종료 팝업을 닫을 때 발생하는 이벤트입니다. 질문: 종료 팝업을 열 때 발생하는 이벤트의 이름은 무엇인가요? 답변: `ExitPopupOpenedEvent`입니다. 질문: `KeyDownEvent`와 `KeyUpEvent`는 각각 어떤 동작 시 1회씩 발생하나요? 답변: `KeyDownEvent`는 키를 눌렀을 때, `KeyUpEvent`는 키를 눌렀다 뗐을 때 각각 1회씩 발생합니다. 질문: `KeyHoldEvent`는 키를 짧게 눌 [original] | - **ExitPopupClosedEvent** 종료 팝업을 닫을 때 발생하는 이벤트입니다. - **ExitPopupOpenedEvent** 종료 팝업을 열 때 발생하는 이벤트입니다. - **KeyDownEvent** Key를 눌렀을 때 1회 발생합니다. - **KeyHoldEvent** Key를 누르는 동안 발생합니다. 짧게 누르면 발생하지 않습니다. - **KeyReleaseEvent** Key를 눌렀다 뗐을 때 1회 발생합니다. 짧게 누르면 발생하지 않습니다. - **KeyUpEvent** Key를 눌렀다 [chunk_id] | Services:306:1
[task] | diverse_qa [title] | InputService [category] | Services [rephrased] | 질문: 위 코드에서 사용된 이벤트 핸들러의 서비스 이름은 무엇인가요? 답변: InputService입니다. 질문: 위 코드에서 정의된 이벤트 핸들러 함수의 이름은 무엇인가요? 답변: HandleKeyReleaseEvent입니다. 질문: 위 코드에서 처리되는 이벤트의 파라미터 타입은 무엇인가요? 답변: KeyReleaseEvent입니다. 질문: 위 코드에서 주석으로 명시된 실행 공간(Space)은 어디인가요? 답변: Client입니다. 질문: 위 코드에서 사용자가 어떤 키를 눌렀을 때 동작이 수행되나요? 답변: Keyboard [original] | ```lua Event Handler: [service: InputService] HandleKeyReleaseEvent (KeyReleaseEvent event) { --------------- Native Event Sender Info ---------------- -- Sender: InputService -- Space: Client --------------------------------------------------------- -- Parameters local key = event.key --- [chunk_id] | Services:306:3
[task] | extract_knowledge [title] | InputService [category] | Services [rephrased] | # InputService 이벤트 처리 ## 개념 설명 `InputService`는 키보드, 마우스, 터치 입력과 UI 팝업(종료/메뉴) 상태 변경 시 발생하는 이벤트를 제공합니다. 입력 방식에 따라 이벤트 발생 조건이 다르며, 특히 '단축 입력(짧게 누르기)'에 따라 특정 이벤트가 발생하지 않는 경우가 있습니다. ## API 사용법 `InputService`와 관련된 주요 이벤트 핸들러는 다음과 같습니다. | 이벤트 이름 | 발생 조건 | | :--- | :--- | | `ExitPopupOpenedEvent` | 종료 팝업 [original] | - **ExitPopupClosedEvent** 종료 팝업을 닫을 때 발생하는 이벤트입니다. - **ExitPopupOpenedEvent** 종료 팝업을 열 때 발생하는 이벤트입니다. - **KeyDownEvent** Key를 눌렀을 때 1회 발생합니다. - **KeyHoldEvent** Key를 누르는 동안 발생합니다. 짧게 누르면 발생하지 않습니다. - **KeyReleaseEvent** Key를 눌렀다 뗐을 때 1회 발생합니다. 짧게 누르면 발생하지 않습니다. - **KeyUpEvent** Key를 눌렀다 [chunk_id] | Services:306:1
[task] | diverse_qa [title] | SpawnService [category] | Services [rephrased] | 질문: `SpawnService`의 `SpawnByEntity` 메서드를 사용했을 때, 복제된 엔티티에 자식 엔티티를 추가로 스폰하려면 어떤 인자를 전달해야 하나요? 답변: `SpawnByModelId` 메서드의 마지막 인자로 복제된 엔티티(`clone1`)를 전달해야 합니다. 질문: 아래 코드에서 `clone2`는 어떤 위치에 생성되나요? ```lua local clone2 = _SpawnService:SpawnByModelId(modelId, "clone2", Vector3(0, 1, 0), clone1) ``` 답변: `cl [original] | 엔티티 하나를 복제하고, 복제된 엔티티의 자식 엔티티로 모델을 스폰하는 예제입니다. ```lua Method: [server only] void OnBeginPlay() { local entity = _EntityService:GetEntityByPath("Entity Path") local clone1 = _SpawnService:SpawnByEntity(entity, "clone1", Vector3(1, 0, 0)) local modelId = "Model Entry Id" local clone2 = _SpawnS [chunk_id] | Services:305:1
[task] | extract_knowledge [title] | SpawnService [category] | Services [rephrased] | # SpawnService `SpawnService`는 맵 또는 씬 내에 새로운 엔티티(Entity)를 생성(스폰)하는 기능을 제공하는 서비스입니다. 모델 ID를 기반으로하거나, 기존 엔티티를 복제하여 새 엔티티를 생성할 수 있습니다. ## 1. 개념 설명 mLua에서 엔티티를 생성할 때는 `_SpawnService`를 사용합니다. 주요 생성 방식은 두 가지입니다. 1. **모델 기반 스폰 (`SpawnByModelId`)**: 에디터에서 미리 정의된 모델 ID를 지정하여 해당 모델의 엔티티를 생성합니다. 2. **엔티티 [original] | 엔티티 스폰 관련 기능을 제공합니다. # Methods - **Entity Clone(string name, Entity original, Entity parent = nil, boolean posOffset = true, boolean dynamic = true) [Deprecated]** 더는 사용하지 않는 함수입니다. SpawnByEntity(Entity, string, Vector3, Entity, boolean) 함수를 사용하세요. - **Entity SpawnByEntity(Entity entity, string [chunk_id] | Services:305:0
[task] | distill [title] | InputService [category] | Services [rephrased] | # InputService: Z키 롱프레스 점프 예제 **DefaultPlayer**에 적용하여, Z키 누른 시간만큼 플레이어 크기가 커지고, 놓을 때 누른 시간의 10배 힘으로 점프하는 컴포넌트입니다. ### 1. 프로퍼티 누른 시점 기록을 위한 프로퍼티를 정의합니다. ```lua Property: [None] number KeyDownTime = 0 ``` ### 2. 이벤트 핸들러 모든 이벤트는 `InputService`에서 발생하며, `event.key`가 `KeyboardKey.Z`일 때만 동작합니다. **Key [original] | Z키를 누른 시간만큼 플레이어의 크기가 커지고, 높게 점프하는 컴포넌트를 만드는 예제입니다. 만든 컴포넌트를 **DefaultPlayer**에 추가해야 정상 작동합니다. 먼저 Z키를 눌렀을 때 웅크린 자세로 바꾸기 위해 `KeyDownEvent`를 아래와 같이 작성합니다. 누른 시간을 계산하기 위해서 **KeyDownTime** 프로퍼티를 만들고 현재 시간을 기록합니다. ```lua Property: [None] number KeyDownTime = 0 Event Handler: [service: InputService [chunk_id] | Services:306:2
[task] | extract_knowledge [title] | EffectService [category] | Services [rephrased] | # EffectService `EffectService`는 맵 내에서 이펙트를 재생하고 제어하는 기능을 제공합니다. 이 서비스는 맵의 고정된 위치에 이펙트를 배치하거나, 특정 엔티티에 부착하여 이펙트를 관리할 수 있게 합니다. ## 1. 개념 설명 `EffectService`는 주로 두 가지 방식으로 이펙트를 생성합니다. 1. **고정 위치 재생 (`PlayEffect`)**: 현재 맵의 절대 좌표(`Vector3`) 기준 특정 위치에 이펙트를 생성합니다. 엔티티와 독립적으로 존재하며, 해당 위치가 그대로 유지됩니다. 2. [original] | 이펙트 제어 기능을 제공합니다. # Methods - **integer PlayEffect(string animationClipRUID, Entity instigator, Vector3 position, float zRotation, Vector3 scale, boolean isLoop = false, Dictionary<string, any> options = nil)** 현재 맵의 고정된 위치에 이펙트를 재생하고 이펙트를 제거하기 위한 일련 번호를 반환합니다. 이펙트 생성에 실패할 경우 0을 반환합니다. 사용 가능한 옵션 [chunk_id] | Services:304:0
[task] | diverse_qa [title] | InputService [category] | Services [rephrased] | 질문: 이 예제 스크립트가 정상적으로 작동하려면 컴포넌트를 어떤 엔티티에 추가해야 하나요? 답변: 만든 컴포넌트를 **DefaultPlayer**에 추가해야 정상 작동합니다. 질문: Z키를 누르는 동안 플레이어의 크기를 변경하는 역할을 수행하는 이벤트 핸들러의 이름은 무엇인가요? 답변: `HandleKeyHoldEvent`입니다. 질문: 아래 코드는 무엇을 수행하나요? ```lua local key = event.key if key == KeyboardKey.Z then self.Entity.StateComponent:C [original] | Z키를 누른 시간만큼 플레이어의 크기가 커지고, 높게 점프하는 컴포넌트를 만드는 예제입니다. 만든 컴포넌트를 **DefaultPlayer**에 추가해야 정상 작동합니다. 먼저 Z키를 눌렀을 때 웅크린 자세로 바꾸기 위해 `KeyDownEvent`를 아래와 같이 작성합니다. 누른 시간을 계산하기 위해서 **KeyDownTime** 프로퍼티를 만들고 현재 시간을 기록합니다. ```lua Property: [None] number KeyDownTime = 0 Event Handler: [service: InputService [chunk_id] | Services:306:2
[task] | wikipedia [title] | InputService [category] | Services [rephrased] | 다음은 Z키를 누른 시간만큼 플레이어의 크기가 커지고, 해당 시간과 비례하는 힘으로 점프하는 컴포넌트를 만드는 예제입니다. 이 컴포넌트는 **DefaultPlayer**에 추가되어야 정상적으로 작동합니다. Z키를 눌렀을 때 웅크린 자세로 변경하고, 누른 시점을 기록하기 위해 `KeyDownEvent` 핸들러를 구현합니다. 누른 시간을 계산하기 위해 **KeyDownTime** 프로퍼티를 정의하고, 이벤트 발생 시 현재 시간을 기록합니다. ```lua Property: [None] number KeyDownTime = 0 Ev [original] | Z키를 누른 시간만큼 플레이어의 크기가 커지고, 높게 점프하는 컴포넌트를 만드는 예제입니다. 만든 컴포넌트를 **DefaultPlayer**에 추가해야 정상 작동합니다. 먼저 Z키를 눌렀을 때 웅크린 자세로 바꾸기 위해 `KeyDownEvent`를 아래와 같이 작성합니다. 누른 시간을 계산하기 위해서 **KeyDownTime** 프로퍼티를 만들고 현재 시간을 기록합니다. ```lua Property: [None] number KeyDownTime = 0 Event Handler: [service: InputService [chunk_id] | Services:306:2
[task] | wikipedia [title] | InputService [category] | Services [rephrased] | # InputService **InputService**는 메이플스토리 월드 스크립트 환경에서 유저의 입력 관련 기능을 제공하는 서비스입니다. 이 서비스는 마우스 커서 제어, 키보드 상태 확인, 포인터 위치 조회, 그리고 UI와의 상호작용 감지 기능을 포함하며, 대부분의 메서드는 클라이언트 환경(`[ClientOnly]`)에서만 실행됩니다. ## 커서 제어 및 상태 조회 InputService는 마우스 커서의 동작 방식과 시각적 형태를 제어하고, 현재 포인터의 위치 및 UI 위 존재 여부를 조회하는 메서드를 제공합니다. ** [original] | 유저의 입력과 관련된 기능을 제공합니다. # Methods - **void CursorLockMode(CursorLockMode lockMode) [ClientOnly]** 마우스 커서 조작 방식을 제어합니다. Windows PC 환경만 지원합니다. - **CursorLockMode GetCursorLockMode() [ClientOnly]** 마우스 커서 제어 방식을 반환합니다. Windows PC 환경만 지원합니다. - **Vector2 GetCursorPosition() [ClientOnly]** 커서의 현재 위 [chunk_id] | Services:306:0
[task] | wikipedia [title] | InputService [category] | Services [rephrased] | # InputService **InputService**는 플레이어의 입력을 처리하는 시스템으로, 특정 키가 눌리거나 놓일 때 발생하는 이벤트를 스크립트 컴포넌트가 수신할 수 있도록 합니다. 이 서비스를 통해 개발자는 키보드, 마우스 등 다양한 입력 장치의 상태 변화를 감지하고 이에 따른 로직을 구현할 수 있습니다. ## 이벤트 처리 스크립트 컴포넌트는 `InputService`에서 방출되는 이벤트를 이벤트 핸들러(Event Handler)를 통해 수신합니다. 이벤트 핸들러는 `[service: InputService]` 태그 [original] | ```lua Event Handler: [service: InputService] HandleKeyReleaseEvent (KeyReleaseEvent event) { --------------- Native Event Sender Info ---------------- -- Sender: InputService -- Space: Client --------------------------------------------------------- -- Parameters local key = event.key --- [chunk_id] | Services:306:3
[task] | wikipedia [title] | InputService [category] | Services [rephrased] | **InputService** InputService는 메이플스토리 월드(MapleStory Worlds) 스크립트 언어 mLua에서 사용자의 입력을 감지하고 처리하는 데 사용되는 서비스입니다. 이 서비스는 키보드 조작과 스크린 터치 등 다양한 입력 이벤트를 수신하여 게임 로직에 반영할 수 있도록 지원합니다. InputService와 연계하여 주로 사용되는 컴포넌트 및 데이터 타입에는 `BasicParticleComponent`, `RigidbodyComponent`, `StateComponent`, `TransformCompo [original] | * BasicParticleComponent * RigidbodyComponent * StateComponent * TransformComponent * KeyboardKey * KeyDownEvent * KeyHoldEvent * KeyReleaseEvent * KeyUpEvent * ScreenTouchEvent * ScreenTouchReleaseEvent * UILogic * UtilLogic * Vector3 * EntityService * [InputService를 활용한 입력과 액션](/docs?postId=209) [chunk_id] | Services:306:5
[task] | distill [title] | InputService [category] | Services [rephrased] | **[Services] InputService** `InputService`는 키보드, 마우스, 스크린 터치 등 사용자 입력을 감지하여 엔티티에 이벤트를 전달하는 서비스입니다. ### 주요 이벤트 타입 * **키보드**: `KeyDownEvent`, `KeyHoldEvent`, `KeyReleaseEvent`, `KeyUpEvent` (키 상태 변화 시 발생) * **스크린 터치**: `ScreenTouchEvent`, `ScreenTouchReleaseEvent` (터치 시작/종료 시 발생) * **키 정의**: ` [original] | * BasicParticleComponent * RigidbodyComponent * StateComponent * TransformComponent * KeyboardKey * KeyDownEvent * KeyHoldEvent * KeyReleaseEvent * KeyUpEvent * ScreenTouchEvent * ScreenTouchReleaseEvent * UILogic * UtilLogic * Vector3 * EntityService * [InputService를 활용한 입력과 액션](/docs?postId=209) [chunk_id] | Services:306:5
[task] | knowledge_list [title] | InputService [category] | Services [rephrased] | 1. `InputService`는 유저의 입력과 관련된 기능을 제공하는 서비스입니다. 2. `void CursorLockMode(CursorLockMode lockMode)` 메서드는 마우스 커서 조작 방식을 제어하며, `[ClientOnly]`로 클라이언트에서만 실행되고 Windows PC 환경만 지원합니다. 3. `CursorLockMode GetCursorLockMode()` 메서드는 현재 마우스 커서 제어 방식을 반환하며, `[ClientOnly]`로 클라이언트에서만 실행되고 Windows PC 환경만 지원합니다. 4. `V [original] | 유저의 입력과 관련된 기능을 제공합니다. # Methods - **void CursorLockMode(CursorLockMode lockMode) [ClientOnly]** 마우스 커서 조작 방식을 제어합니다. Windows PC 환경만 지원합니다. - **CursorLockMode GetCursorLockMode() [ClientOnly]** 마우스 커서 제어 방식을 반환합니다. Windows PC 환경만 지원합니다. - **Vector2 GetCursorPosition() [ClientOnly]** 커서의 현재 위 [chunk_id] | Services:306:0
[task] | knowledge_list [title] | InputService [category] | Services [rephrased] | 제시된 문서에 포함된 `InputService` 관련 핵심 사실과 코드 예제에서 추출한 API 정보, 제약사항, 그리고 논리적 관계를 바탕으로 핵심 사실을 정리한 목록입니다. 1. 본 예제 컴포넌트는 정상 작동하기 위해 반드시 **DefaultPlayer** 엔티티에 추가되어야 합니다. 2. `Property: [None] number KeyDownTime = 0` 프로퍼티는 Z키를 누른 시점의 현재 시간을 기록하여 누른 시간을 계산하는 데 사용되며, 서버와 클라이언트 간 동기화되지 않습니다([None]). 3. `HandleKe [original] | Z키를 누른 시간만큼 플레이어의 크기가 커지고, 높게 점프하는 컴포넌트를 만드는 예제입니다. 만든 컴포넌트를 **DefaultPlayer**에 추가해야 정상 작동합니다. 먼저 Z키를 눌렀을 때 웅크린 자세로 바꾸기 위해 `KeyDownEvent`를 아래와 같이 작성합니다. 누른 시간을 계산하기 위해서 **KeyDownTime** 프로퍼티를 만들고 현재 시간을 기록합니다. ```lua Property: [None] number KeyDownTime = 0 Event Handler: [service: InputService [chunk_id] | Services:306:2
[task] | extract_knowledge [title] | InputService [category] | Services [rephrased] | # InputService: 사용자 입력 처리 `InputService`는 클라이언트에서 사용자의 키보드, 마우스, 터치 입력 상태를 조회하고, 마우스 커서의 표시 및 동작을 제어하는 기능을 제공합니다. 모든 메서드는 `[ClientOnly]` 실행 공간에서만 사용 가능합니다. ## 1. 개념 설명 * **입력 상태 조회**: 특정 키가 눌렸는지, 어떤 키라도 눌렸는지, 커서가 UI 위인지 여부를 실시간으로 확인할 수 있습니다. * **커서 제어**: 마우스 커서의 모양 변경, 가시성 토글, 잠금 모드 설정, 위치 초기 [original] | 유저의 입력과 관련된 기능을 제공합니다. # Methods - **void CursorLockMode(CursorLockMode lockMode) [ClientOnly]** 마우스 커서 조작 방식을 제어합니다. Windows PC 환경만 지원합니다. - **CursorLockMode GetCursorLockMode() [ClientOnly]** 마우스 커서 제어 방식을 반환합니다. Windows PC 환경만 지원합니다. - **Vector2 GetCursorPosition() [ClientOnly]** 커서의 현재 위 [chunk_id] | Services:306:0
[task] | extract_knowledge [title] | InputService [category] | Services [rephrased] | # InputService: 키 입력 처리 ## 개념 설명 `InputService`는 클라이언트 공간에서 키보드 및 마우스 등 입력 장치를 감지하고, 해당 이벤트를 스크립트 컴포넌트에 전달하는 서비스입니다. 이 서비스는 `[service: InputService]` 속성으로 선언된 이벤트 핸들러를 통해 특정 키의 눌림(Down) 또는 풀림(Release) 이벤트를 수신할 수 있습니다. ## API 사용법 `InputService`에서 제공하는 이벤트 핸들러는 다음과 같은 구조를 가집니다. - **핸들러 선언**: `[serv [original] | ```lua Event Handler: [service: InputService] HandleKeyReleaseEvent (KeyReleaseEvent event) { --------------- Native Event Sender Info ---------------- -- Sender: InputService -- Space: Client --------------------------------------------------------- -- Parameters local key = event.key --- [chunk_id] | Services:306:3
[task] | distill [title] | InputService [category] | Services [rephrased] | # [Services] InputService 터치 및 마우스 입력을 처리하는 서비스입니다. ## 터치 입력 `InputService`의 이벤트를 통해 터치 위치와 ID를 획득합니다. ```lua Event Handler: [service: InputService] HandleScreenTouchEvent (ScreenTouchEvent event) { local TouchId = event.TouchId local TouchPoint = event.TouchPoint -- TouchId, TouchPoint 활용 } [original] | #### 터치 입력 터치한 위치에 파티클을 보여주는 예제입니다. ```lua Method: [server only] void OnBeginPlay () { local root = _EntityService:GetEntityByPath(EntityPath) for i = 1, #root.Children do root.Children[i].Enable = false end } Event Handler: [service: InputService] HandleScreenTouchEvent (ScreenTouchEvent ev [chunk_id] | Services:306:4
[task] | diverse_qa [title] | InputService [category] | Services [rephrased] | 질문: 문서에 언급된 컴포넌트(Component)의 이름은 무엇인가요? 답변: 문서에 언급된 컴포넌트는 BasicParticleComponent, RigidbodyComponent, StateComponent, TransformComponent입니다. 질문: 입력과 관련된 이벤트(Event) 중 키보드 입력을 처리하는 이벤트들은 무엇인가요? 답변: 키보드 입력을 처리하는 이벤트는 KeyDownEvent, KeyHoldEvent, KeyReleaseEvent, KeyUpEvent입니다. 질문: 화면 터치와 관련된 이벤트는 무엇인가 [original] | * BasicParticleComponent * RigidbodyComponent * StateComponent * TransformComponent * KeyboardKey * KeyDownEvent * KeyHoldEvent * KeyReleaseEvent * KeyUpEvent * ScreenTouchEvent * ScreenTouchReleaseEvent * UILogic * UtilLogic * Vector3 * EntityService * [InputService를 활용한 입력과 액션](/docs?postId=209) [chunk_id] | Services:306:5
[task] | distill [title] | LocalizationService [category] | Services [rephrased] | # LocalizationService 텍스트 번역 기능을 제공합니다. ## Properties - **`string CurrentLocaleId` [ReadOnly]**: 현재 클라이언트 언어 코드. 출시 월드에서는 '월드 언어', 메이커에서는 '테스트 플레이 언어' 설정값입니다. - **`Translator LocalTranslator` [ReadOnly]**: `CurrentLocaleId`에 해당하는 `Translator` 객체. ## Methods - **`string GetText(string key)` [Clien [original] | 텍스트 번역 관련 기능을 제공합니다. # Properties - **string CurrentLocaleId [ReadOnly]** 클라이언트의 현재 언어 코드입니다. 출시 월드에서는 '월드 언어' 메뉴에서 선택한 언어이며, 메이커에서는 '테스트 플레이 언어' 옵션에서 설정한 언어입니다. - **Translator LocalTranslator [ReadOnly]** CurrentLocaleId에 해당하는 Translator 객체입니다. # Methods - **string GetText(string key) [Clie [chunk_id] | Services:307:0
[task] | extract_knowledge [title] | EffectService [category] | Services [rephrased] | # EffectService: 이펙트 재생 및 제어 `EffectService`는 엔티티에 시각적 이펙트를 재생하고, 특정 시점에 이펙트를 제거하는 기능을 제공하는 서비스입니다. 주로 `InputService`와 결합하여 사용자 입력에 반응하는 즉각적인 시각 피드백(2단 점프 이펙트, 스킬 시전 이펙트 등)을 구현하는 데 사용됩니다. ## 개념 설명 mLua에서 이펙트는 크게 두 가지 방식으로 제어됩니다. 1. **일시적 이펙트 (`PlayEffect`)**: 특정 좌표에서 일시적으로 생성되어 재생 시간을 채우면 자동 소멸 [original] | 2단 점프와 스킬을 간단하게 만드는 예제입니다. 2단 점프는 공중에서 점프(Alt or Space)를 사용할 때 발동되도록 `InputService`의 이벤트를 사용합니다. Q키를 눌렀다가 떼는 순간 스킬을 사용하도록 만들기 위해 `RemoveEffect()`를 사용합니다. ```lua Property: [None] number EffectSerial = 0 Event Handler: [service: InputService] HandleKeyDownEvent (KeyDownEvent event) { -- Paramet [chunk_id] | Services:304:1
[task] | knowledge_list [title] | InputService [category] | Services [rephrased] | 제시된 문서의 내용을 바탕으로 핵심 사실을 추출한 목록입니다. 1. `InputService`의 `HandleScreenTouchEvent(ScreenTouchEvent event)` 이벤트 핸들러는 클라이언트 공간(Client)에서 발생하며, 이벤트 객체 `ScreenTouchEvent`로부터 `TouchId`와 `TouchPoint` 매개변수를 추출할 수 있습니다. 2. `InputService`의 `HandleScreenTouchReleaseEvent(ScreenTouchReleaseEvent event)` 이벤트 핸들러는 [original] | #### 터치 입력 터치한 위치에 파티클을 보여주는 예제입니다. ```lua Method: [server only] void OnBeginPlay () { local root = _EntityService:GetEntityByPath(EntityPath) for i = 1, #root.Children do root.Children[i].Enable = false end } Event Handler: [service: InputService] HandleScreenTouchEvent (ScreenTouchEvent ev [chunk_id] | Services:306:4