← 목록

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

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

[task] | distill [title] | 원거리 발사체 만들기 [category] | Guides [rephrased] | ### 원거리 발사체 스크립트 구현 (충돌 처리 및 제거) 발사체가 몬스터와 충돌 시 폭발 효과를 발생시키고 엔티티를 제거하는 로직입니다. **1. 폭발 및 제거 로직 (`Explode` 메서드 내부 일부)** 충돌 시점에 `PlayEffect`로 폭발 스프라이트를 재생한 뒤, `Destroy`로 발사체 엔티티를 삭제합니다. ```lua -- ... (이전 코드) _EffectService:PlayEffect(self.ExplodeSpriteRUID, self.Entity, effectPosition, 0, Vector [original] | fect(self.ExplodeSpriteRUID, self.Entity, effectPosition, 0, Vector3.one * self.EffectScale, false, options) -- 발사체 제거 self.Entity:Destroy() end) } ``` 10. 발사체가 몬스터에 충돌하면 폭발하도록 처리하기 위해 이벤트 핸들러에 **TriggerEnterEvent**를 추가합니다. 실행 공간은 **server only**로 [chunk_id] | Guides:935:5

[task] | diverse_qa [title] | 원거리 발사체 만들기 [category] | Guides [rephrased] | 질문: `Projectile` 스크립트 컴포넌트를 생성하기 위해 Workspace의 MyDesk에서 실행해야 하는 메뉴 경로는 무엇인가요? 답변: Workspace - MyDesk의 콘텍스트 메뉴에서 Create Scripts - Create Component를 클릭합니다. 질문: 발사체 모델 `Model_Projectile_Arrow`에 연결할 컴포넌트의 이름은 무엇인가요? 답변: Projectile입니다. 질문: 발사체가 발사된 시점으로부터 터질 때까지의 시간을 지정하는 프로퍼티의 이름과 기본값은 무엇인가요? 답변: 프로퍼티 [original] | 발사체 스크립트 컴포넌트를 작성하고 발사체 모델에 연결해 봅시다. 1. **Workspace - MyDesk**의 콘텍스트 메뉴에서 **Create Scripts - Create Component**를 클릭해 새 스크립트 컴포넌트를 만듭니다. 이름으로 **Projectile**를 입력합니다. 2. 발사체 모델 **Model_Projectile_Arrow**에 **Projectile** 컴포넌트를 추가합니다. 3. **Projectile** 스크립트 컴포넌트를 열고 아래와 같이 프로퍼티를 추가합니다. [chunk_id] | Guides:935:1

[task] | knowledge_list [title] | 원거리 발사체 만들기 [category] | Guides [rephrased] | 제시된 원문에는 `fect` 함수 호출의 일부, 발사체 제거 로직, 그리고 몬스터 충돌 시 폭발 처리를 위한 이벤트 핸들러 정의가 포함되어 있습니다. 원문에 명시된 정보만을 바탕으로 핵심 사실을 정리하면 다음과 같습니다. 1. 발사체 제거 시 `_EffectService`의 `fect` 메서드를 사용하여 `self.ExplodeSpriteRUID`, `self.Entity`, `effectPosition`, `0`, `Vector3.one * self.EffectScale`, `false`, `options` 인자를 전달하며, 이 [original] | fect(self.ExplodeSpriteRUID, self.Entity, effectPosition, 0, Vector3.one * self.EffectScale, false, options) -- 발사체 제거 self.Entity:Destroy() end) } ``` 10. 발사체가 몬스터에 충돌하면 폭발하도록 처리하기 위해 이벤트 핸들러에 **TriggerEnterEvent**를 추가합니다. 실행 공간은 **server only**로 [chunk_id] | Guides:935:5

[task] | diverse_qa [title] | 원거리 발사체 만들기 [category] | Guides [rephrased] | 질문: 발사체가 몬스터에 충돌했을 때 폭발하도록 처리하기 위해 어떤 이벤트 핸들러를 사용해야 하나요? 답변: TriggerEnterEvent 이벤트 핸들러를 사용해야 합니다. 질문: 발사체의 충돌 처리 이벤트 핸들러(HandleTriggerEnterEvent)의 실행 공간은 어떻게 설정해야 하나요? 답변: server only 로 설정해야 합니다. 질문: HandleTriggerEnterEvent 내에서 충돌한 엔티티가 몬스터인지 확인하기 위해 어떤 함수를 사용하나요? 답변: isvalid() 함수를 사용하여 event.Trig [original] | fect(self.ExplodeSpriteRUID, self.Entity, effectPosition, 0, Vector3.one * self.EffectScale, false, options) -- 발사체 제거 self.Entity:Destroy() end) } ``` 10. 발사체가 몬스터에 충돌하면 폭발하도록 처리하기 위해 이벤트 핸들러에 **TriggerEnterEvent**를 추가합니다. 실행 공간은 **server only**로 [chunk_id] | Guides:935:5

