← 목록

mLua · Nemotron SDG 질문-응답 (SFT)

총 21,567개 · 페이지 100/719
🔀 랜덤
불러오는 중…

[task] | single_turn [pass] | ✅ 통과 [title] | InputService [question] | HandleKeyReleaseEvent 안에서 self.Entity.TransformComponent.Scale 을 수정하려면 어떤 타입의 값으로 설정해야 하나요? [answer] | `self.Entity.TransformComponent.Scale` 은 `Vector3` 타입의 값으로 설정해야 합니다. 참고 문서의 예제 코드에서 `Vector3.one` 이라는 `Vector3` 타입의 값을 할당하는 것으로 확인할 수 있습니다. ```lua Event Handler: [service: InputService] HandleKeyReleaseEvent (KeyReleaseEvent event) { local key = event.key if key == KeyboardKey.Z then self.Enti [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 예제 코드를 근거로 Scale 프로퍼티가 Vector3 타입임을 정확하고 간결하게 설명했습니다. [source_doc] | ```lua Event Handler: [service: InputService] HandleKeyReleaseEvent (KeyReleaseEvent event) { --------------- Native Event Sender Info ---------------- -- Sender: InputService -- Space: Client --------------------------------------------------------- -- Parameters local key = event.key ---

[task] | instruction_following [pass] | ✅ 통과 [title] | InputService [question] | 문서에 언급된 11개 항목 중 컴포넌트(Component) 이름이 포함된 항목만 추출하여 단계별 번호 목록으로 정리해줘. [answer] | 참고 문서에 언급된 11개 항목 중 'Component'라는 단어가 포함된 이름은 다음과 같습니다. 1. BasicParticleComponent 2. RigidbodyComponent 3. StateComponent 4. TransformComponent [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서의 11개 항목 중 'Component'가 포함된 4개 항목을 정확하고 간결하게 추출하여 요청에 부합함. [source_doc] | * BasicParticleComponent * RigidbodyComponent * StateComponent * TransformComponent * KeyboardKey * KeyDownEvent * KeyHoldEvent * KeyReleaseEvent * KeyUpEvent * ScreenTouchEvent * ScreenTouchReleaseEvent * UILogic * UtilLogic * Vector3 * EntityService * [InputService를 활용한 입력과 액션](/docs?postId=209)

[task] | single_turn [pass] | ✅ 통과 [title] | SpawnService [question] | _spawnService:SpawnByEntity와 SpawnByModelId를 함께 사용할 때 부모 엔티티 지정이 왜 필요한가요? [answer] | `_SpawnService:SpawnByEntity`와 `SpawnByModelId`를 함께 사용할 때 부모 엔티티 지정은 **엔티티 간의 계층 구조(Hierarchy)를 형성하기 위해** 필요합니다. 제공된 예제 코드를 보면 다음과 같은 흐름이 있습니다. ```lua local entity = _EntityService:GetEntityByPath("Entity Path") -- 1. 기존 엔티티를 복제하여 clone1 생성 (부모 엔티티 미지정 시 기본 루트 아래에 생성됨) local clone1 = _SpawnService [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 예제 코드를 정확히 인용하여 SpawnByModelId의 4번째 인자가 부모 엔티티임을 설명하고, 계층 구조 형성이라는 질문의 의도에 부합하는 정답을 제시했으므로 매우 우수함. [source_doc] | 엔티티 하나를 복제하고, 복제된 엔티티의 자식 엔티티로 모델을 스폰하는 예제입니다. ```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

[task] | instruction_following [pass] | ✅ 통과 [title] | InputService [question] | InputService의 KeyDownEvent, KeyUpEvent, KeyHoldEvent, KeyReleaseEvent 처리 흐름을 단계별 번호 목록으로 정리하세요. [answer] | InputService의 키 입력 이벤트는 키를 누르는 순간부터 손을 뗀 이후까지의 상태 변화에 따라 다음과 같은 순서로 처리됩니다. 1. **KeyDownEvent**: 키를 처음 누르는 순간 한 번만 발생합니다. * 이 시점에 키를 누른 시작 시간(`_UtilLogic.ElapsedSeconds`)을 기록하여 이후 누른 시간 계산의 기준점으로 사용합니다. * 예제에서는 Z키를 누르면 웅크린 자세(`CROUCH`)로 상태가 변경됩니다. 2. **KeyHoldEvent**: 키를 누른 상태가 유지되는 동안 반복적으로 발 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 예제 코드와 설명에 기반하여 InputService 이벤트 처리 흐름을 단계별로 정확하고 명확하게 정리했으며, KeyReleaseEvent에 대한 조건부 호출 설명도 적절히 포함했습니다. [source_doc] | Z키를 누른 시간만큼 플레이어의 크기가 커지고, 높게 점프하는 컴포넌트를 만드는 예제입니다. 만든 컴포넌트를 **DefaultPlayer**에 추가해야 정상 작동합니다. 먼저 Z키를 눌렀을 때 웅크린 자세로 바꾸기 위해 `KeyDownEvent`를 아래와 같이 작성합니다. 누른 시간을 계산하기 위해서 **KeyDownTime** 프로퍼티를 만들고 현재 시간을 기록합니다. ```lua Property: [None] number KeyDownTime = 0 Event Handler: [service: InputService

[task] | single_turn [pass] | ✅ 통과 [title] | EffectService [question] | `PlayEffect`와 `PlayEffectAttached`의 주요 차이점과 각각 어떤 상황에서 사용해야 하는지 궁금합니다. [answer] | 제공된 참고 문서에는 `PlayEffect`와 `PlayEffectAttached` 함수의 시그니처(매개변수 목록)와 사용 예제만 포함되어 있으며, 두 함수의 구체적인 동작 원리, 리턴값의 의미, 또는 "주요 차이점"에 대한 명시적인 설명 문구는 없습니다. 다만, 문서에 제시된 코드 예제를 통해 각 함수가 어떻게 호출되는지(매개변수 구성)와 반환되는 값이 어떻게 활용되는지에 한해 관찰할 수 있습니다. ### 1. `PlayEffect` * **사용 상황 예시**: 2단 점프 시 점프 이펙트 재생, Q키를 눌렀다가 뗐을 때 스 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서에 명시적 차이 설명이 없음을 인정하고, 코드 예제의 매개변수·반환값·제거 연동 패턴을 근거로 두 함수의 사용 시나리오와 차이를 정확히 추론하여 제시했습니다. [source_doc] | 2단 점프와 스킬을 간단하게 만드는 예제입니다. 2단 점프는 공중에서 점프(Alt or Space)를 사용할 때 발동되도록 `InputService`의 이벤트를 사용합니다. Q키를 눌렀다가 떼는 순간 스킬을 사용하도록 만들기 위해 `RemoveEffect()`를 사용합니다. ```lua Property: [None] number EffectSerial = 0 Event Handler: [service: InputService] HandleKeyDownEvent (KeyDownEvent event) { -- Paramet

[task] | code [pass] | ✅ 통과 [title] | EffectService [question] | Q키를 누르는 순간 EffectService 의 PlayEffectAttached() 를 호출하고 반환된 EffectSerial 을 Property 로 저장한 뒤, Q키를 떼는 순간 HandleKeyUpEvent 에서 RemoveEffect() 를 호출하여 붙은 이펙트를 제거하는 스크립트를 작성해줘 [answer] | Q키를 누르는 순간 `PlayEffectAttached()`를 호출하여 이펙트를 플레이어에 부착하고, 반환된 `EffectSerial`을 프로퍼티에 저장합니다. 이후 Q키를 떼는 순간 `HandleKeyUpEvent`에서 해당 `EffectSerial`을 사용하여 `RemoveEffect()`를 호출하여 이펙트를 제거하는 스크립트는 다음과 같습니다. ```lua Property: [None] number EffectSerial = 0 Event Handler: [service: InputService] HandleKeyDownE [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 질문에서 요구한 Q키 누름/떼기 시 EffectService의 PlayEffectAttached와 RemoveEffect 호출 및 EffectSerial 저장 로직을 참고 문서와 정확히 일치하여 구현했으며, 불필요한 설명 없이 간결하고 명확합니다. [source_doc] | 2단 점프와 스킬을 간단하게 만드는 예제입니다. 2단 점프는 공중에서 점프(Alt or Space)를 사용할 때 발동되도록 `InputService`의 이벤트를 사용합니다. Q키를 눌렀다가 떼는 순간 스킬을 사용하도록 만들기 위해 `RemoveEffect()`를 사용합니다. ```lua Property: [None] number EffectSerial = 0 Event Handler: [service: InputService] HandleKeyDownEvent (KeyDownEvent event) { -- Paramet

[task] | two_turn [pass] | ✅ 통과 [title] | SpawnService [question] | OnBeginPlay에서 _EntityService:GetEntityByPath로 가져온 엔티티를 복제할 때, 복제된 엔티티의 이름과 초기 위치를 지정하는 매개변수 순서와 의미는 무엇인가요? [answer] | `_SpawnService:SpawnByEntity` 메서드를 호출할 때 엔티티를 복제하는 매개변수 순서와 의미는 다음과 같습니다. 1. **원본 엔티티**: 복제할 대상이 되는 엔티티 객체입니다. `_EntityService:GetEntityByPath` 등으로 가져온 엔티티를 여기에 전달합니다. 2. **이름**: 복제된 새 엔티티에 부여할 이름입니다. 3. **위치**: 복제된 엔티티가 스폰될 초기 위치를 나타내는 `Vector3` 값입니다. 예를 들어, 경로를 통해 엔티티를 가져와 이름이 `"clone1"`인 복제본을 ` [followup] | 복제된 엔티티(clone1)를 부모로 지정하여 모델을 스폰할 때, 모델의 ID와 이름, 위치를 지정하는 SpawnByModelId의 인자 구조는 어떻게 되어 있나요? [followup_answer] | `_SpawnService:SpawnByModelId` 메서드를 호출할 때 인자 구조는 다음과 같습니다. 1. **모델 ID**: 스폰할 모델의 고유 식별자 문자열입니다. 2. **이름**: 스폰된 엔티티에 부여할 이름입니다. 3. **위치**: 스폰된 엔티티의 초기 위치를 나타내는 `Vector3` 값입니다. 4. **부모 엔티티 (선택)**: 스폰된 엔티티의 부모로 지정할 엔티티 객체입니다. 이 인자를 지정하면 해당 엔티티의 자식으로 스폰됩니다. 참고 문서의 예제에서는 `clone1`을 부모로 지정하여 모델을 스폰하는 모습을 [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 SpawnByEntity 메서드 시그니처와 예제를 정확히 인용하여 매개변수 순서와 의미를 명확히 설명했으며, 불필요한 정보 없이 간결하고 정확합니다. [source_doc] | 엔티티 하나를 복제하고, 복제된 엔티티의 자식 엔티티로 모델을 스폰하는 예제입니다. ```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

[task] | instruction_following [pass] | ❌ 탈락 [title] | InputService [question] | 터치 입력 예제의 `OnBeginPlay` 메서드 본문만 출력하고, 루트 엔티티의 자식들을 비활성화하는 로직의 의도를 주석으로만 설명하세요. [answer] | ```lua [server only] void OnBeginPlay () { local root = _EntityService:GetEntityByPath(EntityPath) for i = 1, #root.Children do root.Children[i].Enable = false end } ``` [followup] | [followup_answer] | [scores] | helpfulness=1 correctness=2 coherence=2 complexity=None verbosity=2 [judge_reason] | 질문에서 요구한 '주석으로만 설명' 지시를 무시하고 코드만 출력했으며, 코드 블록에 메서드 선언부가 아닌 실행 공간 속성만 포함하는 등 형식적으로 부정확합니다. [source_doc] | #### 터치 입력 터치한 위치에 파티클을 보여주는 예제입니다. ```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

[task] | two_turn [pass] | ✅ 통과 [title] | InputService [question] | 모바일 환경에서 `GetCursorPosition` 메서드를 사용했을 때, 두 곳 이상을 동시에 터치하면 어떤 값이 반환되나요? [answer] | 모바일 환경에서 `GetCursorPosition` 메서드를 사용할 때, 동시에 두 곳 이상을 터치하면 터치 지점들의 **중점(중심점)** 을 `Vector2` 타입으로 반환합니다. [followup] | 모바일 기기에서 `IsPointerOverUI(int32 pointerId)`를 호출할 때, 터치 입력마다 부여되는 `pointerId`의 순서 규칙은 무엇인가요? [followup_answer] | 모바일 기기에서 `IsPointerOverUI(int32 pointerId)`를 호출할 때, 터치 입력마다 `pointerId`가 **1, 2, 3, ...과 같이 1부터 순서대로** 부여됩니다. [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 명시된 '중점을 반환한다'는 정보를 정확하고 간결하게 답변하여 질문에 완벽하게 부합합니다. [source_doc] | 유저의 입력과 관련된 기능을 제공합니다. # Methods - **void CursorLockMode(CursorLockMode lockMode) [ClientOnly]** 마우스 커서 조작 방식을 제어합니다. Windows PC 환경만 지원합니다. - **CursorLockMode GetCursorLockMode() [ClientOnly]** 마우스 커서 제어 방식을 반환합니다. Windows PC 환경만 지원합니다. - **Vector2 GetCursorPosition() [ClientOnly]** 커서의 현재 위

[task] | instruction_following [pass] | ✅ 통과 [title] | InputService [question] | 커서 변경 예제에서 마우스 왼쪽 버튼 입력 상태에 따라 호출되는 `_InputService` 메서드명과 전달되는 인자 2개를 표로 정리하세요. [answer] | 커서 변경 예제에서 마우스 왼쪽 버튼 입력 상태에 따라 호출되는 `_InputService` 메서드명과 전달되는 인자는 다음과 같습니다. | 메서드명 | 인자 1 | 인자 2 | | :--- | :--- | :--- | | `SetCursor` | `self.CursorRUID_Click` 또는 `self.CursorRUID_Normal` | `Vector2.zero` | [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 커서 변경 예제에서 `_InputService:SetCursor` 호출 시 전달되는 두 인자(커서 RUID, Vector2.zero)를 정확히 표로 정리하여 질문에 완벽히 부합함. [source_doc] | #### 터치 입력 터치한 위치에 파티클을 보여주는 예제입니다. ```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

[task] | instruction_following [pass] | ❌ 탈락 [title] | InputService [question] | InputService 관련 컴포넌트와 이벤트 객체 11개를 표로 정리해서, 각각의 이름만 원문 표기 그대로 나열해줘. [answer] | InputService 관련 컴포넌트와 이벤트 객체 11개는 다음과 같습니다. | 구분 | 이름 | | :--- | :--- | | 컴포넌트 | BasicParticleComponent | | 컴포넌트 | RigidbodyComponent | | 컴포넌트 | StateComponent | | 컴포넌트 | TransformComponent | | 이벤트/타입 | KeyboardKey | | 이벤트 | KeyDownEvent | | 이벤트 | KeyHoldEvent | | 이벤트 | KeyReleaseEvent | | 이벤트 | Ke [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=1 coherence=3 complexity=1 verbosity=2 [judge_reason] | 질문에서 요구한 11개 중 UI/Util Logic 등 2개를 누락하고, 문서에 없는 '구분' 카테고리를 임의로 만들어 분류했으며, 요청된 '이름만 원문 표기 그대로' 조건을 충족하지 못함. [source_doc] | * BasicParticleComponent * RigidbodyComponent * StateComponent * TransformComponent * KeyboardKey * KeyDownEvent * KeyHoldEvent * KeyReleaseEvent * KeyUpEvent * ScreenTouchEvent * ScreenTouchReleaseEvent * UILogic * UtilLogic * Vector3 * EntityService * [InputService를 활용한 입력과 액션](/docs?postId=209)

[task] | two_turn [pass] | ✅ 통과 [title] | InputService [question] | 커서가 UI 위인지 여부를 확인하는 `IsPointerOverUI` 메서드에서 `RaycastTarget` 프로퍼티가 false인 UI Entity는 어떻게 처리되나요? [answer] | `IsPointerOverUI` 메서드에서 `RaycastTarget` 프로퍼티가 `false`인 UI Entity는 무시됩니다. 즉, 해당 UI가 화면 위에 있더라도 커서가 그 위에 있다고 판단하지 않습니다. [followup] | Windows PC 환경에서만 지원되는 `CursorLockMode` 관련 메서드를 클라이언트 스크립트에서 호출할 때 주의할 점은 무엇인가요? [followup_answer] | `CursorLockMode` 관련 메서드(`CursorLockMode` 설정용 메서드와 `GetCursorLockMode`)는 Windows PC 환경에서만 지원합니다. 따라서 클라이언트 스크립트에서 이 메서드들을 호출할 때는 실행 환경이 Windows PC인지 확인해야 하며, 다른 플랫폼(예: 모바일, macOS, Linux 등)에서는 지원되지 않으므로 동작하지 않거나 오류가 발생할 수 있습니다. [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서에 명시된 RaycastTarget이 false인 UI Entity는 무시된다는 내용을 정확하고 간결하게 답변했습니다. [source_doc] | 유저의 입력과 관련된 기능을 제공합니다. # Methods - **void CursorLockMode(CursorLockMode lockMode) [ClientOnly]** 마우스 커서 조작 방식을 제어합니다. Windows PC 환경만 지원합니다. - **CursorLockMode GetCursorLockMode() [ClientOnly]** 마우스 커서 제어 방식을 반환합니다. Windows PC 환경만 지원합니다. - **Vector2 GetCursorPosition() [ClientOnly]** 커서의 현재 위

[task] | instruction_following [pass] | ✅ 통과 [title] | LocalizationService [question] | key로 "hello"를 조회하는 GetText 호출 예제를 코드만 출력하고, 사용 공간 제약은 주석으로 명시하세요. [answer] | ```lua Method: [client only] void OnBeginPlay() { local text = _LocalizationService:GetText("hello") log(text) } ``` [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서의 GetText API와 [ClientOnly] 제약사항을 정확히 반영하여 요청된 코드 예제를 간결하게 제공했습니다. [source_doc] | 텍스트 번역 관련 기능을 제공합니다. # Properties - **string CurrentLocaleId [ReadOnly]** 클라이언트의 현재 언어 코드입니다. 출시 월드에서는 '월드 언어' 메뉴에서 선택한 언어이며, 메이커에서는 '테스트 플레이 언어' 옵션에서 설정한 언어입니다. - **Translator LocalTranslator [ReadOnly]** CurrentLocaleId에 해당하는 Translator 객체입니다. # Methods - **string GetText(string key) [Clie

[task] | instruction_following [pass] | ✅ 통과 [title] | LocalizationService [question] | CurrentLocaleId의 읽기 전용 특성과 메이커/출시 월드에서의 값 출처를 3문장 이내로 설명하세요. [answer] | CurrentLocaleId는 읽기 전용(ReadOnly) 속성으로, 클라이언트의 현재 언어 코드를 저장합니다. 출시 월드에서는 '월드 언어' 메뉴에서 선택한 언어가, 메이커에서는 '테스트 플레이 언어' 옵션에서 설정한 언어가 이 값으로 반영됩니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 명시된 CurrentLocaleId의 읽기 전용 특성과 각 환경별 값 출처를 정확하고 간결하게 설명했습니다. [source_doc] | 텍스트 번역 관련 기능을 제공합니다. # Properties - **string CurrentLocaleId [ReadOnly]** 클라이언트의 현재 언어 코드입니다. 출시 월드에서는 '월드 언어' 메뉴에서 선택한 언어이며, 메이커에서는 '테스트 플레이 언어' 옵션에서 설정한 언어입니다. - **Translator LocalTranslator [ReadOnly]** CurrentLocaleId에 해당하는 Translator 객체입니다. # Methods - **string GetText(string key) [Clie

[task] | code [pass] | ✅ 통과 [title] | EffectService [question] | InputService 의 HandleKeyDownEvent 에서 Space 또는 LeftAlt 키 입력 시 PlayerControllerComponent.LookDirectionX 값을 받아 RigidbodyComponent.SetForce() 에 전달하고, 방향에 따라 EffectService 의 PlayEffect() 옵션으로 FlipX 값을 설정하는 스크립트를 작성해줘 [answer] | 요청하신 로직은 `InputService`의 `HandleKeyDownEvent`를 통해 공중 상태일 때 `Space` 또는 `LeftAlt` 키를 입력하면 발동되도록 구성해야 합니다. 이때 `PlayerControllerComponent`의 `LookDirectionX` 값을 가져와 `RigidbodyComponent:SetForce()`에 적용하고, 이 값의 부호에 따라 `_EffectService:PlayEffect()`의 옵션으로 `FlipX`를 설정합니다. ```lua Event Handler: [service: Inpu [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 예제 코드와 API 사용법을 정확히 반영하여 요청된 로직을 간결하고 올바르게 작성했습니다. [source_doc] | 2단 점프와 스킬을 간단하게 만드는 예제입니다. 2단 점프는 공중에서 점프(Alt or Space)를 사용할 때 발동되도록 `InputService`의 이벤트를 사용합니다. Q키를 눌렀다가 떼는 순간 스킬을 사용하도록 만들기 위해 `RemoveEffect()`를 사용합니다. ```lua Property: [None] number EffectSerial = 0 Event Handler: [service: InputService] HandleKeyDownEvent (KeyDownEvent event) { -- Paramet

[task] | code [pass] | ✅ 통과 [title] | SpawnService [question] | _SpawnService:SpawnByEntity(templateEntity, "Boss", Vector3(10, 0, 10), parentEntity, true) 로 부모 엔티티를 지정하여 보스를 스폰하는 스크립트를 작성해줘 [answer] | _SpawnService:SpawnByEntity 메서드를 사용하여 지정된 엔티티를 템플릿으로 삼고, 이름, 위치, 부모 엔티티, 자식 포함 여부를 지정하여 보스를 스폰하는 스크립트입니다. ```lua Method: [server only] void OnBeginPlay() { -- 템플릿으로 사용할 엔티티와 부모 엔티티를 경로로 가져옵니다. -- 실제 경로에 맞게 수정해야 합니다. local templateEntity = _EntityService:GetEntityByPath("/maps/map01/boss [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | SpawnByEntity API의 시그니처와 파라미터를 정확히 적용하여 요청된 스폰 로직을 구현했으며, 문서와 규칙에 부합하는 정상적인 코드입니다. [source_doc] | 엔티티 스폰 관련 기능을 제공합니다. # 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

[task] | single_turn [pass] | ✅ 통과 [title] | InputService [question] | HandleKeyReleaseEvent 핸들러에서 event.key 값이 무엇인지 확인하려면 어떤 코드를 작성해야 하나요? [answer] | `HandleKeyReleaseEvent` 이벤트 핸들러에서 `event.key` 값은 `KeyboardKey` 열거형(Enumeration) 타입입니다. 이 값이 무엇인지 확인하려면 이벤트 핸들러 본문 내에서 `event.key` 변수를 로컬 변수로 할당하고, `log()` 함수를 사용하여 출력하면 됩니다. 참고 문서에 제시된 형식에 따라, 키가 `KeyboardKey.Z`일 때 해당 키 값을 로그로 출력하는 예시 코드는 다음과 같습니다. ```lua Event Handler: [service: InputService] Han [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 예제 코드를 기반으로 log() 함수를 사용하여 event.key 값을 출력하는 올바른 해결책을 명확하고 간결하게 제시했습니다. [source_doc] | ```lua Event Handler: [service: InputService] HandleKeyReleaseEvent (KeyReleaseEvent event) { --------------- Native Event Sender Info ---------------- -- Sender: InputService -- Space: Client --------------------------------------------------------- -- Parameters local key = event.key ---

[task] | instruction_following [pass] | ✅ 통과 [title] | InputService [question] | 제공된 코드 예제에서 키가 눌려졌을 때(`HandleKeyReleaseEvent`) 실행되는 로직과 해당 핸들러가 등록되는 서비스 이름을 3문장 이내로 요약해 주세요. [answer] | 해당 이벤트 핸들러는 `InputService`에 등록됩니다. 키가 눌려진 후 놓아졌을 때(`HandleKeyReleaseEvent`) `event.key`가 `KeyboardKey.Z`인지 확인합니다. `Z`키가 확인되면 엔티티의 `TransformComponent.Scale`을 `Vector3.one`으로 설정하여 기본 크기로 복구합니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서의 코드 예제와 API 명세(InputService, HandleKeyReleaseEvent, KeyboardKey.Z, Vector3.one)를 정확히 3문장 이내로 요약하여 요청사항을 완벽히 충족함. [source_doc] | ```lua Event Handler: [service: InputService] HandleKeyReleaseEvent (KeyReleaseEvent event) { --------------- Native Event Sender Info ---------------- -- Sender: InputService -- Space: Client --------------------------------------------------------- -- Parameters local key = event.key ---

[task] | code [pass] | ✅ 통과 [title] | InputService [question] | _InputService:IsPointerOverUI() 를 활용해 커서가 UI 위에 있을 때만 _InputService:SetCursorVisible(false) 로 커서를 숨기고, 아닐 때 _InputService:SetCursorVisible(true) 로 표시하는 클라이언트 전용 스크립트를 작성해줘 [answer] | ```lua Method: [client only] void OnUpdate(number delta) { if _InputService:IsPointerOverUI() then _InputService:SetCursorVisible(false) else _InputService:SetCursorVisible(true) end } ``` [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 API 명세와 시스템 규칙을 정확히 따랐으며, 질문의 요구사항을 간결하고 명확하게 구현했습니다. [source_doc] | 유저의 입력과 관련된 기능을 제공합니다. # Methods - **void CursorLockMode(CursorLockMode lockMode) [ClientOnly]** 마우스 커서 조작 방식을 제어합니다. Windows PC 환경만 지원합니다. - **CursorLockMode GetCursorLockMode() [ClientOnly]** 마우스 커서 제어 방식을 반환합니다. Windows PC 환경만 지원합니다. - **Vector2 GetCursorPosition() [ClientOnly]** 커서의 현재 위

[task] | code [pass] | ✅ 통과 [title] | EffectService [question] | Q키를 떼는 순간 Entity 의 TransformComponent.Position 을 기준으로 x축 방향(-4, -2, 0, 2, 4)으로 이격된 5개의 위치에서 EffectService 의 PlayEffect() 를 순차적으로 호출해 이펙트 트레일을 만드는 스크립트를 작성해줘 [answer] | Q키를 누르고 있는 동안은 아무 동작을 하지 않고, Q키를 떼는 순간(`KeyUpEvent`)에 Entity의 현재 위치를 기준으로 x축 방향 -4, -2, 0, 2, 4의 오프셋이 적용된 5개 위치에서 `PlayEffect()`를 순차적으로 호출하는 스크립트입니다. 참고 문서의 예제와 동일한 형식(`Property`, `Event Handler` 블록, `_EffectService` 사용법)을 따랐습니다. ```lua Property: [None] number EffectSerial = 0 Event Handler: [ser [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 질문에서 요구한 Q키 KeyUp 이벤트 처리와 5개 위치에서의 PlayEffect 호출을 참고 문서의 API와 구문에 맞게 정확하고 간결하게 구현했습니다. [source_doc] | 2단 점프와 스킬을 간단하게 만드는 예제입니다. 2단 점프는 공중에서 점프(Alt or Space)를 사용할 때 발동되도록 `InputService`의 이벤트를 사용합니다. Q키를 눌렀다가 떼는 순간 스킬을 사용하도록 만들기 위해 `RemoveEffect()`를 사용합니다. ```lua Property: [None] number EffectSerial = 0 Event Handler: [service: InputService] HandleKeyDownEvent (KeyDownEvent event) { -- Paramet

[task] | code [pass] | ✅ 통과 [title] | SpawnService [question] | _SpawnService:SpawnByModelId("model_id_01", "Enemy1", Vector3(0, 0, 0), self.Entity) 를 호출하여 지정된 위치에 적을 스폰하는 스크립트를 작성해줘 [answer] | 제공된 문서를 기준으로, `_SpawnService:SpawnByModelId` 메서드는 `parent` 인자를 필수로 요구합니다. 또한, `OnBeginPlay`와 같은 표준 생명주기 메서드 내에서 실행되며, 서비스는 언더스코어 접두를 사용합니다. 요청하신 코드를 mLua 스크립트 형식에 맞게 작성하면 다음과 같습니다. ```lua Method: [server only] void OnBeginPlay() { local enemy = _SpawnService:SpawnByModelId("model_id_01", "Enem [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서의 SpawnByModelId 시그니처와 mLua 스크립트 규칙에 정확히 부합하는 코드를 제공하며, 필수 인자 설명이 명확하고 간결합니다. [source_doc] | 엔티티 스폰 관련 기능을 제공합니다. # 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

[task] | instruction_following [pass] | ✅ 통과 [title] | InputService [question] | 주어진 예제 코드를 바탕으로 `KeyboardKey.Z` 키를 눌렀을 때 엔티티의 스케일이 `Vector3.one`으로 초기화되는 동작을 구현하는 mLua 스크립트 코드만 출력하고, 설명은 주석으로만 작성해 주세요. [answer] | ```lua Event Handler: [service: InputService] HandleKeyReleaseEvent (KeyReleaseEvent event) { --------------- Native Event Sender Info ---------------- -- Sender: InputService -- Space: Client --------------------------------------------------------- -- Parameters local key = event.key --- [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 예제 코드를 정확히 재현하고, 요구사항에 따라 설명을 주석으로만 작성하여 질문에 완벽하게 부합합니다. [source_doc] | ```lua Event Handler: [service: InputService] HandleKeyReleaseEvent (KeyReleaseEvent event) { --------------- Native Event Sender Info ---------------- -- Sender: InputService -- Space: Client --------------------------------------------------------- -- Parameters local key = event.key ---

[task] | code [pass] | ✅ 통과 [title] | SpawnService [question] | _SpawnService:SpawnByModelId("item_id", "DropItem", Vector3(5, 5, 5), self.Entity) 로 아이템을 스폰한 후 반환된 Entity 를 저장하는 스크립트를 작성해줘 [answer] | `_SpawnService:SpawnByModelId` 메서드는 성공적으로 엔티티를 스폰하면 해당 `Entity` 객체를 반환합니다. 이 반환 값을 변수에 할당하여 저장하면 됩니다. 요청하신 기능을 구현한 mLua 스크립트는 다음과 같습니다. ```lua Method: [server only] void OnBeginPlay() { -- "item_id" 모델 ID를 사용하여 "DropItem" 이름의 엔티티를 스폰 -- 스폰 위치는 Vector3(5, 5, 5), 부모 엔티티는 self.Entity loca [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | SpawnByModelId의 시그니처와 반환 타입, mLua 문법(OnBeginPlay, self.Entity, _SpawnService)이 모두 문서 및 규칙과 정확히 일치하며, nil 체크 등 유용한 예제를 제공함. [source_doc] | 엔티티 스폰 관련 기능을 제공합니다. # 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

[task] | code [pass] | ✅ 통과 [title] | SpawnService [question] | _EntityService:GetEntityByPath로 "Entity Path"를 가진 엔티티를 가져온 뒤, _SpawnService:SpawnByEntity를 통해 (1, 0, 0) 위치에 "clone1"이라는 이름의 복제본을 생성하는 스크립트를 작성해줘 [answer] | 요청하신 작업은 서버에서만 실행되며, `OnBeginPlay` 생명주기 메서드에서 수행하는 것이 적절합니다. ```lua Method: [server only] void OnBeginPlay() { local entity = _EntityService:GetEntityByPath("Entity Path") local clone1 = _SpawnService:SpawnByEntity(entity, "clone1", Vector3(1, 0, 0)) } ``` [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 질문한 내용과 참고 문서의 코드가 정확히 일치하며, 불필요한 설명 없이 명확하게 답변했습니다. [source_doc] | 엔티티 하나를 복제하고, 복제된 엔티티의 자식 엔티티로 모델을 스폰하는 예제입니다. ```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

[task] | two_turn [pass] | ✅ 통과 [title] | SpawnService [question] | SpawnService를 사용하여 기존 엔티티를 복제하고, 그 복제본을 부모로 삼아 모델을 스폰하는 전체 프로세스는 어떻게 진행되나요? [answer] | `SpawnService`를 사용하여 기존 엔티티를 복제하고, 그 복제본을 부모로 삼아 모델을 스폰하는 과정은 다음과 같은 순서로 진행됩니다. 1. **원본 엔티티 조회**: `_EntityService:GetEntityByPath` 메서드를 사용하여 복제할 원본 엔티티를 경로를 통해 가져옵니다. 2. **엔티티 복제**: `_SpawnService:SpawnByEntity` 메서드를 호출하여 원본 엔티티를 복제합니다. 이 메서드는 복제할 원본 엔티티 객체, 새 엔티티의 이름, 그리고 스폰될 위치(`Vector3`)를 인수로 [followup] | SpawnByEntity와 SpawnByModelId 호출 시 전달하는 위치 파라미터(Vector3)의 좌표 값이 각각 어떻게 적용되며, 자식 엔티티 생성 시 부모 엔티티와의 위치 관계는 어떻게 유지되나요? [followup_answer] | 참고 문서에 제공된 정보만으로는 `Vector3` 좌표 값이 전역 좌표계(global)인지, 부모 상대 좌표계(local)인지에 대한 구체적인 설명이 없으며, 자식 엔티티 생성 시 부모 엔티티와의 정확한 위치 관계(예: 부모의 로컬 원점을 기준으로 하는지 등)에 대한 기술도 포함되어 있지 않습니다. 문서에는 `_SpawnService:SpawnByEntity`와 `_SpawnService:SpawnByModelId` 호출 시 `Vector3` 타입의 위치 인수를 전달하는 코드 예시만 제시되어 있을 뿐, 이 좌표가 어떻게 해석되고 [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 코드 예제와 API 서명을 정확히 인용하여 과정을 단계별로 명확히 설명했고, 지어낸 API가 없으며 간결합니다. [source_doc] | 엔티티 하나를 복제하고, 복제된 엔티티의 자식 엔티티로 모델을 스폰하는 예제입니다. ```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

[task] | code [pass] | ✅ 통과 [title] | SpawnService [question] | _OnBeginPlay 생명주기 메서드 안에서 _SpawnService:SpawnByEntity로 엔티티를 복제하고, 그 복제된 엔티티를 부모로 지정하여 _SpawnService:SpawnByModelId로 모델을 스폰하는 서버 전용([server only]) 메서드를 작성해줘 [answer] | 요청하신 기능을 수행하는 `[server only]` 메서드입니다. ```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 = _SpawnService:Spa [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 예제와 정확히 일치하며 질문에서 요구한 기능을 명확하고 간결하게 충족시킵니다. [source_doc] | 엔티티 하나를 복제하고, 복제된 엔티티의 자식 엔티티로 모델을 스폰하는 예제입니다. ```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

[task] | instruction_following [pass] | ✅ 통과 [title] | InputService [question] | `HandleKeyReleaseEvent` 이벤트 핸들러의 파라미터인 `KeyReleaseEvent` 객체에서 직접 접근 가능한 필드명과, 이를 통해 판별하는 키의 상수 이름을 표로 정리해 주세요. [answer] | 제공된 참고 문서에 근거하여 `HandleKeyReleaseEvent` 이벤트 핸들러의 `KeyReleaseEvent` 객체에서 직접 접근 가능한 필드와 예시에서 확인된 키 상수 이름을 정리하면 다음과 같습니다. **1. 직접 접근 가능한 필드** * `key`: 누르던 키가 해제되었을 때 해당 키를 나타내는 값입니다. **2. 예시에서 확인된 키 상수 이름** * `KeyboardKey.Z`: Z 키를 나타내는 상수입니다. 아래 표에 이를 정리했습니다. | 필드명 | 설명 | 예시에서 확인된 키 상수 | | :--- [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 명시된 필드(key)와 상수(KeyboardKey.Z)만 정확히 추출하여 표로 정리하고, 문서에 없는 정보는 명시적으로 배제하여 정확하고 유용한 답변을 제공했습니다. [source_doc] | ```lua Event Handler: [service: InputService] HandleKeyReleaseEvent (KeyReleaseEvent event) { --------------- Native Event Sender Info ---------------- -- Sender: InputService -- Space: Client --------------------------------------------------------- -- Parameters local key = event.key ---

[task] | instruction_following [pass] | ✅ 통과 [title] | LocalizationService [question] | GetTextFormat과 SmartFormat의 차이점을 입력 인자 개수와 번역 테이블 참조 여부를 기준으로 표로 정리하세요. [answer] | `GetTextFormat`과 `SmartFormat`의 차이점은 입력 인자 개수와 번역 테이블 참조 여부에서 명확히 구분됩니다. | 구분 | GetTextFormat | SmartFormat | | :--- | :--- | :--- | | **입력 인자 개수** | `key` (string)와 `args` (any...) | `format` (string)와 `args` (any...) | | **번역 테이블 참조 여부** | **참조함**. 첫 번째 인자인 `key`를 사용하여 번역 테이블에서 해당 행의 텍스트를 찾아오기 때문 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서의 API 명세에 근거하여 두 메서드의 차이점을 입력 인자 구조와 번역 테이블 참조 여부 기준으로 정확하고 명확하게 표로 정리했습니다. [source_doc] | 텍스트 번역 관련 기능을 제공합니다. # Properties - **string CurrentLocaleId [ReadOnly]** 클라이언트의 현재 언어 코드입니다. 출시 월드에서는 '월드 언어' 메뉴에서 선택한 언어이며, 메이커에서는 '테스트 플레이 언어' 옵션에서 설정한 언어입니다. - **Translator LocalTranslator [ReadOnly]** CurrentLocaleId에 해당하는 Translator 객체입니다. # Methods - **string GetText(string key) [Clie

[task] | code [pass] | ✅ 통과 [title] | InputService [question] | _InputService:IsAnyKeyPressed() 와 _InputService:ResetCursor() 를 사용해 키 입력이 감지되면 커서를 기본 모양으로 초기화하는 클라이언트 전용 스크립트를 작성해줘 [answer] | 요청하신 `_InputService:IsAnyKeyPressed()`와 `_InputService:ResetCursor()`를 사용하여 키 입력 감지 시 커서를 초기화하는 클라이언트 전용 스크립트입니다. 기존에 눌려있던 키가 모두 풀렸을 때(즉, `IsAnyKeyPressed()`가 `false`가 된 시점) 커서를 초기화하도록 `OnUpdate` 루프에서 상태를 추적하는 방식입니다. ```lua Property: [None] boolean WasAnyKeyPressed = false Method: [client only] v [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서의 API 명세와 시스템 규칙에 부합하며, 키 입력 해제 시점에 커서를 초기화하도록 논리적으로 구현한 정확하고 유용한 스크립트를 제공했습니다. [source_doc] | 유저의 입력과 관련된 기능을 제공합니다. # Methods - **void CursorLockMode(CursorLockMode lockMode) [ClientOnly]** 마우스 커서 조작 방식을 제어합니다. Windows PC 환경만 지원합니다. - **CursorLockMode GetCursorLockMode() [ClientOnly]** 마우스 커서 제어 방식을 반환합니다. Windows PC 환경만 지원합니다. - **Vector2 GetCursorPosition() [ClientOnly]** 커서의 현재 위

[task] | single_turn [pass] | ✅ 통과 [title] | InputService [question] | 터치 입력 처리 시 TouchId가 1 미만인 경우 return하는 조건은 무엇을 방지하기 위함이죠? [answer] | 제공된 참고 문서에는 `TouchId < 1`일 때 `return`하는 코드가 예제에 포함되어 있으나, 이 조건이 구체적으로 어떤 문제를 방지하기 위한 것인지는 명시적으로 설명되어 있지 않습니다. 문서에서는 단순히 이벤트 핸들러(`HandleScreenTouchEvent`, `HandleScreenTouchReleaseEvent`)의 본문 시작부에 이 조건문을 배치하고 있으며, 그 이유나 배경 설명은 없습니다. 따라서 해당 조건이 방지하려는 구체적인 목적은 문서 내용만으로 알 수 없습니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서에 해당 조건문의 목적 설명이 없으므로, 이를 '알 수 없다'고 답한 것이 정확하고 질문의 의도(문서 기반 사실 확인)에 부합합니다. [source_doc] | #### 터치 입력 터치한 위치에 파티클을 보여주는 예제입니다. ```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

← → 방향키로 페이지 이동 · 숫자 입력 후 Enter로 점프