← 목록

mLua · Nemotron-CC 리프레이즈 (CPT)

총 8,200개 · 페이지 134/274
🔀 랜덤
불러오는 중…

[task] | knowledge_list [title] | 스킬 이펙트를 뿌려보자! [category] | Guides [rephrased] | 제공된 문서의 내용만 바탕으로 핵심 사실을 추출하여 정리한 목록입니다. * `_EffectService` 서비스의 `PlayEffect` 메서드는 스크립트에서 스킬 이펙트를 호출하는 데 사용되며, 첫 번째 매개변수로 이펙트 ID 문자열(예: "f396262ddb6e4d5581360496bb4e9f86")을 전달합니다. * `PlayEffect` 메서드의 두 번째 매개변수는 이펙트가 적용될 대상 `Entity`(예: `self.Entity`)이며, 세 번째 매개변수는 이펙트 발생 위치를 나타내는 `Vector3` 타입의 좌표 [original] | 위에 이어서 이번에는 각 키를 입력할 때마다 다음의 스킬 이펙트가 호출되도록 만들어보겠습니다. 우선 **_EffectService**의 함수 중 `PlayEffect` 함수를 이용해 스크립트를 작성해보겠습니다. 1. **NewSkill** 컴포넌트의 **HandleKeyDownEvent**를 다음과 같이 수정해줍니다. ```lua [service: InputService] HandleKeyDownEvent(KeyDownEvent event) { -- Parameters [chunk_id] | Guides:70:2

[task] | extract_knowledge [title] | 스킬 이펙트를 뿌려보자! [category] | Guides [rephrased] | # 키 입력 이벤트 처리 ## 개념 설명 메이플스토리 월드에서 사용자의 키보드 입력을 감지하고 특정 동작을 실행하기 위해 `InputService`의 `KeyDownEvent`를 사용할 수 있습니다. 이 이벤트는 사용자가 키를 누르는 순간 발생하며, 이벤트 객체를 통해 어떤 키가 눌렸는지를 확인하여 조건 분기 처리를 수행할 수 있습니다. ## API 사용법 ### 이벤트 핸들러 구성 컴포넌트에 `[service: InputService]` 속성을 부여한 `HandleKeyDownEvent` 메서드를 정의합니다. 파라미터로 전달 [original] | 스킬 호출 기능에 앞서 간단하게 키 입력을 받는 기능을 먼저 만들어보겠습니다. 1. **Workspace**에서 새 컴포넌트를 추가하고, 이름으로 **NewSkill**을 입력합니다. 2. **NewSkill** 컴포넌트에 키 입력 이벤트를 처리할 핸들러를 추가합니다. **[+]** 버튼을 눌러 **KeyDownEvent**를 추가합니다. 3. **HandleKeyDownEvent**의 코드를 다음과 같이 작성해 줍니다. ```lua [service: InputService] [chunk_id] | Guides:70:1

[task] | wikipedia [title] | 스킬 이펙트를 뿌려보자! [category] | Guides [rephrased] | # 이펙트 스킬 이펙트를 뿌려보자! 메이플스토리 월드에서는 기존 메이플스토리에서 사용되었던 다양한 이펙트 리소스를 제공합니다. 개발자는 이러한 이펙트를 적절한 시점과 위치에 호출하여 게임의 연출 효과를 강화할 수 있습니다. 본 가이드에서는 특정 키를 누를 때마다 스킬 이펙트가 노출되는 예제를 통해, 스크립트를 사용하여 이펙트를 호출하는 방법을 설명합니다. 본 과정을 진행하기 전에 [스크립트 에디터 오리엔테이션](https://mod-developers.nexon.com/docs?postId=56) 및 [엔티티와 컴포넌트 참조]( [original] | # 학습 과정 소개 메이플스토리 월드에서는 메이플스토리에서 사용되었던 수많은 이펙트 리소스들을 제공하고 있습니다. 그리고 우리는 이러한 이펙트들을 적절한 시점과 위치에 호출해 줌으로써 한층 더 멋진 연출을 구사할 수 있습니다. 이번 과정에서는 특정 키를 누를 때마다 스킬 이펙트가 노출되는 예제를 진행해봄으로써 스크립트를 통해 이펙트를 호출하는 방법에 대해 알아보도록 합니다. 다음 가이드를 먼저 학습하면 이번 과정을 진행하는 데 많은 도움이 될 것입니다. [스크립트 에디터 오리엔테이션](https://mod-developers. [chunk_id] | Guides:70:0

[task] | extract_knowledge [title] | Data DB 저장 및 불러오기 [category] | Guides [rephrased] | # DB Data 저장 및 불러오기: SetAsync 본 절에서는 `GlobalDataStorage`의 `SetAsync` 메서드를 사용하여 데이터를 비동기적으로 저장하는 방법과, 비동기 처리의 특성 및 콜백 함수 활용법을 다룹니다. ## 1. 개념 설명 `SetAsync`는 데이터를 데이터베이스에 저장하기 위해 요청을 보내는 비동기 메서드입니다. * **비동기적 저장**: `SetAsync`를 호출한다고 해서 즉시 값이 저장되지 않습니다. 이는 저장 요청을 보내는 행위이며, 실제 저장은 이전에 들어온 요청들을 순차적으로 [original] | 데이터의 저장은 GlobalDataStorage의 SetAsync를 활용해 할 수 있습니다. `SetAsync`는 매개 변수로 key와 value, 그리고 콜백 함수를 받는데, 저장할 데이터가 있으면 key와 value 매개 변수로 값을 넘겨 저장하게 됩니다. key는 매번 변경되어 저장되는 value 값을 불러오기 위한 용도로 사용됩니다. 따라서 key 값으로는 프로퍼티 명이나 혹은 저장된 value 값이 의미하는 것으로 입력해 주는 것이 좋습니다. 예를 들어 power라는 프로퍼티(또는 스탯)의 값을 저장한다면 key에는 "Po [chunk_id] | Guides:68:1