[task] | wikipedia [title] | 원거리 발사체 만들기 [category] | Guides [rephrased] | **원거리 발사체로 몬스터 처치하기: 원거리 발사체 만들기** 발사체가 몬스터와 충돌할 때 폭발 효과를 발생시키고 엔티티를 제거하는 로직은 타이머 서비스와 이벤트 핸들러를 통해 구현됩니다. 먼저, `_TimerService:SetTimerOnce` 메서드를 사용하여 지정된 시간 후 실행될 콜백 함수를 등록합니다. 이 콜백 함수 내부에서는 `self.ExplodeSpriteRUID`와 `self.Entity`를 매개변수로 전달하여 `effect` 메서드를 호출함으로써 폭발 시각 효과를 생성합니다. 이 때 위치는 `effectPosi [original] | fect(self.ExplodeSpriteRUID, self.Entity, effectPosition, 0, Vector3.one * self.EffectScale, false, options) -- 발사체 제거 self.Entity:Destroy() end) } ``` 10. 발사체가 몬스터에 충돌하면 폭발하도록 처리하기 위해 이벤트 핸들러에 **TriggerEnterEvent**를 추가합니다. 실행 공간은 **server only**로 [chunk_id] | Guides:935:5

[task] | extract_knowledge [title] | 원거리 발사체 만들기 [category] | Guides [rephrased] | # 폭발 이펙트 재생 및 발사체 소멸 발사체가 목표물에 도달했거나 수명이 끝났을 때, 시각적 피드백을 위해 폭발 이펙트를 재생한 후 발사체 엔티티를 즉시 제거하는 과정입니다. 이 로직은 `Explode()` 함수 내부에서 실행됩니다. ## 개념 설명 원거리 발사체는 소모성 객체이므로, 충돌 또는 만료 시점에 반드시 메모리에서 제거되어야 합니다. 제거 시점에 플레이어에게 명확한 시각적 신호를 주기 위해 이펙트를 재생합니다. 1. **이펙트 위치 계산**: 발사체의 현재 위치(`transform.Position`)에 이펙트 오 [original] | 9. 폭발 이펙트를 재생하고 발사체를 없애기 위해 `Explode()` 함수의 위 내용에 이어서 아래 내용을 작성합니다. ```lua -- 폭발 이펙트 재생 local effectPosition = Vector3(transform.Position.x + effectOffset.x, transform.Position.y + effectOffset.y, transform.Position.z) local options = { ["FlipX"] = not self.ToLeft } _EffectService:PlayEff [chunk_id] | Guides:935:3

[task] | wikipedia [title] | 원거리 발사체 만들기 [category] | Guides [rephrased] | # 원거리 발사체로 몬스터 처치하기: 원거리 발사체 만들기 이 가이드는 발사체 스크립트 컴포넌트를 작성하고 이를 발사체 모델에 연결하여 동작을 구현하는 방법을 설명합니다. ## 1. 스크립트 컴포넌트 생성 및 연결 먼저 `Workspace - MyDesk`의 컨텍스트 메뉴에서 **Create Scripts - Create Component**를 클릭하여 새로운 스크립트 컴포넌트를 생성합니다. 컴포넌트 이름은 `Projectile`로 설정합니다. 생성된 `Projectile` 컴포넌트를 발사체 모델인 `Model_Project [original] | 발사체 스크립트 컴포넌트를 작성하고 발사체 모델에 연결해 봅시다. 1. **Workspace - MyDesk**의 콘텍스트 메뉴에서 **Create Scripts - Create Component**를 클릭해 새 스크립트 컴포넌트를 만듭니다. 이름으로 **Projectile**를 입력합니다. 2. 발사체 모델 **Model_Projectile_Arrow**에 **Projectile** 컴포넌트를 추가합니다. 3. **Projectile** 스크립트 컴포넌트를 열고 아래와 같이 프로퍼티를 추가합니다. [chunk_id] | Guides:935:1

