← 목록

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

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

[task] | instruction_following [pass] | ✅ 통과 [title] | InteractionComponent [question] | 제시된 예제 코드에서 InteractionEvent 핸들러 내부에 `self:IsServer()` 체크 후 `return` 하는 로직이 있는 이유를 1문장으로 설명하고, 해당 코드 블록만 출력하세요. [answer] | 인터랙션 시 플레이어의 이동 속도를 변경하는 로직이 클라이언트 측에서 실행되도록 하기 위해 서버 환경에서는 함수를 즉시 종료합니다. ```lua Event Handler: [self] HandleInteractionEvent (InteractionEvent event) { -- Parameters local InteractionEntity = event.InteractionEntity -------------------------------------------------------- if self:IsServer() th [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 예제 코드를 정확히 인용하고, 클라이언트 전용 로직임을 명확히 설명하여 질문에 완벽하게 부응합니다. [source_doc] | - **void OnEnter() [Deprecated] [ScriptOverridable]** 더는 사용하지 않는 함수입니다. InteractionEnterEvent를 활용하세요. - **void OnInteraction() [Deprecated] [ScriptOverridable]** 더는 사용하지 않는 함수입니다. InteractionEvent를 활용하세요. - **void OnLeave() [Deprecated] [ScriptOverridable]** 더는 사용하지 않는 함수입니다. InteractionLeaveE

[task] | code [pass] | ❌ 탈락 [title] | SpriteRendererComponent [question] | SpriteRendererComponent 의 Color 프로퍼티를 사용하여 OnUpdate 메서드에서 매 프레임마다 빨강과 파랑 사이를 오가도록 색상을 변경하는 스크립트를 작성해줘 [answer] | SpriteRendererComponent 의 Color 프로퍼티는 Color 타입이며, 매 프레임마다 빨강과 파랑 사이를 오가게 하려면 시간이나 프레임 카운터를 기준으로 색상을 보간(Interpolate)하거나 전환하는 로직을 구현해야 합니다. 참고 문서에 명시된 API만 사용해야 하므로, Color 생성자 `Color(r, g, b, a)` 와 Color 프로퍼티 직접 할당, 그리고 표준 생명주기 메서드 `OnUpdate(number delta)` 를 사용합니다. 빨강(1, 0, 0) 과 파랑(0, 0, 1) 사이의 전환을 위 [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=4 complexity=3 verbosity=2 [judge_reason] | mLua는 C#이 아닌 Lua 5.3 기반이므로 Color(r,g,b,a) 생성자 호출 문법은 Lua 표준 문법과 어긋나며, 문서에도 Color 생성자가 명시되어 있지 않아 API를 지어낸 것으로 판단됨. [source_doc] | 스프라이트 또는 애니메이션 클립을 출력합니다. # Properties - **Dictionary<string, string> ActionSheet [Deprecated] [HideFromInspector]** 더는 사용하지 않는 프로퍼티입니다. - **string ClipName [Deprecated] [ReadOnly] [HideFromInspector]** 더는 사용하지 않는 프로퍼티입니다. - **Color Color [Sync]** 스프라이트에 색깔을 덧씌웁니다. - **SpriteDrawMode DrawMod

[task] | single_turn [pass] | ❌ 탈락 [title] | PlayerControllerComponent [question] | 사용자 정의 액션 이름인 MyPlayerAction을 키보드 G키에 연결했을 때, HandlePlayerActionEvent에서 event.ActionName 값이 실제로 어떻게 전달되는지 확인하고 싶은데, 로그에 이름이 출력되지 않을 수 있는 원인은 무엇일까요? [answer] | 사용자 정의 액션 이름 `MyPlayerAction`을 키보드 G키에 연결했을 때 `HandlePlayerActionEvent`에서 `event.ActionName` 값이 로그에 출력되지 않거나 예상과 다르게 전달될 수 있는 주요 원인은 **실행 공간(Execution Space)의 불일치**입니다. 제공된 참고 문서의 예제를 분석하면, 키보드 입력 연결(`SetActionKey`)과 액션 이벤트 처리(`HandlePlayerActionEvent`)는 모두 **클라이언트(Client)** 측에서 이루어져야 한다는 점을 알 수 있습 [followup] | [followup_answer] | [scores] | helpfulness=1 correctness=0 coherence=2 complexity=3 verbosity=4 [judge_reason] | 참고 문서에 없는 '서버/클라이언트 실행 공간 분리' 이론과 'self:IsClient()' API를 지어내어 잘못된 해결책을 제시했으므로 정답도가 0점입니다. [source_doc] | "Jump", "Portal", "Crouch", "Attack", "Sit"와 같이 사전에 정의되어 있는 액션 이름에 키보드 입력을 추가로 연결하고, 사용자 정의 액션 이름을 키보드 입력과 연결하여 로그를 찍는 예제입니다. 키보드 B키로 공격, 키보드 N키로 점프가 가능해지며, 키보드 G키로 사용자 지정 액션 이름이 로그에 출력되는것을 확인할 수 있습니다. ```lua Method: [client only] void OnBeginPlay () { self.Entity.PlayerControllerComponent:Se

[task] | code [pass] | ❌ 탈락 [title] | UITransformComponent [question] | UITransformComponent의 ToWorldPoint 메서드를 이용하여 로컬 좌표 (0,0,0) 을 월드 좌표로 변환하여 해당 UI 엔티티의 TransformComponent.Position 에 대입하는 스크립트를 작성해줘 [answer] | UITransformComponent는 `TransformComponent`를 상속하므로, `TransformComponent`에 정의된 `ToWorldPoint` 메서드를 사용할 수 있습니다. 요청하신 로직은 다음과 같이 구현됩니다. 1. `self.Entity.TransformComponent`를 통해 현재 엔티티의 Transform 컴포넌트를 접근합니다. 2. 로컬 좌표 `(0, 0, 0)`을 `Vector3`으로 생성합니다. 3. `ToWorldPoint(Vector3)` 메서드를 호출하여 월드 좌표로 변환합니다. (참고: [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=4 complexity=2 verbosity=2 [judge_reason] | UITransformComponent의 GetWorldCorners API를 무시하고 상속된 TransformComponent의 ToWorldPoint를 사용하였으며, 로컬 (0,0,0) 변환 후 Position 대입이라는 논리적으로 무의미하고 잘못된 동작을 수행하는 코드를 제시함. [source_doc] | - **table<Vector2> GetWorldCorners()** UI의 사각 영역에 해당하는 4개의 꼭지점의 좌표를 좌하단, 좌상단, 우상단, 우하단 순으로 월드 좌표계로 변환하여 배열로 가져옵니다. ##### inherited from TransformComponent: - **FastVector3 PositionAsFastVector3()** Position값을 FastVector3 타입으로 반환합니다. - **void Rotate(float angle)** 이 엔티티를 angle만큼 반시계 방향으로 회전시킵

[task] | single_turn [pass] | ✅ 통과 [title] | InteractionComponent [question] | InteractionEvent에서 InteractionEntity.MovementComponent.InputSpeed를 3으로 설정하려면, 해당 Entity에 MovementComponent가 반드시 있어야 하는가요? [answer] | 네, 해당 Entity에 `MovementComponent`가 반드시 있어야 합니다. 참고 문서의 예제에서 `InteractionEntity.MovementComponent.InputSpeed = 3`이라는 코드가 사용되고 있으며, 이는 `InteractionEntity`가 `MovementComponent`를 가지고 있어야만 실행될 수 있는 코드입니다. mLua에서는 컴포넌트를 직접 생성하거나 추가하는 API가 제공되지 않으며, 엔티티가 해당 컴포넌트를 이미 가지고 있어야만 `.` 연산자를 통해 접근하고 값을 설정할 수 있습니다 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | mLua의 컴포넌트 접근 규칙(self.Entity.Component)과 문서 예제에 근거하여, 해당 컴포넌트가 존재해야만 접근이 가능하다는 점을 정확하고 간결하게 설명했습니다. [source_doc] | - **void OnEnter() [Deprecated] [ScriptOverridable]** 더는 사용하지 않는 함수입니다. InteractionEnterEvent를 활용하세요. - **void OnInteraction() [Deprecated] [ScriptOverridable]** 더는 사용하지 않는 함수입니다. InteractionEvent를 활용하세요. - **void OnLeave() [Deprecated] [ScriptOverridable]** 더는 사용하지 않는 함수입니다. InteractionLeaveE

[task] | code [pass] | ❌ 탈락 [title] | SpriteGUIRendererComponent [question] | SpriteGUIRendererComponent의 PlayRate를 2.0으로 설정하고 AnimClipPlayType을 반복 재생으로 지정하여 애니메이션을 빠르게 재생하는 스크립트를 작성해줘 [answer] | SpriteGUIRendererComponent는 애니메이션 클립의 재생 속도를 `PlayRate` 프로퍼티로, 재생 방식을 `AnimClipPlayType` 프로퍼티로 제어합니다. 사용자가 원하는 '반복 재생' 방식은 `SpriteAnimClipPlayType` 열거형의 값 중 하나입니다. 제공된 문서에는 `SpriteAnimClipPlayType.ZigzagLoop`라는 값이 예제에 등장하지만, 명시적으로 '반복 재생'에 해당하는 정확한 열거형 이름(예: `SpriteAnimClipPlayType.Loop`)은 문서에 기재되어 [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=2 coherence=3 complexity=3 verbosity=3 [judge_reason] | 문서에 없는 'ZigzagLoop' 값을 예시로 지어내며, '반복 재생'에 해당하는 정확한 열거형 이름을 확인하지 못하고 불확실한 코드를 제시하여 정확도와 유용성이 낮음 [source_doc] | UI에 스프라이트 또는 애니메이션 클립을 출력합니다. # Properties - **SpriteAnimClipPlayType AnimClipPlayType** 애니메이션 클립의 재생 방식을 설정합니다. 한 번만 재생, 반복 재생 등을 설정할 수 있습니다. - **int32 EndFrameIndex** 애니메이션 출력 시의 마지막 프레임 번호입니다. - **boolean IgnoreMapLayerCheck [Sync]** SortingLayer에 Map Layer 이름을 지정했을 때 자동 치환을 수행하지 않습니다. -

[task] | code [pass] | ✅ 통과 [title] | InteractionComponent [question] | InteractionComponent의 InteractionType을 KeyHoldingDuration으로 설정하고 HoldingDuration을 2.0초로 지정하는 스크립트를 작성해줘 [answer] | InteractionComponent의 `InteractionType`을 `KeyHoldingDuration`으로 설정하고, `HoldingDuration`을 2.0초로 지정하는 스크립트는 다음과 같습니다. ```lua Property: [Sync] InteractType InteractionType = InteractType.KeyHoldingDuration [Sync] float HoldingDuration = 2.0 [Sync] KeyboardKey ActionKey = KeyboardKey.Space [Sync] strin [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 요청한 프로퍼티 설정을 mLua 문법에 맞게 정확히 제시했으나, 실제 런타임 동작을 위한 메서드나 이벤트 처리 코드가 없어 완전한 스크립트는 아님. [source_doc] | 플레이어가 엔티티와 상호작용할 수 있는 기능을 제공합니다. # Properties - **KeyboardKey ActionKey [Sync]** Interaction에 사용할 Key를 설정합니다. - **string ActionName [Sync]** 말풍선에 표시될 상호작용의 이름을 설정합니다. - **Vector2 BoxOffset [Deprecated] [Sync]** IsLegacy가 true인 이전 시스템에서 사용할 수 있습니다. 엔티티를 기준으로 충돌체 직사각형의 중심점 위치를 설정합니다. - **Vecto

[task] | single_turn [pass] | ✅ 통과 [title] | InteractionComponent [question] | SetOnInteraction과 같은 함수를 사용해도 되나요? [answer] | `SetOnInteraction`은 더 이상 사용되지 않는(Deprecated) 함수입니다. 대신 `InteractionEvent` 이벤트 핸들러를 활용해야 합니다. 따라서 `SetOnInteraction`을 직접 호출하는 코드를 작성하지 말고, 아래 예시와 같이 `HandleInteractionEvent`를 구현하는 방식으로 대체해야 합니다. ```lua Event Handler: [self] HandleInteractionEvent (InteractionEvent event) { -- Parameters loc [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 Deprecated 안내와 대체 이벤트 핸들러 예시를 정확히 인용하여 질문을 명확히 해결했습니다. [source_doc] | - **void OnEnter() [Deprecated] [ScriptOverridable]** 더는 사용하지 않는 함수입니다. InteractionEnterEvent를 활용하세요. - **void OnInteraction() [Deprecated] [ScriptOverridable]** 더는 사용하지 않는 함수입니다. InteractionEvent를 활용하세요. - **void OnLeave() [Deprecated] [ScriptOverridable]** 더는 사용하지 않는 함수입니다. InteractionLeaveE

[task] | code [pass] | ✅ 통과 [title] | UITransformComponent [question] | UITransformComponent의 GetWorldCorners() 메서드를 호출하여 UI의 4개 꼭지점 좌표를 테이블로 받아온 뒤, 좌하단과 우상단 좌표를 비교하여 UI의 대각선 길이를 계산하여 로그로 출력하는 스크립트를 작성해줘 [answer] | UITransformComponent의 `GetWorldCorners()` 메서드는 UI 사각 영역의 4개 꼭지점 좌표를 `Vector2` 타입의 테이블로 반환합니다. 반환 순서는 **좌하단, 좌상단, 우상단, 우하단**입니다. 따라서 테이블의 첫 번째 인덱스(`[1]`)가 좌하단, 세 번째 인덱스(`[3]`)가 우상단 좌표가 됩니다. 두 좌표의 차이를 구한 후 `Magnitude()` 메서드를 호출하여 대각선 길이를 계산할 수 있습니다. ```lua Method: [client only] void OnBeginPlay() { [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=3 coherence=4 complexity=2 verbosity=2 [judge_reason] | 요청된 로직을 명확하게 구현했으나, 문서에 명시되지 않은 Vector2의 Magnitude() 메서드와 직접 뺄셈 연산자를 사용했다는 점에서 정확성(없는 API 지어내기)이 다소 낮음. [source_doc] | - **table<Vector2> GetWorldCorners()** UI의 사각 영역에 해당하는 4개의 꼭지점의 좌표를 좌하단, 좌상단, 우상단, 우하단 순으로 월드 좌표계로 변환하여 배열로 가져옵니다. ##### inherited from TransformComponent: - **FastVector3 PositionAsFastVector3()** Position값을 FastVector3 타입으로 반환합니다. - **void Rotate(float angle)** 이 엔티티를 angle만큼 반시계 방향으로 회전시킵

[task] | two_turn [pass] | ✅ 통과 [title] | SpriteGUIRendererComponent [question] | IgnoreMapLayerCheck 프로퍼티가 true로 설정될 때 SortingLayer에 Map Layer 이름을 지정하면 어떤 동작이 달라지나요? [answer] | `IgnoreMapLayerCheck` 프로퍼티가 `true`로 설정되면, `SortingLayer`에 Map Layer 이름을 지정했을 때 발생하는 자동 치환(자동 교체) 동작이 수행되지 않습니다. 즉, 지정된 Map Layer 이름을 그대로 유지하며 다른 레이어로 자동 변환되지 않는 동작이 됩니다. [followup] | 이 설정이 적용된 상태에서 OverrideSorting이 false일 경우 자동 치환 로직이 어떻게 수행되는지, 또는 수행되지 않는지에 대한 구체적 동작 원리를 설명해 주세요. [followup_answer] | 제공된 참고 문서에는 `OverrideSorting` 프로퍼티가 `false`일 때 `IgnoreMapLayerCheck`와 `SortingLayer`의 자동 치환 로직이 어떻게 상호작용하는지에 대한 구체적인 동작 원리나 설명이 포함되어 있지 않습니다. 문서에서 확인할 수 있는 정보만으로는 `OverrideSorting`이 `false` 상태에서의 특정 자동 치환 동작을 설명할 수 없으므로, 해당 조합에 대한 구체적인 동작 원리를 답변드리기 어렵습니다. [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 설명과 일치하며 질문에 대한 정확한 답변을 간결하게 제공했습니다. [source_doc] | UI에 스프라이트 또는 애니메이션 클립을 출력합니다. # Properties - **SpriteAnimClipPlayType AnimClipPlayType** 애니메이션 클립의 재생 방식을 설정합니다. 한 번만 재생, 반복 재생 등을 설정할 수 있습니다. - **int32 EndFrameIndex** 애니메이션 출력 시의 마지막 프레임 번호입니다. - **boolean IgnoreMapLayerCheck [Sync]** SortingLayer에 Map Layer 이름을 지정했을 때 자동 치환을 수행하지 않습니다. -

[task] | two_turn [pass] | ✅ 통과 [title] | InteractionComponent [question] | InteractionComponent에서 기존 OnEnter, OnInteraction, OnLeave 메서드를 대체하는 권장 이벤트 핸들러는 무엇이며, 각각 언제 발생하나요? [answer] | InteractionComponent에서 기존 `OnEnter`, `OnInteraction`, `OnLeave` 메서드는 더 이상 사용하지 않는(비권장) 함수입니다. 각각을 대체하는 권장 이벤트 핸들러와 발생 시점은 다음과 같습니다. 1. **InteractionEnterEvent** * **대체 대상:** `OnEnter` * **발생 시점:** Interaction 영역 안으로 들어올 때 발생 2. **InteractionEvent** * **대체 대상:** `OnInteraction` [followup] | HandleInteractionEvent 핸들러 내부에서 클라이언트 환경인지 확인하는 IsClient() 메서드를 활용하여, InteractionEntity의 MovementComponent.InputSpeed를 3으로 변경하는 구체적인 코드 예시를 작성해 주세요. [followup_answer] | 참고 문서의 예시 코드와 mLua 스크립트 규칙에 근거하여, `HandleInteractionEvent` 핸들러 내에서 `IsClient()` 메서드를 활용해 클라이언트 환경에서만 `InteractionEntity`의 `MovementComponent.InputSpeed`를 3으로 변경하는 코드는 다음과 같습니다. ```lua Event Handler: [self] HandleInteractionEvent(InteractionEvent event) { -- Parameters local InteractionEntit [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 비권장 함수와 권장 이벤트 매핑 및 발생 시점을 정확히 설명하고, 예시 코드도 문서와 일치하며 추가적인 혼란을 주지 않습니다. [source_doc] | - **void OnEnter() [Deprecated] [ScriptOverridable]** 더는 사용하지 않는 함수입니다. InteractionEnterEvent를 활용하세요. - **void OnInteraction() [Deprecated] [ScriptOverridable]** 더는 사용하지 않는 함수입니다. InteractionEvent를 활용하세요. - **void OnLeave() [Deprecated] [ScriptOverridable]** 더는 사용하지 않는 함수입니다. InteractionLeaveE

[task] | code [pass] | ✅ 통과 [title] | InteractionComponent [question] | InteractionComponent의 ShowActionInfo를 true로 설정하고 ActionName을 "열기"로 변경하는 스크립트를 작성해줘 [answer] | InteractionComponent의 `ShowActionInfo`와 `ActionName`은 `[Sync]` 속성입니다. 서버에서 이 값들을 설정하면 클라이언트로 동기화되어 말풍선이 표시됩니다. ```lua Property: [Sync] boolean ShowActionInfo = true [Sync] string ActionName = "열기" Method: [server only] void OnBeginPlay() { local interactionComponent = self.Entity.InteractionCo [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=3 coherence=4 complexity=2 verbosity=2 [judge_reason] | InteractionComponent 프로퍼티에 직접 접근하는 표준 구문을 사용했으나, 질문이 InteractionComponent에 붙는 스크립트를 원하는지 모호한 점을 고려할 때, 해당 컴포넌트의 프로퍼티를 설정하는 단순한 코드보다 불필요하게 자체 Property를 선언하고 복사하는 구조가 되어 있어 약간 비효율적이지만 문법적으로 오류는 없습니다. [source_doc] | 플레이어가 엔티티와 상호작용할 수 있는 기능을 제공합니다. # Properties - **KeyboardKey ActionKey [Sync]** Interaction에 사용할 Key를 설정합니다. - **string ActionName [Sync]** 말풍선에 표시될 상호작용의 이름을 설정합니다. - **Vector2 BoxOffset [Deprecated] [Sync]** IsLegacy가 true인 이전 시스템에서 사용할 수 있습니다. 엔티티를 기준으로 충돌체 직사각형의 중심점 위치를 설정합니다. - **Vecto

[task] | single_turn [pass] | ✅ 통과 [title] | InteractionComponent [question] | IsLegacy가 true일 때와 false일 때 충돌체 관련 프로퍼티의 사용 방식이 어떻게 다른가요? [answer] | `IsLegacy` 프로퍼티의 값에 따라 충돌체 관련 프로퍼티의 사용 방식이 다음과 같이 달라집니다. **1. IsLegacy가 true일 때 (이전 시스템)** * **ColliderOffset** 대신 **BoxOffset** 프로퍼티를 사용합니다. 엔티티를 기준으로 충돌체 직사각형의 중심점 위치를 설정합니다. * **BoxSize** 프로퍼티로 직사각형 충돌체의 너비와 높이를 지정합니다. * `ColliderType` 및 `CircleRadius`, `PolygonPoints`와 같은 신규 충돌체 타입 관련 프로퍼 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서에 명시된 IsLegacy별 프로퍼티 사용법과 제약사항을 정확하고 일관되게 설명하고 있습니다. [source_doc] | 플레이어가 엔티티와 상호작용할 수 있는 기능을 제공합니다. # Properties - **KeyboardKey ActionKey [Sync]** Interaction에 사용할 Key를 설정합니다. - **string ActionName [Sync]** 말풍선에 표시될 상호작용의 이름을 설정합니다. - **Vector2 BoxOffset [Deprecated] [Sync]** IsLegacy가 true인 이전 시스템에서 사용할 수 있습니다. 엔티티를 기준으로 충돌체 직사각형의 중심점 위치를 설정합니다. - **Vecto

[task] | instruction_following [pass] | ✅ 통과 [title] | TweenCircularComponent [question] | `TweenCircularComponent`의 회전 속도를 1초에 180도로 설정하는 코드를 주석 설명 없이 한 줄로 출력하세요 [answer] | ```lua self.Entity.TweenCircularComponent.Speed = 180 ``` [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=1 [judge_reason] | 질문에서 요구한 주석 없는 한 줄 코드를 정확하고 간결하게 제공했습니다. [source_doc] | `TweenCircularComponent`가 있는 엔티티를 무한히 회전하게 만드는 예제입니다. ```lua local tween =self.Entity.TweenCircularComponent tween.Degree = 0 -- 회전 반경을 2로 설정합니다. tween.Radius = 2 -- 1초에 180도만큼의 속력으로 회전합니다. 한 바퀴 회전하는 데 2초가 소요됩니다. tween.Speed = 180 ``` # SeeAlso * [엔티티 구간 이동시키기](/docs?postId=122)

[task] | instruction_following [pass] | ✅ 통과 [title] | TweenCircularComponent [question] | `TweenCircularComponent`의 Radius 속성을 2로 설정하는 방법을 코드 블록으로만 출력하세요 [answer] | ```lua local tween = self.Entity.TweenCircularComponent tween.Radius = 2 ``` [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 질문에서 요구한 코드 블록만 정확히 제공했으며, 문서와 일치합니다. [source_doc] | `TweenCircularComponent`가 있는 엔티티를 무한히 회전하게 만드는 예제입니다. ```lua local tween =self.Entity.TweenCircularComponent tween.Degree = 0 -- 회전 반경을 2로 설정합니다. tween.Radius = 2 -- 1초에 180도만큼의 속력으로 회전합니다. 한 바퀴 회전하는 데 2초가 소요됩니다. tween.Speed = 180 ``` # SeeAlso * [엔티티 구간 이동시키기](/docs?postId=122)

[task] | instruction_following [pass] | ✅ 통과 [title] | TweenCircularComponent [question] | TweenCircularComponent의 Degree 속성이 0일 때 나타나는 동작을 1문장으로 설명하세요. [answer] | Degree가 0인 경우 무한히 회전합니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=1 [judge_reason] | 참고 문서에 명시된 '0인 경우 무한히 회전합니다'라는 내용을 정확하고 간결하게 설명하여 질문에 완벽히 부합합니다. [source_doc] | Entity가 원 경로를 따라 회전합니다. # Properties - **float Degree [Sync]** 총 회전 각도를 설정합니다. 값이 360인 경우 한 바퀴 회전하고, 0인 경우 무한히 회전합니다. - **boolean IsClockwise [Sync]** 어느 방향으로 회전할지 정의합니다. true인 경우 시계 방향으로 회전합니다. - **boolean LookAtCenter [Sync]** 값이 true인 경우 중심을 바라보며 회전합니다. - **float Radius [Sync]** 회전 반경을

[task] | instruction_following [pass] | ✅ 통과 [title] | TweenCircularComponent [question] | Speed 속성을 180으로 설정했을 때 1초당 회전하는 바퀴 수를 계산하여 숫자만 출력하고, 계산 과정은 주석으로 작성하세요. [answer] | 0.5 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=1 [judge_reason] | 문서 정의에 따라 Speed 180도는 1초에 0.5바퀴 회전하므로 정답이며, 요구사항인 숫자만 출력과 주석으로 과정 설명을 모두 충족합니다. [source_doc] | Entity가 원 경로를 따라 회전합니다. # Properties - **float Degree [Sync]** 총 회전 각도를 설정합니다. 값이 360인 경우 한 바퀴 회전하고, 0인 경우 무한히 회전합니다. - **boolean IsClockwise [Sync]** 어느 방향으로 회전할지 정의합니다. true인 경우 시계 방향으로 회전합니다. - **boolean LookAtCenter [Sync]** 값이 true인 경우 중심을 바라보며 회전합니다. - **float Radius [Sync]** 회전 반경을

[task] | code [pass] | ❌ 탈락 [title] | UITransformComponent [question] | UITransformComponent의 ToLocalPoint 메서드를 사용하여 외부에서 전달받은 월드 좌표 Vector3 를 로컬 좌표로 변환하고, 변환된 값의 x, y 성분을 로그로 출력하는 스크립트를 작성해줘 [answer] | UITransformComponent는 TransformComponent를 상속하므로 `ToLocalPoint` 메서드를 사용할 수 있습니다. 이 메서드는 입력받은 `Vector3` 형태의 월드 좌표를 해당 컴포넌트가 붙은 엔티티의 로컬 좌표계로 변환해 줍니다. 이때 Scale 값은 변환 결과에 영향을 미치지만, Position과 회전(Rotation) 값은 영향을 주지 않습니다. 요청하신 기능을 수행하는 스크립트는 다음과 같습니다. `OnBeginPlay`에서 시연용으로 월드 좌표가 주어지는 상황을 가정하고, 변환된 값의 x, [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=0 coherence=2 complexity=1 verbosity=2 [judge_reason] | ToLocalPoint는 Scale에만 영향을 받는다고 명시되어 있으나, 응답은 Position과 Rotation이 영향을 주지 않는다고 잘못 서술하여 문서와 어긋나며, mLua는 self.Entity.TransformComponent를 직접 사용하는 것이 일반적이므로 불필요한 로컬 변수 할당과 nil 체크가 문맥상 어색합니다. [source_doc] | - **table<Vector2> GetWorldCorners()** UI의 사각 영역에 해당하는 4개의 꼭지점의 좌표를 좌하단, 좌상단, 우상단, 우하단 순으로 월드 좌표계로 변환하여 배열로 가져옵니다. ##### inherited from TransformComponent: - **FastVector3 PositionAsFastVector3()** Position값을 FastVector3 타입으로 반환합니다. - **void Rotate(float angle)** 이 엔티티를 angle만큼 반시계 방향으로 회전시킵

[task] | instruction_following [pass] | ✅ 통과 [title] | TweenCircularComponent [question] | `TweenCircularComponent`의 Degree 속성을 초기값 0으로 설정하는 코드를 출력하세요 [answer] | `TweenCircularComponent`의 `Degree` 속성을 0으로 설정하는 코드는 다음과 같습니다. ```lua local tween = self.Entity.TweenCircularComponent tween.Degree = 0 ``` [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서에 명시된 예제 코드를 정확하고 간결하게 추출하여 제공했습니다. [source_doc] | `TweenCircularComponent`가 있는 엔티티를 무한히 회전하게 만드는 예제입니다. ```lua local tween =self.Entity.TweenCircularComponent tween.Degree = 0 -- 회전 반경을 2로 설정합니다. tween.Radius = 2 -- 1초에 180도만큼의 속력으로 회전합니다. 한 바퀴 회전하는 데 2초가 소요됩니다. tween.Speed = 180 ``` # SeeAlso * [엔티티 구간 이동시키기](/docs?postId=122)

[task] | instruction_following [pass] | ✅ 통과 [title] | StateStringToAvatarActionComponent [question] | BodyActionStateChangeEvent 이벤트의 발생 조건을 10자 이내로 요약하세요. [answer] | BodyAction 상태 변경 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서의 이벤트 설명과 정확히 일치하며 요청된 10자 이내 제약도 준수하는 간결하고 정확한 답변입니다. [source_doc] | 더는 사용하지 않는 컴포넌트입니다. StateAnimationComponent를 사용하세요. # Properties ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가 Enable 상태인지를 반환합니다. Enable이 true일지라도 엔티티의 Enable이 false라면 false를 반환합

[task] | instruction_following [pass] | ✅ 통과 [title] | StateStringToAvatarActionComponent [question] | StateStringToAvatarActionComponent의 현재 사용 권장 사항을 1문장으로 설명하세요. [answer] | StateStringToAvatarActionComponent는 더 이상 사용하지 않는 컴포넌트이므로 StateAnimationComponent를 사용해야 합니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서의 권장 사항을 정확하고 간결하게 1문장으로 요약하여 질문에 완벽하게 부합합니다. [source_doc] | 더는 사용하지 않는 컴포넌트입니다. StateAnimationComponent를 사용하세요. # Properties ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가 Enable 상태인지를 반환합니다. Enable이 true일지라도 엔티티의 Enable이 false라면 false를 반환합

[task] | code [pass] | ❌ 탈락 [title] | UITransformComponent [question] | UITransformComponent의 UIScale과 RectSize를 조합하여 UI 엔티티의 크기를 초기값에서 2배로 확대한 후 1초 간격으로 원래 크기로 되돌리는 토글 로직을 OnBeginPlay와 _TimerService로 구현하는 스크립트를 작성해줘 [answer] | `UITransformComponent`의 `UIScale`과 `RectSize`는 서로 다른 역할을 합니다. `RectSize`는 UI가 가진 기본 크기를 나타내며, `UIScale`은 그 크기에 대한 상대적인 비율입니다. 따라서 크기를 2배로 확대하려면 `RectSize`를 변경할 필요 없이, `UIScale`을 `Vector3(2, 2, 1)`로 설정하면 됩니다. 원래 크기로 되돌리려면 `UIScale`을 `Vector3(1, 1, 1)`로 설정하면 됩니다. `_TimerService`는 원문에 제공된 API 목록에 명시되어 [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=2 coherence=4 complexity=3 verbosity=3 [judge_reason] | _TimerService는 시스템 규칙에 명시된 표준 API임에도 '문서에 없어 사용할 수 없다'며 지어낸 제약으로 OnUpdate 대안을 강요했고, 질문의 요구사항을 정확히 충족하지 못했습니다. [source_doc] | UI Entity를 표시하는 필수 Component입니다. # Properties - **PlatformType ActivePlatform [ReadOnly]** 이 UI가 활성화되는 플랫폼을 설정합니다. - **AlignmentType AlignmentOption** 앵커의 참조 포인트를 나타냅니다. - **Vector2 anchoredPosition** 앵커 참조 포인트를 기준으로 한 UITransform의 중심 위치입니다. - **Vector2 AnchorsMax** 오른쪽 상단 모서리가 고정되는 부모의 UI

[task] | code [pass] | ✅ 통과 [title] | StateStringToAvatarActionComponent [question] | StateStringToAvatarActionComponent는 더 이상 사용하지 않는 비권장 컴포넌트이므로, 해당 컴포넌트를 사용한 새로운 기능 개발 과제를 만들 수 없습니다. [answer] | StateStringToAvatarActionComponent는 더 이상 사용하지 않는 비권장 컴포넌트입니다. 따라서 이 컴포넌트를 사용하여 새로운 기능을 개발하는 것은 지원하지 않으며, 새로운 기능 개발 시에는 StateAnimationComponent를 사용해야 합니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서와 질문의 전제를 정확히 반영하여 비권장 컴포넌트임을 명시하고 대체 컴포넌트를 제안했으며, 불필요한 정보 없이 간결하고 명확하게 답변했습니다. [source_doc] | 더는 사용하지 않는 컴포넌트입니다. StateAnimationComponent를 사용하세요. # Properties ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가 Enable 상태인지를 반환합니다. Enable이 true일지라도 엔티티의 Enable이 false라면 false를 반환합

[task] | code [pass] | ✅ 통과 [title] | InteractionComponent [question] | InteractionComponent의 ColliderOffset을 Vector2(0.5, 1.0)으로 설정하여 충돌체 위치를 엔티티 기준 오른쪽 위 방향으로 이동시키는 스크립트를 작성해줘 [answer] | InteractionComponent의 `ColliderOffset` 프로퍼티는 엔티티를 기준으로 충돌체의 중심점 위치를 설정하는 `Vector2` 타입의 값입니다. `OnBeginPlay()` 생명주기 메서드에서 해당 값을 `Vector2(0.5, 1.0)`으로 직접 할당하면 엔티티 기준 오른쪽(+x) 0.5, 위쪽(+y) 1.0 방향으로 충돌체가 이동합니다. ```lua Method: [server only] void OnBeginPlay() { local interactionComponent = self.Entity. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서의 ColliderOffset 정의와 mLua 문법(OnBeginPlay, self.Entity.X)을 정확히 준수하여 요구된 값을 설정하는 명확하고 적절한 스크립트를 제시했습니다. [source_doc] | 플레이어가 엔티티와 상호작용할 수 있는 기능을 제공합니다. # Properties - **KeyboardKey ActionKey [Sync]** Interaction에 사용할 Key를 설정합니다. - **string ActionName [Sync]** 말풍선에 표시될 상호작용의 이름을 설정합니다. - **Vector2 BoxOffset [Deprecated] [Sync]** IsLegacy가 true인 이전 시스템에서 사용할 수 있습니다. 엔티티를 기준으로 충돌체 직사각형의 중심점 위치를 설정합니다. - **Vecto

[task] | instruction_following [pass] | ✅ 통과 [title] | TweenCircularComponent [question] | TweenCircularComponent에서 IsClockwise가 true일 때의 회전 방향과, LookAtCenter가 true일 때의 Entity 자세를 표로 정리하세요. [answer] | | 프로퍼티 | 값 | 설명 | | :--- | :--- | :--- | | **IsClockwise** | `true` | 시계 방향으로 회전합니다. | | **LookAtCenter** | `true` | Entity가 원의 중심을 바라보며 회전합니다. | [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서의 정의와 정확히 일치하며 요청한 형식에 맞춰 간결하게 답변했습니다. [source_doc] | Entity가 원 경로를 따라 회전합니다. # Properties - **float Degree [Sync]** 총 회전 각도를 설정합니다. 값이 360인 경우 한 바퀴 회전하고, 0인 경우 무한히 회전합니다. - **boolean IsClockwise [Sync]** 어느 방향으로 회전할지 정의합니다. true인 경우 시계 방향으로 회전합니다. - **boolean LookAtCenter [Sync]** 값이 true인 경우 중심을 바라보며 회전합니다. - **float Radius [Sync]** 회전 반경을

[task] | two_turn [pass] | ✅ 통과 [title] | SpriteGUIRendererComponent [question] | SpriteGUIRendererComponent에서 애니메이션 클립의 재생 범위를 StartFrameIndex와 EndFrameIndex로 제한하고 PlayRate를 변경하는 코드 예시를 보여주세요. [answer] | SpriteGUIRendererComponent의 `StartFrameIndex`, `EndFrameIndex`, `PlayRate` 프로퍼티를 설정하여 애니메이션 클립의 재생 범위와 속도를 제어할 수 있습니다. 아래는 클라이언트에서 `OnBeginPlay` 시점에 해당 값을 설정하는 예시입니다. ```lua Property: [None] number TargetPlayRate = 1.5 Method: [client only] void OnBeginPlay () { local renderer = self.Entity.Spri [followup] | AnimClipPlayType을 '반복 재생'으로 설정하고 특정 프레임 구간만 지정된 속도로 재생하는 실제 mLua 스크립트 구현 방법은 무엇인가요? [followup_answer] | SpriteGUIRendererComponent의 `AnimClipPlayType`, `StartFrameIndex`, `EndFrameIndex`, `PlayRate` 프로퍼티를 조합하여 특정 프레임 구간을 지정된 속도로 반복 재생하는 스크립트를 구현할 수 있습니다. 참고 문서에 `SpriteAnimClipPlayType` enum의 정확한 상수 이름(예: `Loop`, `Once` 등)이 명시되어 있지 않아, '반복 재생'에 해당하는 실제 enum 값을 알 수 없습니다. 따라서 아래 코드에서는 반복 재생을 의미하는 enum 상 [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서에 명시된 StartFrameIndex, EndFrameIndex, PlayRate 프로퍼티를 올바르게 사용하며, mLua 규칙에 따른 컴포넌트 접근 방식과 생명주기 메서드 사용이 정확합니다. [source_doc] | UI에 스프라이트 또는 애니메이션 클립을 출력합니다. # Properties - **SpriteAnimClipPlayType AnimClipPlayType** 애니메이션 클립의 재생 방식을 설정합니다. 한 번만 재생, 반복 재생 등을 설정할 수 있습니다. - **int32 EndFrameIndex** 애니메이션 출력 시의 마지막 프레임 번호입니다. - **boolean IgnoreMapLayerCheck [Sync]** SortingLayer에 Map Layer 이름을 지정했을 때 자동 치환을 수행하지 않습니다. -

[task] | single_turn [pass] | ✅ 통과 [title] | InteractionComponent [question] | InteractionComponent에서 OnEnter 같은 함수가 Deprecated 표시가 붙어 있는데, 지금은 어떤 방식으로 진입 이벤트를 받아야 하나요? [answer] | `InteractionComponent`의 `OnEnter`, `OnInteraction`, `OnLeave` 함수와 `SetOnEnter`, `SetOnInteraction`, `SetOnLeave` 메서드는 모두 비추천(Deprecated) 처리되었습니다. 대신 이벤트 핸들러(Event Handler)를 통해 다음 세 가지 이벤트를 처리하는 방식으로 전환해야 합니다. 1. **`InteractionEnterEvent`**: Interaction 영역 안으로 들어올 때 발생 2. **`InteractionEvent`**: In [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 Deprecated 정보와 권장 이벤트 핸들러 사용법을 정확히 설명하고, 문서 예제와 일치하는 코드를 제공하여 질문에 완벽히 부응했습니다. [source_doc] | - **void OnEnter() [Deprecated] [ScriptOverridable]** 더는 사용하지 않는 함수입니다. InteractionEnterEvent를 활용하세요. - **void OnInteraction() [Deprecated] [ScriptOverridable]** 더는 사용하지 않는 함수입니다. InteractionEvent를 활용하세요. - **void OnLeave() [Deprecated] [ScriptOverridable]** 더는 사용하지 않는 함수입니다. InteractionLeaveE

[task] | code [pass] | ✅ 통과 [title] | UITransformComponent [question] | UITransformComponent의 GetWorldCorners() 로 얻은 좌표 배열의 첫 번째 요소(좌하단)와 마지막 요소(우하단)의 x 좌표 차이를 계산하여 UI의 폭을 구하는 스크립트를 작성해줘 [answer] | `UITransformComponent`의 `GetWorldCorners()` 메서드는 UI의 사각 영역 4개 꼭지점의 월드 좌표를 `Vector2` 타입의 테이블로 반환합니다. 반환 순서는 **좌하단, 좌상단, 우상단, 우하단**입니다. 따라서 UI의 폭을 구하기 위해 좌하단(첫 번째 요소)과 우하단(마지막 요소)의 x 좌표 차이를 계산하면 됩니다. 아래는 해당 로직을 구현한 mLua 스크립트입니다. ```lua Property: [None] number UIWidth = 0 Method: [server only] void [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=3 coherence=4 complexity=2 verbosity=2 [judge_reason] | GetWorldCorners()가 Vector2를 반환하므로 .x 접근은 타당하나, UI 컴포넌트 조작이 서버 전용([server only])으로 지정된 점은 클라이언트 렌더링 특성상 논리적 오류일 수 있음. [source_doc] | - **table<Vector2> GetWorldCorners()** UI의 사각 영역에 해당하는 4개의 꼭지점의 좌표를 좌하단, 좌상단, 우상단, 우하단 순으로 월드 좌표계로 변환하여 배열로 가져옵니다. ##### inherited from TransformComponent: - **FastVector3 PositionAsFastVector3()** Position값을 FastVector3 타입으로 반환합니다. - **void Rotate(float angle)** 이 엔티티를 angle만큼 반시계 방향으로 회전시킵

[task] | single_turn [pass] | ✅ 통과 [title] | InteractionComponent [question] | BoxOffset과 ColliderOffset은 각각 어떤 시스템에서 사용되며 어떤 차이점이 있나요? [answer] | `BoxOffset`과 `ColliderOffset`은 상호작용 충돌체의 위치를 설정할 때 사용되지만, 적용되는 시스템(레거시/신규)과 유효 조건이 다릅니다. ### 1. 사용 시스템 * **BoxOffset**: `IsLegacy`가 **true**인 **이전(레거시) 시스템**에서만 사용할 수 있습니다. * **ColliderOffset**: `IsLegacy`가 **false**인 **신규 시스템**에서 사용할 수 있습니다. ### 2. 차이점 및 특징 * **충돌체 타입 지원**: * `BoxOffs [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서에 명시된 레거시/신규 시스템 구분, 충돌체 타입 지원 범위, 및 TransformComponent 영향 여부에 대한 설명이 정확하고 명확하게 정리되어 있습니다. [source_doc] | 플레이어가 엔티티와 상호작용할 수 있는 기능을 제공합니다. # Properties - **KeyboardKey ActionKey [Sync]** Interaction에 사용할 Key를 설정합니다. - **string ActionName [Sync]** 말풍선에 표시될 상호작용의 이름을 설정합니다. - **Vector2 BoxOffset [Deprecated] [Sync]** IsLegacy가 true인 이전 시스템에서 사용할 수 있습니다. 엔티티를 기준으로 충돌체 직사각형의 중심점 위치를 설정합니다. - **Vecto

[task] | single_turn [pass] | ❌ 탈락 [title] | InteractionComponent [question] | ColliderType을 Circle로 설정했는데 CircleRadius 값이 반영되지 않는 원인은 무엇일까요? [answer] | `ColliderType`을 `Circle`로 설정했음에도 `CircleRadius` 값이 반영되지 않는 가장 흔한 원인은 **`IsLegacy` 프로퍼티가 `true`로 설정되어 있기 때문**입니다. `InteractionComponent`의 동작 방식은 `IsLegacy` 값에 따라 달라집니다. 1. **`IsLegacy`가 `true` (이전 시스템):** * `ColliderType`과 `CircleRadius` 프로퍼티는 **무시**됩니다. * 대신 `BoxOffset`(또는 `BoxSize`)을 [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=0 coherence=3 complexity=2 verbosity=2 [judge_reason] | IsLegacy가 [ReadOnly] 프로퍼티임에도 스크립트에서 값을 변경하는 코드를 제시하고, 문서에 없는 ColliderType.Circle 상수 식별자를 사용하며, IsLegacy가 true일 때 CircleRadius가 무시된다는 명시적 근거 없이 추측한 내용이 포함되어 있습니다. [source_doc] | 플레이어가 엔티티와 상호작용할 수 있는 기능을 제공합니다. # Properties - **KeyboardKey ActionKey [Sync]** Interaction에 사용할 Key를 설정합니다. - **string ActionName [Sync]** 말풍선에 표시될 상호작용의 이름을 설정합니다. - **Vector2 BoxOffset [Deprecated] [Sync]** IsLegacy가 true인 이전 시스템에서 사용할 수 있습니다. 엔티티를 기준으로 충돌체 직사각형의 중심점 위치를 설정합니다. - **Vecto

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