[task] | two_turn [pass] | ⏳ 미판정 [title] | 파티클 활용하기 [question] | 파티클 컴포넌트의 프로퍼티를 스크립트로 제어하는 기본 원리가 궁금하다 [answer] | 파티클 컴포넌트의 프로퍼티를 스크립트로 제어하는 기본 원리는 **엔티티에 연결된 `BasicParticleComponent` 객체를 직접 참조하여 해당 프로퍼티 값을 수정하는 것**입니다. 이를 위해 다음 단계들을 따릅니다. 1. **스크립트 연결**: 제어하려는 파티클이 적용된 엔티티에 스크립트 컴포넌트를 추가합니다. 2. **컴포넌트 접근**: 스크립트 내부에서 `self.Entity.BasicParticleComponent`를 통해 해당 엔티티의 파티클 컴포넌트를 직접 접근합니다. (`GetComponent` 메서드는 [followup] | `OnUpdate()`에서 캐릭터와 파티클의 거리를 계산하여 `BasicParticleComponent.PlaySpeed`를 변경하는 구체적인 코드 예시를 보여줄 수 있나? [followup_answer] | 네, 캐릭터와 파티클 엔티티의 2D 거리를 계산하여 파티클 재생 속도(`PlaySpeed`)를 동적으로 변경하는 구체적인 코드 예시는 다음과 같습니다. 이 스크립트는 파티클이 적용된 엔티티에 추가되며, 클라이언트에서만 실행됩니다. 매 프레임(`OnUpdate`)마다 파티클 위치와 로컬 플레이어 위치의 거리를 계산하고, 그 값을 `PlaySpeed` 프로퍼티에 대입합니다. ```lua [client only] void OnUpdate(number delta) { local positionA = Vector2(self.Ent [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 [파티클 사용하기](/docs/?postId=1036) 가이드에서 파티클 컴포넌트의 개념 및 종류에 대해 알아보았습니다. 이번 시간에는 스크립트를 사용해 파티클을 활용하는 예제를 살펴보겠습니다. # 파티클 스크립트 ## 파티클 프로퍼티 제어 캐릭터와의 거리에 따라 파티클의 재생 속도가 바뀌는 예제를 통해 파티클 프로퍼티를 제어하는 방법을 살펴봅시다. 1. 파티클이 잘 보이도록 어두운 배경을 설정하고 지형을 배치한 뒤 원하는 파티클을 배치합니다. 본 예제에서는 Background로 **back-16**을 설
[task] | single_turn [pass] | ⏳ 미판정 [title] | 웹 브라우저 활용하기 [question] | 키보드 입력으로 웹 브라우저를 제어하려면 InputService의 KeyDownEvent를 어떻게 연결해야 하며, 스크립트 컴포넌트와 WebViewComponent를 같은 엔티티에 추가해야 하는 이유가 무엇인가요? [answer] | 키보드 입력으로 웹 브라우저를 제어하려면 **InputService**의 **KeyDownEvent**를 스크립트 컴포넌트의 **Event Handler**로 연결해야 합니다. 이 이벤트는 클라이언트 공간에서 발생하며, 이벤트 객체(`KeyDownEvent`)의 `key` 프로퍼티를 통해 어떤 키가 눌렸는지 확인하고 그에 따라 `WebViewComponent`의 메서드를 호출하는 방식으로 동작합니다. **스크립트 컴포넌트와 WebViewComponent를 같은 엔티티에 추가해야 하는 이유** mLua 스크립트에서 `self.En [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | UI로 웹 브라우저를 배치하면 화면의 특정 위치에 항상 웹 브라우저가 보이도록 할 수 있습니다. 1. **Hierarchy - ui** 아래에서 원하는 UI 그룹의 콘텍스트 메뉴를 엽니다. **Create Entity - Create UIEmpty**를 선택해 **UIEmpty**를 생성합니다. 2. 프로퍼티 에디터에서 **UIEmpty**에 **WebViewComponent**를 추가하고 원하는 Url을 입력합니다. 3. 엔티티의 크기를 적절하게 조절한 후 **[시작]** 버튼을 눌러 테스트해 봅시다. 화면의 특정 위치에
[task] | instruction_following [pass] | ⏳ 미판정 [title] | 파티클 활용하기 [question] | UIBasicParticleComponent가 월드 진입 시 자동 재생되지 않도록 설정해야 하는 두 개의 프로퍼티 이름과 값을 표로 정리하세요. [answer] | UIBasicParticleComponent가 월드 진입 시 자동 재생되지 않도록 설정해야 하는 프로퍼티는 다음과 같습니다. | 프로퍼티 이름 | 값 | | :--- | :--- | | Loop | false | | PlayOnEnable | false | [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 1. **UIParticle**에 **UIBasicParticleComponent**를 추가합니다. 2. ParticleType을 **CircleBust**로 선택하고, 원하는 파티클 크기, 속도 등을 조절합니다. 3. **UIBasicParticleComponent**의 **Loop**를 **false**로 설정해 버튼을 눌렀을 때 파티클이 한 번만 재생되도록 합니다. **PlayOnEnable** 또한 **false**로 변경하여 파티클이 월드 진입하자마자 재생되지 않도록 합니다. ![[object Object]](https
[task] | single_turn [pass] | ⏳ 미판정 [title] | 파티클 활용하기 [question] | PlayBasicParticle 함수에서 option 테이블로 Color와 ParticleCount를 설정할 때, 색상 값은 0에서 1 사이의 float로 지정해야 하는가요? [answer] | 네, 색상 값은 0에서 1 사이의 float(실수)로 지정해야 합니다. 참고 문서의 예제 코드에서 `Color(0.25, 0.5, 0.5, 1)`처럼 각 채널(RGBA)의 값이 0에서 1 사이의 소수 형태로 입력되고 있습니다. 이는 mLua의 `Color` 생성자 사용법에 부합하는 일반적인 방식입니다. ```lua local option = {["Color"] = Color(0.25, 0.5, 0.5, 1), ["ParticleCount"] = 3} ``` 따라서 `PlayBasicParticle`의 `option` 테이블에 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 1. 파티클이 잘 보이도록 어두운 배경을 설정하고 지형을 배치한 뒤 원하는 엔티티를 배치합니다. 본 예제에서는 Preset List에서 Background - **back-51**을 설정하고 Object - **object-174**를 배치했습니다. 2. Workspace - MyDesk에 새 스크립트 컴포넌트 ParticleServiceTest를 생성합니다. 3. 배치한 엔티티(object-174)의 Property에 ParticleServiceTest를 추가합니다. 4. 여기에 TweenCircula
[task] | single_turn [pass] | ⏳ 미판정 [title] | 파티클 활용하기 [question] | 2초마다 파티클이 생성되도록 SetTimerRepeat를 사용했는데, 파티클이 계속 쌓여서 성능이 떨어질까 봐 걱정되는데 반복 파티클을 삭제하는 방법은 무엇인가요? [answer] | 제공된 참고 문서에는 `PlayBasicParticle()`로 생성된 파티클을 명시적으로 삭제하는 API나 방법이 언급되어 있지 않습니다. 문서에는 반복 타이머를 설정할 때 `SetTimerRepeat`를 사용하고, 필요할 때 `OnEndPlay`에서 `ClearTimer`로 타이머 자체를 해제하는 예시는 있지만, 이미 생성된 파티클 엔티티나 파티클 효과를 제거하는 구체적인 함수(예: `StopParticle`, `DestroyParticle` 등)는 찾아볼 수 없습니다. 따라서 현재 제공된 문서 범위 내에서는 반복 생성되는 파 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 1. 파티클이 잘 보이도록 어두운 배경을 설정하고 지형을 배치한 뒤 원하는 엔티티를 배치합니다. 본 예제에서는 Preset List에서 Background - **back-51**을 설정하고 Object - **object-174**를 배치했습니다. 2. Workspace - MyDesk에 새 스크립트 컴포넌트 ParticleServiceTest를 생성합니다. 3. 배치한 엔티티(object-174)의 Property에 ParticleServiceTest를 추가합니다. 4. 여기에 TweenCircula
[task] | code [pass] | ⏳ 미판정 [title] | 공동 제작 팁 [question] | 이 문서에는 mLua 스크립트 작성에 필요한 API, 컴포넌트, 또는 서비스 정보가 포함되어 있지 않으므로 요청하신 코딩 과제를 만들 수 없습니다. [answer] | 요청하신 코딩 과제를 만들 수 없습니다. 제시된 참고 문서에는 mLua 스크립트 작성에 필요한 구체적인 API, 컴포넌트, 또는 서비스 정보가 포함되어 있지 않습니다. 문서의 내용은 공동 제작 팁(개발/출시 월드 구분, UI 그룹 분리, Check In/Out 관리 등)과 몇 가지 기본적인 mLua 문법 예제(이벤트 핸들러, 프로퍼티, 메서드)만 제시되어 있으며, 이를 바탕으로 새로운 스크립트 로직이나 코딩 과제를 생성할 만한 충분한 기술적 정보가 부족합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 공동 제작 기능을 활용하면 여러 인원이 동시에 월드를 편집할 수 있기 때문에 매우 편리합니다. 하지만 함께 작업을 진행하다 보면 가끔 오류가 발생할 때도 있습니다. 메이플스토리 월드 팀은 이와 같은 오류를 최소화하고 메이커의 안정성을 높이기 위해 지속적으로 노력하고 있습니다. 이번 시간에는 공동 제작 과정에서 알아두면 좋은 팁을 몇 가지 소개하고자 합니다. ##### 참고 가이드 [공동 제작](/docs/?postId=670) # 개발용 월드와 출시용 월드의 구분 개발용 월드에서 필요한 작업을 끝낸 후,
[task] | single_turn [pass] | ⏳ 미판정 [title] | 파티클 활용하기 [question] | TweenCircularComponent를 추가했는데 파티클이 엔티티의 회전이나 이동에 따라 자연스럽게 반응하려면 추가적인 설정이 필요한가요? [answer] | 제공된 문서에 `TweenCircularComponent`를 추가했을 때 파티클이 엔티티의 회전이나 이동에 따라 자연스럽게 반응하도록 하는 **추가적인 설정 방법이나 관련 API에 대한 설명은 없습니다.** 문서에서는 `TweenCircularComponent`를 추가하고 설정하라는 지시(4단계)와 `_ParticleService:PlayBasicParticle()` 호출 예제(5단계)만 제시하고 있으며, 파티클이 엔티티의 트랜스폼(회전/이동)과 어떻게 연동되는지 또는 이를 위한 별도 설정이 필요한지에 대한 정보는 포함되어 있지 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 1. 파티클이 잘 보이도록 어두운 배경을 설정하고 지형을 배치한 뒤 원하는 엔티티를 배치합니다. 본 예제에서는 Preset List에서 Background - **back-51**을 설정하고 Object - **object-174**를 배치했습니다. 2. Workspace - MyDesk에 새 스크립트 컴포넌트 ParticleServiceTest를 생성합니다. 3. 배치한 엔티티(object-174)의 Property에 ParticleServiceTest를 추가합니다. 4. 여기에 TweenCircula
[task] | single_turn [pass] | ⏳ 미판정 [title] | 파티클 활용하기 [question] | 스크립트에서 self.Entity.TransformComponent.WorldPosition을 파티클 생성 위치로 전달했는데, 엔티티가 움직이는 중에 파티클 위치가 따라오지 않고 처음 배치한 위치에 고정되는 이유는 무엇인가요? [answer] | 제공된 참고 문서에는 `self.Entity.TransformComponent.WorldPosition`을 파티클 생성 위치로 전달했을 때, 엔티티가 움직이는 중에 파티클 위치가 고정되는 현상에 대한 원인이나 해결 방안이 설명되어 있지 않습니다. 문서에는 `_ParticleService:PlayBasicParticle` 함수를 호출할 때 `self.Entity.TransformComponent.WorldPosition`을 인수로 전달하는 코드 예제와, `_TimerService:SetTimerRepeat`를 사용하여 2초 간격으로 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 1. 파티클이 잘 보이도록 어두운 배경을 설정하고 지형을 배치한 뒤 원하는 엔티티를 배치합니다. 본 예제에서는 Preset List에서 Background - **back-51**을 설정하고 Object - **object-174**를 배치했습니다. 2. Workspace - MyDesk에 새 스크립트 컴포넌트 ParticleServiceTest를 생성합니다. 3. 배치한 엔티티(object-174)의 Property에 ParticleServiceTest를 추가합니다. 4. 여기에 TweenCircula
[task] | single_turn [pass] | ⏳ 미판정 [title] | 파티클 활용하기 [question] | ParticleServiceTest02 스크립트에서 생성된 파티클의 식별자(serial)를 관리하기 위해 어떤 타입의 프로퍼티를 선언해야 하나요? [answer] | ParticleServiceTest02 스크립트에서 생성된 파티클의 식별자(serial)를 관리하기 위해 `SyncTable<number>` 타입의 프로퍼티를 선언해야 합니다. 참고 문서의 예제에서 사용된 프로퍼티 선언부는 다음과 같습니다. ```lua Property: [None] Entity ResetEntity = "nil" [None] SyncTable<number> SpawnList ``` 여기서 `SpawnList`가 파티클 식별자(serial)를 저장하기 위해 사용되는 프로퍼티입니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 반복 재생되는 파티클을 생성하거나 삭제하는 방법을 알아봅시다. 특정 엔티티에 캐릭터가 닿으면 파티클이 생성되다가 캐릭터가 목표 지점에 도착하면 파티클 생성이 멈추는 예제를 만들어보겠습니다. 1. 파티클을 뿜어낼 엔티티와 목표 엔티티를 배치합니다. 본 예제에서는 파티클을 뿜어낼 엔티티로 **object-24**(호리병)을, 목표 엔티티로는 **object-928**(소화기)를 사용했습니다. 2. 배치한 모든 엔티티에 TriggerComponent를 추가합니다. 3. Workspace - MyDesk에 새
[task] | single_turn [pass] | ⏳ 미판정 [title] | 파티클 활용하기 [question] | 문서 예제에서 ExtendAttackComponent를 생성한 후, 이 컴포넌트를 어디에 추가해야 파티클과 연동이 되나요? [answer] | 문서 예제에 따르면, `ExtendAttackComponent`는 처음에 배치한 **LightningStrikeSharp 파티클의 Property**에 추가해야 합니다. 이렇게 하면 파티클이 발생하거나 루프될 때 해당 파티클에 연결된 스크립트가 작동하여 `ParticleEmitStartEvent`와 `ParticleLoopEvent`를 통해 `OnLightning()` 함수가 호출되고, 결국 공격 판정(`Attack()`)이 실행됩니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 파티클 이벤트를 활용하여 파티클을 반복 생성할 때마다 대미지를 주거나 연출을 보여줄 수 있습니다. 번개가 칠 때마다 공격 기능이 작동하여 캐릭터에게 대미지를 주는 예제를 통해 파티클 이벤트의 활용 방법을 살펴봅시다. 1. Preset List - **LightningStrikeSharp** 파티클을 배치합니다. 2. AttackComponent를 Extend하여 새 스크립트 컴포넌트 ExtendAttackComponent를 생성합니다. 3. ExtendAttackComponent를 열고 `OnLightni
[task] | two_turn [pass] | ⏳ 미판정 [title] | 파티클 활용하기 [question] | ParticleServiceTest02 스크립트에서 캐릭터가 목표 엔티티에 닿았을 때 기존에 생성된 모든 파티클을 제거하는 로직은 어떤 원리로 동작하나요? [answer] | `ParticleServiceTest02` 스크립트에서 캐릭터가 목표 엔티티에 닿았을 때 파티클을 제거하는 로직은 **시리얼(serial) 번호를 저장해 두었다가 이를 기반으로 파티클을 제거한다**는 원리로 동작합니다. 구체적인 동작 원리는 다음과 같습니다. 1. **파티클 생성 시 시리얼 기록**: * 캐릭터가 목표 엔티티가 아닌 다른 엔티티(예: 호리병)에 닿으면 `HandleTriggerEnterEvent` 이벤트 핸들러가 실행됩니다. * `_ParticleService:PlayBasicParticl [followup] | `SyncTable<number> SpawnList`에 저장된 시리얼 넘버를 순회하며 `_ParticleService:RemoveParticle(serial)`을 호출하는 구체적인 코드 구조와, `table.clear(self.SpawnList)`를 사용하는 이유를 설명해 주세요. [followup_answer] | `ParticleServiceTest02` 스크립트에서 `SyncTable<number> SpawnList`를 활용하는 코드 구조와 `table.clear` 사용 이유는 다음과 같습니다. ### 1. 시리얼 순회 및 파티클 제거 코드 구조 캐릭터가 목표 엔티티(`ResetEntity`)에 닿았을 때, 이전에 생성된 모든 파티클을 제거하기 위해 `SpawnList`에 저장된 시리얼(serial) 값을 순회하며 파티클을 삭제하는 로직은 `HandleTriggerEnterEvent` 이벤트 핸들러의 `else` 블록에서 수행됩니다. [scores] | [judge_reason] | [source_doc] | 반복 재생되는 파티클을 생성하거나 삭제하는 방법을 알아봅시다. 특정 엔티티에 캐릭터가 닿으면 파티클이 생성되다가 캐릭터가 목표 지점에 도착하면 파티클 생성이 멈추는 예제를 만들어보겠습니다. 1. 파티클을 뿜어낼 엔티티와 목표 엔티티를 배치합니다. 본 예제에서는 파티클을 뿜어낼 엔티티로 **object-24**(호리병)을, 목표 엔티티로는 **object-928**(소화기)를 사용했습니다. 2. 배치한 모든 엔티티에 TriggerComponent를 추가합니다. 3. Workspace - MyDesk에 새
[task] | single_turn [pass] | ⏳ 미판정 [title] | 파티클 활용하기 [question] | UIButton 하위에 Create Entity as Child로 생성한 UIEmpty에 파티클을 적용하려면 어떤 컴포넌트를 추가해야 하나요? [answer] | 제시된 참고 문서에는 UIButton 하위에 UIEmpty를 생성하는 절차는 설명되어 있지만, 해당 UIEmpty에 파티클을 적용하기 위해 **어떤 컴포넌트를 추가해야 하는지에 대한 구체적인 정보(컴포넌트 이름 등)가 포함되어 있지 않습니다.** 따라서 문서 내용에 기반하여 특정 파티클 컴포넌트 이름을 알려드리기 어렵습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 파티클을 재생할 수 있는 UI를 만들어봅시다. 1. **Hierachy - World - ui**에 새로운 **UIGroup**을 추가합니다. 2. 추가한 UIGroup에서 **UIGroupComponent**의 **DefaultShow** 프로퍼티를 **true**로 설정합니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/1738820526946c8b71422566e4a919660cc52294d2f78.png "DefaultShow") 3. UIGroup에서 **콘
[task] | instruction_following [pass] | ⏳ 미판정 [title] | 공동 제작 팁 [question] | Check In을 수시로 해야 하는 이유와 Bulk Check In을 실행하는 두 가지 방법을 3문장 이내로 요약하세요. [answer] | Check In을 수시로 해야 하는 이유는 작업 중 이탈 시 수정 사항이 전체에게 반영되지 않기 때문입니다. Bulk Check In은 Scene에서 Ctrl + S를 누르거나 Workspace의 My Desk를 우클릭하여 선택하는 두 가지 방법으로 실행할 수 있습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 공동 제작 기능을 활용하면 여러 인원이 동시에 월드를 편집할 수 있기 때문에 매우 편리합니다. 하지만 함께 작업을 진행하다 보면 가끔 오류가 발생할 때도 있습니다. 메이플스토리 월드 팀은 이와 같은 오류를 최소화하고 메이커의 안정성을 높이기 위해 지속적으로 노력하고 있습니다. 이번 시간에는 공동 제작 과정에서 알아두면 좋은 팁을 몇 가지 소개하고자 합니다. ##### 참고 가이드 [공동 제작](/docs/?postId=670) # 개발용 월드와 출시용 월드의 구분 개발용 월드에서 필요한 작업을 끝낸 후,
[task] | single_turn [pass] | ⏳ 미판정 [title] | 파티클 활용하기 [question] | 워크스페이스의 DefaultPlayer에 스크립트를 추가한 후, 목표 엔티티를 지정하기 위해 어떤 프로퍼티 값을 설정해야 하나요? [answer] | 워크스페이스의 DefaultPlayer에 스크립트를 추가한 후, 캐릭터가 닿으면 파티클 생성이 멈추는 목표 엔티티를 지정하기 위해 `ResetEntity` 프로퍼티 값을 설정해야 합니다. 이 프로퍼티는 `ParticleServiceTest02` 스크립트 컴포넌트의 `Property` 블록에 `[None]` 속성으로 선언된 `Entity` 타입 변수입니다. 목표 엔티티(예: 소화기)를 선택하여 이 값에 대입하면, 해당 엔티티에 캐릭터가 닿았을 때 `HandleTriggerEnterEvent` 이벤트 핸들러에서 기존에 생성된 파티클들 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 반복 재생되는 파티클을 생성하거나 삭제하는 방법을 알아봅시다. 특정 엔티티에 캐릭터가 닿으면 파티클이 생성되다가 캐릭터가 목표 지점에 도착하면 파티클 생성이 멈추는 예제를 만들어보겠습니다. 1. 파티클을 뿜어낼 엔티티와 목표 엔티티를 배치합니다. 본 예제에서는 파티클을 뿜어낼 엔티티로 **object-24**(호리병)을, 목표 엔티티로는 **object-928**(소화기)를 사용했습니다. 2. 배치한 모든 엔티티에 TriggerComponent를 추가합니다. 3. Workspace - MyDesk에 새
[task] | instruction_following [pass] | ⏳ 미판정 [title] | 파티클 활용하기 [question] | 버튼 클릭 시 파티클 재생 로직을 구현하는 HandleButtonClickEvent 코드만 출력하고 설명은 주석으로 작성하세요. [answer] | ```lua Event Handler: [self] HandleButtonClickEvent(ButtonClickEvent event) { --------------- Native Event Sender Info ---------------- -- Sender: ButtonComponent -- Space: Client --------------------------------------------------------- -- Parameters -- local Entity = event [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 1. **UIParticle**에 **UIBasicParticleComponent**를 추가합니다. 2. ParticleType을 **CircleBust**로 선택하고, 원하는 파티클 크기, 속도 등을 조절합니다. 3. **UIBasicParticleComponent**의 **Loop**를 **false**로 설정해 버튼을 눌렀을 때 파티클이 한 번만 재생되도록 합니다. **PlayOnEnable** 또한 **false**로 변경하여 파티클이 월드 진입하자마자 재생되지 않도록 합니다. ![[object Object]](https
[task] | single_turn [pass] | ⏳ 미판정 [title] | 파티클 활용하기 [question] | UIGroup을 World - ui 경로에 추가하지 않으면 파티클 UI가 정상적으로 렌더링되지 않는 이유는 무엇인가요? [answer] | 제공된 문서에는 UIGroup을 `World - ui` 경로에 추가해야 하는 이유나, 다른 경로에 추가했을 때 파티클 UI가 정상적으로 렌더링되지 않는 원인에 대한 기술적 설명이 포함되어 있지 않습니다. 문서에서는 단순히 "Hierachy - World - ui에 새로운 UIGroup을 추가합니다"라는 절차만 안내하고 있을 뿐, 그 이유나 내부 동작 원리를 설명하지 않습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 파티클을 재생할 수 있는 UI를 만들어봅시다. 1. **Hierachy - World - ui**에 새로운 **UIGroup**을 추가합니다. 2. 추가한 UIGroup에서 **UIGroupComponent**의 **DefaultShow** 프로퍼티를 **true**로 설정합니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/1738820526946c8b71422566e4a919660cc52294d2f78.png "DefaultShow") 3. UIGroup에서 **콘
[task] | single_turn [pass] | ⏳ 미판정 [title] | 파티클 활용하기 [question] | UIGroup의 DefaultShow를 true로 설정해야 하는 이유는 무엇인가요? [answer] | UIGroup의 `DefaultShow` 프로퍼티를 `true`로 설정하는 이유는 해당 UI 그룹이 기본적으로 화면에 표시되도록 하기 위해서입니다. 참고 문서의 연출 가이드에서 파티클을 재생할 수 있는 UI를 만들 때, `Hierarchy - World - ui`에 새로운 `UIGroup`을 추가한 후 `UIGroupComponent`의 `DefaultShow` 프로퍼티를 `true`로 설정하도록 안내하고 있습니다. 이는 생성된 UI 요소들이 초기화 시점에 즉시 렌더링되어 사용자가 볼 수 있도록 하는 설정입니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 파티클을 재생할 수 있는 UI를 만들어봅시다. 1. **Hierachy - World - ui**에 새로운 **UIGroup**을 추가합니다. 2. 추가한 UIGroup에서 **UIGroupComponent**의 **DefaultShow** 프로퍼티를 **true**로 설정합니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/1738820526946c8b71422566e4a919660cc52294d2f78.png "DefaultShow") 3. UIGroup에서 **콘
[task] | single_turn [pass] | ⏳ 미판정 [title] | 파티클 활용하기 [question] | UIParticle 엔티티에 파티클을 연결할 때 모델 ID를 직접 입력해야 하나요, 아니면 에디터에서 선택해야 하나요? [answer] | 제공된 참고 문서에는 UIParticle 엔티티에 파티클을 연결하는 구체적인 방법(모델 ID 직접 입력 여부, 에디터 선택 여부)에 대한 정보가 포함되어 있지 않습니다. 문서에는 Hierachy에서 UIGroup과 UIButton, UIEmpty(이름 변경: UIParticle)를 생성하는 단계와, 파티클을 재생하는 UI를 만들기 위한 예제 코드 구조만 설명되어 있을 뿐, 파티클 에셋을 실제 엔티티에 바인딩하는 프로세스는 다루고 있지 않습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 파티클을 재생할 수 있는 UI를 만들어봅시다. 1. **Hierachy - World - ui**에 새로운 **UIGroup**을 추가합니다. 2. 추가한 UIGroup에서 **UIGroupComponent**의 **DefaultShow** 프로퍼티를 **true**로 설정합니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/1738820526946c8b71422566e4a919660cc52294d2f78.png "DefaultShow") 3. UIGroup에서 **콘
[task] | instruction_following [pass] | ⏳ 미판정 [title] | 공동 제작 팁 [question] | 개인 월드를 그룹 월드로 이전할 때 공식 홈페이지에서 수행해야 하는 메뉴 선택 순서를 표로 정리해서 작성하세요. [answer] | 개인 월드를 그룹 월드로 이전할 때 공식 홈페이지에서 수행해야 하는 메뉴 선택 순서는 다음과 같습니다. | 순서 | 수행 내용 | | :--- | :--- | | 1 | 메이플스토리 월드 공식 홈페이지 접속 | | 2 | **만들기 - 그룹 월드** 선택 | | 3 | **개인 월드 가져오기** 클릭 | | 4 | 저장해둔 개인 월드 선택하여 가져오기 | [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 공동 제작 기능을 활용하면 여러 인원이 동시에 월드를 편집할 수 있기 때문에 매우 편리합니다. 하지만 함께 작업을 진행하다 보면 가끔 오류가 발생할 때도 있습니다. 메이플스토리 월드 팀은 이와 같은 오류를 최소화하고 메이커의 안정성을 높이기 위해 지속적으로 노력하고 있습니다. 이번 시간에는 공동 제작 과정에서 알아두면 좋은 팁을 몇 가지 소개하고자 합니다. ##### 참고 가이드 [공동 제작](/docs/?postId=670) # 개발용 월드와 출시용 월드의 구분 개발용 월드에서 필요한 작업을 끝낸 후,
[task] | single_turn [pass] | ⏳ 미판정 [title] | 파티클 활용하기 [question] | OnUpdate에서 _UserService.LocalPlayer가 아닌 다른 플레이어의 위치를 기준으로 파티클 속도를 조절하려면 어떻게 수정해야 하나요? [answer] | 제공된 참고 문서에는 `_UserService.LocalPlayer`를 제외한 다른 특정 플레이어의 위치를 직접 가져오는 API나 메서드가 명시되어 있지 않습니다. 문서에 포함된 예제는 모두 로컬 플레이어(`_UserService.LocalPlayer`)의 위치를 기준으로 계산하거나, 트리거 이벤트(`TriggerEnterEvent`)를 통해 충돌한 엔티티(`event.TriggerBodyEntity`)의 이름을 확인하는 방식으로만 구성되어 있습니다. 따라서 문서에 근거하여 "다른 특정 플레이어의 위치"를 직접 조회하는 코드를 작 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 [파티클 사용하기](/docs/?postId=1036) 가이드에서 파티클 컴포넌트의 개념 및 종류에 대해 알아보았습니다. 이번 시간에는 스크립트를 사용해 파티클을 활용하는 예제를 살펴보겠습니다. # 파티클 스크립트 ## 파티클 프로퍼티 제어 캐릭터와의 거리에 따라 파티클의 재생 속도가 바뀌는 예제를 통해 파티클 프로퍼티를 제어하는 방법을 살펴봅시다. 1. 파티클이 잘 보이도록 어두운 배경을 설정하고 지형을 배치한 뒤 원하는 파티클을 배치합니다. 본 예제에서는 Background로 **back-16**을 설
[task] | two_turn [pass] | ⏳ 미판정 [title] | 파티클 활용하기 [question] | UIGroupComponent의 DefaultShow 프로퍼티가 true로 설정되지 않으면 파티클 UI는 어떻게 동작하나요? [answer] | UIGroupComponent의 DefaultShow 프로퍼티가 true로 설정되지 않으면, 해당 UIGroup은 초기 상태인 OnBeginPlay 시점에 자동으로 표시되지 않습니다. 즉, 파티클이 포함된 UI가 화면에 보이지 않게 됩니다. 문서에 따르면, 파티클을 재생할 수 있는 UI를 만들 때 추가한 UIGroup에서 UIGroupComponent의 DefaultShow 프로퍼티를 true로 설정하는 단계를 명시하고 있습니다. 이는 UI가 게임 시작 시점에 즉시 표시되도록 하기 위한 필수 설정입니다. 이 설정이 누락되면 UI가 [followup] | DefaultShow를 false로 두고 스크립트로 가시성을 제어할 때 주의해야 할 점은 무엇인가요? [followup_answer] | 제공된 참고 문서에는 `DefaultShow` 프로퍼티가 `false`로 설정된 상태에서 스크립트를 통해 UI의 가시성을 제어하는 방법이나, 해당 경우의 주의사항(예: 초기 위치 설정, 렌더링 순서, 이벤트 처리 등)에 대한 정보가 포함되어 있지 않습니다. 문서에서는 파티클 UI를 만들 때 `UIGroupComponent`의 `DefaultShow` 프로퍼티를 **true**로 설정하는 것을 권장하는 절차만 설명하고 있으며, `false`로 두고 동적으로 제어하는 시나리오나 그와 관련된 API, 주의할 점에 대해서는 언급하지 않았 [scores] | [judge_reason] | [source_doc] | 파티클을 재생할 수 있는 UI를 만들어봅시다. 1. **Hierachy - World - ui**에 새로운 **UIGroup**을 추가합니다. 2. 추가한 UIGroup에서 **UIGroupComponent**의 **DefaultShow** 프로퍼티를 **true**로 설정합니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/1738820526946c8b71422566e4a919660cc52294d2f78.png "DefaultShow") 3. UIGroup에서 **콘
[task] | instruction_following [pass] | ⏳ 미판정 [title] | 공동 제작 팁 [question] | 메이커에서 인스턴스 맵으로 이동 시 Hierarchy 탭이 비어 보일 때 해결 방법을 단계별 번호 목록으로 작성하세요. [answer] | 메이커에서 인스턴스 맵으로 이동한 후 Hierarchy 탭에 아무것도 보이지 않을 때의 해결 방법은 다음과 같습니다. 1. 현재 열려 있는 **Hierarchy** 탭을 닫습니다. 2. 다시 **Hierarchy** 탭을 엽니다. 위 단계를 수행하면 Hierarchy 탭이 정상적으로 표시되도록 갱신됩니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 메이커에서 플레이 테스트를 하다가 인스턴스 맵으로 이동하면 **Hierarchy** 탭에 아무것도 보이지 않는 현상이 발생할 수 있습니다. 이때는 **Hierarchy** 탭을 닫았다가 다시 열면 정상화됩니다. Workspace나 UI에서도 유사한 현상이 발생할 수 있습니다. 이때 폴더를 접었다 펴면 Check Out 정보가 갱신됩니다. ## 새로운 월드로 이전 공동 제작 중 아래와 같은 현상이 발생하면 해당 월드에 심각한 문제가 발생할 가능성이 높습니다. * 스크립트 에디터에 게임 UI가 보임 * UI를 수정하고 Check
[task] | single_turn [pass] | ⏳ 미판정 [title] | 파티클 활용하기 [question] | 파티클 이벤트 핸들러 안에서 event.ParticleEntity를 선언해 놓고 있는데, 이 변수를 실제로 코드에서 사용해야 하는 이유가 있나요? [answer] | 제시된 참고 문서의 예제 코드를 보면 `HandleParticleEmitStartEvent`와 `HandleParticleLoopEvent` 핸들러 내부에서 `local ParticleEntity = event.ParticleEntity`라고 변수를 선언하고 있습니다. 하지만 문서에 포함된 예제 코드 본문(`self:OnLightning()` 호출 부분)에서는 이 `ParticleEntity` 변수를 추가로 사용하거나 참조하는 부분이 없습니다. 또한, 이 변수를 선언하지 않아도 이벤트 핸들러가 정상 작동하는지에 대한 설명이나, ` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 파티클 이벤트를 활용하여 파티클을 반복 생성할 때마다 대미지를 주거나 연출을 보여줄 수 있습니다. 번개가 칠 때마다 공격 기능이 작동하여 캐릭터에게 대미지를 주는 예제를 통해 파티클 이벤트의 활용 방법을 살펴봅시다. 1. Preset List - **LightningStrikeSharp** 파티클을 배치합니다. 2. AttackComponent를 Extend하여 새 스크립트 컴포넌트 ExtendAttackComponent를 생성합니다. 3. ExtendAttackComponent를 열고 `OnLightni
[task] | code [pass] | ⏳ 미판정 [title] | 파티클 활용하기 [question] | UIButton의 콘텍스트 메뉴를 통해 Create Entity as Child - Create UIEmpty를 선택하여 자식 엔티티를 생성하는 스크립트를 작성해줘 [answer] | 제시된 참고 문서에는 `UIButton`의 콘텍스트 메뉴를 통해 `Create Entity as Child - Create UIEmpty`를 선택하는 **에디터 내 조작 절차**만 설명되어 있으며, 이를 **mLua 스크립트로 실행하는 API(메서드, 이벤트 핸들러, 서비스 등)는 문서에 존재하지 않습니다.** 따라서 해당 작업을 수행하는 mLua 스크립트를 작성할 수 없습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 파티클을 재생할 수 있는 UI를 만들어봅시다. 1. **Hierachy - World - ui**에 새로운 **UIGroup**을 추가합니다. 2. 추가한 UIGroup에서 **UIGroupComponent**의 **DefaultShow** 프로퍼티를 **true**로 설정합니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/1738820526946c8b71422566e4a919660cc52294d2f78.png "DefaultShow") 3. UIGroup에서 **콘
[task] | two_turn [pass] | ⏳ 미판정 [title] | 파티클 활용하기 [question] | 파티클을 재생할 수 있는 UI를 만들려면 어떤 구조로 엔티티를 배치해야 하나요? [answer] | 파티클을 재생할 수 있는 UI를 만들려면 다음과 같은 계층 구조로 엔티티를 배치해야 합니다. 1. **Hierarchy > World > ui** 경로에 **UIGroup**을 추가합니다. 2. 추가한 **UIGroup**의 **UIGroupComponent**에서 **DefaultShow** 프로퍼티를 **true**로 설정합니다. 3. **UIGroup**에서 콘텍스트 메뉴를 통해 **Create Empty > Create Button**을 선택하여 **UIButton**을 추가합니다. 4. **UIButton**에서 콘텍스트 [followup] | UIEmpty를 UIButton의 자식으로 생성하고 이름을 UIParticle로 변경하는 과정이 필요한 이유와 DefaultShow 설정의 역할은 무엇인가요? [followup_answer] | 제공된 참고 문서에는 `UIEmpty`를 `UIButton`의 자식으로 생성하고 이름을 `UIParticle`로 변경하는 과정의 구체적인 이유나 `DefaultShow` 설정의 역할에 대한 설명이 포함되어 있지 않습니다. 문서에는 해당 작업이 "파티클을 재생할 수 있는 UI를 만드는" 절차의 일부로 제시되어 있을 뿐, 각 단계가 필요한 기술적 이유나 프로퍼티의 기능적 정의는 기술되어 있지 않습니다. 따라서 문서 근거만으로 이 질문에 대한 답변을 드리기 어렵습니다. [scores] | [judge_reason] | [source_doc] | 파티클을 재생할 수 있는 UI를 만들어봅시다. 1. **Hierachy - World - ui**에 새로운 **UIGroup**을 추가합니다. 2. 추가한 UIGroup에서 **UIGroupComponent**의 **DefaultShow** 프로퍼티를 **true**로 설정합니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/1738820526946c8b71422566e4a919660cc52294d2f78.png "DefaultShow") 3. UIGroup에서 **콘
[task] | code [pass] | ⏳ 미판정 [title] | 파티클 활용하기 [question] | Hierachy - World - ui 경로 아래에 새로운 UIGroup을 추가하는 스크립트를 작성해줘 [answer] | 제시된 참고 문서에는 Hierarchy - World - ui 경로 아래에 새로운 UIGroup을 추가하는 **mLua 스크립트 코드나 관련 API가 포함되어 있지 않습니다.** 문서에 설명된 방법은 에디터 인터페이스를 직접 조작하는 절차입니다: 1. **Hierachy - World - ui**에 새로운 **UIGroup**을 추가합니다. 2. 추가한 UIGroup에서 **UIGroupComponent**의 **DefaultShow** 프로퍼티를 **true**로 설정합니다. 따라서 이 작업을 수행하는 스크립트를 작성해 드릴 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 파티클을 재생할 수 있는 UI를 만들어봅시다. 1. **Hierachy - World - ui**에 새로운 **UIGroup**을 추가합니다. 2. 추가한 UIGroup에서 **UIGroupComponent**의 **DefaultShow** 프로퍼티를 **true**로 설정합니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/1738820526946c8b71422566e4a919660cc52294d2f78.png "DefaultShow") 3. UIGroup에서 **콘
[task] | instruction_following [pass] | ⏳ 미판정 [title] | 공동 제작 팁 [question] | 본인만 컴포넌트를 활성화하는 mLua 코드 예제를 코드만 출력하고 설명은 주석으로 작성하세요. [answer] | ```lua -- 본인만 컴포넌트를 활성화하는 코드 -- _UserService.LocalPlayer.Name을 통해 현재 플레이하는 사용자의 이름을 확인합니다. -- 만약 해당 이름이 제작자의 이름("CreatorName")과 일치하면 TestComponent의 Enable 프로퍼티를 true로 설정합니다. -- 이렇게 하면 다른 그룹원의 작업 환경에 영향을 주지 않으면서 테스트를 진행할 수 있습니다. if _UserService.LocalPlayer.Name == "CreatorName" then TestComponen [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 메이커에서 플레이 테스트를 하다가 인스턴스 맵으로 이동하면 **Hierarchy** 탭에 아무것도 보이지 않는 현상이 발생할 수 있습니다. 이때는 **Hierarchy** 탭을 닫았다가 다시 열면 정상화됩니다. Workspace나 UI에서도 유사한 현상이 발생할 수 있습니다. 이때 폴더를 접었다 펴면 Check Out 정보가 갱신됩니다. ## 새로운 월드로 이전 공동 제작 중 아래와 같은 현상이 발생하면 해당 월드에 심각한 문제가 발생할 가능성이 높습니다. * 스크립트 에디터에 게임 UI가 보임 * UI를 수정하고 Check
[task] | single_turn [pass] | ⏳ 미판정 [title] | 파티클 활용하기 [question] | OnLightning 함수에서 Attack을 호출할 때 매개변수로 Vector2(2, 2)를 전달하는 구체적인 의미는 무엇인가요? [answer] | `OnLightning` 함수에서 `self:Attack(Vector2(2, 2), Vector2.zero, nil)` 호출 시 첫 번째 매개변수인 `Vector2(2, 2)`는 **공격 판정 영역(공격 박스)의 크기**를 의미합니다. 구체적으로 다음과 같은 역할을 합니다: 1. **공격 판정 범위 설정**: `Vector2(2, 2)`는 파티클이 위치한 중심점 기준으로 가로(X) 2 단위, 세로(Y) 2 단위의 직사각형 영역이 공격 판정 영역으로 설정됨을 나타냅니다. 2. **피격 대상 판정**: 이 영역 안에 들어오는 캐 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 파티클 이벤트를 활용하여 파티클을 반복 생성할 때마다 대미지를 주거나 연출을 보여줄 수 있습니다. 번개가 칠 때마다 공격 기능이 작동하여 캐릭터에게 대미지를 주는 예제를 통해 파티클 이벤트의 활용 방법을 살펴봅시다. 1. Preset List - **LightningStrikeSharp** 파티클을 배치합니다. 2. AttackComponent를 Extend하여 새 스크립트 컴포넌트 ExtendAttackComponent를 생성합니다. 3. ExtendAttackComponent를 열고 `OnLightni
[task] | single_turn [pass] | ⏳ 미판정 [title] | 파티클 활용하기 [question] | 파티클이 반복해서 생성될 때마다 대미지를 주고 싶을 때 ParticleEmitStartEvent와 ParticleLoopEvent 중 어떤 이벤트를 사용해야 하나요? [answer] | 파티클이 **반복해서** 생성될 때마다 대미지를 주고 싶다면 `ParticleLoopEvent`를 사용해야 합니다. 두 이벤트의 차이점은 다음과 같습니다: * **`ParticleEmitStartEvent`**: 파티클이 처음 시작할 때 한 번만 작동합니다. * **`ParticleLoopEvent`**: 파티클이 루프(반복)될 때마다 작동합니다. 따라서 번개가 지속적으로 치면서 반복적으로 대미지를 입히려면 `ParticleLoopEvent` 핸들러에서 공격 로직을 실행하도록 설정해야 합니다. 아래는 `ParticleL [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 파티클 이벤트를 활용하여 파티클을 반복 생성할 때마다 대미지를 주거나 연출을 보여줄 수 있습니다. 번개가 칠 때마다 공격 기능이 작동하여 캐릭터에게 대미지를 주는 예제를 통해 파티클 이벤트의 활용 방법을 살펴봅시다. 1. Preset List - **LightningStrikeSharp** 파티클을 배치합니다. 2. AttackComponent를 Extend하여 새 스크립트 컴포넌트 ExtendAttackComponent를 생성합니다. 3. ExtendAttackComponent를 열고 `OnLightni
[task] | instruction_following [pass] | ⏳ 미판정 [title] | 공동 제작 팁 [question] | 에러를 무시하고 플레이 테스트를 진행하기 위한 설정 경로와 주의사항을 3문장 이내로 요약하세요. [answer] | **File - Setting - 만들기 - 스크립트** 메뉴에서 "문법 오류 시에 플레이 불가" 옵션을 해제하면 다른 그룹원의 스크립트 오류를 무시하고 플레이 테스트를 진행할 수 있습니다. 이 기능을 공동 제작 시 지속적으로 사용하면 반드시 수정해야 할 문제를 방치하여 출시 후 심각한 버그가 발생하거나, 연관된 다른 작업까지 오류로 오인되어 작업이 지체될 위험이 있습니다. 따라서 가급적 오류의 원인을 찾아 수정하는 것을 권장하며, 필수 불가결한 경우에만 임시로 사용하는 것이 바람직합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 메이커에서 플레이 테스트를 하다가 인스턴스 맵으로 이동하면 **Hierarchy** 탭에 아무것도 보이지 않는 현상이 발생할 수 있습니다. 이때는 **Hierarchy** 탭을 닫았다가 다시 열면 정상화됩니다. Workspace나 UI에서도 유사한 현상이 발생할 수 있습니다. 이때 폴더를 접었다 펴면 Check Out 정보가 갱신됩니다. ## 새로운 월드로 이전 공동 제작 중 아래와 같은 현상이 발생하면 해당 월드에 심각한 문제가 발생할 가능성이 높습니다. * 스크립트 에디터에 게임 UI가 보임 * UI를 수정하고 Check