← 목록

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

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

[task] | single_turn [pass] | ✅ 통과 [title] | TextInputComponent [question] | 예제 코드에서 두 개의 HandleTextInputEndEditEvent 핸들러를 정의했는데, 같은 이벤트 이름을 쓰면서도 서로 다른 동작을 수행하도록 하는 것이 가능한가요? [answer] | 예, 가능합니다. 제공된 예제 코드와 문서 내용을 보면, `TextInputComponent`의 `TextInputEndEditEvent`에 대해 동일한 이벤트 이름을 가진 핸들러 함수를 여러 개 정의할 수 있습니다. 문서 예제에서는 `HandleTextInputEndEditEvent`와 `HandleTextInputEndEditEvent2`라는 두 개의 함수를 모두 `TextInputEndEditEvent` 이벤트 핸들러로 등록하고 있습니다. 두 함수 모두 `[entity: EntityPath]` 지정자를 사용하여 특정 엔티티의 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 예제를 근거로 같은 이벤트 유형에 대해 함수 이름만 다르게 여러 핸들러를 정의할 수 있다는 질문에 정확하고 명확하게 답변했으며, 코드를 그대로 인용하여 근거를 제시했습니다. [source_doc] | - **OrderInLayerChangedEvent** Component의 OrderInLayer가 변경되었을 때 발생하는 이벤트입니다. - **SortingLayerChangedEvent** 컴포넌트의 SortingLayer가 변경되었을 때 발생하는 이벤트입니다. - **TextInputEndEditEditorEvent** InputField의 값 변경이 완료되었을 때 발생하는 에디터 이벤트입니다. - **TextInputEndEditEvent** InputField의 값 변경이 완료되었을 때 발생하는 이벤트입니다.

[task] | single_turn [pass] | ✅ 통과 [title] | MapComponent [question] | RigidbodyComponent를 가진 엔티티가 공중에서 너무 빨리 움직이거나 멈추지 않을 때 MapComponent의 어떤 프로퍼티를 조절해야 하나요? [answer] | RigidbodyComponent를 가진 엔티티가 공중에서 너무 빨리 움직이거나, 입력을 멈췄을 때 제동거리가 길어 잘 멈추지 않는 현상은 `MapComponent`의 **공중 이동 관련 프로퍼티**를 조절하여 해결할 수 있습니다. 구체적으로 다음 프로퍼티들을 확인하고 조정해야 합니다. 1. **AirAccelerationXFactor** * **역할**: 공중에서의 X축 가속도를 보정합니다. * **조절 방법**: 엔티티가 공중에서 **너무 빨리 가속**되어 최대 속도에 빠르게 도달하는 경우라면 이 값을 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 질문에 대한 정확한 프로퍼티를 참고 문서와 일치하게 설명하고, 조절 방향도 논리적으로 잘 제시하여 매우 유용하고 정확합니다. [source_doc] | 맵을 관리하고, 맵의 고유 속성들을 변경할 수 있습니다. # Properties - **float AirAccelerationXFactor** 맵 내에 RigidbodyComponent를 가진 엔티티의 공중에서의 속도를 보정합니다. 값이 증가할수록 공중에서의 속도가 빨라집니다. - **float AirDecelerationXFactor** 맵 내에 RigidbodyComponent를 가진 엔티티가 공중에 있을 때, 입력이 없으면 X축 이동 속도가 얼마나 빠르게 멈추는지를 보정합니다. - **float FallSpeedMa

[task] | instruction_following [pass] | ✅ 통과 [title] | StateComponent [question] | AddState 메서드의 시그니처를 비교하여 Deprecated된 버전과 최신 버전의 차이점을 3문장 이내로 설명하세요. [answer] | `AddState`의 Deprecated 버전은 상태 이름과 함께 일반 함수(`func updateFunction`)를 인자로 받는 반면, 최신 버전은 상태 이름과 사용자 정의 `Type stateType`을 인자로 받습니다. 두 버전 모두 실패 시 `false`를 반환하며, Deprecated 버전은 더 이상 사용되지 않으므로 최신 버전의 `AddState(string, Type)`를 사용해야 합니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 시그니처와 비고 내용을 정확히 비교하여 질문에 요구된 3문장 이내로 명확하게 설명했습니다. [source_doc] | 사용자 정의 StateType, ConditionType 혹은 StateSet을 사용해 상태별 행동과 전이 규칙을 정의, 제어하는 기능을 제공합니다. # Properties - **string CurrentStateName [Sync] [ReadOnly] [HideFromInspector]** 현재 상태의 이름을 얻어올 수 있습니다. - **boolean IsLegacy [ReadOnly]** 이 Component가 이전의 시스템으로 동작할지를 설정합니다. 설정에 따라 상태의 전이 및 StateType과 Condition

