← 목록

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

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

[task] | instruction_following [pass] | ✅ 통과 [title] | HitComponent [question] | `PlayerHit` 스크립트의 `IsHitTarget` 함수가 무적 시간을 계산하는 논리를 표(항목, 설명)로 정리하세요. [answer] | `PlayerHit` 스크립트의 `IsHitTarget` 함수는 `_UtilLogic.ElapsedSeconds`를 사용하여 현재 게임 시간을 확인하고, 이전 피격 시각과 무적 쿨다운 시간을 비교하여 피격 허용 여부를 판정합니다. | 항목 | 설명 | | :--- | :--- | | `ImmuneCooldown` | 무적 상태가 유지되는 시간(초)을 나타내는 프로퍼티입니다. 기본값은 1입니다. | | `LastHitTime` | 마지막으로 피격이 허용되었을 때의 게임 시간을 저장하는 프로퍼티입니다. 초기값은 0입니다. | | `c [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [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] | instruction_following [pass] | ✅ 통과 [title] | HitEffectSpawnerComponent [question] | HitEffectSpawnerComponent의 Properties를 표로 정리해서 Enable의 동기화 속성과 Entity의 읽기 전용 속성을 명시하세요. [answer] | HitEffectSpawnerComponent의 Properties는 Component에서 상속된 속성들을 포함하며, 요청하신 `Enable`의 동기화 속성과 `Entity`의 읽기 전용 속성을 포함하여 아래 표와 같이 정리할 수 있습니다. | Property 이름 | 타입 | 속성 플래그 | 설명 | | :--- | :--- | :--- | :--- | | **Enable** | boolean | [Sync] | 컴포넌트 활성화 여부를 확인합니다. `[Sync]` 플래그가 있어 서버와 클라이언트 간에 동기화됩니다. | | **E [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 속성 정보(타입, 플래그, 설명)를 정확히 표로 정리하여 질문에 충실히 답변했습니다. [source_doc] | 엔티티에 피격 이벤트가 발생했을 때 피격 이펙트를 출력합니다. # Properties ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가 Enable 상태인지를 반환합니다. Enable이 true일지라도 엔티티의 Enable이 false라면 false를 반환합니다. - **Entity En

[task] | two_turn [pass] | ✅ 통과 [title] | Component [question] | `Component`의 `Enable`과 `EnableInHierarchy`의 차이는 무엇이며, 계층 구조에서 어떤 조건일 때 `EnableInHierarchy`가 `false`가 되는지? [answer] | `Component` 컴포넌트의 `Enable`과 `EnableInHierarchy` 프로퍼티의 차이는 다음과 같습니다. **1. `Enable`** * **의미:** 해당 컴포넌트 자체의 활성화 여부를 직접 제어하거나 확인하는 프로퍼티입니다. * **특징:** `[Sync]` 속성을 가지고 있어 서버와 클라이언트 사이에 동기화됩니다. * **동작:** 개발자가 직접 `true` 또는 `false`로 설정할 수 있습니다. **2. `EnableInHierarchy`** * **의미:** 계층 구조(Hierarchy [followup] | `Entity`의 `Enable`이 `false`인 경우와 컴포넌트 자체의 `Enable`이 `false`인 경우의 `EnableInHierarchy` 반환 값을 확인하는 mLua 코드 예제는 어떻게 작성하나요? [followup_answer] | 참고 문서에 따르면 `EnableInHierarchy`는 컴포넌트 자신의 `Enable` 상태와 해당 컴포넌트를 소유한 엔티티(`self.Entity`)의 `Enable` 상태를 모두 고려하여 반환합니다. * 컴포넌트 `Enable`이 `false`이면: `EnableInHierarchy`는 `false` * 엔티티 `Enable`이 `false`이면: `EnableInHierarchy`는 `false` * 둘 다 `true`이면: `EnableInHierarchy`는 `true` 아래 코드는 `OnBeginPlay` [scores] | helpfulness=4 correctness=3 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서 내용과 일치하여 질문을 잘 설명했으나, 코드 예시에서 존재하지 않는 self.Component 접근 방식과 Entity 타입의 Enable 프로퍼티 사용을 지어내어 정확도가 낮음 [source_doc] | 모든 컴포넌트의 부모 컴포넌트입니다. 컴포넌트 기본 기능을 제공합니다. # Properties - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가 Enable 상태인지를 반환합니다. Enable이 true일지라도 엔티티의 Enable이 false라면 false를 반환합니다. - **Entity Entity [ReadOnly]** 이 컴포넌트를

[task] | single_turn [pass] | ✅ 통과 [title] | HitComponent [question] | CollisionGroup 프로퍼티와 더 이상 사용하지 않는 ColliderName 프로퍼티 중 현재 권장되는 충돌 그룹 지정 방법은 무엇인가요? [answer] | 현재 권장되는 충돌 그룹 지정 방법은 **CollisionGroup** 프로퍼티를 사용하는 것입니다. ColliderName 프로퍼티는 더 이상 사용하지 않는(Non-recommended/Deprecated) 상태이며, 문서에도 명시적으로 "CollisionGroup을 사용하세요"라고 안내하고 있습니다. 따라서 신규 시스템에서 충돌 그룹을 설정할 때는 CollisionGroup을 사용해야 합니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서에 명시된 ColliderName의 비추천 상태와 CollisionGroup 사용 권고를 정확하고 간결하게 답변했습니다. [source_doc] | 엔티티의 충돌 영역을 설정하고, AttackComponent의 공격을 받았을 때 피격 동작을 구현할 수 있는 인터페이스를 제공합니다. # Properties - **Vector2 BoxOffset [Deprecated] [Sync]** IsLegacy가 true인 이전 시스템에서 사용할 수 있습니다. 엔티티를 기준으로 충돌체 직사각형의 중심점 위치를 설정합니다. - **Vector2 BoxSize [Sync]** 직사각형 충돌체의 너비와 높이를 지정합니다. - **float CircleRadius [Sync]** 원형

[task] | code [pass] | ✅ 통과 [title] | BackgroundComponent [question] | OnUpdate에서 delta를 누적하여 5초마다 self.Entity.BackgroundComponent:SetBackgroundPieceEnable("cloud_piece", not currentEnable)을 호출하여 구름 배경 조각의 표시 여부를 토글하는 스크립트를 작성해줘 [answer] | 요청하신 기능은 `OnUpdate`에서 `delta`를 누적하여 5초 간격을 측정하고, 해당 시간이 지나면 `SetBackgroundPieceEnable` 메서드를 호출하여 구름 배경 조각의 표시 여부를 토글하는 방식입니다. 참고 문서에 따르면 `SetBackgroundPieceEnable`은 `[ClientOnly]` 메서드이므로, 해당 로직이 포함된 메서드에는 `[client only]` 실행 공간 어노테이션을 붙여야 합니다. 또한 현재 상태를 저장하기 위해 `Property` 블록에 `boolean` 타입의 변수를 선언해야 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 [ClientOnly] 제약사항을 정확히 반영하여 [client only] 메서드로 작성했고, 요청된 로직을 정확하고 간결하게 구현했다. [source_doc] | - **void ChangeBackgroundByGradient(Color top, Color middleTop, Color middleBottom, Color bottom, float middleTopRatio, float middleBottomRatio)** 배경을 그라데이션 색상들로 변경합니다. - **void ChangeBackgroundBySolidColor(Color value)** 배경을 단색으로 변경합니다. - **void ChangeBackgroundByTemplateRUID(string value)**

[task] | two_turn [pass] | ✅ 통과 [title] | ButtonComponent [question] | 이 예제 코드에서 버튼이 눌린 상태(IsButtonDown)가 true로 유지되는 동안 추가적으로 발생하는 이벤트나 상태 변화를 처리하려면 어떤 부분을 수정해야 하나요? [answer] | 제공된 예제 코드를 분석하면, 버튼이 눌린 상태(`IsButtonDown == true`)가 유지되는 동안 추가적으로 발생하는 이벤트나 상태 변화를 처리하려면 **`HandleButtonStateChangeEvent`** 또는 **`HandleButtonClickEvent`** 핸들러의 로직을 수정해야 합니다. 구체적으로 다음과 같은 부분들을 수정하여 처리할 수 있습니다. ### 1. 버튼 상태 변화 처리 (`HandleButtonStateChangeEvent`) 버튼의 물리적 상태(누름, 놓음 등)가 변할 때 발생하는 이벤트입 [followup] | HandleButtonStateChangeEvent에서 ButtonState.Released 상태 외의 다른 상태들을 처리하거나, 버튼 누르기 중에 다른 UI 이벤트가 발생했을 때 충돌을 피하는 코드 수정 예시를 보여주세요. [followup_answer] | 제공된 참고 문서에는 `ButtonState`의 `Released`를 제외한 다른 상태 상수(예: `Pressed`, `Hover` 등)의 명칭이나 값이 명시되어 있지 않습니다. 또한, 버튼 누르기 중에 발생하는 "다른 UI 이벤트"에 대한 구체적인 이벤트 핸들러 이름이나 파라미터 구조도 문서에 포함되어 있지 않습니다. 따라서 문서에 근거하여 `ButtonState.Released` 외의 상태를 처리하는 코드나, 다른 UI 이벤트와의 충돌을 방지하는 구체적인 코드를 작성할 수 없습니다. 다만, 문서에 존재하는 정보만을 사용하여 [scores] | helpfulness=4 correctness=4 coherence=4 complexity=4 verbosity=3 [judge_reason] | 문서의 API와 규칙을 정확히 준수하며, 버튼 상태 유지 중 처리를 위한 수정 포인트와 예제를 논리적으로 제시했으나 예시 코드 포함으로篇幅이 다소 장황함 [source_doc] | 버튼을 누르고 있을 때 버튼 이미지가 변경되고 이미지의 색상이 변경되는 예제입니다. `ButtonComponent`가 있는 Entity에 이 Component를 추가해 테스트할 수 있습니다. ```lua Property: [None] boolean IsButtonDown = false [None] number RedVal = 0 [None] number TimerID = 0 [None] string MonsterRUID = "000000" [None] string OriginalRUID = "" Method: [cl

[task] | code [pass] | ✅ 통과 [title] | BackgroundComponent [question] | OnBeginPlay에서 self.Entity.BackgroundComponent:ChangeBackgroundByGradient를 호출하여 상단부터 하단까지 Color(1, 1, 1, 1)에서 Color(0.5, 0.5, 0.5, 1)로 변하는 4단계 그라데이션 배경을 설정하는 스크립트를 작성해줘 [answer] | `BackgroundComponent`의 `ChangeBackgroundByGradient` 메서드를 사용하여 요청하신 4단계 그라데이션 배경을 설정하는 스크립트입니다. 상단(`top`)은 흰색(`Color(1, 1, 1, 1)`), 하단(`bottom`)은 회색(`Color(0.5, 0.5, 0.5, 1)`)으로 설정하고, 중간 지점(`middleTop`, `middleBottom`)의 위치 비율(`middleTopRatio`, `middleBottomRatio`)을 0.5로 지정하여 화면 중앙에서 색이 자연스럽게 변하도록 구성 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=3 coherence=4 complexity=2 verbosity=2 [judge_reason] | 요청된 그라데이션 설정 로직은 정확하지만, 배경 변경 API가 [ClientOnly]로 명시되어 있지 않은 문서 맥락에서 [client only] 실행 공간을 임의로 지정하여 제약 조건과 어긋날 수 있는 부분이 있음. [source_doc] | - **void ChangeBackgroundByGradient(Color top, Color middleTop, Color middleBottom, Color bottom, float middleTopRatio, float middleBottomRatio)** 배경을 그라데이션 색상들로 변경합니다. - **void ChangeBackgroundBySolidColor(Color value)** 배경을 단색으로 변경합니다. - **void ChangeBackgroundByTemplateRUID(string value)**

[task] | two_turn [pass] | ✅ 통과 [title] | BackgroundComponent [question] | BackgroundComponent로 배경을 변경하는 다양한 방법과 각각의 용도가 궁금합니다. [answer] | BackgroundComponent를 사용하면 배경을 4가지 방식으로 변경할 수 있습니다. 각 메서드의 용도와 특징은 다음과 같습니다. 1. **`ChangeBackgroundByTemplateRUID(string value)`** - **용도**: 미리 정의된 템플릿 배경 RUID(고유 식별자)를 지정하여 배경을 변경합니다. - **특징**: 서버에서 호출 가능하며, 특정 ID에 해당하는 배경 이미지를 적용하는 가장 기본적인 방법입니다. 2. **`ChangeBackgroundBySolidColor(Color val [followup] | ChangeBackgroundByGradient의 파라미터 구조와 SetBackgroundPieceRatio의 화면 이동 비율이 카메라 이동에 어떻게 적용되는지 구체적으로 설명해 주세요. [followup_answer] | ### ChangeBackgroundByGradient 파라미터 구조 `ChangeBackgroundByGradient` 메서드는 배경을 그라데이션 색상으로 변경할 때 사용됩니다. 파라미터는 총 6개로 구성되어 있으며, 각 색상의 위치와 그라데이션 비율을 제어합니다. 1. **`top` (Color)**: 배경의 가장 상단 색상입니다. 2. **`middleTop` (Color)**: 배경의 중간 상단 색상입니다. 3. **`middleBottom` (Color)**: 배경의 중간 하단 색상입니다. 4. **`bottom [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서에 명시된 배경 변경 4가지 메서드와 Background Piece 제어 메서드의 용도 및 실행 환경을 정확히 설명하고, 제공된 예제 코드를 그대로 인용하여 질문에 충실히 답변했습니다. [source_doc] | - **void ChangeBackgroundByGradient(Color top, Color middleTop, Color middleBottom, Color bottom, float middleTopRatio, float middleBottomRatio)** 배경을 그라데이션 색상들로 변경합니다. - **void ChangeBackgroundBySolidColor(Color value)** 배경을 단색으로 변경합니다. - **void ChangeBackgroundByTemplateRUID(string value)**

[task] | single_turn [pass] | ✅ 통과 [title] | HitComponent [question] | OnHit 이벤트 핸들러에서 hitCount 파라미터가 어떤 상황에 따라 값이 달라지는지 설명해 주세요. [answer] | 제공된 HitComponent 문서에 따르면, `OnHit` 메서드의 `hitCount` 파라미터는 "대미지 분할 재생 횟수"입니다. 다만, 제공된 문서에는 **구체적으로 어떤 상황이나 조건에 따라 이 값이 1이 되거나 2, 3 등으로 달라지는지(예: 공격 속도, 공격 타입, 설정 값 등)에 대한 자세한 설명이 없습니다.** 문서에는 파라미터의 정의만 있을 뿐, 값이 결정되는 로직이나 조건은 언급되지 않았습니다. 따라서 문서만으로는 `hitCount`가 구체적으로 어떤 상황에 따라 달라지는지 설명할 수 없습니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서에 없는 구체적인 로직을 지어내지 않고, 문서에 명시된 정의만 인용하며 정보의 부재를 정확히 지적하여 질문 의도에 가장 부합하는 답변입니다. [source_doc] | 엔티티의 충돌 영역을 설정하고, AttackComponent의 공격을 받았을 때 피격 동작을 구현할 수 있는 인터페이스를 제공합니다. # Properties - **Vector2 BoxOffset [Deprecated] [Sync]** IsLegacy가 true인 이전 시스템에서 사용할 수 있습니다. 엔티티를 기준으로 충돌체 직사각형의 중심점 위치를 설정합니다. - **Vector2 BoxSize [Sync]** 직사각형 충돌체의 너비와 높이를 지정합니다. - **float CircleRadius [Sync]** 원형

[task] | instruction_following [pass] | ✅ 통과 [title] | DirectionSynchronizerComponent [question] | DirectionSynchronizerComponent의 동작 원리를 3문장 이내로 설명하세요. [answer] | DirectionSynchronizerComponent는 부모 엔티티의 방향을 따라가도록 설계되어 있습니다. 부모 엔티티에서 ChangedLookAtEvent가 발생하면 이 이벤트를 감지합니다. 이때 현재 엔티티의 방향도 부모와 동일하게 변경됩니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 동작 원리를 3문장 이내로 정확하고 명확하게 요약했습니다. [source_doc] | 부모 엔티티의 방향을 따라갑니다. 부모 엔티티에서 ChangedLookAtEvent가 발생할 경우 현재 엔티티의 방향도 변경됩니다. # Properties ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가 Enable 상태인지를 반환합니다. Enable이 true일지라도 엔티티의 Enab

[task] | instruction_following [pass] | ✅ 통과 [title] | MapLayerComponent [question] | MapLayerComponent에서 상속받은 Component 메서드(IsClient, IsServer)의 반환 타입과 기능을 2문장 이내로 [answer] | `IsClient()`와 `IsServer()` 메서드는 현재 실행 환경이 각각 클라이언트인지, 서버인지를 확인하여 `boolean` 타입의 결과를 반환합니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서와 일치하는 정확한 정보를 간결하게 전달했습니다. [source_doc] | 맵의 레이어별 정보를 관리합니다. # Properties - **boolean IsVisible [ReadOnly] [HideFromInspector]** 레이어의 렌더링 여부를 나타냅니다. false일 경우 메이커 씬에서 보이지 않습니다. - **int32 LayerSortOrder [ReadOnly]** 레이어의 우선순위 순서입니다. 값이 작을수록 하위 레이어로, 뒤에 그려집니다. - **boolean Locked [ReadOnly] [HideFromInspector]** 레이어가 잠겨 있는지를 나타냅니다. 잠겨

[task] | single_turn [pass] | ❌ 탈락 [title] | AIWanderComponent [question] | Legacy 시스템이 더 이상 지원되지 않는데, 기존에 작성한 행동 트리에서 ExclusiveExecutionWhenRunning 프로퍼티를 사용 중이라면 어떻게 처리해야 하나요? [answer] | Legacy 시스템은 더 이상 지원되지 않으며 추후 삭제될 예정입니다. 따라서 기존에 작성한 행동 트리에서 `ExclusiveExecutionWhenRunning` 프로퍼티를 사용하는 경우, 해당 프로퍼티에 의존하는 로직은 동작하지 않거나 의도대로 동작하지 않을 수 있습니다. 문서에는 `ExclusiveExecutionWhenRunning` 프로퍼티를 대체하는 구체적인 API나 새로운 실행 모델에 대한 설명이 제공되지 않았습니다. 따라서 기존 트리를 어떻게 수정해야 하는지에 대한 명시적인 가이드라인은 확인할 수 없습니다. **대 [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | Legacy 시스템 종료 사실과 IsLegacy 프로퍼티의 Read-Only 속성을 정확히 서술했으나, 문서에 없는 '수동 구현'이나 'AIWanderComponent 사용' 등 구체적인 대안을 제시하여 질문의 의도(구체적 처리 방법)를 완전히 충족하지는 못함. [source_doc] | 주변을 배회하는 AI입니다. StateComponent가 없다면 자동으로 추가됩니다. # Properties ##### inherited from AIComponent: - **string BehaviourTreeId [ReadOnly]** 행동 트리 엔트리의 고유 식별자입니다. - **Blackboard BlackBoard [ReadOnly]** AI 행동 트리에서 사용하는 데이터 저장소입니다. 키-값 쌍으로 데이터를 관리하며 행동 트리 노드 간 데이터를 공유합니다. - **boolean IsLegacy [ReadOn

[task] | single_turn [pass] | ✅ 통과 [title] | HitComponent [question] | 신규 시스템에서 원형 충돌체를 사용하려면 어떤 프로퍼티들을 어떻게 설정해야 하나요? [answer] | 신규 시스템에서 원형 충돌체를 사용하려면 다음 두 가지 프로퍼티를 설정해야 합니다. 1. **ColliderType**: `Circle` 값으로 설정합니다. 2. **CircleRadius**: 원형 충돌체의 반지름 값을 지정합니다. 참고로, 신규 시스템에서는 `IsLegacy`가 `false`인 상태를 의미하며, 이 경우 충돌체는 `TransformComponent`의 회전과 크기의 영향을 받습니다. 또한, 충돌체의 중심점 위치를 엔티티 기준으로 조정하려면 `ColliderOffset` 프로퍼티를 함께 사용할 수 있습니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서의 IsLegacy 조건과 ColliderType/CircleRadius 관계를 정확히 설명하고, 표준 mLua Property 구문을 사용하여 예시를 제시하여 질문에 완벽히 부합합니다. [source_doc] | 엔티티의 충돌 영역을 설정하고, AttackComponent의 공격을 받았을 때 피격 동작을 구현할 수 있는 인터페이스를 제공합니다. # Properties - **Vector2 BoxOffset [Deprecated] [Sync]** IsLegacy가 true인 이전 시스템에서 사용할 수 있습니다. 엔티티를 기준으로 충돌체 직사각형의 중심점 위치를 설정합니다. - **Vector2 BoxSize [Sync]** 직사각형 충돌체의 너비와 높이를 지정합니다. - **float CircleRadius [Sync]** 원형

[task] | instruction_following [pass] | ✅ 통과 [title] | MapLayerComponent [question] | MapLayerName 프로퍼티의 값을 확인하고 IsVisible이 true일 때에만 출력하는 mLua 코드만 출력하고 설명은 주석으로 [answer] | ```lua Method: [server only] void OnBeginPlay() { -- MapLayerComponent의 IsVisible과 MapLayerName을 확인합니다. local mapLayer = self.Entity.MapLayerComponent -- IsVisible이 true일 때에만 MapLayerName을 로그로 출력합니다. if mapLayer.IsVisible then log(mapLayer.MapLayerName) end } ``` [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서와 시스템 규칙에 따라 MapLayerComponent 접근 및 프로퍼티 사용이 정확하며, 요청된 조건(주석만, 코드만)을 잘 충족함. [source_doc] | 맵의 레이어별 정보를 관리합니다. # Properties - **boolean IsVisible [ReadOnly] [HideFromInspector]** 레이어의 렌더링 여부를 나타냅니다. false일 경우 메이커 씬에서 보이지 않습니다. - **int32 LayerSortOrder [ReadOnly]** 레이어의 우선순위 순서입니다. 값이 작을수록 하위 레이어로, 뒤에 그려집니다. - **boolean Locked [ReadOnly] [HideFromInspector]** 레이어가 잠겨 있는지를 나타냅니다. 잠겨

[task] | instruction_following [pass] | ✅ 통과 [title] | MapLayerComponent [question] | MapLayerComponent의 IsVisible, LayerSortOrder, Locked, MapLayerName 프로퍼티의 타입과 읽기 전용 여부, 숨김 속성을 한 줄씩 표로 정리해서 [answer] | | 프로퍼티 | 타입 | 읽기 전용 여부 | 숨김 속성 | | :--- | :--- | :--- | :--- | | IsVisible | boolean | O (ReadOnly) | O (HideFromInspector) | | LayerSortOrder | int32 | O (ReadOnly) | X | | Locked | boolean | O (ReadOnly) | O (HideFromInspector) | | MapLayerName | string | O (ReadOnly) | X | [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 MapLayerComponent 프로퍼티 정보(타입, ReadOnly, HideFromInspector)를 정확하고 간결하게 표로 정리했습니다. [source_doc] | 맵의 레이어별 정보를 관리합니다. # Properties - **boolean IsVisible [ReadOnly] [HideFromInspector]** 레이어의 렌더링 여부를 나타냅니다. false일 경우 메이커 씬에서 보이지 않습니다. - **int32 LayerSortOrder [ReadOnly]** 레이어의 우선순위 순서입니다. 값이 작을수록 하위 레이어로, 뒤에 그려집니다. - **boolean Locked [ReadOnly] [HideFromInspector]** 레이어가 잠겨 있는지를 나타냅니다. 잠겨

[task] | single_turn [pass] | ✅ 통과 [title] | PortalComponent [question] | 목적지 포탈을 연결할 때 PortalEntityRef에 PortalComponent가 없는 엔티티를 지정하면 어떤 문제가 발생하나요? [answer] | `PortalEntityRef`에는 **PortalComponent를 가진 엔티티만** 목적지로 설정할 수 있습니다. 문서에 따르면 `PortalEntityRef`의 설명이 "목적지 포탈을 설정합니다. PortalComponent를 가진 엔티티만 목적지로 설정할 수 있습니다."로 명시되어 있습니다. 따라서 `PortalComponent`가 없는 엔티티를 `PortalEntityRef`에 지정하는 것은 허용되지 않는 잘못된 설정입니다. [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서에 명시된 제약 조건(PortalComponent 보유 엔티티만 지정 가능)을 정확히 인용하여 답변했으나, 위반 시 구체적인 에러 메시지나 런타임 동작 등 추가적인 세부 정보가 없어 질문의 '어떤 문제'에 대한 답이 다소 제한적입니다. [source_doc] | 포탈 기능을 제공합니다. 포탈의 충돌 속성을 설정하고 목적지 포탈을 연결할 수 있습니다. # Properties - **Vector2 BoxOffset [Sync]** 엔티티를 기준으로 충돌체 직사각형의 중심점 위치를 설정합니다. - **Vector2 BoxSize [Sync]** 충돌체 직사각형의 너비와 높이를 지정합니다. - **CollisionGroup CollisionGroup [ReadOnly] [HideFromInspector]** Portal의 충돌 그룹입니다. - **boolean IsLegacy [Re

[task] | code [pass] | ❌ 탈락 [title] | AIWanderComponent [question] | AIWanderComponent의 CreateLeafNode와 SetRootNode 메서드를 사용해 특정 시간 동안만 배회 후 정지하는 로직을 구현하는 스크립트를 작성해줘 [answer] | 참고 문서에 따르면 `AIWanderComponent`는 주변을 배회하는 AI 컴포넌트이며, `StateComponent`가 없다면 자동으로 추가됩니다. `CreateLeafNode`와 `SetRootNode` 메서드는 `AIComponent`에서 상속받아 사용할 수 있습니다. `CreateLeafNode`는 `nodeName`과 `onBehaveFunction`을 받아 Action 노드를 생성하며, `SetRootNode`는 생성된 노드를 행동 트리의 최상위 노드로 설정합니다. `onBehaveFunction`에는 `delta` [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=4 complexity=3 verbosity=2 [judge_reason] | AIWanderComponent는 자체적으로 배회하는 컴포넌트이므로 CreateLeafNode로 배회 로직을 재정의하는 것은 문서의 의도와 맞지 않으며, BehaviourTreeStatus 열거형 값이 문서에 명시되지 않아 추측에 기반한 코드를 제시했습니다. [source_doc] | 주변을 배회하는 AI입니다. StateComponent가 없다면 자동으로 추가됩니다. # Properties ##### inherited from AIComponent: - **string BehaviourTreeId [ReadOnly]** 행동 트리 엔트리의 고유 식별자입니다. - **Blackboard BlackBoard [ReadOnly]** AI 행동 트리에서 사용하는 데이터 저장소입니다. 키-값 쌍으로 데이터를 관리하며 행동 트리 노드 간 데이터를 공유합니다. - **boolean IsLegacy [ReadOn

[task] | instruction_following [pass] | ✅ 통과 [title] | DirectionSynchronizerComponent [question] | 문서 예제에 포함된 OnBeginPlay 메서드 코드만 출력하고 설명은 주석으로 작성하세요. [answer] | ```lua Method: [server only] void OnBeginPlay() { -- 워크스페이스에 object-1 모델을 추가한 후, 해당 모델의 Entry ID를 대입합니다. local modelId = "Model Entry ID" -- _SpawnService를 사용하여 모델 엔티티를 생성합니다. -- 부모 엔티티(self.Entity)에 연결되도록 설정하여, 이후 방향 동기화가 가능합니다. local attachedEntity = _SpawnService:SpawnByModelId(modelId, "at [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서 예제 코드를 정확히 재현하고 요청대로 설명을 주석으로만 작성하여 질문에 완벽하게 부합합니다. [source_doc] | 부모 엔티티의 방향을 따라갑니다. 부모 엔티티에서 ChangedLookAtEvent가 발생할 경우 현재 엔티티의 방향도 변경됩니다. # Properties ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가 Enable 상태인지를 반환합니다. Enable이 true일지라도 엔티티의 Enab

[task] | single_turn [pass] | ✅ 통과 [title] | PortalComponent [question] | PortalUseEvent가 발생하는 시점을 기준으로, 플레이어의 위치가 즉시 목적지 포탈로 이동하는지 아니면 클라이언트와 서버 간 동기화 지연이 있을 수 있는지 궁금합니다. [answer] | 제공된 참고 문서에는 `PortalUseEvent`의 발생 시점이나, 포탈 이동 시 플레이어 위치가 즉시 변경되는지, 클라이언트와 서버 간 동기화 지연이 존재하는지에 대한 기술적 세부 사항이 포함되어 있지 않습니다. 문서에서 확인할 수 있는 정보는 다음과 같습니다: 1. `PortalUseEvent`: 플레이어가 포탈을 이용할 때 발생하는 이벤트입니다. 2. `PortalEntityRef`: 목적지 포탈을 설정하는 프로퍼티입니다. 따라서, 포탈 이동 시의 위치 변경 타이밍이나 네트워크 동기화 메커니즘에 대한 구체적인 동작 방 [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 없는 내부 동작 원리(동기화 지연 등)를 추측하지 않고, 문서에 명시된 정보의 한계를 정확히 지적하여 질문자의 혼란을 줄였습니다. [source_doc] | 포탈 기능을 제공합니다. 포탈의 충돌 속성을 설정하고 목적지 포탈을 연결할 수 있습니다. # Properties - **Vector2 BoxOffset [Sync]** 엔티티를 기준으로 충돌체 직사각형의 중심점 위치를 설정합니다. - **Vector2 BoxSize [Sync]** 충돌체 직사각형의 너비와 높이를 지정합니다. - **CollisionGroup CollisionGroup [ReadOnly] [HideFromInspector]** Portal의 충돌 그룹입니다. - **boolean IsLegacy [Re

[task] | code [pass] | ✅ 통과 [title] | SliderComponent [question] | SliderComponent 의 값이 50 을 초과할 때 TextComponent 에 "MAX" 를 표시하고, 50 이하면 현재 값을 숫자로 표시하는 스크립트를 작성해줘 [answer] | `SliderComponent`의 값이 50을 초과하는지 확인하여 `TextComponent`의 텍스트를 조건부 변경하는 스크립트입니다. ```lua Property: [None] Entity TextEntity = EntityPath Method: [client only] void OnBeginPlay() { local sliderComp = self.Entity.SliderComponent if not sliderComp then return end sliderComp.UseIntegerValue = true [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 API와 규칙을 정확히 준수하며, 요구된 조건부 로직을 명확하고 간결하게 구현했습니다. [source_doc] | `SliderComponent`의 값 범위를 0 ~ 100으로 설정하고, 값을 `TextComponent`에 표시하는 예제입니다. ```lua Property: [None] Entity TextEntity = EntityPath Method: [client only] void OnBeginPlay() { local sliderComp = self.Entity.SliderComponent if not sliderComp then return end sliderComp.UseIntegerValue = true

[task] | code [pass] | ✅ 통과 [title] | SliderComponent [question] | SliderComponent 의 MinValue 를 10, MaxValue 를 90 으로 설정하고, 초기값을 50 으로 지정하여 TextComponent 에 해당 값을 표시하는 스크립트를 작성해줘 [answer] | SliderComponent의 `MinValue`, `MaxValue`, `Value` 프로퍼티를 설정하고, 초기값을 `TextComponent`에 표시하는 스크립트입니다. 슬라이더 값이 변경될 때마다 `HandleSliderValueChangedEvent`를 통해 텍스트를 갱신합니다. ```lua Property: [None] Entity TextEntity = EntityPath Method: [client only] void OnBeginPlay() { local sliderComp = self.Entity.SliderC [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서의 API와 구문을 정확히 따르며 요구사항인 MinValue(10), MaxValue(90), 초기값(50) 설정 및 TextComponent 연동과 이벤트 핸들러 수정(원문의 버그 수정 포함)을 완벽하게 수행했습니다. [source_doc] | `SliderComponent`의 값 범위를 0 ~ 100으로 설정하고, 값을 `TextComponent`에 표시하는 예제입니다. ```lua Property: [None] Entity TextEntity = EntityPath Method: [client only] void OnBeginPlay() { local sliderComp = self.Entity.SliderComponent if not sliderComp then return end sliderComp.UseIntegerValue = true

[task] | code [pass] | ✅ 통과 [title] | SliderComponent [question] | SliderComponent 의 값이 0 이 될 때만 TextComponent 에 "Empty" 라는 문자열을 표시하고, 그 외의 값에서는 아무것도 출력하지 않는 스크립트를 작성해줘 [answer] | `SliderComponent`의 값이 0일 때만 `TextComponent`에 "Empty"를 표시하고, 다른 값에서는 텍스트를 비우는 로직을 구현합니다. 참고 문서의 `SliderComponent` 접근 방식(`self.Entity.SliderComponent`)과 `SliderValueChangedEvent` 이벤트 핸들러 형식을 따릅니다. ```lua Property: [None] Entity TextEntity = EntityPath Method: [client only] void OnBeginPlay() { l [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 API와 규칙을 정확히 준수하며, 질문한 조건(0일 때만 표시)을 명확하게 구현했습니다. [source_doc] | `SliderComponent`의 값 범위를 0 ~ 100으로 설정하고, 값을 `TextComponent`에 표시하는 예제입니다. ```lua Property: [None] Entity TextEntity = EntityPath Method: [client only] void OnBeginPlay() { local sliderComp = self.Entity.SliderComponent if not sliderComp then return end sliderComp.UseIntegerValue = true

[task] | code [pass] | ✅ 통과 [title] | AIWanderComponent [question] | AIWanderComponent의 UpdateAuthority 프로퍼티를 확인하여 서버와 클라이언트 중 어디서 실행 중인지에 따라 로그를 출력하는 스크립트를 작성해줘 [answer] | AIWanderComponent는 AIComponent를 상속하므로 `UpdateAuthority` 프로퍼티와 `IsClient()`, `IsServer()` 메서드를 사용할 수 있습니다. 아래 스크립트는 `OnBeginPlay()`가 실행될 때 현재 `UpdateAuthority` 값을 확인하여 서버 또는 클라이언트에서 실행 중임을 로그로 출력합니다. 참고: `UpdateAuthority`의 정확한 타입 이름(`UpdateAuthorityType`)과 그 내부 상수(예: `UpdateAuthorityType.Server`)는 제 [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=3 coherence=4 complexity=2 verbosity=2 [judge_reason] | 질문에 대한 답변은 적절하나, [server only] 실행 공간 지정과 IsServer() 체크가 논리적으로 모순되며, 문서에 없는 상수 이름을 언급하는 등 경미한 오류가 있습니다. [source_doc] | 주변을 배회하는 AI입니다. StateComponent가 없다면 자동으로 추가됩니다. # Properties ##### inherited from AIComponent: - **string BehaviourTreeId [ReadOnly]** 행동 트리 엔트리의 고유 식별자입니다. - **Blackboard BlackBoard [ReadOnly]** AI 행동 트리에서 사용하는 데이터 저장소입니다. 키-값 쌍으로 데이터를 관리하며 행동 트리 노드 간 데이터를 공유합니다. - **boolean IsLegacy [ReadOn

[task] | single_turn [pass] | ✅ 통과 [title] | HitComponent [question] | HandleHitEvent에서 event.AttackerEntity를 통해 공격자의 스크립트 메서드를 직접 호출할 수 있는지요? [answer] | 제시된 문서의 내용만으로는 `event.AttackerEntity`를 통해 공격자의 스크립트 메서드를 **직접 호출**할 수 있는지 여부에 대한 정보가 없습니다. 문서에서는 `HandleHitEvent`에서 `event.AttackerEntity`를 파라미터로 받아낼 수 있다는 것만 확인할 수 있으며, 해당 엔티티의 스크립트 메서드를 어떻게 호출하는지에 대한 코드 예제나 API 설명이 제공되지 않았습니다. 따라서 문서 근거로 직접 호출이 가능한지 여부를 단정할 수 없습니다. [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=4 coherence=4 complexity=2 verbosity=2 [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] | instruction_following [pass] | ✅ 통과 [title] | DirectionSynchronizerComponent [question] | 문서에 명시된 Properties와 Methods 목록을 표로 정리하세요. [answer] | DirectionSynchronizerComponent의 문서에 명시된 Properties와 Methods는 다음과 같습니다. ### Properties | Property 이름 | 타입 | 속성/플래그 | 설명 | | :--- | :--- | :--- | :--- | | `Enable` | `boolean` | `[Sync]` | 컴포넌트 활성화 여부를 확인합니다. | | `EnableInHierarchy` | `boolean` | `[ReadOnly]` `[HideFromInspector]` | 계층 구조상에서 이 컴포넌트가 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 명시된 Properties와 Methods를 빠짐없이 표로 정확히 정리하여 질문에 충실히 답했습니다. [source_doc] | 부모 엔티티의 방향을 따라갑니다. 부모 엔티티에서 ChangedLookAtEvent가 발생할 경우 현재 엔티티의 방향도 변경됩니다. # Properties ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가 Enable 상태인지를 반환합니다. Enable이 true일지라도 엔티티의 Enab

[task] | single_turn [pass] | ✅ 통과 [title] | PortalComponent [question] | PortalComponent의 BoxOffset과 BoxSize를 설정할 때 엔티티의 회전이나 스케일 변화가 충돌체 크기에 영향을 주지 않는 이유는 무엇인가요? [answer] | 제공된 문서에 따르면, `PortalComponent`의 충돌체가 엔티티의 회전이나 스케일 변화의 영향을 받지 않는 이유는 **`IsLegacy` 프로퍼티가 `true`인 경우**입니다. 문서에는 `IsLegacy` 프로퍼티의 설명으로 "이 컴포넌트가 이전의 시스템으로 동작할지를 설정합니다. 신규 시스템은 충돌체가 TransformComponent의 회전과 크기에 영향을 받습니다."라고 명시되어 있습니다. 즉, **신규 시스템**(기본 동작)에서는 충돌체가 `TransformComponent`의 회전과 크기(스케일)의 영향을 * [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 IsLegacy 프로퍼티 설명을 정확히 인용하여 질문의 전제(영향 없음)가 레거시 모드일 때 성립함을 논리적으로 설명했고, 추가 정보도 정확하며 간결하다. [source_doc] | 포탈 기능을 제공합니다. 포탈의 충돌 속성을 설정하고 목적지 포탈을 연결할 수 있습니다. # Properties - **Vector2 BoxOffset [Sync]** 엔티티를 기준으로 충돌체 직사각형의 중심점 위치를 설정합니다. - **Vector2 BoxSize [Sync]** 충돌체 직사각형의 너비와 높이를 지정합니다. - **CollisionGroup CollisionGroup [ReadOnly] [HideFromInspector]** Portal의 충돌 그룹입니다. - **boolean IsLegacy [Re

[task] | code [pass] | ✅ 통과 [title] | SliderComponent [question] | SliderComponent 의 값이 25, 50, 75 일 때 각각 "Low", "Mid", "High" 를 TextComponent 에 표시하고, 그 외의 값에서는 "Invalid" 를 표시하는 스크립트를 작성해줘 [answer] | `SliderComponent`의 값이 변경될 때 `SliderValueChangedEvent`를 처리하여 25, 50, 75에 해당하는 문자열을 `TextComponent`에 표시하고, 그 외의 값에는 "Invalid"를 표시하도록 작성한 스크립트입니다. ```lua Property: [None] Entity TextEntity = EntityPath Method: [client only] void OnBeginPlay() { local sliderComp = self.Entity.SliderComponent if no [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서와 규칙에 기반하여 요구된 조건에 맞는 정확한 스크립트를 작성했고, 원문의 버그(변수명 불일치)도 올바르게 수정하여 일관된 코드를 제공했습니다. [source_doc] | `SliderComponent`의 값 범위를 0 ~ 100으로 설정하고, 값을 `TextComponent`에 표시하는 예제입니다. ```lua Property: [None] Entity TextEntity = EntityPath Method: [client only] void OnBeginPlay() { local sliderComp = self.Entity.SliderComponent if not sliderComp then return end sliderComp.UseIntegerValue = true

[task] | single_turn [pass] | ✅ 통과 [title] | MapLayerComponent [question] | MapLayerComponent의 LayerSortOrder 값이 작을수록 어떤 순서로 그려지는지 설명해 주세요. [answer] | `MapLayerComponent`의 `LayerSortOrder` 값이 작을수록 **하위 레이어**가 됩니다. 즉, 값이 작은 레이어일수록 화면에서 **뒤에 그려집니다** (다른 레이어에 의해 가려질 수 있는 위치로 배치됩니다). [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 LayerSortOrder 설명과 정확히 일치하며, 질문에 대한 답이 간결하고 명확합니다. [source_doc] | 맵의 레이어별 정보를 관리합니다. # Properties - **boolean IsVisible [ReadOnly] [HideFromInspector]** 레이어의 렌더링 여부를 나타냅니다. false일 경우 메이커 씬에서 보이지 않습니다. - **int32 LayerSortOrder [ReadOnly]** 레이어의 우선순위 순서입니다. 값이 작을수록 하위 레이어로, 뒤에 그려집니다. - **boolean Locked [ReadOnly] [HideFromInspector]** 레이어가 잠겨 있는지를 나타냅니다. 잠겨

[task] | single_turn [pass] | ✅ 통과 [title] | MapLayerComponent [question] | 이 컴포넌트의 MapLayerName 프로퍼티를 직접 수정해서 레이어 이름을 변경할 수 있나요? [answer] | 아니요, `MapLayerName` 프로퍼티를 직접 수정하여 레이어 이름을 변경할 수 없습니다. `MapLayerName` 프로퍼티에는 `[ReadOnly]` 속성이 지정되어 있어 읽기 전용이며, 스크립트에서 값을 할당하거나 변경하는 것이 허용되지 않습니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 명시된 [ReadOnly] 속성을 근거로 정답을 간결하고 정확하게 서술했습니다. [source_doc] | 맵의 레이어별 정보를 관리합니다. # Properties - **boolean IsVisible [ReadOnly] [HideFromInspector]** 레이어의 렌더링 여부를 나타냅니다. false일 경우 메이커 씬에서 보이지 않습니다. - **int32 LayerSortOrder [ReadOnly]** 레이어의 우선순위 순서입니다. 값이 작을수록 하위 레이어로, 뒤에 그려집니다. - **boolean Locked [ReadOnly] [HideFromInspector]** 레이어가 잠겨 있는지를 나타냅니다. 잠겨

[task] | single_turn [pass] | ✅ 통과 [title] | HitComponent [question] | IsHitTarget 함수에서 ImmuneCooldown 값을 0으로 설정하면 무적 시간이 사라져서 매 공격마다 피격 판정이成立的되나요? [answer] | 네, `ImmuneCooldown` 값을 0으로 설정하면 무적 시간이 사라져서 매 공격마다 피격 판정이 성립됩니다. `IsHitTarget` 함수의 로직을 분석하면 다음과 같습니다. 1. **현재 시간 확인**: `_UtilLogic.ElapsedSeconds`를 `currentTime`으로 가져옵니다. 2. **판정 조건**: `self.LastHitTime + self.ImmuneCooldown < currentTime` 이 성립해야 `return true` (피격 가능)를 반환합니다. 3. **값이 0인 경우**: [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 IsHitTarget 로직을 정확히 분석하여 ImmuneCooldown이 0일 때 매 공격마다 피격 판정이 성립함을 논리적으로 잘 설명했습니다. [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

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