[task] | distill [title] | 스킬 이펙트를 뿌려보자! [category] | Guides [rephrased] | `PlayEffect`는 고정된 위치에 이펙트를 생성하므로, 캐릭터 이동 시 이펙트가 분리되는 문제가 발생합니다. 캐릭터에 항상 부착되어 있어야 하는 버프류 스킬 이펙트에는 부모 엔티티를 지정할 수 있는 `PlayEffectAttached`를 사용해야 합니다. `_EffectService:PlayEffectAttached(effectId, parentEntity, position, rotation, scale, loop)` 시그니처를 사용하여 `self.Entity`를 부모로 지정하면 캐릭터와 이펙트가 함께 이동합니다. ```l [original] | 위에서 살펴본 이펙트 호출 방법은 사실 스킬 이펙트에 적합한 방법은 아닙니다. 위의 예제처럼 구현하면 Q, W, E, R 키를 누른 후 캐릭터를 이동할 때 캐릭터가 이펙트를 벗어나 이동하게 됩니다. `PlayEffect`는 위에서 잠깐 언급한 것처럼 고정된 위치에 이펙트를 호출하는데 적합한 함수이기 때문에 버프류 스킬과 같이 항상 캐릭터 위에 떠 있어야 할 이펙트에는 적합하지 않습니다. 따라서 이러한 경우에 사용하는 함수가 바로 `PlayEffectAttached` 함수입니다. `PlayEffectAttached`의 경우 이펙트가 [chunk_id] | Guides:70:3

[task] | wikipedia [title] | 스킬 이펙트를 뿌려보자! [category] | Guides [rephrased] | # 이펙트 스킬 이펙트를 뿌려보자! 이 섹션에서는 사용자가 특정 키를 입력할 때마다 지정된 스킬 이펙트가 실행되도록 스크립트를 구성하는 방법을 다룹니다. 이펙트 재생을 위해 `_EffectService` 서비스의 `PlayEffect` 함수를 활용하며, `NewSkill` 컴포넌트의 `HandleKeyDownEvent` 이벤트 핸들러를 수정하여 구현합니다. ## 구현 방법 `NewSkill` 컴포넌트에 정의된 `HandleKeyDownEvent` 함수 내부에서 이벤트 객체의 `key` 속성을 확인하고, 해당 키가 `Keyboa [original] | 위에 이어서 이번에는 각 키를 입력할 때마다 다음의 스킬 이펙트가 호출되도록 만들어보겠습니다. 우선 **_EffectService**의 함수 중 `PlayEffect` 함수를 이용해 스크립트를 작성해보겠습니다. 1. **NewSkill** 컴포넌트의 **HandleKeyDownEvent**를 다음과 같이 수정해줍니다. ```lua [service: InputService] HandleKeyDownEvent(KeyDownEvent event) { -- Parameters [chunk_id] | Guides:70:2

[task] | distill [title] | 스킬 이펙트를 뿌려보자! [category] | Guides [rephrased] | # 스킬 이펙트 재생: `_EffectService:PlayEffect` ## API 시그니처 `_EffectService:PlayEffect(effectId: string, entity: Entity, position: Vector3, rotation: number, scale: Vector3, isAttached: boolean)` * **effectId**: 이펙트 고유 ID (문서 예시: `"f396262ddb6e4d5581360496bb4e9f86"` 등) * **entity**: 이펙트가 붙을 엔티티 * * [original] | 위에 이어서 이번에는 각 키를 입력할 때마다 다음의 스킬 이펙트가 호출되도록 만들어보겠습니다. 우선 **_EffectService**의 함수 중 `PlayEffect` 함수를 이용해 스크립트를 작성해보겠습니다. 1. **NewSkill** 컴포넌트의 **HandleKeyDownEvent**를 다음과 같이 수정해줍니다. ```lua [service: InputService] HandleKeyDownEvent(KeyDownEvent event) { -- Parameters [chunk_id] | Guides:70:2

[task] | knowledge_list [title] | 발판 만들기 [category] | Guides [rephrased] | 제공된 문서에 기반하여 발판(Foothold) 프로퍼티의 핵심 사실을 정리한 목록입니다. * `FootholdDrag` 프로퍼티는 `RigidbodyComponent`를 가진 Entity가 발판 위에 있을 때 적용되는 마찰력을 나타내며, 값이 클수록 엔티티가 미끄러지는 거리가 짧아져 빠르게 정지합니다. * `FootholdDrag`는 플레이어의 기본 이동에도 영향을 미치지만, 적용되는 힘이 미미하여 플레이 중 눈에 띄지 않는 경우가 많습니다. * `FootholdForce` 프로퍼티는 `RigidbodyComponent [original] | 새롭게 만든 발판에 속성을 바꿔 크리에이터만의 독특한 발판으로 만들 수 있습니다. 각 프로퍼티 값을 조정해 특정 방향에서 나아갈 수 없는 발판, 특별히 느리게 이동하는 발판 등으로 활용해 재미를 더할 수 있습니다. | 이름 | 설명 | | --- | --- | | FootholdDrag | RigidbodyComponent가 포함된 Entity가 발판 위에 있을 때 적용되는 마찰력을 의미합니다. 값이 클수록 엔티티가 발판에서 미끌어지다 빠르게 감속해 정지합니다. 특정 지점에서 엔티티가 날아와 해당 값이 1과 10인 발판에 각각 [chunk_id] | Guides:71:1

[task] | extract_knowledge [title] | 데이터 편집 [category] | Guides [rephrased] | # 데이터셋(DataSet) 편집 및 스크립트 접근 메이플스토리 월드에서 데이터셋(DataSet)은 게임 로직에 사용될 정적 데이터를 관리하는 구조입니다. 데이터셋은 행과 열로 구성된 테이블 형태이며, 모든 입력된 데이터 값은 문자열(String) 타입으로 저장됩니다. 스크립트에서는 데이터셋의 이름을 기반으로 테이블을 조회하고, 행과 열의 인덱스를 통해 특정 셀의 값을 읽어올 수 있습니다. ## 1. 데이터셋 생성 및 편집 데이터셋은 에디터의 Workspace에서 직접 생성 및 관리합니다. 1. **Workspace > M [original] | # 학습 과정 소개 데이터 셋을 이용해 데이터를 추가하거나 수정할 수 있습니다. 이번 가이드에서는 데이터의 생성 및 편집 방법, 스크립트로 데이터를 불러오는 방법에 대해 알아봅니다. # 데이터 셋 생성 및 데이터 에디터 열기 1. **Workspace - MyDesk**의 콘텍스트 메뉴에서 **Create DataSet**을 클릭합니다. 2. 생성된 데이터를 더블클릭하여 데이터 에디터를 엽니다. # 데이터 에디터 | 번호 | 설명 | | --- | --- | | | **컬럼 셀** 각 열의 데이터명, 즉 컬럼 명을 정의합 [chunk_id] | Guides:69:0

[task] | knowledge_list [title] | 스킬 이펙트를 뿌려보자! [category] | Guides [rephrased] | - `PlayEffect` 함수는 고정된 위치에 이펙트를 호출하는 데 적합하며, 항상 캐릭터 위에 떠 있어야 할 버프류 스킬 이펙트에는 부적합합니다. - `PlayEffectAttached` 함수는 이펙트가 부착될 대상 엔티티(부모 엔티티)를 지정할 수 있어 캐릭터 이동 시 이펙트가 분리되는 현상을 방지합니다. - `_EffectService:PlayEffectAttached` 메서드는 첫 번째 매개변수로 이펙트 모델 ID 문자열, 두 번째 매개변수로 부모 엔티티(`self.Entity`), 세 번째 매개변수로 로컬 오프셋 `Vec [original] | 위에서 살펴본 이펙트 호출 방법은 사실 스킬 이펙트에 적합한 방법은 아닙니다. 위의 예제처럼 구현하면 Q, W, E, R 키를 누른 후 캐릭터를 이동할 때 캐릭터가 이펙트를 벗어나 이동하게 됩니다. `PlayEffect`는 위에서 잠깐 언급한 것처럼 고정된 위치에 이펙트를 호출하는데 적합한 함수이기 때문에 버프류 스킬과 같이 항상 캐릭터 위에 떠 있어야 할 이펙트에는 적합하지 않습니다. 따라서 이러한 경우에 사용하는 함수가 바로 `PlayEffectAttached` 함수입니다. `PlayEffectAttached`의 경우 이펙트가 [chunk_id] | Guides:70:3

[task] | distill [title] | 발판 만들기 [category] | Guides [rephrased] | # 지형 발판 만들기 발판의 프로퍼티 값을 조정하여 이동 속도, 방향성, 마찰력 등을 제어하여 독특한 이동 메커니즘을 구현할 수 있습니다. ### 프로퍼티 | 이름 | 설명 | | --- | --- | | `FootholdDrag` | `RigidbodyComponent`가 있는 Entity가 발판 위에 있을 때 적용되는 마찰력입니다.<br>값이 클수록 미끄러짐 거리가 짧아지고 빠르게 정지합니다. (예: 값 10인 발판이 값 1인 발판보다 더 짧게 밀려남)<br>기본 이동 시에도 적용되지만, 힘이 미미하여 플레이 중 눈에 띄지 [original] | 새롭게 만든 발판에 속성을 바꿔 크리에이터만의 독특한 발판으로 만들 수 있습니다. 각 프로퍼티 값을 조정해 특정 방향에서 나아갈 수 없는 발판, 특별히 느리게 이동하는 발판 등으로 활용해 재미를 더할 수 있습니다. | 이름 | 설명 | | --- | --- | | FootholdDrag | RigidbodyComponent가 포함된 Entity가 발판 위에 있을 때 적용되는 마찰력을 의미합니다. 값이 클수록 엔티티가 발판에서 미끌어지다 빠르게 감속해 정지합니다. 특정 지점에서 엔티티가 날아와 해당 값이 1과 10인 발판에 각각 [chunk_id] | Guides:71:1

[task] | wikipedia [title] | 스킬 이펙트를 뿌려보자! [category] | Guides [rephrased] | # 이펙트 스킬 이펙트를 뿌려보자! 이전 단계에서 살펴본 `PlayEffect` 함수를 활용한 이펙트 호출 방식은 일반적인 스킬 이펙트 적용에는 적합하지 않은 한계가 있습니다. 해당 방식으로 구현할 경우, Q, W, E, R 키를 눌러 스킬을 발동한 후 캐릭터가 이동하면 캐릭터와 이펙트가 분리되어 캐릭터가 이펙트 영역을 벗어나 이동하는 현상이 발생합니다. 이는 `PlayEffect` 함수가 특정 고정된 좌표에 이펙트를 생성하도록 설계되었기 때문에, 캐릭터의 움직임에 따라 항상 캐릭터 위에 유지되어야 하는 버프 계열 이펙트에는 적용 [original] | 위에서 살펴본 이펙트 호출 방법은 사실 스킬 이펙트에 적합한 방법은 아닙니다. 위의 예제처럼 구현하면 Q, W, E, R 키를 누른 후 캐릭터를 이동할 때 캐릭터가 이펙트를 벗어나 이동하게 됩니다. `PlayEffect`는 위에서 잠깐 언급한 것처럼 고정된 위치에 이펙트를 호출하는데 적합한 함수이기 때문에 버프류 스킬과 같이 항상 캐릭터 위에 떠 있어야 할 이펙트에는 적합하지 않습니다. 따라서 이러한 경우에 사용하는 함수가 바로 `PlayEffectAttached` 함수입니다. `PlayEffectAttached`의 경우 이펙트가 [chunk_id] | Guides:70:3

[task] | diverse_qa [title] | 스킬 이펙트를 뿌려보자! [category] | Guides [rephrased] | 질문: 이 문서에서 스킬 이펙트를 호출하기 위해 사용하는 서비스와 함수명은 무엇인가요? 답변: 이 문서에서는 **_EffectService** 서비스의 `PlayEffect` 함수를 이용해 스킬 이펙트를 호출합니다. 질문: `HandleKeyDownEvent` 이벤트 핸들러가 연결된 서비스는 무엇인가요? 답변: `HandleKeyDownEvent` 이벤트 핸들러는 `[service: InputService]` 블록에 따라 **InputService**에 연결됩니다. 질문: 다음 코드의 `local transform = self. [original] | 위에 이어서 이번에는 각 키를 입력할 때마다 다음의 스킬 이펙트가 호출되도록 만들어보겠습니다. 우선 **_EffectService**의 함수 중 `PlayEffect` 함수를 이용해 스크립트를 작성해보겠습니다. 1. **NewSkill** 컴포넌트의 **HandleKeyDownEvent**를 다음과 같이 수정해줍니다. ```lua [service: InputService] HandleKeyDownEvent(KeyDownEvent event) { -- Parameters [chunk_id] | Guides:70:2

[task] | distill [title] | 발판 만들기 [category] | Guides [rephrased] | # 지형 발판 만들기 ## Foothold 모델 활용 `Preset List`에서 **Foothold** 모델을 선택하여 `Scene`에 배치합니다. 모델에는 스프라이트에 맞는 기본 발판 정보가 포함되어 있습니다. `Scene` 패널의 발판 정보 아이콘을 클릭하면 발판 영역이 빨간색 선으로 시각화됩니다. ## 컴포넌트 구분 `Workspace`에서 `Foothold` 검색 시 두 가지 컴포넌트를 확인할 수 있습니다. * **FootholdComponent**: 맵 전체 발판 정보를 저장/제공하는 컴포넌트입니다. 프로퍼티 에 [original] | # 학습 과정 소개 여러 오브젝트를 사용해 발판을 만들어 게임의 보는 재미를 풍성하게 만들어봅시다. **FootholdComponent**와 **CustomFootholdComponent** 개념과 발판 편집 방법을 소개합니다. # Foothold 모델로 발판 만들기 **Foothold** 모델을 이용해 발판을 만드는 방법입니다. 타일이 아닌 **Foothold** 모델을 이용해 다채로운 길을 만들 수 있습니다. 1. **Preset List** 패널에서 **Foothold**를 선택합니다. 2. 원하는 모델을 선택해 **S [chunk_id] | Guides:71:0

[task] | extract_knowledge [title] | 스킬 이펙트를 뿌려보자! [category] | Guides [rephrased] | # 이펙트 스킬 이펙트 호출 ## 개념 설명 메이플스토리 월드에서는 기존 메이플스토리에서 사용되었던 이펙트 리소스를 제공하며, 이를 특정 시점과 위치에 호출하여 연출 효과를 생성할 수 있습니다. 이펙트 호출은 `_EffectService`를 통해 수행됩니다. `_EffectService`는 `PlayEffect`와 `PlayEffectAttached` 두 가지 주요 함수를 제공합니다. * **PlayEffect**: 고정된 세계 좌표(World Position) 기반의 특정 위치에 이펙트를 생성합니다. * **PlayE [original] | # 학습 과정 소개 메이플스토리 월드에서는 메이플스토리에서 사용되었던 수많은 이펙트 리소스들을 제공하고 있습니다. 그리고 우리는 이러한 이펙트들을 적절한 시점과 위치에 호출해 줌으로써 한층 더 멋진 연출을 구사할 수 있습니다. 이번 과정에서는 특정 키를 누를 때마다 스킬 이펙트가 노출되는 예제를 진행해봄으로써 스크립트를 통해 이펙트를 호출하는 방법에 대해 알아보도록 합니다. 다음 가이드를 먼저 학습하면 이번 과정을 진행하는 데 많은 도움이 될 것입니다. [스크립트 에디터 오리엔테이션](https://mod-developers. [chunk_id] | Guides:70:0

[task] | wikipedia [title] | 발판 만들기 [category] | Guides [rephrased] | # 지형 발판 만들기 새롭게 생성한 발판의 프로퍼티(속성) 값을 조정함으로써 크리에이터만의 독특한 이동 환경을 구축할 수 있습니다. 이를 통해 특정 방향으로의 이동을 제한하거나, 이동 속도를 특별히 느리게 만드는 등 게임 플레이에 다양한 재미 요소를 추가할 수 있습니다. 발판의 동작을 제어하는 주요 프로퍼티는 다음과 같습니다. **FootholdDrag** RigidbodyComponent가 포함된 Entity가 발판 위에 존재할 때 적용되는 마찰력을 나타냅니다. 이 값이 클수록 엔티티는 발판 위에서 미끄러지듯 이동하다가 빠르게 [original] | 새롭게 만든 발판에 속성을 바꿔 크리에이터만의 독특한 발판으로 만들 수 있습니다. 각 프로퍼티 값을 조정해 특정 방향에서 나아갈 수 없는 발판, 특별히 느리게 이동하는 발판 등으로 활용해 재미를 더할 수 있습니다. | 이름 | 설명 | | --- | --- | | FootholdDrag | RigidbodyComponent가 포함된 Entity가 발판 위에 있을 때 적용되는 마찰력을 의미합니다. 값이 클수록 엔티티가 발판에서 미끌어지다 빠르게 감속해 정지합니다. 특정 지점에서 엔티티가 날아와 해당 값이 1과 10인 발판에 각각 [chunk_id] | Guides:71:1

[task] | knowledge_list [title] | 발판 만들기 [category] | Guides [rephrased] | 제시된 문서 내용에만 기반하여 추출한 핵심 사실 목록입니다. 1. **Foothold** 모델은 타일(Tile)이 아닌 모델(Model)을 사용하여 다채로운 길을 만들 수 있으며, 해당 모델의 스프라이트에 어울리는 발판 정보가 모델에 함께 저장되어 있습니다. 2. **Preset List** 패널에서 **Foothold**를 선택하고 원하는 모델을 **Scene** 패널에 배치하면, 해당 모델에 포함된 발판 정보를 자동으로 적용할 수 있습니다. 3. **Scene** 패널에서 발판 정보 아이콘을 클릭하면, 해당 발판의 영역이 빨간 [original] | # 학습 과정 소개 여러 오브젝트를 사용해 발판을 만들어 게임의 보는 재미를 풍성하게 만들어봅시다. **FootholdComponent**와 **CustomFootholdComponent** 개념과 발판 편집 방법을 소개합니다. # Foothold 모델로 발판 만들기 **Foothold** 모델을 이용해 발판을 만드는 방법입니다. 타일이 아닌 **Foothold** 모델을 이용해 다채로운 길을 만들 수 있습니다. 1. **Preset List** 패널에서 **Foothold**를 선택합니다. 2. 원하는 모델을 선택해 **S [chunk_id] | Guides:71:0

[task] | distill [title] | 플레이어 카메라 제어 [category] | Guides [rephrased] | **카메라 제한 영역 제어** `CameraComponent`의 `UseCustomBound` 프로퍼티 값에 따라 카메라 제한 영역이 결정됩니다. | CameraComponent.UseCustomBound | MapComponent.UseCustomBound | 적용되는 제한 영역 | | :--- | :--- | :--- | | **True** | (무관) | 크리에이터가 정의한 영역 (`LeftBottom`, `RightTop` 프로퍼티 사용) | | **False** | **True** | 크리에이터가 정의한 맵 영역 | | [original] | 카메라 제한 영역을 직접 정의해서 사용할 지 여부를 설정합니다. **UseCustomBound** 값이 **True**라면 **LeftBottom, RightTop** 프로퍼티를 사용해 카메라 제한 영역을 정의할 수 있습니다. **Collider Edit** 버튼을 누르면 Scene에 표시되는 기즈모를 통해 카메라 제한 영역을 시각적으로 확인하거나 핸들러를 통해 손쉽게 영역을 조절할 수 있습니다. CameraComponent - UseCustomBound 값이 **False**라면 맵 영역을 카메라 제한 영역으로 사용합니다. 맵 [chunk_id] | Guides:72:1

[task] | diverse_qa [title] | 발판 만들기 [category] | Guides [rephrased] | 질문: FootholdDrag 프로퍼티의 값이 클수록 엔티티의 움직임은 어떻게 변화하나요? 답변: FootholdDrag의 값이 클수록 엔티티가 발판에서 미끌어지다 빠르게 감속해 정지하게 됩니다. 질문: 특정 지점에서 날아온 엔티티가 FootholdDrag 값이 1인 발판과 10인 발판에 떨어졌을 때, 어떤 발판에서 더 짧게 밀려나며 멈추게 되나요? 답변: FootholdDrag 값이 10인 발판에서 상대적으로 더 짧게 밀려나며 멈추게 됩니다. 질문: FootholdForce 프로퍼티의 값이 양수일 때 엔티티는 어느 방향으로 이 [original] | 새롭게 만든 발판에 속성을 바꿔 크리에이터만의 독특한 발판으로 만들 수 있습니다. 각 프로퍼티 값을 조정해 특정 방향에서 나아갈 수 없는 발판, 특별히 느리게 이동하는 발판 등으로 활용해 재미를 더할 수 있습니다. | 이름 | 설명 | | --- | --- | | FootholdDrag | RigidbodyComponent가 포함된 Entity가 발판 위에 있을 때 적용되는 마찰력을 의미합니다. 값이 클수록 엔티티가 발판에서 미끌어지다 빠르게 감속해 정지합니다. 특정 지점에서 엔티티가 날아와 해당 값이 1과 10인 발판에 각각 [chunk_id] | Guides:71:1

[task] | distill [title] | 플레이어 카메라 제어 [category] | Guides [rephrased] | # 카메라 플레이어 카메라 제어 게임 메인 카메라는 `MapleStoryPlayer` 모델의 `CameraComponent`를 통해 제어됩니다. 아래 프로퍼티들을 조정하여 카메라 행동을 설정할 수 있습니다. ## 주요 프로퍼티 * **DeadZone**: 플레이어 이동 시 카메라가 반응하지 않는 사각지대. * `0`으로 설정하면 미세한 이동에도 카메라가 반응하여 피로도가 높아질 수 있습니다. * 값이 크면 빠른 움직임 체감이 저하될 수 있으므로 게임 성향에 맞춰 조정해야 합니다. * **SoftZo [original] | # 학습 과정 소개 게임의 메인 카메라는 항상 플레이어를 따라다닙니다. 메인 카메라를 제어하는 camera 컴포넌트는 MapleStoryPlayer 모델이 가지고 있으며 이 모델의 프로퍼티 에디터나 스크립트를 이용해 주요 값을 수정할 수 있습니다. 이번 과정에서는 Camera 컴포넌트를 프로퍼티 에디터를 통해 수정해보며 전반적인 기능을 알아보는 시간을 가져보도록 하겠습니다. # Camera 컴포넌트 접근 Workspace에서 DefaultPlayer 모델을 선택합니다. 프로퍼티 에디터에서 CameraComponent를 확인 [chunk_id] | Guides:72:0

[task] | knowledge_list [title] | 플레이어 카메라 제어 [category] | Guides [rephrased] | - **CameraComponent**의 **UseCustomBound** 프로퍼티가 **True**인 경우, **LeftBottom**과 **RightTop** 프로퍼티의 값을 사용하여 카메라 제한 영역을 직접 정의할 수 있습니다. - **CameraComponent**의 **UseCustomBound** 프로퍼티가 **True**인 경우, 에디터의 **Collider Edit** 버튼을 통해 Scene 내 기즈모로 영역을 시각적으로 확인하거나 핸들러를 이용해 영역을 조절할 수 있습니다. - **CameraComponent**의 [original] | 카메라 제한 영역을 직접 정의해서 사용할 지 여부를 설정합니다. **UseCustomBound** 값이 **True**라면 **LeftBottom, RightTop** 프로퍼티를 사용해 카메라 제한 영역을 정의할 수 있습니다. **Collider Edit** 버튼을 누르면 Scene에 표시되는 기즈모를 통해 카메라 제한 영역을 시각적으로 확인하거나 핸들러를 통해 손쉽게 영역을 조절할 수 있습니다. CameraComponent - UseCustomBound 값이 **False**라면 맵 영역을 카메라 제한 영역으로 사용합니다. 맵 [chunk_id] | Guides:72:1

[task] | extract_knowledge [title] | 스킬 이펙트를 뿌려보자! [category] | Guides [rephrased] | # 이펙트 스킬 재생: `_EffectService:PlayEffect` ## 개념 설명 `_EffectService`의 `PlayEffect` 메서드를 사용하면 특정 위치에 스킬 이펙트를 일시적으로 재생할 수 있습니다. 이 메서드는 키 입력과 같은 이벤트 발생 시점에 호출되어, 엔티티의 현재 좌표 기준에서 지정된 이펙트 ID에 해당하는 비주얼을 표시합니다. ## API 사용법 `_EffectService:PlayEffect` 함수의 매개변수는 다음과 같은 순서로 전달됩니다. 1. **이펙트 ID (string)**: 재생할 [original] | 위에 이어서 이번에는 각 키를 입력할 때마다 다음의 스킬 이펙트가 호출되도록 만들어보겠습니다. 우선 **_EffectService**의 함수 중 `PlayEffect` 함수를 이용해 스크립트를 작성해보겠습니다. 1. **NewSkill** 컴포넌트의 **HandleKeyDownEvent**를 다음과 같이 수정해줍니다. ```lua [service: InputService] HandleKeyDownEvent(KeyDownEvent event) { -- Parameters [chunk_id] | Guides:70:2

[task] | wikipedia [title] | 플레이어 카메라 제어 [category] | Guides [rephrased] | **카메라 플레이어 카메라 제어** 이 문서는 `CameraComponent`를 사용하여 카메라의 이동 범위를 제한하는 방법에 대해 설명합니다. 카메라 제한 영역은 크리에이터가 직접 정의한 커스텀 영역, 맵의 커스텀 영역, 또는 기본 맵 영역의 보정값 중 하나로 설정됩니다. `CameraComponent`의 `UseCustomBound` 프로퍼티가 `True`로 설정된 경우, 크리에이터가 정의한 커스텀 카메라 제한 영역이 적용됩니다. 이 모드에서는 `LeftBottom`과 `RightTop` 프로퍼티 값을 통해 영역의 좌표 범위 [original] | 카메라 제한 영역을 직접 정의해서 사용할 지 여부를 설정합니다. **UseCustomBound** 값이 **True**라면 **LeftBottom, RightTop** 프로퍼티를 사용해 카메라 제한 영역을 정의할 수 있습니다. **Collider Edit** 버튼을 누르면 Scene에 표시되는 기즈모를 통해 카메라 제한 영역을 시각적으로 확인하거나 핸들러를 통해 손쉽게 영역을 조절할 수 있습니다. CameraComponent - UseCustomBound 값이 **False**라면 맵 영역을 카메라 제한 영역으로 사용합니다. 맵 [chunk_id] | Guides:72:1

[task] | diverse_qa [title] | 스킬 이펙트를 뿌려보자! [category] | Guides [rephrased] | 질문: 스킬 이펙트에서 캐릭터 이동 시 이펙트가 캐릭터와 분리되는 현상을 방지하기 위해 사용해야 하는 함수는 무엇인가요? 답변: `PlayEffectAttached` 함수입니다. 질문: `PlayEffect` 함수가 버프류 스킬처럼 항상 캐릭터 위에 떠 있어야 할 이펙트에는 적합하지 않은 이유는 무엇인가요? 답변: `PlayEffect`는 고정된 위치에 이펙트를 호출하는 데 적합하기 때문에, 캐릭터가 이동할 때 이펙트가 캐릭터와 함께 이동하지 않고 남아 있게 되어 분리되는 현상이 발생하기 때문입니다. 질문: `PlayEffect [original] | 위에서 살펴본 이펙트 호출 방법은 사실 스킬 이펙트에 적합한 방법은 아닙니다. 위의 예제처럼 구현하면 Q, W, E, R 키를 누른 후 캐릭터를 이동할 때 캐릭터가 이펙트를 벗어나 이동하게 됩니다. `PlayEffect`는 위에서 잠깐 언급한 것처럼 고정된 위치에 이펙트를 호출하는데 적합한 함수이기 때문에 버프류 스킬과 같이 항상 캐릭터 위에 떠 있어야 할 이펙트에는 적합하지 않습니다. 따라서 이러한 경우에 사용하는 함수가 바로 `PlayEffectAttached` 함수입니다. `PlayEffectAttached`의 경우 이펙트가 [chunk_id] | Guides:70:3

[task] | knowledge_list [title] | 플레이어 카메라 제어 [category] | Guides [rephrased] | ```lua -- 해당 문서에는 mLua 스크립트 코드 예제 또는 API 함수 정의가 포함되어 있지 않습니다. -- 따라서 코드 블록은 생성하지 않으며, 프로퍼티 에디터 기반 설정 정보만 추출합니다. ``` 1. 게임의 메인 카메라는 항상 플레이어를 따라다니며, 이를 제어하는 CameraComponent는 MapleStoryPlayer 모델에 내장되어 있습니다. 2. CameraComponent는 Workspace의 DefaultPlayer 모델을 선택한 후 프로퍼티 에디터에서 접근하여 주요 값을 수정할 수 있습니다. 3. Dea [original] | # 학습 과정 소개 게임의 메인 카메라는 항상 플레이어를 따라다닙니다. 메인 카메라를 제어하는 camera 컴포넌트는 MapleStoryPlayer 모델이 가지고 있으며 이 모델의 프로퍼티 에디터나 스크립트를 이용해 주요 값을 수정할 수 있습니다. 이번 과정에서는 Camera 컴포넌트를 프로퍼티 에디터를 통해 수정해보며 전반적인 기능을 알아보는 시간을 가져보도록 하겠습니다. # Camera 컴포넌트 접근 Workspace에서 DefaultPlayer 모델을 선택합니다. 프로퍼티 에디터에서 CameraComponent를 확인 [chunk_id] | Guides:72:0

[task] | knowledge_list [title] | Event System [category] | Guides [rephrased] | 제공된 문서에는 구체적인 mLua API 이름, 매개변수, 반환 타입, 동기화/서버·클라이언트 제약 정보가 포함되어 있지 않습니다. 따라서 문서에 명시된 개념적 사실과 구조만 추출하여 정리합니다. 1. 메이플스토리 월드의 이벤트 시스템은 로직 상에서 어떤 사건의 발생을 의미하며, 이벤트 종류의 식별 정보 및 추가 정보를 포함하는 자료형인 이벤트(Event), 이벤트를 받았을 때 처리하는 행동의 주체인 핸들러(Handler), 그리고 이벤트를 발송하는 객체인 센더(Sender)의 3가지 요소로 구성됩니다. 2. 일반 로직에서는 행위 [original] | # 학습 과정 소개 크리에이터는 로직을 여러 가지 방법으로 작성할 수 있습니다. 그 방법 중 하나는 **이벤트**를 활용하는 것입니다. 이번 시간에는 메이플스토리 월드의 이벤트 시스템과 여러 이벤트를 다루는 방법을 살펴봅니다. # 이벤트 기반의 로직 구성 로직을 작성하다 보면 **특정 타이밍에 해야 할 일**이 생깁니다. 그럴 때는 **행위가 일어난 주체**가 무엇을 할 것인지 결정해야 합니다. 예를 들어, 월드에서 캐릭터가 공격받았을 때 아래와 같이 구현한다고 가정해 봅시다. 1. **캐릭터의 HP를 감소시키고** 2. [chunk_id] | Guides:73:0

[task] | extract_knowledge [title] | 스킬 이펙트를 뿌려보자! [category] | Guides [rephrased] | # 스킬 이펙트 첨부 (PlayEffectAttached) ## 1. 개념 설명 `PlayEffect` 함수는 고정된 월드 좌표에 이펙트를 생성하므로, 캐릭터가 이동할 때 이펙트는 제자리에 남아 캐릭터와 분리되는 문제가 발생합니다. 이는 캐릭터와 항상 함께 이동해야 하는 버프류 스킬 이펙트에는 적합하지 않습니다. 이러한 문제를 해결하기 위해 `PlayEffectAttached` 함수를 사용합니다. 이 함수는 이펙트가 부착될 대상 엔티티(부모 엔티티)를 지정할 수 있어, 부모 엔티티가 이동해도 이펙트가 함께 이동하도록 보장합니다 [original] | 위에서 살펴본 이펙트 호출 방법은 사실 스킬 이펙트에 적합한 방법은 아닙니다. 위의 예제처럼 구현하면 Q, W, E, R 키를 누른 후 캐릭터를 이동할 때 캐릭터가 이펙트를 벗어나 이동하게 됩니다. `PlayEffect`는 위에서 잠깐 언급한 것처럼 고정된 위치에 이펙트를 호출하는데 적합한 함수이기 때문에 버프류 스킬과 같이 항상 캐릭터 위에 떠 있어야 할 이펙트에는 적합하지 않습니다. 따라서 이러한 경우에 사용하는 함수가 바로 `PlayEffectAttached` 함수입니다. `PlayEffectAttached`의 경우 이펙트가 [chunk_id] | Guides:70:3

[task] | extract_knowledge [title] | 발판 만들기 [category] | Guides [rephrased] | # 발판(Foothold) 속성 조정 ## 1. 개념 설명 발판(Foothold)은 `RigidbodyComponent`를 가진 엔티티의 물리적 상호작용을 제어하는 지형 객체입니다. 기본 발판 생성 후, 특정 프로퍼티 값을 조정하여 엔티티가 발판 위에서 받는 마찰력, 가속력, 이동 속도 배율을 변경할 수 있습니다. 이를 통해 미끄러운 지형, 일정한 방향으로 밀어내는 지형, 또는 이동 속도가 변하는 특수 지형을 구현합니다. ## 2. API 사용법 발판 객체에 대해 다음 프로퍼티를 설정하여 물리적 행동을 제어합니다. | 프로 [original] | 새롭게 만든 발판에 속성을 바꿔 크리에이터만의 독특한 발판으로 만들 수 있습니다. 각 프로퍼티 값을 조정해 특정 방향에서 나아갈 수 없는 발판, 특별히 느리게 이동하는 발판 등으로 활용해 재미를 더할 수 있습니다. | 이름 | 설명 | | --- | --- | | FootholdDrag | RigidbodyComponent가 포함된 Entity가 발판 위에 있을 때 적용되는 마찰력을 의미합니다. 값이 클수록 엔티티가 발판에서 미끌어지다 빠르게 감속해 정지합니다. 특정 지점에서 엔티티가 날아와 해당 값이 1과 10인 발판에 각각 [chunk_id] | Guides:71:1

[task] | distill [title] | Event System [category] | Guides [rephrased] | # 이벤트(Event) 시스템 ## 개념: 이벤트 기반 로직 일반 로직과 이벤트 시스템은 **행동 처리 주체**가 다릅니다. * **일반 로직**: `행위가 일어난 주체`가 직접 후속 작업(HP 감소, 이펙트 등)을 호출하여 관리합니다. * **이벤트 시스템**: `행위가 일어난 주체`는 사건 발생 정보와 타이밍만 전송합니다. `행동 실행 주체(핸들러)`가 이벤트를 **구독(Subscribe)**하고, 수신 시 내부적으로 정의된 행동을 수행합니다. * *장점*: 주체 수정 없이 새로운 행동(예: 피격 이펙트 추 [original] | # 학습 과정 소개 크리에이터는 로직을 여러 가지 방법으로 작성할 수 있습니다. 그 방법 중 하나는 **이벤트**를 활용하는 것입니다. 이번 시간에는 메이플스토리 월드의 이벤트 시스템과 여러 이벤트를 다루는 방법을 살펴봅니다. # 이벤트 기반의 로직 구성 로직을 작성하다 보면 **특정 타이밍에 해야 할 일**이 생깁니다. 그럴 때는 **행위가 일어난 주체**가 무엇을 할 것인지 결정해야 합니다. 예를 들어, 월드에서 캐릭터가 공격받았을 때 아래와 같이 구현한다고 가정해 봅시다. 1. **캐릭터의 HP를 감소시키고** 2. [chunk_id] | Guides:73:0

[task] | diverse_qa [title] | 발판 만들기 [category] | Guides [rephrased] | 질문: 이 학습 과정의 주요 목표와 소개하는 핵심 컴포넌트는 무엇인가요? 답변: 여러 오브젝트를 사용해 발판을 만들어 게임의 보는 재미를 풍성하게 만드는 것을 목표로 하며, **FootholdComponent**와 **CustomFootholdComponent**의 개념과 발판 편집 방법을 소개합니다. 질문: **Foothold** 모델을 이용해 발판을 만들 때, 발판 정보는 어디에 저장되어 있나요? 답변: **Foothold** 모델의 스프라이트에 어울리는 발판이 모델에 함께 저장되어 있습니다. 질문: **Scene** 패널에 [original] | # 학습 과정 소개 여러 오브젝트를 사용해 발판을 만들어 게임의 보는 재미를 풍성하게 만들어봅시다. **FootholdComponent**와 **CustomFootholdComponent** 개념과 발판 편집 방법을 소개합니다. # Foothold 모델로 발판 만들기 **Foothold** 모델을 이용해 발판을 만드는 방법입니다. 타일이 아닌 **Foothold** 모델을 이용해 다채로운 길을 만들 수 있습니다. 1. **Preset List** 패널에서 **Foothold**를 선택합니다. 2. 원하는 모델을 선택해 **S [chunk_id] | Guides:71:0

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