[task] | instruction_following [pass] | ✅ 통과 [title] | NameTagComponent [question] | NameTagComponent에서 Sync 속성이 지정된 Properties의 이름만 쉼표(,)로 구분하여 한 줄로 나열해 주세요. [answer] | Bold, FontColor, FontOffset, FontSize, Name, OffsetY [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 명시된 Sync 속성이 지정된 Properties(Bold, FontColor, FontOffset, FontSize, Name, OffsetY)를 정확하고 간결하게 나열하여 질문에 완벽히 부합합니다. [source_doc] | 엔티티 이름표를 표시하고 관련 정보들을 설정합니다. # Properties - **boolean Bold [Sync]** 굵은 텍스트 사용 여부를 설정합니다. - **Color FontColor [Sync]** 글자색을 변경합니다. - **Vector2 FontOffset [Sync]** 이름표 내 글자 위치를 상하좌우로 조정합니다. - **float FontSize [Sync]** 글자 크기를 설정합니다. - **string Name [Sync]** 이름표에 표시할 이름을 설정합니다. - **DataRef N

[task] | instruction_following [pass] | ✅ 통과 [title] | StateComponent [question] | StateComponent가 의존하는 컴포넌트 목록을 표로 정리하세요. [answer] | 제공된 문서에서 `StateComponent`가 직접적으로 의존하거나 생성하는 컴포넌트는 **`ChatBalloonComponent`** 하나입니다. 코드 예제에서 `StateComponent`가 없으면 생성하고, `ChatBalloonComponent`가 없으면 생성하며, `OnUpdate`에서 `StateComponent`의 현재 상태 이름을 `ChatBalloonComponent`에 전달하는 구조를 확인할 수 있습니다. 따라서 의존 컴포넌트 목록은 다음과 같습니다. | 컴포넌트 이름 | 역할 | 비고 | | :--- | [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서에 명시된 ChatBalloonComponent 의존 관계와 코드 로직을 정확히 요약하여 표로 정리했습니다. [source_doc] | 엔티티의 현재 State를 ChatBalloon을 통해 표시해주는 컴포넌트입니다. ```lua Method: [server only] void OnBeginPlay () { local state = self.Entity.StateComponent if state == nil then state = self.Entity:AddComponent("StateComponent") end local chatBalloon = self.Entity.ChatBalloonComponent if chatBalloon == nil

[task] | single_turn [pass] | ❌ 탈락 [title] | AIComponent [question] | CreateLeafNode 함수에서 전달하는 onBehaveFunction은 어떤 값을 반환해야 하며, BehaviourTreeStatus의 상태는 어떻게 결정되나요? [answer] | `CreateLeafNode` 함수에서 전달하는 `onBehaveFunction`은 `BehaviourTreeStatus` 타입의 값을 반환해야 합니다. 이 반환 값에 따라 해당 노드(행동)의 실행 상태가 결정됩니다. `BehaviourTreeStatus`의 상태는 다음과 같이 결정됩니다. 1. **BehaviourTreeStatus.Success**: 행동이 성공적으로 완료되었음을 나타냅니다. 2. **BehaviourTreeStatus.Failure**: 행동이 실패했음을 나타냅니다. 3. **BehaviourTreeS [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=4 complexity=3 verbosity=2 [judge_reason] | BehaviourTreeStatus의 일반적인 상태값(Success/Failure/Running)은 추론 가능하지만, 문서에 없는 MovementComponent, MoveToDirection, Vector2.zero API를 예제 코드에 지어내어 정확성을 해침 [source_doc] | 엔티티에 AI를 부여하기 위한 행동 트리 기능을 제공합니다. # Properties - **string BehaviourTreeId [ReadOnly]** 행동 트리 엔트리의 고유 식별자입니다. - **Blackboard BlackBoard [ReadOnly]** AI 행동 트리에서 사용하는 데이터 저장소입니다. 키-값 쌍으로 데이터를 관리하며 행동 트리 노드 간 데이터를 공유합니다. - **boolean IsLegacy [ReadOnly]** Legacy 시스템 지원 여부를 설정합니다. 이전 시스템은 노드의 Runn

[task] | single_turn [pass] | ✅ 통과 [title] | TextInputComponent [question] | HandleTextInputEndEditEvent 핸들러 내부에서 self.IdInput.Text를 직접 참조하기보다 event.text를 사용하는 것이 권장되는 이유는 무엇인가요? [answer] | `HandleTextInputEndEditEvent` 핸들러 내부에서 `self.IdInput.Text`를 직접 참조하기보다 `event.text`를 사용하는 것이 권장되는 이유는 **이벤트가 발생 시점의 확정된 값**을 안전하게 확보하기 위해서입니다. `TextInputEndEditEvent`는 입력 필드의 값 변경이 완료(커밋)되었을 때 발생하는 이벤트입니다. 이 이벤트 객체(`event`)는 해당 이벤트가 트리거된 순간의 입력값을 `text` 필드에 포함하여 전달합니다. 반면, `self.IdInput.Text`를 직접 읽으 [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | API 사용 예시와 문법은 정확하지만, 문서에 명시되지 않은 '타이밍 문제'나 '동기화 불일치' 같은 기술적 근거를 추측하여 서술한 점이 참고 문서와의 완전한 일치라는 기준에서 약간의 감점 사유가 되나, 전체적으로 유용하고 명확한 답변입니다. [source_doc] | - **OrderInLayerChangedEvent** Component의 OrderInLayer가 변경되었을 때 발생하는 이벤트입니다. - **SortingLayerChangedEvent** 컴포넌트의 SortingLayer가 변경되었을 때 발생하는 이벤트입니다. - **TextInputEndEditEditorEvent** InputField의 값 변경이 완료되었을 때 발생하는 에디터 이벤트입니다. - **TextInputEndEditEvent** InputField의 값 변경이 완료되었을 때 발생하는 이벤트입니다.

[task] | single_turn [pass] | ✅ 통과 [title] | MapComponent [question] | 맵의 경계값을 직접 지정하고 싶을 때 UseCustomBound와 LeftBottom, RightTop을 어떻게 설정해야 하며, 이 설정이 적용되지 않는 조건은 무엇인가요? [answer] | 맵의 경계값을 직접 지정하려면 `MapComponent`의 `UseCustomBound`, `LeftBottom`, `RightTop` 프로퍼티를 설정해야 합니다. **설정 방법** 1. **`UseCustomBound`**: `true`로 설정합니다. 이 값이 `true`일 때에만 직접 정의한 좌표가 맵 영역으로 사용됩니다. 2. **`LeftBottom`**: 맵 영역의 **좌하단** 좌표를 `Vector2`로 설정합니다. 3. **`RightTop`**: 맵 영역의 **우상단** 좌표를 `Vector2`로 설정합니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 API 정의와 제약 조건(TileMapMode MapleTile, UseCustomBound)을 정확히 설명하고, 표준 mLua 문법을 활용한 적절한 코드 예제를 제시하여 질문에 완벽히 부합합니다. [source_doc] | 맵을 관리하고, 맵의 고유 속성들을 변경할 수 있습니다. # Properties - **float AirAccelerationXFactor** 맵 내에 RigidbodyComponent를 가진 엔티티의 공중에서의 속도를 보정합니다. 값이 증가할수록 공중에서의 속도가 빨라집니다. - **float AirDecelerationXFactor** 맵 내에 RigidbodyComponent를 가진 엔티티가 공중에 있을 때, 입력이 없으면 X축 이동 속도가 얼마나 빠르게 멈추는지를 보정합니다. - **float FallSpeedMa

[task] | single_turn [pass] | ✅ 통과 [title] | InventoryComponent [question] | `InventoryComponent`의 `GetItemList()`로 아이템 목록을 가져와 첫 번째 아이템의 수량을 줄이는 로직에서, `#items > 0` 조건이 참이더라도 실제 아이템이 존재하지 않는 것처럼 동작하거나 인덱스 오류가 날 수 있는 원인은 무엇인가요? [answer] | 제공된 문서에는 `InventoryComponent`의 `GetItemList()` 메서드가 반환하는 목록의 내부 구조, 인덱스 접근 시 발생할 수 있는 에러 유형, 또는 `#items > 0` 조건이 참이어도 인덱스 오류가 발생하는 구체적인 원인에 대한 정보가 포함되어 있지 않습니다. 문서에는 `_ItemService:CreateItem`과 `_ItemService:RemoveItem` 호출 시점에 각각 `InventoryItemAddedEvent`, `InventoryItemRemovedEvent`가 발생하며, `ItemCou [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 해당 오류의 원인이 명시되어 있지 않으므로, 정보를 지어내지 않고 문서의 한계를 정확히 지적한 응답으로 평가됩니다. [source_doc] | 인벤토리에 아이템이 추가, 제거되거나 변경 사항이 생기면 `InventoryComponent`는 해당하는 이벤트를 발생시킵니다. `ItemService`의 예제 코드를 예시로 각 이벤트의 호출 시점을 살펴보면 다음과 같습니다. ```lua Event Handler: [self] HandleTriggerEnterEvent (TriggerEnterEvent event) { -- Parameters local TriggerBodyEntity = event.TriggerBodyEntity ------------------------

[task] | code [pass] | ✅ 통과 [title] | AIComponent [question] | AIComponent 의 IsLegacy 프로퍼티를 확인하여 Legacy 시스템이 비활성화되어 있는지 검증하고 결과를 로그로 출력하는 스크립트를 작성해줘 [answer] | `IsLegacy` 프로퍼티의 값이 `false`인지 확인하여 Legacy 시스템이 비활성화되어 있는지 검증하고, 그 결과를 로그로 출력하는 스크립트입니다. ```lua Method: [server only] void OnBeginPlay() { local aiComponent = self.Entity.AIComponent if aiComponent.IsLegacy == false then log("Legacy 시스템은 비활성화되어 있습니다.") else log("Legacy 시 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 AIComponent.IsLegacy 프로퍼티와 mLua 표준 구문을 정확히 사용하여 질문의 요구사항을 완벽하게 충족하는 간결하고 올바른 스크립트를 제시했습니다. [source_doc] | 엔티티에 AI를 부여하기 위한 행동 트리 기능을 제공합니다. # Properties - **string BehaviourTreeId [ReadOnly]** 행동 트리 엔트리의 고유 식별자입니다. - **Blackboard BlackBoard [ReadOnly]** AI 행동 트리에서 사용하는 데이터 저장소입니다. 키-값 쌍으로 데이터를 관리하며 행동 트리 노드 간 데이터를 공유합니다. - **boolean IsLegacy [ReadOnly]** Legacy 시스템 지원 여부를 설정합니다. 이전 시스템은 노드의 Runn

[task] | single_turn [pass] | ✅ 통과 [title] | MapComponent [question] | 맵 내에서 엔티티가 중력에 의해 낙하하는 속도가 의도한 것과 다를 때 Gravity 프로퍼티와 FallSpeedMaxYFactor 중 어떤 값을 확인해야 하며, 두 값의 역할은 어떻게 다른가요? [answer] | 맵에서 엔티티의 낙하 속도가 의도와 다를 때는 **Gravity**와 **FallSpeedMaxYFactor** 두 프로퍼티 모두를 확인해야 합니다. 두 값은 낙하 동작에 서로 다른 방식으로 영향을 미치기 때문입니다. 각 프로퍼티의 역할과 차이점은 다음과 같습니다. ### 1. Gravity (중력값) * **역할:** 맵 내에 `RigidbodyComponent`를 가진 엔티티에 적용되는 **중력 가속도** 자체를 보정합니다. * **영향:** 이 값이 클수록 엔티티는 더 빠르게 가속되어 낙하합니다. 즉, 낙하 과정 전 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 Gravity와 FallSpeedMaxYFactor 정의에 정확히 기반하여 두 프로퍼티의 역할 차이를 명확히 설명하고, 규칙에 부합하는 mLua 코드 예제를 제공하여 질문에 완벽하게 답했습니다. [source_doc] | 맵을 관리하고, 맵의 고유 속성들을 변경할 수 있습니다. # Properties - **float AirAccelerationXFactor** 맵 내에 RigidbodyComponent를 가진 엔티티의 공중에서의 속도를 보정합니다. 값이 증가할수록 공중에서의 속도가 빨라집니다. - **float AirDecelerationXFactor** 맵 내에 RigidbodyComponent를 가진 엔티티가 공중에 있을 때, 입력이 없으면 X축 이동 속도가 얼마나 빠르게 멈추는지를 보정합니다. - **float FallSpeedMa

[task] | instruction_following [pass] | ✅ 통과 [title] | StateComponent [question] | StateComponent의 Properties 중 [ReadOnly] 속성을 가진 항목들을 표로 정리해서 나열하세요. [answer] | StateComponent의 `[ReadOnly]` 속성을 가진 프로퍼티는 다음과 같습니다. | 프로퍼티 이름 | 타입 | 설명 | | :--- | :--- | :--- | | `CurrentStateName` | `string` | 현재 상태의 이름을 얻어올 수 있습니다. | | `IsLegacy` | `boolean` | 이 Component가 이전의 시스템으로 동작할지를 설정합니다. 설정에 따라 상태의 전이 및 StateType과 ConditionType에 정의된 이벤트의 실행 공간이 달라집니다. | | `StateSetId [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 명시된 [ReadOnly] 속성을 가진 프로퍼티 5개(CurrentStateName, IsLegacy, StateSetId, EnableInHierarchy, Entity)를 타입과 설명 포함하여 정확하고 간결하게 표로 정리하였습니다. [source_doc] | 사용자 정의 StateType, ConditionType 혹은 StateSet을 사용해 상태별 행동과 전이 규칙을 정의, 제어하는 기능을 제공합니다. # Properties - **string CurrentStateName [Sync] [ReadOnly] [HideFromInspector]** 현재 상태의 이름을 얻어올 수 있습니다. - **boolean IsLegacy [ReadOnly]** 이 Component가 이전의 시스템으로 동작할지를 설정합니다. 설정에 따라 상태의 전이 및 StateType과 Condition

[task] | code [pass] | ✅ 통과 [title] | AIComponent [question] | AIComponent 의 CreateNode 메서드를 사용해 지정된 BTNodeType 과 nodeName 을 기반으로 노드를 생성하고 SetRootNode 를 통해 루트로 설정하는 스크립트를 작성해줘 [answer] | `CreateNode` 메서드는 `nodeType`(BTNodeType의 타입명)과 `nodeName` 인수를 받아 노드를 생성합니다. 생성된 노드는 `SetRootNode` 메서드를 통해 행동 트리의 최상위 노드로 설정해야 합니다. 아래 예제는 `OnBeginPlay`에서 `CreateNode`를 사용하여 노드를 생성한 후, `SetRootNode`로 루트 노드를 설정하는 스크립트입니다. ```lua [server only] void OnBeginPlay() { local aiComponent = self.Entity. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 CreateNode와 SetRootNode 시그니처 및 mLua 컴포넌트 접근 규칙(self.Entity.AIComponent)을 정확히 준수하여 요청된 기능을 구현한 스크립트를 제공함 [source_doc] | 엔티티에 AI를 부여하기 위한 행동 트리 기능을 제공합니다. # Properties - **string BehaviourTreeId [ReadOnly]** 행동 트리 엔트리의 고유 식별자입니다. - **Blackboard BlackBoard [ReadOnly]** AI 행동 트리에서 사용하는 데이터 저장소입니다. 키-값 쌍으로 데이터를 관리하며 행동 트리 노드 간 데이터를 공유합니다. - **boolean IsLegacy [ReadOnly]** Legacy 시스템 지원 여부를 설정합니다. 이전 시스템은 노드의 Runn

[task] | instruction_following [pass] | ✅ 통과 [title] | NameTagComponent [question] | 문서의 예제 코드만 출력하되, 설명은 Lua 주석(--) 형식으로만 작성해 주세요. [answer] | ```lua -- 유저가 입장하면 UserId에 따라 정해진 단어와 색상으로 NameTag를 설정하는 예제입니다. Event Handler: [server only] [service: UserService] HandleUserEnterEvent (UserEnterEvent event) { -- Parameters local UserId = event.UserId -------------------------------------------------------- local userEntity = _UserService: [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 질문 요구사항인 문서 예제 코드 출력 및 Lua 주석 형식 설명 작성을 정확히 수행했습니다. [source_doc] | 엔티티 이름표를 표시하고 관련 정보들을 설정합니다. # Properties - **boolean Bold [Sync]** 굵은 텍스트 사용 여부를 설정합니다. - **Color FontColor [Sync]** 글자색을 변경합니다. - **Vector2 FontOffset [Sync]** 이름표 내 글자 위치를 상하좌우로 조정합니다. - **float FontSize [Sync]** 글자 크기를 설정합니다. - **string Name [Sync]** 이름표에 표시할 이름을 설정합니다. - **DataRef N

[task] | single_turn [pass] | ✅ 통과 [title] | MapComponent [question] | WalkAccelerationFactor와 WalkDrag 프로퍼티가 엔티티의 이동감각에 각각 어떤 영향을 미치며, 이 둘의 차이는 무엇인가요? [answer] | WalkAccelerationFactor와 WalkDrag는 모두 맵 내에 RigidbodyComponent를 가진 엔티티의 지상 이동 시 물리 보정에 관여하지만, 제어하는 물리적 특성이 다릅니다. **WalkAccelerationFactor의 영향** 이 프로퍼티는 엔티티가 목표 속도에 도달하기까지의 가속도(속도 변화율)를 조절합니다. * **값이 클수록:** 엔티티가 빠르게 목표 이동 속도에 도달합니다. 즉, 입력 시 반응이 빠르고 묵직함이 적은 경쾌한 느낌을 줍니다. * **값이 작을수록:** 엔티티가 목표 이동 속도 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 WalkAccelerationFactor와 WalkDrag 정의 및 제약 조건을 정확히 해석하여, 두 프로퍼티가 가속도와 마찰력(감속)에 미치는 영향을 명확하게 구분하고 비유를 들어 설명했으므로 매우 정확하고 유용합니다. [source_doc] | 맵을 관리하고, 맵의 고유 속성들을 변경할 수 있습니다. # Properties - **float AirAccelerationXFactor** 맵 내에 RigidbodyComponent를 가진 엔티티의 공중에서의 속도를 보정합니다. 값이 증가할수록 공중에서의 속도가 빨라집니다. - **float AirDecelerationXFactor** 맵 내에 RigidbodyComponent를 가진 엔티티가 공중에 있을 때, 입력이 없으면 X축 이동 속도가 얼마나 빠르게 멈추는지를 보정합니다. - **float FallSpeedMa

[task] | single_turn [pass] | ❌ 탈락 [title] | AIComponent [question] | self:CreateLeafNode를 통해 커스텀 함수를 BehaviourTree에 연결할 때, deltaTime 파라미터를 함수 정의부에 포함해야 하는 이유와 이 값이 실제 로직에서 어떻게 사용되는지 알고 싶습니다. [answer] | 제공된 참고 문서에는 `self:CreateLeafNode`를 통해 커스텀 함수를 BehaviourTree에 연결할 때 `deltaTime` 파라미터를 함수 정의부에 포함해야 하는 **이유**나, 이 값이 실제 로직에서 **어떻게 사용되는지**에 대한 설명이 없습니다. 문서에는 `isNearPlayer(deltaTime)`, `lookAtNearestPlayer(deltaTime)` 등 함수 정의부에 `deltaTime` 파라미터가 존재하는 코드 예제는 있지만, 해당 파라미터가 왜 필요한지 또는 함수 본문 내에서 어떻게 활용되는지 [followup] | [followup_answer] | [scores] | helpfulness=1 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 설명이 없어 없다고 답한 것은 사실이지만, 시스템 규칙에 명시된 OnUpdate(number delta) 패턴을 근거로 deltaTime이 프레임 간 시간 간격임을 유추하여 답변하지 않아 도움이 부족함 [source_doc] | 몬스터가 잠을 자다가 플레이어가 다가오면 다가오지 말라고 말하는 예제입니다. AIComponent를 Extend해 사용합니다. 작성한 스크립트 컴포넌트를 static 몬스터에 추가해 사용합니다. ```lua Property: [Sync] number DetectDistance = 4 Method: [server only] void OnBeginPlay () { local chatBallon = self.Entity.ChatBalloonComponent if chatBallon == nil then chatBallon =

[task] | two_turn [pass] | ✅ 통과 [title] | MapComponent [question] | UseCustomBound가 true일 때 LeftBottom과 RightTop을 설정하여 맵 영역을 직접 정의하는 과정에서, TileMapMode가 MapleTile이 아닐 경우 발생하는 예외 처리나 주의사항은 무엇인가요? [answer] | `UseCustomBound` 프로퍼티는 `TileMapMode`가 `MapleTile`일 때에만 작동합니다. 따라서 `TileMapMode`가 `MapleTile`이 아닌 상태에서 `UseCustomBound`를 `true`로 설정하고 `LeftBottom`, `RightTop`을 변경하더라도, 이 값들은 맵 영역으로 적용되지 않습니다. 이 경우 별도의 예외(Exception)가 발생하거나 에러 로그가 출력되는 등의 특별한 처리는 없으며, 단순히 커스텀 바운드가 무시되고 맵의 형태를 기반으로 자동 생성된 영역이 사용될 뿐입니다. [followup] | TileMapMode가 MapleTile이 아닌 상태에서 UseCustomBound를 true로 설정하면 GetBound() 메서드가 어떤 값을 반환하며, 이를 검증하는 mLua 스크립트 로직을 어떻게 구현해야 하나요? [followup_answer] | `TileMapMode`가 `MapleTile`이 아닌 상태에서 `UseCustomBound`를 `true`로 설정하더라도, `UseCustomBound`는 `MapleTile`일 때에만 작동하므로 커스텀 바운드가 적용되지 않습니다. 따라서 `GetBound()` 메서드는 `LeftBottom`과 `RightTop` 프로퍼티의 값을 반환하지 않고, **맵의 형태를 기반으로 자동 생성된 맵 영역**을 반환합니다. 이 상태를 검증하는 mLua 스크립트 로직은 다음과 같이 구현할 수 있습니다. ```lua Property: [Non [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 'TileMapMode가 MapleTile일 때에만 작동합니다'라는 제약 사항을 정확히 인용하여, 해당 조건을 충족하지 않을 경우 커스텀 바운드가 무시되고 자동 영역이 사용된다는 합리적 결론을 도출했으며, 문서에 명시되지 않은 예외 발생 여부를 논리적으로 서술하여 질문에 충실히 답했습니다. [source_doc] | 맵을 관리하고, 맵의 고유 속성들을 변경할 수 있습니다. # Properties - **float AirAccelerationXFactor** 맵 내에 RigidbodyComponent를 가진 엔티티의 공중에서의 속도를 보정합니다. 값이 증가할수록 공중에서의 속도가 빨라집니다. - **float AirDecelerationXFactor** 맵 내에 RigidbodyComponent를 가진 엔티티가 공중에 있을 때, 입력이 없으면 X축 이동 속도가 얼마나 빠르게 멈추는지를 보정합니다. - **float FallSpeedMa

[task] | instruction_following [pass] | ❌ 탈락 [title] | StateComponent [question] | ChangeState 메서드를 사용하여 상태를 변경할 때 발생하는 이벤트 핸들러 등록 예제를 코드만 출력하고 설명은 주석으로 작성하세요. [answer] | ```lua Property: [None] number Speed = 10 Method: [server only] void OnBeginPlay() { -- StateChangeEvent 핸들러 등록 -- 상태가 변경될 때마다 ChangeState 메서드가 호출되면 발생하는 이벤트를 구독합니다. self.Entity.StateComponent:ConnectEvent(StateChangeEvent, function(event) -- event 객체를 통해 변경된 상태 정보에 접근할 수 있습니다. [followup] | [followup_answer] | [scores] | helpfulness=1 correctness=1 coherence=2 complexity=3 verbosity=2 [judge_reason] | mLua의 이벤트 핸들러는 Event Handler 블록([service] 또는 [self])을 통해 선언해야 하는데, 응답은 존재하지 않는 ConnectEvent 메서드를 사용하여 등록하려 했으며, 이는 시스템 규칙과 문서 모두에 없는 잘못된 문법입니다. [source_doc] | 사용자 정의 StateType, ConditionType 혹은 StateSet을 사용해 상태별 행동과 전이 규칙을 정의, 제어하는 기능을 제공합니다. # Properties - **string CurrentStateName [Sync] [ReadOnly] [HideFromInspector]** 현재 상태의 이름을 얻어올 수 있습니다. - **boolean IsLegacy [ReadOnly]** 이 Component가 이전의 시스템으로 동작할지를 설정합니다. 설정에 따라 상태의 전이 및 StateType과 Condition

[task] | single_turn [pass] | ✅ 통과 [title] | InventoryComponent [question] | 서버 로직에서 `HandleTriggerEnterEvent`를 통해 아이템을 제거할 때 `ItemCount`를 0으로 만든 후 `_ItemService:RemoveItem`을 호출하는 과정과, 바로 `_ItemService:RemoveItem`만 호출하는 과정이 인벤토리 이벤트 발생에 미치는 차이는 무엇인가요? [answer] | 제공된 문서에 따르면, 두 과정은 인벤토리 이벤트 발생 시점에 명확한 차이가 있습니다. 1. **`ItemCount`를 0으로 만든 후 `_ItemService:RemoveItem` 호출 시:** * `ItemCount` 프로퍼티 값이 변경(0으로 감소)되는 시점에 **`InventoryItemModifiedEvent`** 가 먼저 발생합니다. * 이후 `_ItemService:RemoveItem` 호출로 인해 아이템이 실제로 인벤토리에서 제거되면서 **`InventoryItemRemovedEvent`** [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 `InventoryItemModifiedEvent` 발생 조건(ItemCount 변경)과 `InventoryItemRemovedEvent` 발생 조건(RemoveItem 호출)을 정확히 대조하여 두 시나리오의 이벤트 발생 차이를 논리적으로 설명했습니다. [source_doc] | 인벤토리에 아이템이 추가, 제거되거나 변경 사항이 생기면 `InventoryComponent`는 해당하는 이벤트를 발생시킵니다. `ItemService`의 예제 코드를 예시로 각 이벤트의 호출 시점을 살펴보면 다음과 같습니다. ```lua Event Handler: [self] HandleTriggerEnterEvent (TriggerEnterEvent event) { -- Parameters local TriggerBodyEntity = event.TriggerBodyEntity ------------------------

[task] | single_turn [pass] | ✅ 통과 [title] | InventoryComponent [question] | 클라이언트에서 `HandleInventoryItemAddedEvent`를 처리할 때 `event.Items` 배열에 포함된 데이터 구조와, 서버에서 `_ItemService:CreateItem`을 호출할 때 전달한 파라미터가 어떻게 매핑되는지 확인하는 가장 효율적인 방법은 무엇인가요? [answer] | 제시된 문서에 따르면 `event.Items` 배열의 구체적인 데이터 구조(예: 각 아이템 객체의 프로퍼티 목록, 타입 정보 등)나 `_ItemService:CreateItem` 파라미터와 `event.Items` 간 매핑 논리에 대한 설명이 포함되어 있지 않습니다. 문서에서 확인할 수 있는 정보만 정리하면 다음과 같습니다: 1. **이벤트 파라미터:** `HandleInventoryItemAddedEvent`의 `event` 객체에는 `Entity`와 `Items` 프로퍼티가 존재합니다. 2. **발생 시점:** `_Ite [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서에 없는 세부 구조를 지어내지 않고, 제공된 예제 코드와 텍스트 범위 내에서 사실만을 정확히 추출하여 한계를 명확히 설명했습니다. [source_doc] | 인벤토리에 아이템이 추가, 제거되거나 변경 사항이 생기면 `InventoryComponent`는 해당하는 이벤트를 발생시킵니다. `ItemService`의 예제 코드를 예시로 각 이벤트의 호출 시점을 살펴보면 다음과 같습니다. ```lua Event Handler: [self] HandleTriggerEnterEvent (TriggerEnterEvent event) { -- Parameters local TriggerBodyEntity = event.TriggerBodyEntity ------------------------

[task] | code [pass] | ❌ 탈락 [title] | TextInputComponent [question] | TextInputComponent의 ActivateInputField() 메서드를 호출하여 입력 포커싱을 활성화하고 IsFocused 프로퍼티가 true가 될 때까지 대기하는 로직을 포함하는 스크립트를 작성해줘 [answer] | TextInputComponent의 `ActivateInputField()` 메서드를 호출하면 입력이 활성화되며, 이후 몇 프레임 뒤에 `IsFocused` 값이 `true`로 변경됩니다. 참고 문서에 제공된 mLua API 목록에는 `IsFocused`가 `true`가 될 때까지 대기하는 전용 이벤트(예: `HandleFocusEvent`)나 `wait()` 함수를 사용한 폴링 로직의 예제가 명시되어 있지 않습니다. 또한, `IsFocused`는 `[ReadOnly]` 속성이 있어 직접 값을 변경할 수 없고, 읽기 전용으로 확인 [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=1 coherence=3 complexity=2 verbosity=2 [judge_reason] | Property 블록에서 `TextInputComponent` 타입을 사용하고 `EntityPath`라는 존재하지 않는 초기값을 지정하는 등 mLua 문법 및 API를 잘못 사용했으며, 문서에 없는 `wait()` 함수 사용 가능성을 언급하여 정확도가 낮음 [source_doc] | 문자열을 입력받아 TextComponent에 전달합니다. # Properties - **boolean AllowAutomaticTranslation [MakerOnly]** PlaceHolder 프로퍼티 값의 자동 번역 여부를 설정합니다. - **boolean AutoClear** 텍스트 입력이 완료되었을 때, 입력 영역을 자동으로 초기화할지 여부를 설정합니다. - **int32 CharacterLimit** 입력 가능한 글자 수입니다. - **InputContentType ContentType** 입력 가능한 타

[task] | code [pass] | ❌ 탈락 [title] | AIComponent [question] | AIComponent 의 BlackBoard 프로퍼티를 활용해 행동 트리 실행 전 특정 키 값으로 데이터를 초기화하는 OnBeginPlay 스크립트를 작성해줘 [answer] | AIComponent의 `BlackBoard` 프로퍼티는 행동 트리에서 사용하는 데이터 저장소이며, 키-값 쌍으로 데이터를 관리합니다. 제공된 문서에는 `BlackBoard` 프로퍼티에 대해 "키-값 쌍으로 데이터를 관리하며 행동 트리 노드 간 데이터를 공유합니다"라고만 설명되어 있고, `BlackBoard` 객체 자체에 데이터를 **초기화하거나 설정하는** 메서드(예: `Set`, `Init` 등)가 명시되어 있지 않습니다. 문서에서 `BlackBoard`가 어떻게 사용되는지 보여주는 유일한 단서는 두 번째 예제 코드입니다: ` [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서에 없는 API를 지어내지 않고 정직하게 한계를 설명했으나, 실제 요청인 스크립트 작성에는 도움을 주지 못함 [source_doc] | 엔티티에 AI를 부여하기 위한 행동 트리 기능을 제공합니다. # Properties - **string BehaviourTreeId [ReadOnly]** 행동 트리 엔트리의 고유 식별자입니다. - **Blackboard BlackBoard [ReadOnly]** AI 행동 트리에서 사용하는 데이터 저장소입니다. 키-값 쌍으로 데이터를 관리하며 행동 트리 노드 간 데이터를 공유합니다. - **boolean IsLegacy [ReadOnly]** Legacy 시스템 지원 여부를 설정합니다. 이전 시스템은 노드의 Runn

[task] | code [pass] | ❌ 탈락 [title] | AIComponent [question] | AIComponent 의 CreateLeafNode 메서드를 사용하여 매 프레임마다 지정된 속성으로 이동하는 Action 노드를 생성하고 SetRootNode 로 설정하는 스크립트를 작성해줘 [answer] | 요청하신 기능은 `AIComponent`의 `CreateLeafNode` 메서드를 통해 Action 노드를 생성하고, 해당 노드의 `OnBehave` 함수에서 매 프레임 `MovementComponent`를 이용해 이동하도록 구현한 뒤, `SetRootNode`로 설정하는 스크립트입니다. 이동 방향과 속도는 스크립트의 Property로 선언하여 외부에서 설정할 수 있게 하고, `OnBehave`에서 매 프레임 `delta`만큼 이동을 누적하여 이동하는 방식으로 작성했습니다. ```lua Property: [None] Vector [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=0 coherence=3 complexity=2 verbosity=2 [judge_reason] | 참고 문서와 mLua 규칙에 존재하지 않는 MovementComponent, MoveToDirection 메서드, BehaviourTreeStatus.Running 상수를 지어내어 사실 오류가 큼 [source_doc] | 엔티티에 AI를 부여하기 위한 행동 트리 기능을 제공합니다. # Properties - **string BehaviourTreeId [ReadOnly]** 행동 트리 엔트리의 고유 식별자입니다. - **Blackboard BlackBoard [ReadOnly]** AI 행동 트리에서 사용하는 데이터 저장소입니다. 키-값 쌍으로 데이터를 관리하며 행동 트리 노드 간 데이터를 공유합니다. - **boolean IsLegacy [ReadOnly]** Legacy 시스템 지원 여부를 설정합니다. 이전 시스템은 노드의 Runn

[task] | single_turn [pass] | ❌ 탈락 [title] | AIComponent [question] | chatBallon.AutoShowEnabled를 true로 설정하고 ShowDuration을 1로 지정하면, 몬스터가 "Zzz..."라고 말하고 있는 동안에도 채팅풍선이 자동으로 사라지는 건가요? [answer] | 아니요, 채팅풍선이 자동으로 사라지지 않습니다. `AutoShowEnabled`이 `true`이고 `ShowDuration`이 1로 설정되어 있어도, `ChatBalloonComponent`의 메시지(`Message`)가 유지되는 한 채팅풍선은 화면에 계속 표시됩니다. 참고 문서의 예제를 보면 `sleep` 함수에서 `chatBallon.Message = "Zzz..."`를 설정하며, 이 상태가 유지되는 동안 플레이어와 거리가 멀어(`DetectDistance`보다 멀어)져서 `isNearPlayer` 체크가 실패하면 `slee [followup] | [followup_answer] | [scores] | helpfulness=1 correctness=0 coherence=2 complexity=1 verbosity=2 [judge_reason] | 참고 문서에 없는 ChatBalloonComponent 동작 원리를 지어내어, AutoShowEnabled가 true일 때 ShowDuration 후 자동 숨김되는 정상 로직을 '자동으로 사라지지 않는다'고 잘못 설명함 [source_doc] | 몬스터가 잠을 자다가 플레이어가 다가오면 다가오지 말라고 말하는 예제입니다. AIComponent를 Extend해 사용합니다. 작성한 스크립트 컴포넌트를 static 몬스터에 추가해 사용합니다. ```lua Property: [Sync] number DetectDistance = 4 Method: [server only] void OnBeginPlay () { local chatBallon = self.Entity.ChatBalloonComponent if chatBallon == nil then chatBallon =

[task] | code [pass] | ✅ 통과 [title] | DamageSkinSpawnerComponent [question] | HitComponent의 ColliderOffset과 BoxSize를 기준으로 상단 중앙에 DamageSkinSpawnerComponent의 DamageSkinOffset을 설정하는 스크립트를 작성해줘 [answer] | HitComponent의 `ColliderOffset`과 `BoxSize`를 기준으로 상단 중앙에 대미지 스킨을 출력하도록 `DamageSkinSpawnerComponent`의 `DamageSkinOffset`을 설정하는 스크립트는 다음과 같습니다. ```lua Method: [server only] void OnBeginPlay() { local damageSkinSpawnerComponent = self.Entity.DamageSkinSpawnerComponent if damageSkinSpawnerCo [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 예제 코드를 정확히 재현하여 질문에 완벽하게 부합하며, API 사용법 및 문법도 모두 올바릅니다. [source_doc] | Entity에 피격 이벤트가 발생했을 때 대미지 스킨을 출력합니다. # Properties - **Vector2 DamageSkinOffset [Sync]** 대미지 스킨이 출력되는 위치를 설정합니다. ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가 Enable 상태인지를 반환합니

[task] | single_turn [pass] | ✅ 통과 [title] | DamageSkinSpawnerComponent [question] | 피격 이벤트가 발생할 때 대미지 스킨의 출력 위치를 조정하기 위해 어떤 프로퍼티를 사용해야 하나요? [answer] | 피격 이벤트 발생 시 대미지 스킨의 출력 위치를 조정하려면 `DamageSkinSpawnerComponent`의 **`DamageSkinOffset`** 프로퍼티를 사용합니다. 이 프로퍼티는 `Vector2` 타입이며 `[Sync]` 속성을 가지고 있어 클라이언트와 서버 간 동기화됩니다. ```lua Property: [Sync] Vector2 DamageSkinOffset = Vector2(0, 0) ``` [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 질문에 정확히 답하며 문서와 일치하는 API 정보를 명확하게 제공했습니다. [source_doc] | Entity에 피격 이벤트가 발생했을 때 대미지 스킨을 출력합니다. # Properties - **Vector2 DamageSkinOffset [Sync]** 대미지 스킨이 출력되는 위치를 설정합니다. ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가 Enable 상태인지를 반환합니

[task] | instruction_following [pass] | ✅ 통과 [title] | NameTagComponent [question] | NameTagComponent의 모든 Properties를 이름과 타입을 포함하여 표로 정리해 주세요. [answer] | NameTagComponent의 모든 프로퍼티는 다음과 같습니다. | 이름 | 타입 | 동기화(Sync) | 설명 | | :--- | :--- | :--- | :--- | | `Bold` | `boolean` | `[Sync]` | 굵은 텍스트 사용 여부를 설정합니다. | | `FontColor` | `Color` | `[Sync]` | 글자색을 변경합니다. | | `FontOffset` | `Vector2` | `[Sync]` | 이름표 내 글자 위치를 상하좌우로 조정합니다. | | `FontSize` | `float` | `[ [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 모든 프로퍼티를 이름, 타입, 동기화 속성, 설명을 포함하여 정확하고 일관된 표로 정리했습니다. [source_doc] | 엔티티 이름표를 표시하고 관련 정보들을 설정합니다. # Properties - **boolean Bold [Sync]** 굵은 텍스트 사용 여부를 설정합니다. - **Color FontColor [Sync]** 글자색을 변경합니다. - **Vector2 FontOffset [Sync]** 이름표 내 글자 위치를 상하좌우로 조정합니다. - **float FontSize [Sync]** 글자 크기를 설정합니다. - **string Name [Sync]** 이름표에 표시할 이름을 설정합니다. - **DataRef N

[task] | code [pass] | ✅ 통과 [title] | InventoryComponent [question] | HandleInventoryItemInitEvent 이벤트 핸들러에서 Items 배열이 비어있지 않은 경우에만 log로 "Inventory initialized"를 출력하고, HandleInventoryItemModifiedEvent 이벤트 핸들러에서 event.Items 배열의 길이가 0인 경우 log로 "Inventory empty"를 출력하도록 하는 스크립트를 작성해줘 [answer] | ```lua Event Handler: [self] HandleInventoryItemInitEvent (InventoryItemInitEvent event) { -- Parameters local Entity = event.Entity local Items = event.Items -------------------------------------------------------- if self:IsServer() then return end if #Items > 0 then log("Invento [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 요청한 조건에 맞게 문서의 API와 규칙을 정확히 준수하여 간결하게 작성했습니다. [source_doc] | ```lua Event Handler: [self] HandleInventoryItemModifiedEvent (InventoryItemModifiedEvent event) { -- Parameters local Entity = event.Entity local Items = event.Items -------------------------------------------------------- if self:IsServer() then return end log ("[Give Item]") } ```

[task] | single_turn [pass] | ✅ 통과 [title] | AIComponent [question] | isNearPlayer 함수에서 _UserService:GetUsersByMapComponent를 통해 플레이어 목록을 가져와 거리를 계산할 때, self.DetectDistance 값이 커지면 어떤 변화가 생깁니까? [answer] | `self.DetectDistance` 값이 커지면, 몬스터가 플레이어를 인식하는 범위가 넓어집니다. 구체적인 변화는 다음과 같습니다. 1. **인식 거리 증가**: `isNearPlayer` 함수 내에서 `dist <= self.DetectDistance` 조건이 성립해야 `self._T.nearestPlayer`에 플레이어가 저장됩니다. `DetectDistance`가 커질수록 더 멀리 있는 플레이어까지 이 조건을 만족하게 되어, 몬스터가 더 먼 거리에서도 플레이어를 '가까운 플레이어'로 인식하게 됩니다. 2. **AI [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 코드 로직과 AI 트리 구조를 정확히 분석하여 DetectDistance 값 변화에 따른 인식 범위 확대 및 상태 전환 시점 변화를 논리적으로 설명했습니다. [source_doc] | 몬스터가 잠을 자다가 플레이어가 다가오면 다가오지 말라고 말하는 예제입니다. AIComponent를 Extend해 사용합니다. 작성한 스크립트 컴포넌트를 static 몬스터에 추가해 사용합니다. ```lua Property: [Sync] number DetectDistance = 4 Method: [server only] void OnBeginPlay () { local chatBallon = self.Entity.ChatBalloonComponent if chatBallon == nil then chatBallon =

[task] | code [pass] | ✅ 통과 [title] | DamageSkinSpawnerComponent [question] | HitComponent의 ColliderOffset과 BoxSize를 TransformComponent의 Scale과 곱하여 대미지 스킨 위치를 계산하고 DamageSkinSpawnerComponent에 반영하는 스크립트를 작성해줘 [answer] | HitComponent의 `ColliderOffset`과 `BoxSize`를 TransformComponent의 `Scale`과 곱하여 상단 중앙 위치를 계산하고, 이를 `DamageSkinSpawnerComponent`의 `DamageSkinOffset`에 적용하는 스크립트는 다음과 같습니다. ```lua Method: [server only] void OnBeginPlay() { local damageSkinSpawnerComponent = self.Entity.DamageSkinSpawnerComponent if da [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 예제 코드를 정확히 재현하여 질문에 완벽하게 부합하며, API 사용법도 오류가 없습니다. [source_doc] | Entity에 피격 이벤트가 발생했을 때 대미지 스킨을 출력합니다. # Properties - **Vector2 DamageSkinOffset [Sync]** 대미지 스킨이 출력되는 위치를 설정합니다. ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가 Enable 상태인지를 반환합니

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