[task] | single_turn [pass] | ❌ 탈락 [title] | TweenLineComponent [question] | DestinationCoordinateType을 상대 좌표로 설정했을 때 Positions 값이 엔티티의 현재 위치를 기준으로 어떻게 해석되는지 궁금합니다. [answer] | `DestinationCoordinateType`을 상대 좌표(Relative)로 설정했을 때, `Positions`에 설정한 값은 엔티티의 **현재 위치(또는 트윈 시작 위치)** 를 기준으로 한 **이동 벡터**로 해석됩니다. 구체적으로 다음과 같이 동작합니다. 1. **기준점:** 트윈이 시작되는 시점의 엔티티 위치가 기준이 됩니다. 2. **해석 방식:** `Positions` 리스트에 포함된 각 `Vector2` 값은 절대 좌표가 아니라, **기준점에서 얼마나 이동할지**를 나타내는 오프셋(offset) 값입니다. [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=1 coherence=3 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 상대 좌표 해석 방식(누적 오프셋인지 절대 위치인지 등)에 대한 구체적인 설명이 없으므로, 응답이 추측하여 만든 예시와 동작 방식을 제시한 것은 문서 기반 정확성에서 감점 대상입니다. [source_doc] | 엔티티가 지정한 경로로 이동합니다. 다양한 움직임 효과를 지원합니다. # Properties - **CoordinateType DestinationCoordinateType [Sync]** Positions가 절대 좌표인지, 상대 좌표인지 설정합니다. 재생 중 변경되면 트윈을 재시작합니다. - **float Duration [Sync]** 출발지에서 목적지까지 편도 이동 시간을 설정합니다. 초 단위로 설정합니다. 예를 들어, Duration이 1이고 OneRoundTrip으로 이동한다면 각 편도 이동 시간은 정방향 1초,
[task] | single_turn [pass] | ❌ 탈락 [title] | RigidbodyComponent [question] | RigidbodyAttachEvent가 플레이어와 일반 엔티티별로 클라이언트와 서버에서 발생 위치가 다른 이유와 이를 처리할 때 주의해야 할 점이 무엇인가요? [answer] | RigidbodyAttachEvent가 플레이어와 일반 엔티티에 따라 발생하는 공간(클라이언트/서버)이 다른 이유는 네트워크 구조와 제어 주체 때문입니다. **1. 발생 위치가 다른 이유** * **플레이어 (Player):** * **발생 공간:** **클라이언트 (Client)** * **이유:** 플레이어의 이동, 점프, 붙기(Attach) 동작은 입력 지연을 최소화하고 부드러운 경험을 위해 로컬 클라이언트에서 우선 처리됩니다. 따라서 `RigidbodyComponent:AttachTo()`가 성공 [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=4 complexity=3 verbosity=3 [judge_reason] | 문서와 일치하는 핵심 사실(플레이어=클라이언트, 일반=서버)은 정확하나, mLua 이벤트 핸들러에 실행 공간 태그([client only] 등)를 붙여 동일한 이벤트를 공간별로 분리하는 문법은 표준 규칙에 부합하지 않으며, IsPlayer() API를 지어내어 정확성이 낮음. [source_doc] | - **FootholdCollisionEvent** RigidBodyComponent가 발판에 충돌했을 때 발생하는 이벤트입니다. - **FootholdEnterEvent** 엔티티가 발판에 붙었을 때 발생하는 이벤트입니다. - **FootholdLeaveEvent** 엔티티가 발판에서 떨어졌을 때 발생하는 이벤트입니다. - **RigidbodyAttachEvent** 엔티티가 RigidbodyComponent:AttachTo(string, Vector3)를 통해 특정 엔티티에 붙었을 때 발생하는 이벤트입니다. 플레이
[task] | code [pass] | ✅ 통과 [title] | TweenLineComponent [question] | TweenLineComponent의 Pause, Play, RestartFromCurrentPosition 메서드를 활용해 Q, W, R 키 입력에 따라 각각 일시정지, 재생, 현재 위치에서 재시작하는 스크립트를 작성해줘 [answer] | ```lua Method: [server] void HandleTweenControl (string action) { local tween = self.Entity.TweenLineComponent if action == "pause" then tween:Pause() elseif action == "play" then tween:Play() elseif action == "restart" then tween:RestartFromCurrentPosition() end } Event Handler: [servi [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 질문에서 요구한 Q, W, R 키 입력에 따른 TweenLineComponent의 Pause, Play, RestartFromCurrentPosition 메서드 호출 로직을 참고 문서의 API 명세와 예제 구조에 정확히 부합하도록 작성했으며, 불필요한 설명 없이 간결하고 명확합니다. [source_doc] | # Methods ##### inherited from TweenBaseComponent: - **void Destroy()** 컴포넌트를 제거합니다. CurrentState를 Destroying으로 변경합니다. - **void Pause()** 트윈을 일시정지합니다. CurrentState를 Pausing으로 변경합니다. - **void Play()** 트윈을 재생합니다. CurrentState를 Playing으로 변경합니다. - **void RestartFromCurrentPosition()** 현재 위치에서
[task] | single_turn [pass] | ✅ 통과 [title] | TweenLineComponent [question] | UseReturnTweenType이 true일 때 ReturnDuration과 Duration의 값이 각각 정방향과 역방향 이동에 어떻게 적용되는지 설명해 주실 수 있나요? [answer] | `UseReturnTweenType`이 `true`인 경우, `Duration`과 `ReturnDuration`은 각각 정방향(출발지 → 목적지) 이동과 역방향(목적지 → 출발지) 이동에 독립적으로 적용됩니다. 구체적인 적용 방식은 다음과 같습니다. 1. **정방향 이동 (출발지 → 목적지):** * **`Duration`** 값이 적용됩니다. * 엔티티가 시작 위치에서 `Positions`에 정의된 마지막 지점까지 이동하는 데 걸리는 시간입니다. 2. **역방향 이동 (목적지 → 출발지):** [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 정의와 예시를 정확히 인용하여 정방향과 역방향의 시간 적용 방식을 명확히 설명했으며, 반례까지 포함하여 이해를 도왔습니다. [source_doc] | 엔티티가 지정한 경로로 이동합니다. 다양한 움직임 효과를 지원합니다. # Properties - **CoordinateType DestinationCoordinateType [Sync]** Positions가 절대 좌표인지, 상대 좌표인지 설정합니다. 재생 중 변경되면 트윈을 재시작합니다. - **float Duration [Sync]** 출발지에서 목적지까지 편도 이동 시간을 설정합니다. 초 단위로 설정합니다. 예를 들어, Duration이 1이고 OneRoundTrip으로 이동한다면 각 편도 이동 시간은 정방향 1초,
[task] | code [pass] | ✅ 통과 [title] | TweenLineComponent [question] | TweenLineComponent의 Destroy 메서드를 활용해 T 키 입력 시 해당 컴포넌트를 제거하는 스크립트를 작성해줘 [answer] | T 키를 눌렀을 때 `TweenLineComponent`를 제거하는 스크립트입니다. `TweenLineComponent`의 `Destroy()` 메서드를 호출하여 컴포넌트를 삭제합니다. ```lua Method: [server] void DestroyTweenLine() { local tween = self.Entity.TweenLineComponent if tween then tween:Destroy() end } Event Handler: [service: InputService] Hand [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서의 API와 예시 코드를 정확히 참고하여 질문한 T 키 입력 시 Destroy 메서드 호출 스크립트를 오류 없이 작성했습니다. [source_doc] | # Methods ##### inherited from TweenBaseComponent: - **void Destroy()** 컴포넌트를 제거합니다. CurrentState를 Destroying으로 변경합니다. - **void Pause()** 트윈을 일시정지합니다. CurrentState를 Pausing으로 변경합니다. - **void Play()** 트윈을 재생합니다. CurrentState를 Playing으로 변경합니다. - **void RestartFromCurrentPosition()** 현재 위치에서
[task] | instruction_following [pass] | ❌ 탈락 [title] | ScrollLayoutGroupComponent [question] | Grid 타입에서만 사용 가능한 프로퍼티들을 모두 나열하되, 각 항목 뒤에 해당 프로퍼티의 데이터 타입을 괄호 안에 표기하여 5줄 이내로 정리하세요. [answer] | - CellSize (Vector2) - ChildAlignment (ChildAlignmentType) - Constraint (GridLayoutConstraint) - ConstraintCount (int32) - GridChildAlignment (ChildAlignmentType) [followup] | [followup_answer] | [scores] | helpfulness=1 correctness=2 coherence=3 complexity=1 verbosity=1 [judge_reason] | '5줄 이내'라는 제약으로 Grid 타입 전용 프로퍼티 6개 중 1개(GridSpacing)를 누락하여 질문 의도에 부합하지 않습니다. [source_doc] | 스크롤뷰와 관련된 컴포넌트들을 하나로 제어할 수 있습니다. # Properties - **Vector2 CellSize** 자식 UI Entity의 고정 크기입니다. Grid 타입 전용입니다. - **ChildAlignmentType ChildAlignment** Entity에 여유 공간이 있을 때 자식 UI Entity의 정렬 방식을 설정합니다. Vertical, Grid 타입 전용입니다. - **GridLayoutConstraint Constraint** 행, 열 개수에 대한 제약 사항입니다. Grid 타입 전용입
[task] | two_turn [pass] | ✅ 통과 [title] | RigidbodyComponent [question] | RigidbodyComponent의 중력(Gravity)과 지면 이동(WalkSpeed, WalkAcceleration)을 어떻게 조합하여 캐릭터의 물리적 감각을 조절하나요? [answer] | RigidbodyComponent의 `Gravity`, `WalkSpeed`, `WalkAcceleration`은 캐릭터의 물리적 감각을 결정하는 세 가지 핵심 축입니다. 각각의 역할과 조합 방식을 설명합니다. ### 1. 각 프로퍼티의 역할 * **Gravity (중력)** * **역할:** 캐릭터가 공중에서 지상으로 떨어지는 속도를 결정합니다. * **감각 조절:** * **값이 클수록:** 캐릭터가 빠르게 지면으로 떨어집니다. "무겁고 묵직"한, 현실적인 또는 빠른 템포의 액션을 [followup] | WalkSlant가 0.5일 때 급경사를 넘지 못하고 미끄러지는 경우, WalkDrag와 WalkAcceleration 값을 어떻게 조정해야 자연스러운 정지와 재가속이 가능한지 코드 예시를 요청합니다. [followup_answer] | `WalkSlant`가 0.5일 때 급경사에서 미끄러지는 현상은 캐릭터의 관성(속도)이 경사의 저항을 이겨내지 못하거나, 경사에서의 감속력이 너무 강하게 작용하여 발생하는 경우입니다. 자연스러운 정지와 재가속을 위해 `WalkDrag`와 `WalkAcceleration`을 조정하는 원리와 코드 예시는 다음과 같습니다. ### 1. 조정 원리 * **WalkDrag (지면 저항/미끄러짐 저항)** * **역할:** 미끄러지지 않고 빠르게 멈추게 하는 힘입니다. * **조절 전략:** * [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서에 명시된 Gravity, WalkSpeed, WalkAcceleration의 정의와 역할을 정확히 설명하고, mLua 표준 구문을 활용한 올바른 코드 예시를 제시하여 질문에 충실히 답했습니다. [source_doc] | 메이플스토리 움직임을 적용합니다. 중력 및 가·감속 영향을 받습니다. # Properties - **float AirAccelerationX** 공중에서의 속도를 보정합니다. 값이 증가할 수록 공중에서의 이동 속도가 빨라집니다. - **float AirDecelerationX** 공중에서의 입력이 없을 경우 X축의 이동 속도가 얼마나 빠르게 멈추는지를 보정합니다. - **boolean ApplyClimbableRotation [Sync]** true인 경우 회전하거나 기울어진 사다리를 탄 캐릭터는 사다리의 모습을 따릅
[task] | single_turn [pass] | ✅ 통과 [title] | ScrollLayoutGroupComponent [question] | 이 컴포넌트를 소유한 엔티티의 참조를 얻고 싶을 때 Entity 프로퍼티를 어떻게 활용하나요? [answer] | `ScrollLayoutGroupComponent`의 `Entity` 프로퍼티는 읽기 전용(ReadOnly)으로, 이 컴포넌트를 직접 소유하고 있는 엔티티의 참조를 반환합니다. 이 프로퍼티를 활용하여 해당 엔티티의 다른 컴포넌트나 프로퍼티에 접근할 수 있습니다. 아래는 `ScrollLayoutGroupComponent`가 붙어 있는 스크립트에서 `self.Entity`를 통해 해당 엔티티의 `TransformComponent` 위치를 로그로 출력하는 예시입니다. ```lua Property: [None] number LogMes [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 Entity 프로퍼티 정의와 mLua 표준 문법(self.Entity, 직접 컴포넌트 접근)에 부합하며, 코드 예제와 설명이 정확하고 명확합니다. [source_doc] | - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가 Enable 상태인지를 반환합니다. Enable이 true일지라도 엔티티의 Enable이 false라면 false를 반환합니다. - **Entity Entity [ReadOnly]** 이 컴포넌트를 소유한 엔티티입니다.
[task] | code [pass] | ✅ 통과 [title] | TweenLineComponent [question] | TweenLineComponent의 Stop 메서드와 reset 인자를 활용하여 E 키 입력 시 트윈을 중지하고 위치 및 진행도를 초기 상태로 되돌리는 스크립트를 작성해줘 [answer] | `TweenLineComponent`의 `Stop` 메서드는 `boolean` 타입의 `reset` 인자를 받습니다. 이 인자에 `true`를 전달하면 트윈이 중지되고, 트윈의 위치와 진행도가 초기 상태로 되돌아갑니다. 사용자가 요청한 대로 **E 키** 입력 시 이 동작을 수행하는 mLua 스크립트는 다음과 같습니다. ```lua Method: [server] void StopAndResetTween () { local tween = self.Entity.TweenLineComponent -- reset에 true를 전달하 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 Stop 메서드 시그니처와 예시 코드 구조를 정확히 따랐으며, 요청한 E 키 입력 조건을 적절히 구현하여 정확하고 유용한 답변입니다. [source_doc] | # Methods ##### inherited from TweenBaseComponent: - **void Destroy()** 컴포넌트를 제거합니다. CurrentState를 Destroying으로 변경합니다. - **void Pause()** 트윈을 일시정지합니다. CurrentState를 Pausing으로 변경합니다. - **void Play()** 트윈을 재생합니다. CurrentState를 Playing으로 변경합니다. - **void RestartFromCurrentPosition()** 현재 위치에서
[task] | instruction_following [pass] | ✅ 통과 [title] | ScrollLayoutGroupComponent [question] | Vertical 및 Horizontal 타입 전용으로 명시된 프로퍼티와 Grid 타입 전용으로 명시된 프로퍼티를 구분하여 비교하되, 각 그룹별로 프로퍼티 이름을 쉼표로 구분한 단 한 줄씩만 출력하세요. [answer] | Vertical, Horizontal 타입 전용: Spacing, ReverseArrangement Grid 타입 전용: CellSize, ChildAlignment, Constraint, ConstraintCount, GridChildAlignment, GridSpacing, StartAxis, StartCorner [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서의 타입 전용 명시 사항과 정확히 일치하며, 요청된 형식대로 간결하게 답변했습니다. [source_doc] | 스크롤뷰와 관련된 컴포넌트들을 하나로 제어할 수 있습니다. # Properties - **Vector2 CellSize** 자식 UI Entity의 고정 크기입니다. Grid 타입 전용입니다. - **ChildAlignmentType ChildAlignment** Entity에 여유 공간이 있을 때 자식 UI Entity의 정렬 방식을 설정합니다. Vertical, Grid 타입 전용입니다. - **GridLayoutConstraint Constraint** 행, 열 개수에 대한 제약 사항입니다. Grid 타입 전용입
[task] | single_turn [pass] | ❌ 탈락 [title] | TweenFloatingComponent [question] | 기존의 TransformComponent Position 변경 방식과 TweenFloatingComponent를 사용한 방식의 차이점이 무엇인가요? [answer] | 참고 문서에 제시된 두 가지 방식의 차이점은 다음과 같습니다. **1. TweenFloatingComponent 사용 방식** * **특징:** Entity에 부유(Floating)하는 듯한 효과를 주기 위해 설계된 전용 컴포넌트입니다. * **설정 방법:** 컴포넌트의 프로퍼티(`Amplitude`, `OneCycleTime`, `TweenType`)를 직접 설정하여 동작을 제어합니다. * **코딩 양:** 위치 변경 로직을 직접 작성하지 않고, 컴포넌트가 제공하는 기능을 활용하므로 코드가 간결합니다. * **예시 [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=1 coherence=3 complexity=2 verbosity=3 [judge_reason] | 참고 문서에 없는 _TweenLogic 서비스와 API(PlayTween, Ease)를 지어내어 코드 예제를 구성했고, TransformComponent.Position의 타입(보통 Vector3)과 Vector2 연산에 대한 설명이 불완전하며, 질문의 핵심인 '차이점'을 문서 기반의 부유 효과 설명으로만 제한하여 실질적 도움이 부족함 [source_doc] | Entity가 부유하는 듯한 효과를 주는 예제입니다. ```lua local tween = self.Entity.TweenFloatingComponent -- 이동 거리 0.1 tween.Amplitude = 0.1 -- 주기 1초 tween.OneCycleTime = 1 -- 서서히 느려지다가 다시 빨라지는 효과 tween.TweenType = EaseType.QuadEaseInOut ``` # SeeAlso * EaseType
[task] | two_turn [pass] | ✅ 통과 [title] | TweenLineComponent [question] | TweenLineComponent에서 트윈의 재생 및 일시정지 상태 전환을 어떻게 제어하나요? [answer] | `TweenLineComponent`에서 트윈의 재생과 일시정지 상태 전환은 `Play()`와 `Pause()` 메서드를 호출하여 제어합니다. 1. **`Play()`**: 트윈을 재생합니다. 호출 시 트윈의 `CurrentState`가 `Playing`으로 변경됩니다. 2. **`Pause()`**: 트윈을 일시정지합니다. 호출 시 트윈의 `CurrentState`가 `Pausing`으로 변경됩니다. 트윈의 현재 상태(`CurrentState`)를 확인하여 재생 중인지 일시정지 상태인지 판별한 뒤, 그에 따라 적절한 메서드를 [followup] | KeyDownEvent를 통해 Q키 입력 시 StopOrPlay 메서드를 호출하는 구체적인 mLua 코드 예시를 보여주세요. [followup_answer] | KeyDownEvent를 통해 Q키 입력 시 `StopOrPlay` 메서드를 호출하는 mLua 코드 예시는 다음과 같습니다. ```lua Method: [server] void StopOrPlay () { local tween = self.Entity.TweenLineComponent if tween.CurrentState == TweenState.Playing then tween:Pause() else tween:Play() end } Event Handler: [service: InputService] H [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 API 설명과 예시 코드를 정확히 인용하여 질문에 충실하고 명확하게 답변했습니다. [source_doc] | # Methods ##### inherited from TweenBaseComponent: - **void Destroy()** 컴포넌트를 제거합니다. CurrentState를 Destroying으로 변경합니다. - **void Pause()** 트윈을 일시정지합니다. CurrentState를 Pausing으로 변경합니다. - **void Play()** 트윈을 재생합니다. CurrentState를 Playing으로 변경합니다. - **void RestartFromCurrentPosition()** 현재 위치에서
[task] | code [pass] | ✅ 통과 [title] | TweenLineComponent [question] | TweenLineComponent의 CurrentState 프로퍼티와 IsClient 메서드를 활용해 클라이언트 환경에서 트윈 상태가 Playing인지 확인하고 로그로 출력하는 스크립트를 작성해줘 [answer] | `TweenLineComponent`의 `CurrentState` 프로퍼티와 `IsClient()` 메서드를 사용하여 클라이언트 환경에서 트윈 상태가 `Playing`인지 확인하고 로그로 출력하는 스크립트는 다음과 같습니다. 참고: `IsClient()`는 `TweenLineComponent`가 상속한 `Component`의 메서드이며, `CurrentState`와 `TweenState` 상수는 문서 예제에 따라 사용 가능한 것으로 간주합니다. ```lua Method: [client only] void CheckTweenSta [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서 및 시스템 규칙에 기반하여 요구된 API(CurrentState, IsClient)를 올바르게 활용하고, 클라이언트 환경 실행 속성([client only])을 적절히 적용한 정확하고 명확한 답변입니다. [source_doc] | # Methods ##### inherited from TweenBaseComponent: - **void Destroy()** 컴포넌트를 제거합니다. CurrentState를 Destroying으로 변경합니다. - **void Pause()** 트윈을 일시정지합니다. CurrentState를 Pausing으로 변경합니다. - **void Play()** 트윈을 재생합니다. CurrentState를 Playing으로 변경합니다. - **void RestartFromCurrentPosition()** 현재 위치에서
[task] | instruction_following [pass] | ✅ 통과 [title] | PlayerControllerComponent [question] | SetActionKey 메서드의 파라미터 순서와 선택적 파라미터를 코드 블록으로만 출력 [answer] | ```lua void SetActionKey(KeyboardKey key, string actionName, func -> boolean conditionFunction = nil) [ClientOnly] ``` [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 명시된 SetActionKey 메서드의 시그니처와 선택적 파라미터를 정확히 코드 블록으로만 제시하여 질문에 완벽히 부합합니다. [source_doc] | - **void ActionAttack() [ScriptOverridable]** Attack Key를 입력했을 때 동작입니다. - **void ActionClimb(Vector2 moveOffset, float climbHeight) [ScriptOverridable]** MoveUp, MoveDown Key를 입력했을 때 동작입니다. 사다리나 로프를 오르는 액션을 수행합니다. 지정된 위치 오프셋과 높이를 기준으로 등반 가능한 Entity가 있는지 확인하고, 등반 상태로 전환을 시도합니다. - **boolean Action
[task] | single_turn [pass] | ✅ 통과 [title] | ScrollLayoutGroupComponent [question] | ScrollLayoutGroupComponent의 Enable 속성에 [Sync] 태그가 붙어 있는 것이 클라이언트와 서버 간 동기화에 어떤 영향을 주나요? [answer] | `ScrollLayoutGroupComponent`의 `Enable` 속성에 `[Sync]` 태그가 붙어 있다는 것은, 이 속성의 값이 서버와 클라이언트 간에 자동으로 동기화됨을 의미합니다. 구체적인 영향은 다음과 같습니다: 1. **값 변경 시 전파**: 서버 스크립트에서 `Enable` 속성의 값을 변경하면(예: `true`에서 `false`로 변경), 이 변경 내용이 네트워크를 통해 해당 엔티티를 참조하는 모든 클라이언트로 전송됩니다. 2. **클라이언트 반영**: 클라이언트는 서버에서 동기화된 `Enable` 값을 수 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | [Sync] 태그의 의미와 서버-클라이언트 동기화 흐름을 mLua 규칙 및 문서 정보와 부합하게 정확하고 명확하게 설명했습니다. [source_doc] | - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가 Enable 상태인지를 반환합니다. Enable이 true일지라도 엔티티의 Enable이 false라면 false를 반환합니다. - **Entity Entity [ReadOnly]** 이 컴포넌트를 소유한 엔티티입니다.
[task] | single_turn [pass] | ✅ 통과 [title] | TweenLineComponent [question] | Pause()과 Stop(false)을 호출했을 때 트윈의 진행도(Progress) 유지 여부나 다음 재생 시 차이점이 있는지 설명해 주시겠어요? [answer] | 제공된 문서에는 `Pause()`와 `Stop(false)` 호출 시 트윈의 진행도(Progress)가 어떻게 유지되는지, 또는 다음 재생 시 어떤 차이가 발생하는지에 대한 구체적인 설명이 없습니다. 문서에서 확인 가능한 내용은 다음과 같습니다: 1. **Pause()**: 트윈을 일시정지하며, `CurrentState`를 `Pausing`으로 변경합니다. 2. **Stop(boolean reset)**: 트윈을 중지하며, `CurrentState`를 `Idle`로 변경합니다. `reset` 인자에 `true`를 지정할 경우 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 명시되지 않은 진행도 유지 여부나 재생 시 차이를 지어내지 않고, 문서에 있는 정보(Pause의 상태 변경, Stop의 reset 파라미터 의미)를 정확히 인용하여 답변의 한계를 명확히 설명했습니다. [source_doc] | # Methods ##### inherited from TweenBaseComponent: - **void Destroy()** 컴포넌트를 제거합니다. CurrentState를 Destroying으로 변경합니다. - **void Pause()** 트윈을 일시정지합니다. CurrentState를 Pausing으로 변경합니다. - **void Play()** 트윈을 재생합니다. CurrentState를 Playing으로 변경합니다. - **void RestartFromCurrentPosition()** 현재 위치에서
[task] | instruction_following [pass] | ✅ 통과 [title] | PlayerControllerComponent [question] | IsUpdateBlocked 속성의 [ReadOnly] 태그가 의미하는 바와 true가 되는 상황을 2문장 이내로 설명하세요. [answer] | `[ReadOnly]` 태그는 이 속성이 스크립트에서 직접 수정할 수 없으며 읽기 전용임을 의미합니다. 맵 이동 등 일시적으로 플레이어의 조작을 막아야 할 때 true가 됩니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서 내용을 정확히 인용하여 읽기 전용 속성의 의미와 true가 되는 상황을 2문장 이내로 명확하고 간결하게 설명했습니다. [source_doc] | Player의 조작과 연관된 컴포넌트입니다. 입력과 액션을 연동하고 그 흐름을 제어합니다. # Properties - **boolean AlwaysMovingState [Sync]** 항상 걷기 애니메이션을 재생할지 여부를 결정합니다. - **int32 FixedLookAt [Sync]** 이동 시에 바라보는 방향을 한쪽으로 고정합니다. - **boolean IsUpdateBlocked [ReadOnly] [HideFromInspector]** 플레이어의 입력 처리가 현재 차단되었는지 여부를 나타냅니다. 맵 이동과 같
[task] | two_turn [pass] | ✅ 통과 [title] | RigidbodyComponent [question] | RigidbodyComponent의 AttachTo와 Detach 메서드 사용 시 플레이어와 비플레이어 엔티티의 이벤트 발생 공간 차이와 타이머를 활용한 자동 분리 로직 구현 방법을 알려줘. [answer] | RigidbodyComponent의 `AttachTo`와 `Detach` 메서드 사용 시 이벤트 발생 공간은 엔티티의 종류(플레이어 여부)에 따라 달라집니다. ### 1. 이벤트 발생 공간 차이 * **RigidbodyAttachEvent**: 엔티티가 `AttachTo`를 통해 특정 엔티티에 붙었을 때 발생합니다. * **플레이어**: 클라이언트(Client) 공간에서 발생 * **비플레이어 엔티티**: 서버(Server) 공간에서 발생 * **RigidbodyDetachEvent**: 엔티티가 ` [followup] | 3초 후 자동으로 Detach되도록 OnUpdate에서 시간을 관리하는 코드 예제를 [client]와 [server only] 환경 모두에서 동작하도록 수정해줘. [followup_answer] | 참고 문서에 따르면 `RigidbodyAttachEvent`와 `RigidbodyDetachEvent`는 플레이어의 경우 클라이언트에서, 비플레이어 엔티티의 경우 서버에서 발생한다고 명시되어 있습니다. 또한 `AttachTo`와 `Detach` 메서드 자체에 대해 실행 공간(client/server) 제한이 명시되어 있지 않으므로, 엔티티의 종류에 따라 각각의 환경에서 로직이 실행되어야 합니다. `OnUpdate`와 타이머 관리 로직은 엔티티가 속한 공간(클라이언트/서버)에서 실행되어야 하므로, 단일 스크립트 블록 내에서 `[cl [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 이벤트 발생 공간 차이와 예제 코드를 정확히 인용하여 질문에 충실하게 답변했습니다. [source_doc] | - **FootholdCollisionEvent** RigidBodyComponent가 발판에 충돌했을 때 발생하는 이벤트입니다. - **FootholdEnterEvent** 엔티티가 발판에 붙었을 때 발생하는 이벤트입니다. - **FootholdLeaveEvent** 엔티티가 발판에서 떨어졌을 때 발생하는 이벤트입니다. - **RigidbodyAttachEvent** 엔티티가 RigidbodyComponent:AttachTo(string, Vector3)를 통해 특정 엔티티에 붙었을 때 발생하는 이벤트입니다. 플레이
[task] | single_turn [pass] | ✅ 통과 [title] | TweenLineComponent [question] | 예시 코드에서 트윈 상태를 확인하기 위해 CurrentState 속성을 직접 참조했는데, 이 속성은 어디에서 정의되는지 알 수 있을까요? [answer] | 제공된 참고 문서에는 `CurrentState` 속성이 `TweenLineComponent`에 직접 정의된 것이 아님을 암시하고 있습니다. 문서의 Methods 섹션에서 `Destroy()`, `Pause()`, `Play()`, `RestartFromCurrentPosition()`, `Stop(boolean reset)` 메서드들이 모두 **inherited from TweenBaseComponent**로 명시되어 있으며, 이 메서드들의 설명에 `CurrentState`를 특정 값(`Destroying`, `Pausing`, ` [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서에 명시된 상속 관계와 메서드 설명을 근거로 CurrentState가 TweenBaseComponent에서 정의됨을 논리적으로 추론했으며, 문서에 없는 세부 정보를 지어내지 않고 한계를 명확히 지적하여 정확하고 유용합니다. [source_doc] | # Methods ##### inherited from TweenBaseComponent: - **void Destroy()** 컴포넌트를 제거합니다. CurrentState를 Destroying으로 변경합니다. - **void Pause()** 트윈을 일시정지합니다. CurrentState를 Pausing으로 변경합니다. - **void Play()** 트윈을 재생합니다. CurrentState를 Playing으로 변경합니다. - **void RestartFromCurrentPosition()** 현재 위치에서
[task] | single_turn [pass] | ✅ 통과 [title] | TweenLineComponent [question] | TweenLineComponent에서 Stop 메서드의 reset 인자를 true로 전달할 경우 트윈의 상태와 위치가 어떻게 초기화되는지 궁금합니다. [answer] | `TweenLineComponent`의 `Stop` 메서드를 호출할 때 `reset` 인자에 `true`를 전달하면 트윈이 중지되고 `CurrentState`가 `Idle`로 변경됩니다. 이때 `reset`이 `true`이기 때문에 트윈의 **위치와 진행도가 초기 상태로 되돌아갑니다.** 즉, 트윈이 시작하기 전의 원래 위치와 진행 상태(0% 또는 초기 값)로 리셋된 후 정지된 상태가 됩니다. 반대로 `reset`에 `false`를 전달하면 트윈은 `Idle` 상태로 중지되지만, 현재 진행 중인 위치와 진행도는 유지됩니다. 아 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 Stop 메서드 설명과 예시 코드를 정확히 인용하여 reset=true/false 시의 상태 변화를 명확히 설명했고, mLua 문법도 올바르게 사용했습니다. [source_doc] | # Methods ##### inherited from TweenBaseComponent: - **void Destroy()** 컴포넌트를 제거합니다. CurrentState를 Destroying으로 변경합니다. - **void Pause()** 트윈을 일시정지합니다. CurrentState를 Pausing으로 변경합니다. - **void Play()** 트윈을 재생합니다. CurrentState를 Playing으로 변경합니다. - **void RestartFromCurrentPosition()** 현재 위치에서
[task] | instruction_following [pass] | ✅ 통과 [title] | ScrollLayoutGroupComponent [question] | 스크롤바의 시각적 외관(색상, 이미지, 두께)을 제어하는 프로퍼티와 그 기능을 설명하되, 답변은 프로퍼티 이름과 기능 설명을 2열로 구성한 표 형식으로만 작성하세요. [answer] | | 프로퍼티 이름 | 기능 설명 | | :--- | :--- | | ScrollBarBackgroundColor | 스크롤바의 배경 색상입니다. | | ScrollBarBgImageRUID | 스크롤바의 배경 이미지입니다. | | ScrollBarHandleColor | 스크롤바의 핸들 색상입니다. | | ScrollBarHandleImageRUID | 스크롤바의 핸들 이미지입니다. | | ScrollBarThickness | 스크롤바 영역의 두께입니다. | [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 질문에서 요구한 스크롤바 시각적 외관 관련 프로퍼티 5개를 문서와 정확히 일치하는 2열 표 형식으로만 서술하여 모든 기준을 충족합니다. [source_doc] | 스크롤뷰와 관련된 컴포넌트들을 하나로 제어할 수 있습니다. # Properties - **Vector2 CellSize** 자식 UI Entity의 고정 크기입니다. Grid 타입 전용입니다. - **ChildAlignmentType ChildAlignment** Entity에 여유 공간이 있을 때 자식 UI Entity의 정렬 방식을 설정합니다. Vertical, Grid 타입 전용입니다. - **GridLayoutConstraint Constraint** 행, 열 개수에 대한 제약 사항입니다. Grid 타입 전용입
[task] | two_turn [pass] | ✅ 통과 [title] | TweenLineComponent [question] | 왕복 이동(StopType) 시 ReturnDuration과 ReturnTweenType이 적용되는 조건과, UseReturnTweenType이 false일 때의 동작 차이는 무엇입니까? [answer] | 왕복 이동(`StopType`이 왕복으로 설정됨) 시 `ReturnDuration`과 `ReturnTweenType`이 적용되는 조건은 **`UseReturnTweenType`이 `true`**인 경우입니다. 이때의 동작은 다음과 같습니다: 1. **출발지 → 목적지**: `Duration`과 `TweenType`이 적용됩니다. 2. **목적지 → 출발지**: `ReturnDuration`과 `ReturnTweenType`이 적용됩니다. 반면, **`UseReturnTweenType`이 `false`**인 경우의 동작 차이는 [followup] | 왕복 이동에서 정방향과 역방향의 움직임 효과를 다르게 설정하는 코드 설정 방법을 알려주세요. [followup_answer] | 왕복 이동에서 정방향과 역방향의 움직임 효과를 다르게 설정하려면 `UseReturnTweenType` 프로퍼티를 `true`로 설정하고, 각각의 효과를 `TweenType`과 `ReturnTweenType`에 지정해야 합니다. * **정방향 (출발지 → 목적지)**: `TweenType` 속성이 적용됩니다. * **역방향 (목적지 → 출발지)**: `ReturnTweenType` 속성이 적용됩니다. * **시간 설정**: 정방향 시간은 `Duration`, 역방향 시간은 `ReturnDuration` 속성으로 설정합니다 [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 정의와 예시 설명을 정확히 반영하여 조건과 동작 차이를 명확히 설명했습니다. [source_doc] | 엔티티가 지정한 경로로 이동합니다. 다양한 움직임 효과를 지원합니다. # Properties - **CoordinateType DestinationCoordinateType [Sync]** Positions가 절대 좌표인지, 상대 좌표인지 설정합니다. 재생 중 변경되면 트윈을 재시작합니다. - **float Duration [Sync]** 출발지에서 목적지까지 편도 이동 시간을 설정합니다. 초 단위로 설정합니다. 예를 들어, Duration이 1이고 OneRoundTrip으로 이동한다면 각 편도 이동 시간은 정방향 1초,
[task] | instruction_following [pass] | ✅ 통과 [title] | PlayerControllerComponent [question] | LookDirectionX 속성의 양수·음수 방향성을 활용하여 캐릭터가 오른쪽을 바라보도록 설정하는 mLua 코드만 출력하고 설명은 주석으로 작성하세요. [answer] | ```lua Property: [Sync] boolean UseCustomScript = true Method: [server only] void OnBeginPlay () { -- LookDirectionX 양수 값은 오른쪽 방향을 의미하므로 1.0을 지정해 캐릭터가 오른쪽을 바라보게 설정합니다. self.Entity.PlayerControllerComponent.LookDirectionX = 1.0 } ``` [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 LookDirectionX 정의(양수=오른쪽)와 mLua 문법(컴포넌트 접근, OnBeginPlay)을 정확히 적용하여 요청대로 코드와 주석만 출력했습니다. [source_doc] | Player의 조작과 연관된 컴포넌트입니다. 입력과 액션을 연동하고 그 흐름을 제어합니다. # Properties - **boolean AlwaysMovingState [Sync]** 항상 걷기 애니메이션을 재생할지 여부를 결정합니다. - **int32 FixedLookAt [Sync]** 이동 시에 바라보는 방향을 한쪽으로 고정합니다. - **boolean IsUpdateBlocked [ReadOnly] [HideFromInspector]** 플레이어의 입력 처리가 현재 차단되었는지 여부를 나타냅니다. 맵 이동과 같
[task] | code [pass] | ✅ 통과 [title] | TweenFloatingComponent [question] | 서비스 _EntityService로 "/maps/map01/obj" 경로의 엔티티를 가져와서 TweenFloatingComponent의 AutoStart를 false로 설정하고 OnBeginPlay에서 Play()를 호출하여 시작하는 스크립트를 작성해줘 [answer] | 사용자가 요청한 기능은 `_EntityService:GetEntityByPath`로 엔티티를 조회하고, 해당 엔티티의 `TweenFloatingComponent`를 접근하여 `AutoStart`를 `false`로 설정한 후, `OnBeginPlay`에서 `Play()`를 호출하는 것입니다. 참고 문서에 따르면: 1. `_EntityService:GetEntityByPath(path)`는 엔티티를 가져오는 서비스 메서드입니다. 2. `TweenFloatingComponent`는 `TweenBaseComponent`를 상속하므로 `A [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서와 규칙에 부합하는 정확한 코드와 설명을 제공했으며, 다른 엔티티 제어 시的生命주기 메서드 오용을 경계하는 유용한 주석을 포함했습니다. [source_doc] | Entity가 위 아래로 왕복 이동합니다. # Properties - **float Amplitude [Sync]** 최저점에서 최고점까지의 거리를 설정합니다. 값이 1인 경우 시작 위치에서 최고/최저점까지의 거리는 0.5가 됩니다. - **float OneCycleTime [Sync]** 최저점에서 최고점까지 이동하는데 걸리는 시간을 설정합니다. 초 단위입니다. 예를 들어, 값이 1인 경우 한 이동 주기는 2초가 소요됩니다. - **EaseType TweenType [Sync]** 움직임 효과를 설정합니다. ###
[task] | single_turn [pass] | ✅ 통과 [title] | TweenLineComponent [question] | RestartFromCurrentPosition()을 호출한 후 Play()를 실행하면 처음부터 다시 움직이지 않고 중단된 지점부터 이어지는 것 맞나요? [answer] | 네, 맞습니다. `RestartFromCurrentPosition()` 메서드는 트윈의 진행도를 초기화하지 않고 **현재 위치(중단된 지점)를 기준으로** 재시작하도록 설정합니다. 따라서 이 메서드를 호출한 후 `Play()`를 실행하면, 트윈은 처음부터 다시 움직이는 것이 아니라 **마지막으로 멈춰 있던 지점부터** 움직임을 이어서 진행합니다. 참고로, 처음부터 다시 움직이게 하려면 `Stop(true)`를 호출하여 위치와 진행도를 초기 상태로 되돌린 후 `Play()`를 실행하거나, 트윈을 초기화하는 다른 로직을 사용해야 합 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 RestartFromCurrentPosition 설명과 Stop(reset) 의미를 정확히 해석하여 질문에 명확하게 답했으며, 예시 코드도 적절함. [source_doc] | # Methods ##### inherited from TweenBaseComponent: - **void Destroy()** 컴포넌트를 제거합니다. CurrentState를 Destroying으로 변경합니다. - **void Pause()** 트윈을 일시정지합니다. CurrentState를 Pausing으로 변경합니다. - **void Play()** 트윈을 재생합니다. CurrentState를 Playing으로 변경합니다. - **void RestartFromCurrentPosition()** 현재 위치에서
[task] | instruction_following [pass] | ✅ 통과 [title] | PlayerControllerComponent [question] | ActionJump와 ActionDownJump의 반환 타입을 구분하여 3문장 이내로 설명 [answer] | ActionJump와 ActionDownJump는 `float horizontalInput` 인자를 받아 점프 또는 다운 점프 액션을 실행하며, 성공 여부를 나타내는 `boolean` 타입을 반환합니다. 반면, 인자 없이 호출되는 `void ActionJump()`와 `void ActionDownJump()`는 키 입력 시점에 동작하는 오버라이드용 메서드로, 반환값이 없습니다. 따라서 액션 실행 결과 확인이 필요한 경우 인자 있는 버전을, 단순히 키 입력 이벤트 처리 시에는 인자 없는 버전을 사용합니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 API 시그니처와 반환 타입을 정확히 구분하여 질문한 3문장 이내로 명확하게 설명했습니다. [source_doc] | - **void ActionAttack() [ScriptOverridable]** Attack Key를 입력했을 때 동작입니다. - **void ActionClimb(Vector2 moveOffset, float climbHeight) [ScriptOverridable]** MoveUp, MoveDown Key를 입력했을 때 동작입니다. 사다리나 로프를 오르는 액션을 수행합니다. 지정된 위치 오프셋과 높이를 기준으로 등반 가능한 Entity가 있는지 확인하고, 등반 상태로 전환을 시도합니다. - **boolean Action
[task] | single_turn [pass] | ✅ 통과 [title] | ScrollLayoutGroupComponent [question] | 스크롤바가 화면 경계를 벗어나는 경우 ScrollBarMovementType 속성 값에 따라 어떤 동작 차이가 나는지 설명해 주세요. [answer] | 제공된 문서에는 `ScrollBarMovementType` 속성이 "스크롤 바가 경계를 벗어날 때의 동작 방식을 지정한다"는 설명만 있을 뿐, 구체적인 값(예: Clamped, Elastic 등)이 어떤 동작을 수행하는지에 대한 상세 정보나 열거형(Enum) 값 목록이 포함되어 있지 않습니다. 따라서 문서에 근거하여 특정 값별 동작 차이를 설명하는 것은 불가능합니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서에 열거형 값이 명시되지 않았음을 정확히 인지하고, 없는 정보를 지어내지 않으며 질문에 충실하게 답변했습니다. [source_doc] | 스크롤뷰와 관련된 컴포넌트들을 하나로 제어할 수 있습니다. # Properties - **Vector2 CellSize** 자식 UI Entity의 고정 크기입니다. Grid 타입 전용입니다. - **ChildAlignmentType ChildAlignment** Entity에 여유 공간이 있을 때 자식 UI Entity의 정렬 방식을 설정합니다. Vertical, Grid 타입 전용입니다. - **GridLayoutConstraint Constraint** 행, 열 개수에 대한 제약 사항입니다. Grid 타입 전용입
[task] | single_turn [pass] | ✅ 통과 [title] | ScrollLayoutGroupComponent [question] | OrderInLayer 값이 같을 때 스크롤뷰 안의 UI들이 겹치면 어떤 기준으로 앞뒤가 정해지는지, 아니면 무작위로 보이는지 궁금합니다. [answer] | 제공된 참고 문서에는 `OrderInLayer` 값이 동일할 경우의 겹침 처리 기준(예: 생성 순서, 이름 순서, 무작위 등)에 대한 설명이 포함되어 있지 않습니다. 문서에는 다음과 같은 정보만 명시되어 있습니다: - **OrderInLayer**: 같은 Layer 내의 우선순위를 결정합니다. 수가 클수록 앞에 보입니다. 따라서 `OrderInLayer` 값이 같을 때의 정확한 렌더링 순서 결정 규칙은 알 수 없습니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서에 명시되지 않은 동등 값 처리 규칙을 지어내지 않고 문서 범위 내에서 정확히 답변했습니다. [source_doc] | 스크롤뷰와 관련된 컴포넌트들을 하나로 제어할 수 있습니다. # Properties - **Vector2 CellSize** 자식 UI Entity의 고정 크기입니다. Grid 타입 전용입니다. - **ChildAlignmentType ChildAlignment** Entity에 여유 공간이 있을 때 자식 UI Entity의 정렬 방식을 설정합니다. Vertical, Grid 타입 전용입니다. - **GridLayoutConstraint Constraint** 행, 열 개수에 대한 제약 사항입니다. Grid 타입 전용입
[task] | code [pass] | ❌ 탈락 [title] | TileMapComponent [question] | TileMapComponent의 OrderInLayer 프로퍼티가 100보다 클 경우 Color 프로퍼티를 빨간색으로 변경하고, 그 이하일 경우 파란색으로 변경하는 스크립트를 작성해줘 [answer] | TileMapComponent의 `OrderInLayer` 프로퍼티는 `int32` 타입이며, `Color` 프로퍼티는 `Color` 타입입니다. 제공된 문서에는 `Color` 객체를 생성하거나 빨간색/파란색 RGB 값을 설정하는 구체적인 API(예: `Color(1, 0, 0)`)가 명시되어 있지 않습니다. 또한 `OnUpdate`나 `OnBeginPlay` 등에서 특정 값과 비교하여 프로퍼티를 변경하는 로직은 표준 Lua 5.3 문법으로 작성할 수 있습니다. 문서에 명시된 `TileMapComponent`의 프로퍼티와 표준 생 [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=1 coherence=3 complexity=3 verbosity=3 [judge_reason] | Color 타입의 생성자 문법(Color(1,0,0))이 문서에 없어 지어낸 것으로 간주되며, 질문의 의도(조건부 색상 변경)에 대해 불필요한 주의사항과 중복 코드로 장황함 [source_doc] | 메이플스토리 지형 기능을 제공합니다. 맵 레이어당 하나만 존재할 수 있습니다. # Properties - **Color Color [Sync]** 타일맵의 색상을 지정합니다. - **boolean CreateFoothold [MakerOnly]** 발판의 생성 여부를 결정합니다. false일 시 발판은 생성되지 않습니다. - **float FootholdDrag [ReadOnly]** RigidbodyComponent가 포함된 엔티티가 발판 위에 있을 때 적용되는 마찰력입니다. 값이 클수록 빠르게 감속합니다. - **
[task] | instruction_following [pass] | ✅ 통과 [title] | ScrollLayoutGroupComponent [question] | ScrollPositionChangedEvent가 발생하는 조건과 ScrollLayoutGroupComponent에서 해당 이벤트를 처리하기 위한 Event Handler 선언부만 3문장 이내로 설명하세요. [answer] | ScrollPositionChangedEvent는 UI Entity에 ScrollLayoutGroupComponent 또는 GridViewComponent가 장착되어 있고, 스크롤 위치가 변경될 때 발생합니다. 이벤트 처리를 위한 Event Handler 선언부는 `[self]` 속성과 함께 `HandleScrollPositionChangedEvent(ScrollPositionChangedEvent event)` 함수를 정의하는 것입니다. ```lua Event Handler: [self] HandleScrollPositionCha [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서에 명시된 이벤트 발생 조건과 mLua 표준 Event Handler 구문을 정확히 준수하여 질문을 간결하게 답변했습니다. [source_doc] | # Methods - **Vector2 GetScrollNormalizedPosition()** 스크롤바의 정규화된 위치를 반환합니다. - **float GetScrollNormalizedPosition(UITransformAxis axis)** 지정한 방향 스크롤바의 정규화된 위치를 반환합니다. - **void ResetScrollPosition(UITransformAxis axis)** 지정한 축의 스크롤바 위치를 처음 위치로 이동합니다. 스크롤바의 방향에 따라 처음 위치가 다릅니다. - **void SetScrol