← 목록

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

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

[task] | single_turn [pass] | ❌ 탈락 [title] | HitComponent [question] | PlayerHit 스크립트의 IsHitTarget에서 _UtilLogic.ElapsedSeconds와 LastHitTime 비교 시 부등호 방향이 잘못되어 무적이 영구 지속될 수 있는 오류 원인은 무엇인가요? [answer] | 제시된 `PlayerHit` 스크립트의 `IsHitTarget` 함수에서 부등호 방향 오류로 인해 무적이 영구 지속되는 현상은 **피격 조건 판정 로직이 항상 참(True)이 되도록 되어 있기 때문**입니다. 코드 분석 결과, 오류 원인은 다음과 같습니다. 1. **정상적인 무적 로직**: 일반적으로 무적 시간(`ImmuneCooldown`) 동안에는 피격 불가(false), 그 이후에는 피격 가능(true)이 되어야 합니다. 이를 위해 `현재시간 > 마지막피격시간 + 무적시간` 일 때 피격 가능하도록 해야 합니다. 2. * [followup] | [followup_answer] | [scores] | helpfulness=1 correctness=2 coherence=2 complexity=3 verbosity=4 [judge_reason] | 질문의 전제인 '부등호 오류로 인한 영구 무적'이 문서의 실제 코드(정상 동작하는 무적 로직)와 일치하지 않음에도, 답변은 이를 인정하면서도 장황하게 오류 시나리오를 가정하고 문서에 없는 버그 원인을 지어내며, 핵심 결론(코드에 오류 없음)을 명확히 전달하지 못함. [source_doc] | 다음은 몬스터가 플레이어의 공격을 받을 때마다 `HitComponent`의 BoxSize를 남은 체력에 반비례하게 키우는 예제입니다. ```lua Property: [Sync] number Health = 1000 [None] number InitialHealth = 0 [None] Vector2 InitialBoxSize = Vector2(0,0) Method: [server only] void OnBeginPlay () { self.InitialHealth = self.Health self.InitialBoxSize

[task] | single_turn [pass] | ✅ 통과 [title] | TouchReceiveComponent [question] | DynamicTouchArea 프로퍼티를 사용하던 중 에러가 발생했는데, 이를 대체할 수 있는 방법은 무엇인가요? [answer] | `DynamicTouchArea` 프로퍼티는 더 이상 사용하지 않는(Deprecated) 프로퍼티이므로, 이를 대체하기 위해 `AutoFitToSize` 프로퍼티를 사용해야 합니다. `AutoFitToSize`를 `true`로 설정하면 `AvatarRendererComponent` 또는 `SpriteRendererComponent`의 Scale 값이 변할 때마다 터치 영역(`TouchArea`)과 오프셋(`Offset`) 값이 자동으로 변경됩니다. 또한 최초 한 번만 Scale 값에 맞춰 자동으로 변경되길 원한다면 `AutoFi [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서에 명시된 대체 프로퍼티(AutoFitToSize)와 그 동작 방식을 정확히 설명했으며, 제공된 예시 코드도 mLua 문법과 API 사용법에 부합한다. [source_doc] | 엔티티를 터치할 수 있게 되며 터치 시 동작을 제어할 수 있습니다. # Properties - **boolean AutoFitOnce [MakerOnly]** true로 설정하면 AvatarRendererComponent 또는 SpriteRendererComponent의 Scale 값에 맞추어 TouchArea 및 Offset 값을 자동으로 변경됩니다. 최초 한 번만 변경합니다. - **boolean AutoFitToSize** true로 설정하면 AvatarRendererComponent 또는 SpriteRenderer

[task] | single_turn [pass] | ❌ 탈락 [title] | CameraComponent [question] | 카메라 줌을 300%로 설정하는 코드에서 `self.Entity.CameraComponent` 접근 방식이 다른 컴포넌트 접근 방식과 어떻게 다른가요? [answer] | 제공된 참고 문서에는 `self.Entity.CameraComponent` 접근 방식이 다른 컴포넌트 접근 방식과 어떻게 다른지에 대한 비교 설명이나 다른 컴포넌트의 예제가 포함되어 있지 않습니다. 문서에 명시된 정보에 따르면, 카메라 줌을 300%로 설정하는 코드에서 해당 컴포넌트는 `self.Entity.CameraComponent` 형태로 직접 접근하며, `:SetZoomTo(300, 2)` 메서드를 호출하는 것으로 확인됩니다. 하지만 이를 다른 컴포넌트(예: `PlayerComponent`, `TransformCompone [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서에 비교 정보가 없음을 정확히 지적하고, 시스템 규칙에 포함된 표준 컴포넌트 접근 방식(self.Entity.X)을 활용하여 가능한 한 정보를 제공하였으나, 질문의 핵심인 '차이점'을 직접 설명하지 못해 도움의 정도가 제한적입니다. [source_doc] | # Examples 4초 뒤에 줌 배율을 300%로 설정하는 코드입니다. ```lua Method: [server only] void OnBeginPlay ( ) { local zoom = function() self.Entity.CameraComponent:SetZoomTo(300, 2) end _TimerService:SetTimerOnce(zoom, 4) } ``` # SeeAlso * TimerService * [CameraService를 활용한 카메라 제어](/docs?postId=118)

[task] | single_turn [pass] | ✅ 통과 [title] | AvatarRendererComponent [question] | 아바타의 무기를 교체할 때 ShowDefaultWeaponEffects 프로퍼티를 false로 설정하면 기본 이펙트와 사운드가 사라지는데, 커스텀 이펙트를 적용하려면 어떤 방식으로 처리해야 하는지 설명해 주세요. [answer] | 제공된 문서에는 `ShowDefaultWeaponEffects` 프로퍼티가 "무기의 기본 이펙트 애니메이션과 기본 사운드 재생 여부를 설정"한다고만 명시되어 있습니다. 하지만 문서에는 **커스텀 이펙트를 적용하는 구체적인 API, 메서드, 또는 이벤트가 정의되어 있지 않습니다.** `AvatarRendererComponent`에 제공되는 메서드는 `ChangeMaterial`, `GetAvatarRootEntity`, `GetBodyEntity`, `GetFaceEntity`, `PlayEmotion`, `SetAlpha`, `S [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서에 없는 커스텀 이펙트 API를 지어내지 않고 존재하지 않는 한계를 명확히 설명했으며, ShowDefaultWeaponEffects 설정 예제 또한 문서의 프로퍼티와 mLua 문법에 부합합니다. [source_doc] | 아바타 형태의 엔티티를 렌더링합니다. # Properties - **boolean IgnoreMapLayerCheck [Sync]** SortingLayer에 Map Layer 이름을 지정했을 때 자동 치환을 수행하지 않습니다. - **string MaterialId [Sync]** 렌더러에 적용할 머티리얼의 Id를 지정합니다. - **int32 OrderInLayer** 같은 Layer 내의 우선순위를 결정합니다. 수가 클수록 앞에 보입니다. - **float PlayRate [Sync]** 아바타 애니메이션의

[task] | instruction_following [pass] | ✅ 통과 [title] | JoystickComponent [question] | 문서에 명시된 JoystickComponent의 기능과 예제 시나리오를 3문장 이내로 요약하세요. [answer] | JoystickComponent는 모바일 환경에서 가상의 조작키를 통해 플레이어의 이동을 제어하는 컴포넌트입니다. 이 컴포넌트는 조이스틱의 방향에 따라 입력될 키보드 키를 설정하고, 터치 위치에 따라 조이스틱 위치가 이동하도록 동적으로 조정할 수 있습니다. 제공된 예제는 트리거 영역에 진입했을 때 클라이언트 공간에서 조이스틱의 아래 방향 입력 키를 E키로 변경하는 시나리오를 보여줍니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서의 핵심 기능과 예제 시나리오를 3문장 이내로 정확하고 명확하게 요약했습니다. [source_doc] | 모바일 환경에서 플레이어의 이동을 제어할 수 있는 가상의 조작키 기능을 지원해주는 Component입니다. # Properties - **AxisType Axis** 조작키가 움직일 수 있는 축 타입을 설정합니다. - **KeyboardKey DownArrow** 조작키가 아래로 이동했을 때 입력되는 키입니다. - **boolean DynamicStick** 플레이 시 조작키의 위치가 유저가 터치한 곳으로 이동합니다. - **KeyboardKey LeftArrow** 조작키가 왼쪽으로 이동했을 때 입력되는 키입니다

[task] | single_turn [pass] | ✅ 통과 [title] | CameraComponent [question] | CameraOffset과 ScreenOffset 프로퍼티가 모두 카메라 위치를 조정하는데, 이 둘은 각각 어떤 기준으로 작동하며 언제 각각을 사용해야 하나요? [answer] | `CameraOffset`과 `ScreenOffset`은 모두 카메라의 위치를 조정하지만, 좌표 기준과 적용 조건이 명확하게 다릅니다. **1. CameraOffset** * **작동 기준:** **월드 좌표(World Coordinate)** 기준입니다. * **특징:** 카메라의 절대적인 위치를 지정하거나 오프셋을 적용할 때 사용됩니다. * **사용 시점:** 특정 월드 좌표 위치로 카메라를 이동시키거나, 월드 공간에서 고정된 오프셋을 적용해야 할 때 사용합니다. **2. ScreenOffset** * **작동 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 정의(월드 좌표 vs 스크린 비율, ConfineCameraArea 제약)를 정확히 설명하고, mLua 규칙에 부합하는 코드 예제를 제공하여 질문에 충실히 답변했습니다. [source_doc] | Entity를 바라보는 카메라 기능을 제공합니다. 카메라 간 화면 전환은 CameraService를 이용하세요. # Properties - **Vector2 CameraOffset** 카메라의 위치를 설정합니다. 월드 좌표 기준입니다. - **boolean ConfineCameraArea** 카메라가 비추는 범위를 맵의 발판 영역으로만 제한합니다. - **Vector2 Damping** 카메라가 대상을 추적하는 동안 대상이 SoftZone에 들어갈 때 카메라가 반응하는 속도를 조정합니다. 값이 작을수록 더욱 더 빠르게

[task] | two_turn [pass] | ✅ 통과 [title] | TouchReceiveComponent [question] | TouchReceiveComponent의 주요 프로퍼티와 이벤트에 대해 설명해 주세요. [answer] | TouchReceiveComponent는 엔티티가 터치 입력을 수신할 수 있게 하고, 터치 시 발생하는 동작을 제어하는 컴포넌트입니다. ### 주요 프로퍼티 * **AutoFitOnce** (`boolean`): `true`로 설정하면 `AvatarRendererComponent` 또는 `SpriteRendererComponent`의 Scale 값에 맞춰 `TouchArea`와 `Offset` 값을 최초 한 번만 자동으로 변경합니다. * **AutoFitToSize** (`boolean`): `true`로 설정하면 렌더러 [followup] | AutoFitToSize와 RelayEventToBehind의 차이는 무엇이며, TouchHoldEvent와 TouchReleaseEvent가 짧은 터치에서 발생하지 않는 이유는 무엇인가요? [followup_answer] | ### AutoFitToSize와 RelayEventToBehind의 차이 이 두 프로퍼티는 완전히 다른 목적을 가지고 있습니다. * **AutoFitToSize**: 터치 영역의 **크기와 위치**를 렌더러에 맞춰 자동으로 조정하는 기능입니다. * `true`로 설정하면 `AvatarRendererComponent` 또는 `SpriteRendererComponent`의 Scale 값이 변할 때마다 `TouchArea`(크기)와 `Offset`(중심점) 값을 자동으로 변경합니다. * 이는 캐릭터나 스프라 [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 프로퍼티, 이벤트, 예제 코드를 모두 정확하고 명확하게 설명하고 있어 질문자에게 큰 도움이 됩니다. [source_doc] | 엔티티를 터치할 수 있게 되며 터치 시 동작을 제어할 수 있습니다. # Properties - **boolean AutoFitOnce [MakerOnly]** true로 설정하면 AvatarRendererComponent 또는 SpriteRendererComponent의 Scale 값에 맞추어 TouchArea 및 Offset 값을 자동으로 변경됩니다. 최초 한 번만 변경합니다. - **boolean AutoFitToSize** true로 설정하면 AvatarRendererComponent 또는 SpriteRenderer

[task] | instruction_following [pass] | ✅ 통과 [title] | TouchReceiveComponent [question] | `AddHandler` 메서드에서 이벤트 연결이 중복되지 않도록 방지하는 가드 조건문을 코드만 출력하고 설명은 주석으로 작성하세요. [answer] | ```lua Method: [client] void AddHandler (integer touchId) { -- Handler가 이미 존재하면(이벤트가 이미 연결된 상태) 중복 연결을 방지하기 위해 즉시 반환합니다. if self.Handler ~= nil then return end table.insert(self.Index, touchId) self.Handler = _InputService:ConnectEvent(ScreenTouchHoldEvent, self.Move) } ``` [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 코드와 일치하며, 가드 조건문을 명확히 주석으로 설명해 질문에 정확히 부합합니다. [source_doc] | 플레이어가 엔티티를 터치하고 이동시키는 예제입니다. `TouchReceiveComponent`가 엔티티에 추가되어야 합니다. ```lua Property: [None] table<integer> Index [None] any Handler = nil Method: [client] void Move (any screenholdEvent) { local touchId = screenholdEvent.TouchId local touchPoint = screenholdEvent.TouchPoint local string f

[task] | two_turn [pass] | ❌ 탈락 [title] | AIWanderComponent [question] | AIWanderComponent에서 제공하는 CreateLeafNode와 CreateNode 메서드를 사용하여 커스텀 행동 트리를 구성할 때 onBehaveFunction의 delta 매개변수는 어떻게 사용되며, SetRootNode를 호출하기 전후로 주의할 점은 무엇인가요? [answer] | `AIWanderComponent`를 상속받은 AI 컴포넌트에서 `CreateLeafNode`와 `CreateNode` 메서드를 사용하여 커스텀 행동 트리를 구성할 때, `onBehaveFunction`의 `delta` 매개변수와 `SetRootNode` 호출 시 주의사항은 다음과 같습니다. ### 1. `onBehaveFunction`의 `delta` 매개변수 사용법 `CreateLeafNode`와 `CreateNode` 메서드에 전달하는 `onBehaveFunction` (함수)은 행동 트리 노드가 실행될 때마다 호출됩니다. [followup] | CreateNode에서 nodeType과 onBehaveFunction을 함께 사용할 때 기존 BTNodeType의 OnInit/OnBehave가 무시되는지 코드 예시를 통해 확인하고 싶습니다. [followup_answer] | `CreateNode` 메서드에서 `onBehaveFunction`을 `nil`이 아닌 값으로 전달하면, 해당 노드가 실행될 때 **기존 `BTNodeType`의 `OnInit()`와 `OnBehave()` 함수가 무시**되고, 전달된 `onBehaveFunction` 함수만 호출됩니다. 즉, `onBehaveFunction`이 `nil`이 아니라면: * `OnInit()`: 호출되지 않음 * `OnBehave(delta)`: 호출되지 않음 * `onBehaveFunction(delta)`: 매 프레임마다 호출됨 이 [scores] | helpfulness=2 correctness=0 coherence=2 complexity=3 verbosity=3 [judge_reason] | 문서에 없는 _UtilLogic, MovementComponent, BehaviourTreeStatus, Vector2.zero, self.Entity.AIComponent 등 API를 다수 지어냈고, mLua 구문이 아닌 C# 스타일 코드를 제시하여 정답이 아님. [source_doc] | 주변을 배회하는 AI입니다. StateComponent가 없다면 자동으로 추가됩니다. # Properties ##### inherited from AIComponent: - **string BehaviourTreeId [ReadOnly]** 행동 트리 엔트리의 고유 식별자입니다. - **Blackboard BlackBoard [ReadOnly]** AI 행동 트리에서 사용하는 데이터 저장소입니다. 키-값 쌍으로 데이터를 관리하며 행동 트리 노드 간 데이터를 공유합니다. - **boolean IsLegacy [ReadOn

[task] | instruction_following [pass] | ✅ 통과 [title] | JoystickComponent [question] | JoystickComponent의 고유 프로퍼티 6가지를 표로 정리해서 출력하세요. [answer] | JoystickComponent의 고유 프로퍼티 6가지는 다음과 같습니다. | 프로퍼티 이름 | 타입 | 설명 | | :--- | :--- | :--- | | `Axis` | `AxisType` | 조작키가 움직일 수 있는 축 타입을 설정합니다. | | `DownArrow` | `KeyboardKey` | 조작키가 아래로 이동했을 때 입력되는 키입니다. | | `DynamicStick` | `boolean` | 플레이 시 조작키의 위치가 유저가 터치한 곳으로 이동하도록 설정합니다. | | `LeftArrow` | `Keyboard [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 JoystickComponent 고유 프로퍼티 6가지를 이름, 타입, 설명이 정확히 일치하도록 표로 깔끔하게 정리했습니다. [source_doc] | 모바일 환경에서 플레이어의 이동을 제어할 수 있는 가상의 조작키 기능을 지원해주는 Component입니다. # Properties - **AxisType Axis** 조작키가 움직일 수 있는 축 타입을 설정합니다. - **KeyboardKey DownArrow** 조작키가 아래로 이동했을 때 입력되는 키입니다. - **boolean DynamicStick** 플레이 시 조작키의 위치가 유저가 터치한 곳으로 이동합니다. - **KeyboardKey LeftArrow** 조작키가 왼쪽으로 이동했을 때 입력되는 키입니다

[task] | code [pass] | ✅ 통과 [title] | DamageSkinSettingComponent [question] | DamageSkinSettingComponent가 활성화되어 있는지 Enable 및 EnableInHierarchy 속성을 확인하고 로그로 출력하는 스크립트를 작성해줘 [answer] | `DamageSkinSettingComponent`의 `Enable` 속성은 컴포넌트 자체의 활성화 여부를, `EnableInHierarchy` 속성은 계층 구조를 고려한 실제 활성화 여부를 반환합니다. 두 값은 모두 `boolean` 타입이며, `EnableInHierarchy`는 읽기 전용(ReadOnly) 속성입니다. 아래 스크립트는 컴포넌트가 존재하는지 확인한 후, 해당 속성들의 값을 로그로 출력합니다. ```lua Method: [server only] void OnBeginPlay() { local damage [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 속성 정의(Enable, EnableInHierarchy)와 mLua 스크립트 규칙(컴포넌트 접근, 로그 출력)에 정확히 부합하며 요구사항을 명확하게 충족합니다. [source_doc] | 공격 시 재생할 대미지 스킨의 형식을 설정합니다. 피격 엔티티는 DamageSkinSpawnerComponent가 있어야 합니다. # Properties - **float Alpha [Sync]** 대미지 스킨의 Alpha 값을 설정합니다. - **DataRef DamageSkinId [Sync]** 대미지 스킨의 종류를 설정합니다. - **Vector2 DamageSkinScale [Sync]** 대미지 스킨의 크기를 설정합니다. - **float DelayPerAttack [Sync]** 대미지 분할 재생 간격

[task] | single_turn [pass] | ❌ 탈락 [title] | CameraComponent [question] | `SetZoomTo`를 호출했는데 카메라 줌이 반응하지 않을 때, 가장 먼저 확인해야 할 스크립트 실행 공간 설정은 어디인가요? [answer] | `SetZoomTo` 메서드는 카메라의 렌더링 상태를 변경하는 작업이므로, **클라이언트**에서 실행되어야 합니다. 제공된 참고 문서의 예제 코드에서 `SetZoomTo`가 포함된 메서드에 `[server only]` 실행 공간이 지정되어 있습니다. ```lua Method: [server only] void OnBeginPlay ( ) { local zoom = function() self.Entity.CameraComponent:SetZoomTo(300, 2) end _TimerService:SetTimerOn [followup] | [followup_answer] | [scores] | helpfulness=1 correctness=1 coherence=2 complexity=None verbosity=2 [judge_reason] | 참고 문서의 예제가 [server only]에서 SetZoomTo를 정상적으로 호출하는 것을 보여주는데, 응답은 이를 무시하고 클라이언트에서만 동작한다고 단정하며 문서를 반박하는 잘못된 정보를 제공함 [source_doc] | # Examples 4초 뒤에 줌 배율을 300%로 설정하는 코드입니다. ```lua Method: [server only] void OnBeginPlay ( ) { local zoom = function() self.Entity.CameraComponent:SetZoomTo(300, 2) end _TimerService:SetTimerOnce(zoom, 4) } ``` # SeeAlso * TimerService * [CameraService를 활용한 카메라 제어](/docs?postId=118)

[task] | instruction_following [pass] | ✅ 통과 [title] | TouchReceiveComponent [question] | 코드에서 `self.index`와 `self.Index`의 대소문자 불일치로 인해 발생하는 런타임 오류 2가지를 줄글로 나열하세요. [answer] | 참고 문서에 포함된 코드를 분석한 결과, 대소문자 불일치로 인해 발생하는 런타임 오류는 다음과 같습니다. 1. `AddHandler` 메서드에서 `table.insert(self.index, touchId)`를 호출할 때, Property로 선언된 변수명은 `Index`입니다. mLua(또는 Lua)는 대소문자를 구분하므로 `self.index`는 nil 값이 됩니다. nil 테이블에 `insert` 메서드를 호출하려 하므로 **"attempt to index a nil value (field 'index')"** 오류가 발생합니 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 코드에서 대소문자 불일치로 인해 nil 인덱싱 오류가 발생하는 두 가지 위치를 정확히 식별하고 설명했음. [source_doc] | 플레이어가 엔티티를 터치하고 이동시키는 예제입니다. `TouchReceiveComponent`가 엔티티에 추가되어야 합니다. ```lua Property: [None] table<integer> Index [None] any Handler = nil Method: [client] void Move (any screenholdEvent) { local touchId = screenholdEvent.TouchId local touchPoint = screenholdEvent.TouchPoint local string f

[task] | instruction_following [pass] | ✅ 통과 [title] | TouchReceiveComponent [question] | `HandleTouchReleaseEvent`에서 이벤트를 해제하는 로직이 실행되기 위해 만족해야 하는 두 가지 조건을 표로 정리하세요. [answer] | `HandleTouchReleaseEvent`에서 `_InputService:DisconnectEvent`를 호출하는 로직은 다음과 같은 두 가지 조건을 모두 만족해야 합니다. | 구분 | 조건 내용 | | :--- | :--- | | 1. 터치 ID 일치 | 현재 해제된 터치(`event.TouchId`)가 `self.Index` 테이블에 등록된 터치 ID와 일치해야 합니다. | | 2. 마지막 터치 해제 | 해당 터치 ID를 `self.Index`에서 제거한 후, `self.Index`의 길이가 0 이하(더 이상 추적 중인 터 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 HandleTouchReleaseEvent 로직을 정확히 분석하여 두 가지 필수 조건을 표로 명확하게 정리했습니다. [source_doc] | 플레이어가 엔티티를 터치하고 이동시키는 예제입니다. `TouchReceiveComponent`가 엔티티에 추가되어야 합니다. ```lua Property: [None] table<integer> Index [None] any Handler = nil Method: [client] void Move (any screenholdEvent) { local touchId = screenholdEvent.TouchId local touchPoint = screenholdEvent.TouchPoint local string f

[task] | code [pass] | ❌ 탈락 [title] | DirectionSynchronizerComponent [question] | DirectionSynchronizerComponent가 장착된 엔티티의 EnableInHierarchy 속성을 통해 계층 구조상 활성화 상태를 확인하고, false인 경우 부모 엔티티의 Enable 상태를 로그로 출력하는 스크립트를 작성해줘. [answer] | DirectionSynchronizerComponent의 `EnableInHierarchy` 속성은 읽기 전용(ReadOnly)이며, 컴포넌트 자체의 `Enable` 상태와 소유 엔티티의 활성 상태를 함께 고려하여 계층 구조상 활성화 여부를 반환합니다. 해당 값이 `false`인 경우, 부모 엔티티의 `Enable` 상태를 로그로 출력하는 스크립트는 다음과 같습니다. 참고로, `DirectionSynchronizerComponent`는 부모 엔티티의 `ChangedLookAtEvent` 발생 시 방향을 동기화하며, `Enable` [followup] | [followup_answer] | [scores] | helpfulness=1 correctness=0 coherence=2 complexity=3 verbosity=2 [judge_reason] | 문서 및 규칙에 명시된 'GetComponent 없음' 및 'self.Entity.X' 접근 방식을 무시하고 'GetComponent'를 사용했으며, 'Entity.Enable'처럼 문서에 없는 프로퍼티를 지어내어 사실 오류가 있음. [source_doc] | 부모 엔티티의 방향을 따라갑니다. 부모 엔티티에서 ChangedLookAtEvent가 발생할 경우 현재 엔티티의 방향도 변경됩니다. # Properties ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가 Enable 상태인지를 반환합니다. Enable이 true일지라도 엔티티의 Enab

[task] | instruction_following [pass] | ✅ 통과 [title] | MaskComponent [question] | MaskComponent의 회전 비지원 제한 사항과 EnableInHierarchy 프로퍼티의 동작 방식을 3문장 이내로 설명하세요. [answer] | MaskComponent는 회전 기능을 지원하지 않아 엔티티가 회전된 경우 정상적으로 동작하지 않을 수 있습니다. EnableInHierarchy 프로퍼티는 컴포넌트와 엔티티 모두 활성화 상태일 때만 true를 반환하는 읽기 전용 값입니다. 즉, 컴포넌트의 Enable이 true여도 엔티티의 Enable이 false라면 false를 반환합니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 회전 제한 사항과 EnableInHierarchy의 계층 구조 기반 동작 방식을 3문장 이내로 정확하고 명확하게 설명했습니다. [source_doc] | 마스크를 사용해 자식 UI Entity의 특정 영역만 보이게 할 수 있습니다. 회전 기능은 지원하지 않으며, 엔티티가 회전한 경우 정상적으로 동작하지 않을 수 있습니다. # Properties - **RectOffset Padding** 마스크의 상하좌우의 여유 공간을 설정합니다. - **MaskShape Shape** 마스크의 모양을 지정합니다. - **Vector2Int Softness** 마스크의 가장자리 영역부터 자연스럽게 번지게 할 영역을 정합니다. ##### inherited from Component:

[task] | single_turn [pass] | ✅ 통과 [title] | AvatarRendererComponent [question] | 서버 측 스크립트에서 아바타의 얼굴이나 몸통 엔티티에 직접 접근해서 위치를 이동시켜야 하는데 GetFaceEntity()와 같은 메서드를 호출할 때 왜 에러가 나는지 원인을 알고 싶습니다. [answer] | `GetFaceEntity()`와 `GetBodyEntity()`, `GetAvatarRootEntity()` 메서드는 모두 **[ClientOnly]** 태그가 붙어 있어 클라이언트에서만 실행할 수 있습니다. 따라서 `[server only]`로 선언된 서버 스크립트에서 이 메서드들을 호출하면 런타임 에러가 발생합니다. 서버 환경에서는 클라이언트 전용 렌더링 관련 엔티티에 직접 접근할 수 없기 때문입니다. **해결 방법:** 1. **클라이언트 스크립트로 이동:** 해당 로직을 `[client only]` 메서드로 분리하여 클 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서에서 GetFaceEntity 등이 [ClientOnly]임을 정확히 근거로 제시하여 에러 원인을 설명하고, 서버에서는 self.Entity.TransformComponent 조작이라는 올바른 대안과 클라이언트 코드 예시를 제공해 질문자의 문제를 완전히 해결합니다. [source_doc] | 아바타 형태의 엔티티를 렌더링합니다. # Properties - **boolean IgnoreMapLayerCheck [Sync]** SortingLayer에 Map Layer 이름을 지정했을 때 자동 치환을 수행하지 않습니다. - **string MaterialId [Sync]** 렌더러에 적용할 머티리얼의 Id를 지정합니다. - **int32 OrderInLayer** 같은 Layer 내의 우선순위를 결정합니다. 수가 클수록 앞에 보입니다. - **float PlayRate [Sync]** 아바타 애니메이션의

[task] | instruction_following [pass] | ✅ 통과 [title] | ChatBalloonComponent [question] | ChatBalloonComponent의 AutoShowEnabled와 ChatModeEnabled 프로퍼티가 동시에 true일 때 동작 우선순위를 3문장 이내로 설명하세요. [answer] | `AutoShowEnabled`와 `ChatModeEnabled`가 동시에 true인 경우, `ChatModeEnabled`가 우선하여 채팅 내용이 말풍선으로 출력됩니다. 이때 자동 말풍선 기능은 동작하지 않습니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 제약사항(ChatModeEnabled가 true일 때 자동 말풍선 기능 동작 불가)을 정확히 추출하여 질문한 3문장 이내로 간결하고 올바르게 답변했습니다. [source_doc] | 말풍선을 표시해주고 관련 기능을 설정할 수 있는 기능을 제공합니다. # Properties - **boolean AllowAutomaticTranslation [MakerOnly]** Message 프로퍼티 값의 자동 번역 여부를 설정합니다. - **boolean ArrowChatEnabled [Sync]** 말풍선 꼬리 이미지를 제공 여부를 설정합니다. - **boolean AutoShowEnabled [Sync]** 말풍선이 자동으로 나타나게 할지 여부를 설정합니다. 값이 true일 경우 ShowDuration 동

[task] | single_turn [pass] | ❌ 탈락 [title] | AvatarRendererComponent [question] | 특정 유저의 아바타만 투명하게 보이게 하려면 SetAlpha 메서드의 targetUserId 인자에 어떤 값을 전달해야 하며, 이 값은 어디서 가져올 수 있나요? [answer] | `SetAlpha` 메서드의 `targetUserId` 인자에는 **대상 유저의 UserId (string 타입)** 값을 전달해야 합니다. 이 값은 해당 유저가 플레이하는 엔티티(플레이어)에 있는 `PlayerComponent`에서 가져올 수 있습니다. 즉, `_UserService`나 다른 서비스에서 유저 정보를 조회하는 것이 아니라, **대상 유저의 엔티티를 먼저 구한 뒤** `Entity.PlayerComponent.UserId` 속성을 읽는 방식입니다. ### 코드 예시 특정 유저(예: "/maps/map01/user [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=1 coherence=3 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 없는 PlayerComponent와 _EntityService:GetEntityByPath의 존재를 지어내어 정확도가 낮고, 질문의 핵심인 값의 출처를 문서 기반이 아닌 가상의 API로 설명했습니다. [source_doc] | 아바타 형태의 엔티티를 렌더링합니다. # Properties - **boolean IgnoreMapLayerCheck [Sync]** SortingLayer에 Map Layer 이름을 지정했을 때 자동 치환을 수행하지 않습니다. - **string MaterialId [Sync]** 렌더러에 적용할 머티리얼의 Id를 지정합니다. - **int32 OrderInLayer** 같은 Layer 내의 우선순위를 결정합니다. 수가 클수록 앞에 보입니다. - **float PlayRate [Sync]** 아바타 애니메이션의

[task] | single_turn [pass] | ✅ 통과 [title] | MaskComponent [question] | MaskComponent는 회전 기능이 지원되나요? 엔티티를 회전시켰을 때 어떻게 동작하나요? [answer] | MaskComponent는 회전 기능을 지원하지 않습니다. 엔티티가 회전한 경우 MaskComponent가 정상적으로 동작하지 않을 수 있습니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=1 [judge_reason] | 참고 문서에 명시된 회전 미지원 및 회전 시 비정상 동작 가능성 정보를 정확하고 간결하게 전달하여 질문에 완벽하게 답했습니다. [source_doc] | 마스크를 사용해 자식 UI Entity의 특정 영역만 보이게 할 수 있습니다. 회전 기능은 지원하지 않으며, 엔티티가 회전한 경우 정상적으로 동작하지 않을 수 있습니다. # Properties - **RectOffset Padding** 마스크의 상하좌우의 여유 공간을 설정합니다. - **MaskShape Shape** 마스크의 모양을 지정합니다. - **Vector2Int Softness** 마스크의 가장자리 영역부터 자연스럽게 번지게 할 영역을 정합니다. ##### inherited from Component:

[task] | instruction_following [pass] | ✅ 통과 [title] | MaskComponent [question] | OnInitialize 메서드 내에서 Softness와 Padding을 설정하는 코드만 출력하고 설명은 주석으로 작성하세요. [answer] | ```lua Method: [client only] void OnInitialize() { -- 마스크 가장자리 영역을 자연스럽게 번지게 할 영역을 (10, 10)으로 설정합니다. self.Entity.MaskComponent.Softness = Vector2Int(10, 10) -- 마스크의 상하좌우 여유 공간을 각각 10으로 설정하여 보이는 영역을 축소합니다. self.Entity.MaskComponent.Padding = RectOffset(10, 10, 10, 10) } ``` [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 질문 요구사항인 코드 출력과 주석 설명을 정확히 충족하며, 참고 문서의 API와 문법과 일치합니다. [source_doc] | 마스크를 사용해 자식 UI Entity의 특정 영역만 보이게 할 수 있습니다. 회전 기능은 지원하지 않으며, 엔티티가 회전한 경우 정상적으로 동작하지 않을 수 있습니다. # Properties - **RectOffset Padding** 마스크의 상하좌우의 여유 공간을 설정합니다. - **MaskShape Shape** 마스크의 모양을 지정합니다. - **Vector2Int Softness** 마스크의 가장자리 영역부터 자연스럽게 번지게 할 영역을 정합니다. ##### inherited from Component:

[task] | single_turn [pass] | ✅ 통과 [title] | AvatarRendererComponent [question] | 아바타가 다른 오브젝트 뒤에 가려지는 문제를 해결하려고 OrderInLayer와 SortingLayer 중 어떤 값을 어떻게 조정해야 하는지 궁금합니다. [answer] | 아바타가 다른 오브젝트 뒤에 가려지는 문제를 해결하기 위해 `AvatarRendererComponent`의 `OrderInLayer`와 `SortingLayer` 프로퍼티를 조정해야 합니다. 이 두 값은 렌더링 우선순위를 결정하는 서로 다른 역할을 합니다. **1. SortingLayer (레이어 구분)** * **역할**: 2개 이상의 엔티티가 겹쳤을 때, 어떤 레이어가 전체적으로 앞에 보이는지 결정합니다. * **조절 방법**: 아바타를 다른 오브젝트보다 항상 앞에 보이게 하려면, 아바타의 `SortingLayer` 값 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 정의(수가 클수록 앞에 봄, 레이어 구분)를 정확히 설명하고, 표준 mLua 구문을 활용한 적절한 예시를 제공하여 질문에 완벽히 부합합니다. [source_doc] | 아바타 형태의 엔티티를 렌더링합니다. # Properties - **boolean IgnoreMapLayerCheck [Sync]** SortingLayer에 Map Layer 이름을 지정했을 때 자동 치환을 수행하지 않습니다. - **string MaterialId [Sync]** 렌더러에 적용할 머티리얼의 Id를 지정합니다. - **int32 OrderInLayer** 같은 Layer 내의 우선순위를 결정합니다. 수가 클수록 앞에 보입니다. - **float PlayRate [Sync]** 아바타 애니메이션의

[task] | instruction_following [pass] | ✅ 통과 [title] | ChatBalloonComponent [question] | Message 프로퍼티가 nil 또는 빈 문자열일 경우의 말풍선 표시 여부를 코드로만 출력하되, 로직 설명은 주석으로 작성하세요. [answer] | ```lua Method: [server only] void OnUpdate (number delta) { -- Message 프로퍼티가 nil 또는 빈 문자열일 경우 말풍선이 나타나지 않는 동작을 확인합니다. local message = self.Entity.ChatBalloonComponent.Message if message == nil or message == "" then -- nil 또는 빈 문자열이면 말풍선 표시가되지 않음 else -- 메시지가 존재하면 말풍선이 표시됨 end } ``` [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서와 일치하는 정확한 코드와 주석을 제공했으나, 질문의 '코드로만' 요구사항에 대해 로직을 단순 확인하는 수준으로 깊이가 다소 부족함. [source_doc] | 말풍선을 표시해주고 관련 기능을 설정할 수 있는 기능을 제공합니다. # Properties - **boolean AllowAutomaticTranslation [MakerOnly]** Message 프로퍼티 값의 자동 번역 여부를 설정합니다. - **boolean ArrowChatEnabled [Sync]** 말풍선 꼬리 이미지를 제공 여부를 설정합니다. - **boolean AutoShowEnabled [Sync]** 말풍선이 자동으로 나타나게 할지 여부를 설정합니다. 값이 true일 경우 ShowDuration 동

[task] | single_turn [pass] | ❌ 탈락 [title] | CameraComponent [question] | CameraComponent를 통해 카메라를 진동시키거나 줌을 조정할 때, 클라이언트와 서버 중 어디에서 메서드를 호출해야 정상적으로 동작하며 반대쪽에서 호출하면 어떤 문제가 발생하나요? [answer] | CameraComponent의 카메라 진동(`ShakeCamera`) 및 줌 조정(`SetZoomTo`) 메서드는 **클라이언트(Client) 환경에서만 정상적으로 동작**하도록 설계되어 있습니다. ### 1. 정상 동작 환경: 클라이언트 이 메서드들은 선언부에 `[Client]` 또는 `[Client Only]` 태그가 붙어 있습니다. 이는 해당 로직이 클라이언트 측 렌더링 및 사용자 입력 처리와 직결된다는 것을 의미합니다. 따라서 스크립트 메서드 블록에 `[client only]` 또는 `[client]` 실행 공간 지정자를 [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=4 complexity=None verbosity=3 [judge_reason] | 문서에 없는 InputService/KeyDownEvent API를 지어냈고, 메서드가 동작하지 않는다고 단정했으나 실제로는 오류가 발생할 수 있어 정확성이 낮음 [source_doc] | Entity를 바라보는 카메라 기능을 제공합니다. 카메라 간 화면 전환은 CameraService를 이용하세요. # Properties - **Vector2 CameraOffset** 카메라의 위치를 설정합니다. 월드 좌표 기준입니다. - **boolean ConfineCameraArea** 카메라가 비추는 범위를 맵의 발판 영역으로만 제한합니다. - **Vector2 Damping** 카메라가 대상을 추적하는 동안 대상이 SoftZone에 들어갈 때 카메라가 반응하는 속도를 조정합니다. 값이 작을수록 더욱 더 빠르게

[task] | single_turn [pass] | ✅ 통과 [title] | JoystickComponent [question] | 조이스틱의 축(Axis)을 변경하고 싶을 때 어떤 타입의 값을 Axis 프로퍼티에 지정해야 하나요? [answer] | 조이스틱의 `Axis` 프로퍼티에는 **AxisType** 타입의 값을 지정해야 합니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서에서 Axis 프로퍼티의 타입이 AxisType임을 명시하고 있으므로, 질문에 대해 정확하고 간결하게 답변했습니다. [source_doc] | 모바일 환경에서 플레이어의 이동을 제어할 수 있는 가상의 조작키 기능을 지원해주는 Component입니다. # Properties - **AxisType Axis** 조작키가 움직일 수 있는 축 타입을 설정합니다. - **KeyboardKey DownArrow** 조작키가 아래로 이동했을 때 입력되는 키입니다. - **boolean DynamicStick** 플레이 시 조작키의 위치가 유저가 터치한 곳으로 이동합니다. - **KeyboardKey LeftArrow** 조작키가 왼쪽으로 이동했을 때 입력되는 키입니다

[task] | two_turn [pass] | ✅ 통과 [title] | ChatBalloonComponent [question] | AutoShowEnabled와 ChatModeEnabled가 동시에 true일 때 말풍선 동작 우선순위는 어떻게 되나요? [answer] | `AutoShowEnabled`와 `ChatModeEnabled`가 동시에 `true`로 설정되어 있을 때, **채팅 연동(`ChatModeEnabled`)이 우선**하여 동작합니다. 구체적인 동작 우선순위는 다음과 같습니다: 1. **채팅 내용 출력:** 플레이어의 채팅 내용이 말풍선으로 출력됩니다. 2. **자동 말풍선 비활성화:** `AutoShowEnabled`가 `true`임에도 불구하고, 자동적으로 나타나고 사라지는 말풍선 동작은 수행되지 않습니다. 즉, `ChatModeEnabled`가 `true`인 상태에서는 [followup] | Message가 nil인 상태에서 AutoShowEnabled가 true이고, ShowDuration과 HideDuration을 설정했을 때 실제 화면에 말풍선이 표시되는지, 아니면 아무런 반응이 없는지 확인하고 싶습니다. [followup_answer] | `Message`가 `nil`인 상태에서는 `AutoShowEnabled`가 `true`이고 `ShowDuration` 또는 `HideDuration`이 설정되어 있더라도 **아무런 반응이 없으며, 화면에 말풍선이 표시되지 않습니다.** 이는 `Message` 프로퍼티의 정의에 따라 결정됩니다. `Message` 프로퍼티는 말풍선에 표시할 내용을 설정하는 항목이며, 값이 `nil`이거나 빈 문자열인 경우 말풍선이 나타나지 않도록 규정되어 있습니다. 따라서 자동 표시(`AutoShowEnabled`) 로직이 실행되더라도 표시할 텍스 [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 'AutoShowEnabled' 및 'ChatModeEnabled' 설명과 일치하여 채팅 연동이 우선한다는 사실을 정확하고 간결하게 설명했습니다. [source_doc] | 말풍선을 표시해주고 관련 기능을 설정할 수 있는 기능을 제공합니다. # Properties - **boolean AllowAutomaticTranslation [MakerOnly]** Message 프로퍼티 값의 자동 번역 여부를 설정합니다. - **boolean ArrowChatEnabled [Sync]** 말풍선 꼬리 이미지를 제공 여부를 설정합니다. - **boolean AutoShowEnabled [Sync]** 말풍선이 자동으로 나타나게 할지 여부를 설정합니다. 값이 true일 경우 ShowDuration 동

[task] | instruction_following [pass] | ✅ 통과 [title] | ChatBalloonComponent [question] | 문서에 명시된 ChatBalloonComponent의 모든 [Sync] 속성 이름과 타입을 2열 표로 정리하세요. [answer] | | 속성 이름 | 타입 | | :--- | :--- | | ArrowChatEnabled | boolean | | AutoShowEnabled | boolean | | BalloonScale | float | | ChatModeEnabled | boolean | | Enable | boolean | | FontColor | Color | | FontOffset | Vector2 | | FontSize | float | | HideDuration | float | | IsRichText | boolean | | Message | st [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서에 명시된 모든 [Sync] 속성을 누락 없이 정확히 2열 표로 정리하여 질문에 완벽히 부응했습니다. [source_doc] | 말풍선을 표시해주고 관련 기능을 설정할 수 있는 기능을 제공합니다. # Properties - **boolean AllowAutomaticTranslation [MakerOnly]** Message 프로퍼티 값의 자동 번역 여부를 설정합니다. - **boolean ArrowChatEnabled [Sync]** 말풍선 꼬리 이미지를 제공 여부를 설정합니다. - **boolean AutoShowEnabled [Sync]** 말풍선이 자동으로 나타나게 할지 여부를 설정합니다. 값이 true일 경우 ShowDuration 동

[task] | code [pass] | ✅ 통과 [title] | DamageSkinSettingComponent [question] | DamageSkinSettingComponent의 Alpha, DelayPerAttack, LitMode 속성을 런타임에 동적으로 변경하는 메서드를 포함하는 스크립트를 작성해줘 [answer] | `DamageSkinSettingComponent`의 `Alpha`, `DelayPerAttack`, `LitMode` 속성은 `[Sync]` 프로퍼티입니다. 따라서 서버에서 값을 변경하면 클라이언트로 동기화됩니다. 아래 스크립트는 런타임에 이 세 값을 동적으로 변경하는 메서드를 포함하고 있습니다. ```lua Property: [None] number TargetAlpha = 1.0 [None] number TargetDelayPerAttack = 0.0 [None] LitMode TargetLitMode = LitMode.D [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=3 coherence=4 complexity=2 verbosity=2 [judge_reason] | API 존재 여부와 Sync 특성은 정확하나, 문서에 없는 LitMode 열거형 값(예: LitMode.Default)을 코드 예제에 사용하여 지어낸 정보로 간주할 여지가 있음 [source_doc] | 공격 시 재생할 대미지 스킨의 형식을 설정합니다. 피격 엔티티는 DamageSkinSpawnerComponent가 있어야 합니다. # Properties - **float Alpha [Sync]** 대미지 스킨의 Alpha 값을 설정합니다. - **DataRef DamageSkinId [Sync]** 대미지 스킨의 종류를 설정합니다. - **Vector2 DamageSkinScale [Sync]** 대미지 스킨의 크기를 설정합니다. - **float DelayPerAttack [Sync]** 대미지 분할 재생 간격

[task] | single_turn [pass] | ✅ 통과 [title] | JoystickComponent [question] | JoystickComponent의 DynamicStick 프로퍼티가 true일 때 조작키 위치가 어떻게 변하나요? [answer] | `JoystickComponent`의 `DynamicStick` 프로퍼티가 `true`로 설정되면, 플레이 중 조작키(조이스틱)의 위치가 고정되어 있지 않고 유저가 터치한 곳으로 이동합니다. 즉, 유저가 화면의 아무 위치에서든 터치하면 그 지점에 조이스틱이 나타나는 동작을 하게 됩니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서의 DynamicStick 설명과 정확히 일치하며, 질문의 핵심을 간결하고 명확하게 답변했습니다. [source_doc] | 모바일 환경에서 플레이어의 이동을 제어할 수 있는 가상의 조작키 기능을 지원해주는 Component입니다. # Properties - **AxisType Axis** 조작키가 움직일 수 있는 축 타입을 설정합니다. - **KeyboardKey DownArrow** 조작키가 아래로 이동했을 때 입력되는 키입니다. - **boolean DynamicStick** 플레이 시 조작키의 위치가 유저가 터치한 곳으로 이동합니다. - **KeyboardKey LeftArrow** 조작키가 왼쪽으로 이동했을 때 입력되는 키입니다

[task] | single_turn [pass] | ✅ 통과 [title] | MaskComponent [question] | 마스크 영역의 상하좌우 여백을 조절하고 싶은데, 어떤 프로퍼티를 사용해야 하나요? [answer] | 마스크 영역의 상하좌우 여백(패딩)을 조절하려면 `MaskComponent`의 **`Padding`** 프로퍼티를 사용해야 합니다. 이 프로퍼티는 `RectOffset` 타입으로, 상단, 우측, 하단, 좌측 순서로 여유 공간을 지정합니다. ```lua Method: [client only] void OnInitialize() { -- 상:10, 우:10, 하:10, 좌:10 여백 설정 self.Entity.MaskComponent.Padding = RectOffset(10, 10, 10, 10) } ``` [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 질문에 정확히 답변했으며, 문서의 프로퍼티 이름과 예제 코드와 일치합니다. [source_doc] | 마스크를 사용해 자식 UI Entity의 특정 영역만 보이게 할 수 있습니다. 회전 기능은 지원하지 않으며, 엔티티가 회전한 경우 정상적으로 동작하지 않을 수 있습니다. # Properties - **RectOffset Padding** 마스크의 상하좌우의 여유 공간을 설정합니다. - **MaskShape Shape** 마스크의 모양을 지정합니다. - **Vector2Int Softness** 마스크의 가장자리 영역부터 자연스럽게 번지게 할 영역을 정합니다. ##### inherited from Component:

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