[task] | diverse_qa [title] | 원거리 발사체 만들기 [category] | Guides [rephrased] | 질문: `Explode()` 함수에서 `BoxShape` 객체를 생성할 때 초기 인자로 전달되는 값들은 무엇인가요? 답변: `BoxShape` 객체는 `Vector2.zero`, `Vector2.one`, `0` 인자를 받아 생성됩니다. 질문: `_ResourceService:PreloadAsync` 콜백 함수 내에서 `self.Firer` 또는 `self.Firer.PlayerAttack`이 유효하지 않을 경우 어떻게 처리되나요? 답변: `isvalid(self.Firer)`와 `isvalid(self.Firer.PlayerAt [original] | 완성된 `Explode()` 함수 전체는 아래와 같습니다. ```lua void Explode() { local shape = BoxShape(Vector2.zero, Vector2.one, 0) -- 폭발 이펙트 sprite 사이즈를 가져와 공격 영역으로 설정 _ResourceService:PreloadAsync({self.ExplodeSpriteRUID}, function() if not isvalid(self.Firer) and n [chunk_id] | Guides:935:4

[task] | wikipedia [title] | 원거리 발사체 만들기 [category] | Guides [rephrased] | 다음은 원거리 발사체 스크립트에서 공격 영역 설정 및 폭발 이펙트 재생을 위한 `Explode()` 함수 구현 가이드입니다. 이 함수는 발사체가 적중했을 때 호출되며, 로드된 리소스를 기반으로 시각적 이펙트의 크기와 위치를 계산하여 실제 공격 판정 영역을 생성합니다. ### 7. 공격 영역 설정 및 폭발 이펙트 리소스 로드 먼저 `Explode()` 함수를 정의하고, 공격 판정에 사용할 기본 형상인 `BoxShape`을 초기화합니다. 초기 형상의 위치는 원점(`Vector2.zero`), 크기는 (1, 1), 각도는 0으로 설정 [original] | 7. 발사체의 공격 영역을 설정하고 폭발 이펙트를 재생하기 위해 `Explode()` 함수를 추가합니다. ```lua void Explode() { local shape = BoxShape(Vector2.zero, Vector2.one, 0) -- 폭발 이펙트 sprite 사이즈를 가져와 공격 영역으로 설정 _ResourceService:PreloadAsync({self.ExplodeSpriteRUID}, function() if not [chunk_id] | Guides:935:2

[task] | wikipedia [title] | 캐릭터가 발사체로 몬스터 공격하기 [category] | Guides [rephrased] | 원거리 발사체로 몬스터 처치하기: 캐릭터가 발사체로 몬스터 공격하기 **[시작]** 버튼을 눌러 테스트를 진행하면, 공격 키를 누를 때 발사체가 생성되어 날아갑니다. 이 발사체는 몬스터와 충돌하거나 설정된 시간이 경과하면 폭발하며 피해를 줍니다. 발사체와 이펙트의 **SpriteRUID**를 변경하거나 대미지, 속도 등 다양한 프로퍼티 값을 조정함으로써 크리에이터가 원하는 형태의 원거리 공격을 구현할 수 있습니다. 본 가이드를 참고하여 개성을 살린 원거리 공격 스킬을 개발해 볼 수 있습니다. [original] | **[시작]** 버튼을 누른 뒤 테스트해 봅시다. 공격 키를 누르면 발사체가 날아가고 몬스터에게 닿거나 일정 시간이 지나면 폭발합니다. # 응용하기 발사체 및 이펙트의 **SpriteRUID**를 변경하거나 대미지, 속도 등 여러 가지 프로퍼티를 변경하여 크리에이터가 원하는 원거리 공격을 구현할 수 있습니다. 본 가이드를 참고하여 크리에이터의 개성을 살린 원거리 공격 스킬을 만들어봅시다. [chunk_id] | Guides:937:1

[task] | distill [title] | 캐릭터가 발사체로 몬스터 공격하기 [category] | Guides [rephrased] | # 원거리 발사체로 몬스터 처치하기 **동작 규칙** 공격 키 입력 시 발사체 생성 및 발사. 몬스터 충돌 또는 지정 시간 경과 시 폭발하여 대미지 적용. **확장 방법** `SpriteRUID`, 대미지, 속도 등 프로퍼티 수정을 통해 다양한 원거리 공격 스킬 구현 가능. [original] | **[시작]** 버튼을 누른 뒤 테스트해 봅시다. 공격 키를 누르면 발사체가 날아가고 몬스터에게 닿거나 일정 시간이 지나면 폭발합니다. # 응용하기 발사체 및 이펙트의 **SpriteRUID**를 변경하거나 대미지, 속도 등 여러 가지 프로퍼티를 변경하여 크리에이터가 원하는 원거리 공격을 구현할 수 있습니다. 본 가이드를 참고하여 크리에이터의 개성을 살린 원거리 공격 스킬을 만들어봅시다. [chunk_id] | Guides:937:1

[task] | knowledge_list [title] | 캐릭터가 발사체로 몬스터 공격하기 [category] | Guides [rephrased] | 제시된 원문에는 API 이름, 매개변수, 반환 타입, 동기화/서버·클라이언트 제약 정보가 포함되어 있지 않습니다. 원문에 있는 정보만 사용하여 추출 가능한 핵심 사실은 다음과 같습니다. 1. `[시작]` 버튼을 누른 후 테스트할 수 있으며, 공격 키를 누르면 발사체가 날아가고 몬스터에게 닿거나 일정 시간이 지나면 폭발합니다. 2. 발사체 및 이펙트의 `SpriteRUID`를 변경할 수 있습니다. 3. 대미지, 속도 등 여러 가지 프로퍼티를 변경하여 원거리 공격을 구현할 수 있습니다. [original] | **[시작]** 버튼을 누른 뒤 테스트해 봅시다. 공격 키를 누르면 발사체가 날아가고 몬스터에게 닿거나 일정 시간이 지나면 폭발합니다. # 응용하기 발사체 및 이펙트의 **SpriteRUID**를 변경하거나 대미지, 속도 등 여러 가지 프로퍼티를 변경하여 크리에이터가 원하는 원거리 공격을 구현할 수 있습니다. 본 가이드를 참고하여 크리에이터의 개성을 살린 원거리 공격 스킬을 만들어봅시다. [chunk_id] | Guides:937:1

[task] | extract_knowledge [title] | 원거리 발사체 만들기 [category] | Guides [rephrased] | # 원거리 발사체 스크립트 컴포넌트 구현 ## 개념 설명 원거리 발사체는 발사 주체와 타겟 사이에 위치하여 일정한 속도로 이동하며, 특정 시간 이후에 소멸하거나 폭발하는 오브젝트입니다. `mLua`에서 이를 구현하기 위해 `Projectile` 스크립트 컴포넌트를 작성하고, 발사체 모델에 연결하여 사용해야 합니다. 주요 동작 로직은 다음과 같습니다. 1. **초기화**: 게임 시작 시 발사체는 정지 상태(`Fired = false`)로 유지됩니다. 2. **이동**: `Fire()` 메서드가 호출된 후, `OnUpdate()`에 [original] | 발사체 스크립트 컴포넌트를 작성하고 발사체 모델에 연결해 봅시다. 1. **Workspace - MyDesk**의 콘텍스트 메뉴에서 **Create Scripts - Create Component**를 클릭해 새 스크립트 컴포넌트를 만듭니다. 이름으로 **Projectile**를 입력합니다. 2. 발사체 모델 **Model_Projectile_Arrow**에 **Projectile** 컴포넌트를 추가합니다. 3. **Projectile** 스크립트 컴포넌트를 열고 아래와 같이 프로퍼티를 추가합니다. [chunk_id] | Guides:935:1

[task] | diverse_qa [title] | 캐릭터가 발사체로 몬스터 공격하기 [category] | Guides [rephrased] | 질문: 가이드의 '[시작]' 버튼 실행 후, 공격 키를 눌렀을 때 발생하는 기본 동작은 무엇인가요? 답변: 공격 키를 누르면 발사체가 날아가며, 몬스터에게 닿거나 일정 시간이 지나면 폭발합니다. 질문: 크리에이터가 원하는 원거리 공격을 구현하기 위해 변경할 수 있는 발사체 및 이펙트의 주요 식별자는 무엇인가요? 답변: SpriteRUID 를 변경할 수 있습니다. 질문: 발사체 관련 프로퍼티 중 대미지와 속도 외에도 크리에이터가 자유롭게 수정하여 개성을 살린 스킬을 만들 수 있는 요소는 무엇인가요? 답변: 문서에는 대미지, 속도 [original] | **[시작]** 버튼을 누른 뒤 테스트해 봅시다. 공격 키를 누르면 발사체가 날아가고 몬스터에게 닿거나 일정 시간이 지나면 폭발합니다. # 응용하기 발사체 및 이펙트의 **SpriteRUID**를 변경하거나 대미지, 속도 등 여러 가지 프로퍼티를 변경하여 크리에이터가 원하는 원거리 공격을 구현할 수 있습니다. 본 가이드를 참고하여 크리에이터의 개성을 살린 원거리 공격 스킬을 만들어봅시다. [chunk_id] | Guides:937:1

[task] | wikipedia [title] | 원거리 발사체 만들기 [category] | Guides [rephrased] | # 원거리 발사체로 몬스터 처치하기: 원거리 발사체 만들기 이 가이드는 메이플스토리 월드 스크립트 언어 mLua를 사용하여 원거리 발사체(Projectile)가 적에 닿았을 때 폭발 이펙트를 재생하고, 해당 이펙트의 시각적 크기를 기반으로 정확한 공격 판정 영역을 설정하여 몬스터를 처치하는 방법을 설명합니다. 핵심 로직은 `Explode()` 함수에 구현됩니다. 이 함수는 리소스 서비스(`_ResourceService`)를 통해 폭발 스프라이트 애니메이션 클립을 로드하고, 첫 번째 프레임의 픽셀 크기 및 PPU(Pixels Pe [original] | 완성된 `Explode()` 함수 전체는 아래와 같습니다. ```lua void Explode() { local shape = BoxShape(Vector2.zero, Vector2.one, 0) -- 폭발 이펙트 sprite 사이즈를 가져와 공격 영역으로 설정 _ResourceService:PreloadAsync({self.ExplodeSpriteRUID}, function() if not isvalid(self.Firer) and n [chunk_id] | Guides:935:4

[task] | distill [title] | 캐릭터가 발사체로 몬스터 공격하기 [category] | Guides [rephrased] | # 캐릭터가 발사체로 몬스터 공격하기 원거리 발사체로 몬스터를 처치하는 월드 제작의 마지막 단계입니다. 캐릭터가 공격 키 입력 시 발사체를 생성하고, 몬스터와 충돌하여 피해를 입히는 로직을 구현합니다. ## 1. PlayerAttack 스크립트 수정 **PlayerAttack** 스크립트에 아래 프로퍼티를 추가하고, `Workspace - DefaultPlayer`의 **PlayerAttack** 컴포넌트 프로퍼티를 설정합니다. * **ProjectileOffset**: 발사체 생성 위치 오프셋 (예: X=0.4, Y=0 [original] | # 학습 과정 소개 > 본 가이드는 아래의 순서로 이어지는 과정입니다. > 1편. [원거리 발사체 만들기](/docs?postId=935) > **▶ 2편.** [**캐릭터가 발사체로 몬스터 공격하기**](/docs?postId=937) 원거리 발사체를 날려서 몬스터를 처치하는 월드를 만들어보는 마지막 과정입니다. 이제 캐릭터가 발사체로 몬스터를 공격하도록 만들어봅시다. # 공격 키 누르면 발사체 날리기 1. **PlayerAttack** 스크립트를 열고 아래와 같이 프로퍼티를 추가합니다. ```lua Prop [chunk_id] | Guides:937:0

[task] | wikipedia [title] | 인벤토리 스크립트 작성하기 [category] | Guides [rephrased] | # 학습 과정 소개 본 가이드는 몬스터 사냥과 아이템 획득을 주제로 한 시리즈의 세 번째 편으로, 인벤토리 스크립트 작성 방법을 다룹니다. 해당 시리즈는 총 5편으로 구성되어 있으며, 1편에서는 몬스터 스폰, 2편에서는 몬스터 드롭 아이템과 인벤토리 UI 제작, 4편에서는 인벤토리 UI 스크립트, 5편에서는 아이템 스크립트 작성 순으로 진행됩니다. 이번 과정에서는 인벤토리 스크립트를 구현하여 인벤토리의 동작을 제어하고, 인벤토리 UI에 변경된 아이템 정보를 전달하며, 데이터베이스(DB)에 아이템 정보를 저장하는 로직을 처리하는 [original] | # 학습 과정 소개 > 본 가이드는 아래의 순서로 이어지는 과정입니다. > 1편. [몬스터를 스폰해보자](/docs?postId=204) > 2편. [몬스터 드롭 아이템과 인벤토리 UI 만들기](/docs?postId=943) > **▶ 3편.** [**인벤토리 스크립트 작성하기**](/docs?postId=942) > 4편. [인벤토리 UI 스크립트 작성하기](/docs?postId=946) > 5편. [아이템 스크립트 작성하기](/docs?postId=947) 지난 시간에 이어 이번 과정에서는 인벤토리 스크립트를 작성해 보겠 [chunk_id] | Guides:942:0

[task] | extract_knowledge [title] | 원거리 발사체 만들기 [category] | Guides [rephrased] | # 원거리 발사체의 충돌 감지 및 폭발 처리 ## 개념 설명 원거리 발사체 스크립트는 발사체가 몬스터와 충돌하는 순간을 감지하고, 해당 지점에서 시각적 효과를 생성한 후 발사체 엔티티를 제거하는 로직을 포함합니다. 이 과정은 `TriggerEnterEvent` 이벤트를 통해 서버 측에서 처리되며, 충돌 대상이 몬스터인지 검증한 뒤 폭발 메서드를 호출합니다. ## API 사용법 ### 1. 이벤트 핸들러: `HandleTriggerEnterEvent` * **실행 공간**: `[server only] [self]` * * [original] | fect(self.ExplodeSpriteRUID, self.Entity, effectPosition, 0, Vector3.one * self.EffectScale, false, options) -- 발사체 제거 self.Entity:Destroy() end) } ``` 10. 발사체가 몬스터에 충돌하면 폭발하도록 처리하기 위해 이벤트 핸들러에 **TriggerEnterEvent**를 추가합니다. 실행 공간은 **server only**로 [chunk_id] | Guides:935:5

[task] | knowledge_list [title] | 캐릭터가 발사체로 몬스터 공격하기 [category] | Guides [rephrased] | 제시된 문서 내용에 기반하여 핵심 사실을 추출한 목록입니다. 1. `PlayerAttack` 스크립트의 `Property:` 블록에는 `[Sync]` 속성을 가진 `Vector3 ProjectileOffset` (기본값 `Vector3(0, 0, 0)`), `[None]` 속성을 가진 `string ProjectileModel` (기본값 `""`), 그리고 `[Sync]` 속성을 가진 `number Damage` (기본값 `10`) 프로퍼티를 정의합니다. 2. `PlayerAttack` 컴포넌트의 `ProjectileOffset` [original] | # 학습 과정 소개 > 본 가이드는 아래의 순서로 이어지는 과정입니다. > 1편. [원거리 발사체 만들기](/docs?postId=935) > **▶ 2편.** [**캐릭터가 발사체로 몬스터 공격하기**](/docs?postId=937) 원거리 발사체를 날려서 몬스터를 처치하는 월드를 만들어보는 마지막 과정입니다. 이제 캐릭터가 발사체로 몬스터를 공격하도록 만들어봅시다. # 공격 키 누르면 발사체 날리기 1. **PlayerAttack** 스크립트를 열고 아래와 같이 프로퍼티를 추가합니다. ```lua Prop [chunk_id] | Guides:937:0

[task] | extract_knowledge [title] | 캐릭터가 발사체로 몬스터 공격하기 [category] | Guides [rephrased] | 제시된 문서에는 mLua 스크립트 코드, API 정의, 또는 구체적인 프로퍼티/메서드 이름이 포함되어 있지 않습니다. 문서에는 "SpriteRUID", "대미지", "속도" 등의 프로퍼티가 존재한다고만 언급되어 있고, 실제 코드 구현이나 API 사용법이 없습니다. 시스템 프롬프트의 규칙 **"주어진 원문에 있는 정보만 사용하고, 없는 사실·API·코드 예제를 지어내지 않습니다"** 에 따라, 원문에 없는 코드를 새로 작성할 수 없습니다. 따라서 요청하신 "API 사용법" 및 "예제" 섹션은 원문에 해당 정보가 없어 공백으로 처리하 [original] | **[시작]** 버튼을 누른 뒤 테스트해 봅시다. 공격 키를 누르면 발사체가 날아가고 몬스터에게 닿거나 일정 시간이 지나면 폭발합니다. # 응용하기 발사체 및 이펙트의 **SpriteRUID**를 변경하거나 대미지, 속도 등 여러 가지 프로퍼티를 변경하여 크리에이터가 원하는 원거리 공격을 구현할 수 있습니다. 본 가이드를 참고하여 크리에이터의 개성을 살린 원거리 공격 스킬을 만들어봅시다. [chunk_id] | Guides:937:1

[task] | distill [title] | 인벤토리 스크립트 작성하기 [category] | Guides [rephrased] | # 인벤토리 스크립트 작성하기 (3편) **전제**: 1~2편(몬스터 스폰, 드롭/인벤토리 UI 제작) 완료 상태. ## 역할 인벤토리 스크립트는 다음 3가지 핵심 기능을 수행합니다. 1. **동작 제어**: 인벤토리의 로직 처리 2. **UI 동기화**: 변경된 아이템 정보를 인벤토리 UI에 전달 3. **데이터 영속화**: 아이템 정보를 DB에 저장 > **참고**: 본 가이드는 mLua API 문서의 구체적인 시그니처나 코드 예제를 제공하지 않습니다. 위 3가지 역할을 구현하는 로직 구조를 설계하는 단계입니다. [original] | # 학습 과정 소개 > 본 가이드는 아래의 순서로 이어지는 과정입니다. > 1편. [몬스터를 스폰해보자](/docs?postId=204) > 2편. [몬스터 드롭 아이템과 인벤토리 UI 만들기](/docs?postId=943) > **▶ 3편.** [**인벤토리 스크립트 작성하기**](/docs?postId=942) > 4편. [인벤토리 UI 스크립트 작성하기](/docs?postId=946) > 5편. [아이템 스크립트 작성하기](/docs?postId=947) 지난 시간에 이어 이번 과정에서는 인벤토리 스크립트를 작성해 보겠 [chunk_id] | Guides:942:0

[task] | knowledge_list [title] | 원거리 발사체 만들기 [category] | Guides [rephrased] | ```lua void Explode() { local shape = BoxShape(Vector2.zero, Vector2.one, 0) -- 폭발 이펙트 sprite 사이즈를 가져와 공격 영역으로 설정 _ResourceService:PreloadAsync({self.ExplodeSpriteRUID}, function() if not isvalid(self.Firer) and not isvalid(self.Firer.PlayerAttack) then return [original] | 완성된 `Explode()` 함수 전체는 아래와 같습니다. ```lua void Explode() { local shape = BoxShape(Vector2.zero, Vector2.one, 0) -- 폭발 이펙트 sprite 사이즈를 가져와 공격 영역으로 설정 _ResourceService:PreloadAsync({self.ExplodeSpriteRUID}, function() if not isvalid(self.Firer) and n [chunk_id] | Guides:935:4

[task] | extract_knowledge [title] | 원거리 발사체 만들기 [category] | Guides [rephrased] | # 원거리 발사체의 폭발 이펙트 기반 공격 영역 설정 ## 개념 설명 원거리 발사체가 몬스터를 처치하는 과정에서, 단순한 충돌 판정 대신 **폭발 이펙트(Sprite)의 실제 시각적 크기**를 기반으로 공격 영역(Shape)을 설정하는 로직이 필요합니다. 이를 위해 `Explode()` 함수 내에서 리소스를 비동기로 로드하여 첫 프레임의 픽셀 크기, PPU(Pixels Per Unit), 피벗(Pivot) 정보를 추출합니다. 추출된 정보는 회전 각도(`ZRotation`)와 스케일(`EffectScale`)을 고려한 좌표 변환을 [original] | 7. 발사체의 공격 영역을 설정하고 폭발 이펙트를 재생하기 위해 `Explode()` 함수를 추가합니다. ```lua void Explode() { local shape = BoxShape(Vector2.zero, Vector2.one, 0) -- 폭발 이펙트 sprite 사이즈를 가져와 공격 영역으로 설정 _ResourceService:PreloadAsync({self.ExplodeSpriteRUID}, function() if not [chunk_id] | Guides:935:2

[task] | extract_knowledge [title] | 인벤토리 스크립트 작성하기 [category] | Guides [rephrased] | # 인벤토리 스크립트 작성 ## 1. 개념 설명 인벤토리 스크립트는 게임 내 인벤토리 시스템의 핵심 로직을 담당합니다. 주요 역할은 다음과 같습니다. * **인벤토리 동작 제어**: 인벤토리의 상태와 동작을 관리합니다. * **UI 정보 전달**: 변경된 아이템 정보를 인벤토리 UI에 전달하여 화면 갱신을 유도합니다. * **데이터 영속화**: 아이템 정보를 데이터베이스(DB)에 저장하여 세션 종료 후에도 유지되도록 처리합니다. ## 2. API 사용법 원문에는 인벤토리 스크립트 작성에 구체적으로 사용된 `mLua` [original] | # 학습 과정 소개 > 본 가이드는 아래의 순서로 이어지는 과정입니다. > 1편. [몬스터를 스폰해보자](/docs?postId=204) > 2편. [몬스터 드롭 아이템과 인벤토리 UI 만들기](/docs?postId=943) > **▶ 3편.** [**인벤토리 스크립트 작성하기**](/docs?postId=942) > 4편. [인벤토리 UI 스크립트 작성하기](/docs?postId=946) > 5편. [아이템 스크립트 작성하기](/docs?postId=947) 지난 시간에 이어 이번 과정에서는 인벤토리 스크립트를 작성해 보겠 [chunk_id] | Guides:942:0

[task] | diverse_qa [title] | 인벤토리 스크립트 작성하기 [category] | Guides [rephrased] | 질문: 본 가이드가 포함된 '응용 제작 가이드'의 전체 학습 과정은 몇 편으로 구성되어 있으며, 현재 설명 중인 부분은 몇 편입니까? 답변: 본 가이드의 학습 과정은 총 5편으로 구성되어 있으며, 현재 설명 중인 '인벤토리 스크립트 작성하기'는 3편입니다. 질문: 인벤토리 스크립트에서 처리해야 하는 주요 기능 3가지를 서술하십시오. 답변: 인벤토리 스크립트는 인벤토리의 동작을 제어하고, 인벤토리 UI에 변경되는 아이템 정보를 전달하며, DB에 아이템 정보를 저장하도록 처리하는 기능을 수행합니다. 질문: 인벤토리 스크립트 작성하기 [original] | # 학습 과정 소개 > 본 가이드는 아래의 순서로 이어지는 과정입니다. > 1편. [몬스터를 스폰해보자](/docs?postId=204) > 2편. [몬스터 드롭 아이템과 인벤토리 UI 만들기](/docs?postId=943) > **▶ 3편.** [**인벤토리 스크립트 작성하기**](/docs?postId=942) > 4편. [인벤토리 UI 스크립트 작성하기](/docs?postId=946) > 5편. [아이템 스크립트 작성하기](/docs?postId=947) 지난 시간에 이어 이번 과정에서는 인벤토리 스크립트를 작성해 보겠 [chunk_id] | Guides:942:0

[task] | distill [title] | 범용 리소스 모음 [category] | Guides [rephrased] | # 메이커 사용 범용 리소스 모음 ## 효과음 (SFX) 및 BGM 아래 RUID 값은 메이플스토리 월드 에디터에서 해당 리소스를 참조할 때 사용됩니다. | 카테고리 | 항목 | RUID | | :--- | :--- | :--- | | **점프** | 기본 점프 | `d881a73a0700404a91bcf753474274c3` | | | 귀여운 기본 점프 | `dfca55f443464fd5801952efeb50d819` | | **버튼** | 기본 버튼 1 | `7eda004ded944e459f1fbb16c7f0f3f4` | | [original] | | 항목 | 설명 | RUID | | --- | --- | --- | | @cols=1:@rows=2:점프 효과음 | 기본 점프 효과음 |d881a73a0700404a91bcf753474274c3 | | 귀여운 기본 점프 효과음 |dfca55f443464fd5801952efeb50d819 | | @cols=1:@rows=4:버튼 효과음 | 기본 버튼 효과음 | 7eda004ded944e459f1fbb16c7f0f3f4 | | 기본 버튼 효과음2 | cd0bd46d7f454640b82c9dfff0c6677b | | 버튼 클릭 [chunk_id] | Guides:936:1

[task] | diverse_qa [title] | 캐릭터가 발사체로 몬스터 공격하기 [category] | Guides [rephrased] | 질문: 이 가이드는 '원거리 발사체로 몬스터 처치하기' 시리즈 중 몇 번째 편에 해당하며, 이전 편은 무엇인가요? 답변: 이 가이드는 2편에 해당하며, 이전 편은 1편인 '원거리 발사체 만들기'입니다. 질문: `PlayerAttack` 스크립트에 추가해야 하는 프로퍼티 중 `ProjectileOffset`의 타입과 초기값은 무엇인가요? 답변: `ProjectileOffset`은 `[Sync]` 속성을 가진 `Vector3` 타입이며 초기값은 `Vector3(0, 0, 0)`입니다. 질문: `ProjectileModel` 프로퍼티 [original] | # 학습 과정 소개 > 본 가이드는 아래의 순서로 이어지는 과정입니다. > 1편. [원거리 발사체 만들기](/docs?postId=935) > **▶ 2편.** [**캐릭터가 발사체로 몬스터 공격하기**](/docs?postId=937) 원거리 발사체를 날려서 몬스터를 처치하는 월드를 만들어보는 마지막 과정입니다. 이제 캐릭터가 발사체로 몬스터를 공격하도록 만들어봅시다. # 공격 키 누르면 발사체 날리기 1. **PlayerAttack** 스크립트를 열고 아래와 같이 프로퍼티를 추가합니다. ```lua Prop [chunk_id] | Guides:937:0

[task] | knowledge_list [title] | 인벤토리 스크립트 작성하기 [category] | Guides [rephrased] | 제시된 원문에는 요청하신 구체적인 API 이름, 매개변수, 반환 타입, 동기화/서버·클라이언트 제약 사항에 대한 기술적 내용이 포함되어 있지 않습니다. 원문에는 학습 과정의 순서와 인벤토리 스크립트의 일반적인 역할(동작 제어, UI 정보 전달, DB 저장 처리)에 대한 설명만 존재합니다. 따라서 원문에 있는 정보만 사용하여 추출할 수 있는 핵심 사실 목록은 다음과 같습니다. 1. 본 가이드는 '몬스터 사냥과 아이템 획득 인벤토리 스크립트 작성하기' 시리즈 중 3편으로, 2편 '몬스터 드롭 아이템과 인벤토리 UI 만들기'에 이어 [original] | # 학습 과정 소개 > 본 가이드는 아래의 순서로 이어지는 과정입니다. > 1편. [몬스터를 스폰해보자](/docs?postId=204) > 2편. [몬스터 드롭 아이템과 인벤토리 UI 만들기](/docs?postId=943) > **▶ 3편.** [**인벤토리 스크립트 작성하기**](/docs?postId=942) > 4편. [인벤토리 UI 스크립트 작성하기](/docs?postId=946) > 5편. [아이템 스크립트 작성하기](/docs?postId=947) 지난 시간에 이어 이번 과정에서는 인벤토리 스크립트를 작성해 보겠 [chunk_id] | Guides:942:0

[task] | wikipedia [title] | 범용 리소스 모음 [category] | Guides [rephrased] | # 메이커 사용 범용 리소스 모음 메이플스토리 월드 메이커에서는 제작자가 바로 활용할 수 있는 범용 리소스를 제공합니다. 이 리소스는 효과음과 아바타로 구성되며, 각 리소스는 고유 식별자(RUID)를 가지고 있어 스크립트나 에디터에서 참조할 수 있습니다. ## 효과음 제공되는 효과음은 상황별로 다음과 같이 분류됩니다. **점프 효과음** 기본 점프 상황에 사용되는 효과음으로, 일반 버전과 귀여운 버전 두 가지가 제공됩니다. - 기본 점프 효과음: `d881a73a0700404a91bcf753474274c3` - 귀여운 기본 [original] | | 항목 | 설명 | RUID | | --- | --- | --- | | @cols=1:@rows=2:점프 효과음 | 기본 점프 효과음 |d881a73a0700404a91bcf753474274c3 | | 귀여운 기본 점프 효과음 |dfca55f443464fd5801952efeb50d819 | | @cols=1:@rows=4:버튼 효과음 | 기본 버튼 효과음 | 7eda004ded944e459f1fbb16c7f0f3f4 | | 기본 버튼 효과음2 | cd0bd46d7f454640b82c9dfff0c6677b | | 버튼 클릭 [chunk_id] | Guides:936:1

[task] | knowledge_list [title] | 인벤토리 스크립트 작성하기 [category] | Guides [rephrased] | 1. `LiteInventory` 스크립트 컴포넌트에는 `[Sync]` 속성을 가진 `boolean` 타입의 `IsInitialized` 프로퍼티가 정의되어 있으며 기본값은 `false`입니다. 2. `OnBeginPlay()` 메서드는 `[server only]` 실행 공간에서 동작하며, `_DataService:GetRowCount("UserItemDataSet")` 반환 값에 기반하여 `self._T.inventoryData` 테이블을 초기화합니다. 3. `_DataStorageService:GetUserDataStorage( [original] | 인벤토리의 동작을 제어할 인벤토리 스크립트를 작성합니다. 1. 새 스크립트 컴포넌트를 생성하고 이름을 **LiteInventory**로 설정합니다. 2. **Workspace - DefaultPlayer**의 콘텍스트 메뉴에서 **Add Component**를 클릭한 후 **LiteInventory** 컴포넌트를 추가합니다. 3. **LiteInventory** 스크립트를 열고 스크립트 에디터에서 프로퍼티를 추가합니다. ```lua Property: [Sync] boolean IsInitialize [chunk_id] | Guides:942:1

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