[task] | wikipedia [title] | 모바일 기기의 가속도 센서 사용하기 [category] | Guides [rephrased] | # 모바일 기기의 가속도 센서 사용하기 본 문서는 `MobileAccelerometerService`를 사용하여 모바일 기기에서 가속도 센서 지원 여부를 확인하고 센서 값을 측정하는 방법에 대해 다룹니다. ## MobileAccelerometerService 개요 및 동작 원리 `MobileAccelerometerService`는 모바일 기기의 기울기를 측정하는 데 사용되는 서비스입니다. 이 서비스는 가속도 센서가 탑재된 모바일 기기에서만 정상적으로 동작합니다. 따라서 월드에 입장한 유저가 정상적으로 플레이할 수 있는지 확인하 [original] | # 학습 과정 소개 `MobileAccelerometerService` 활용해 모바일 기기에서 가속도 센서 기능을 지원하는지 확인하고, 값을 측정할 수 있습니다. # MobileAccelerometerService `MobileAccelerometerService`를 활용하면 모바일 기기의 기울기를 측정할 수 있습니다. MobileAccelerometerService는 가속도 센서가 있는 모바일 기기에서만 동작합니다. 그러므로 월드에 입장한 유저가 정상적으로 플레이할 수 있는지 확인하고 가속도 센서를 지원하지 않는 기기를 사용 [chunk_id] | Guides:832:0
[task] | diverse_qa [title] | 모바일 기기의 가속도 센서 사용하기 [category] | Guides [rephrased] | 질문: 모바일 기기의 가속도 센서를 활용하기 위해 새로 생성해야 하는 컴포넌트의 이름은 무엇인가요? 답변: 새로운 **AccelerometerLogic** 컴포넌트를 생성해야 합니다. 질문: `BallEntityRef` 속성에 지정해야 하는 엔티티의 경로는 무엇인가요? 답변: `/maps/map01/TiltBall` 경로가 지정되어야 합니다. 질문: 아래 코드 블록의 `ForcePower` 프로퍼티의 초기 값은 얼마인가요? ```lua [None] number ForcePower = 100 ``` 답변: 초기 값은 100입니다. [original] | 1. 새로운 **AccelerometerLogic**을 생성합니다. 2. Property를 아래와 같이 추가하고, BallEntityRef에 TiltBall을 지정합니다. ```lua Property: [None] EntityRef BallEntityRef = /maps/map01/TiltBall [None] number ForcePower = 100 ``` 3. `MobileAccelerometerService:IsHWSupported()`를 활용해 기기에서 가속도 센서를 지원 [chunk_id] | Guides:832:1
[task] | knowledge_list [title] | 월드코인 환불하기 [category] | Guides [rephrased] | 제공된 문서 내용만 바탕으로 추출한 핵심 사실 목록입니다. ```lua -- 참고: 아래 목록은 문서에 명시된 정보만을 기반으로 작성되었습니다. ``` 1. `_WorldShopService:SetProcessPurchaseCallback(callback)` 메서드는 월드 내 상품 구매 요청 처리가 완료될 때 실행되는 콜백 함수를 등록하는 용도로 사용됩니다. 2. `SetProcessPurchaseCallback` 메서드의 매개변수인 `callback` 함수는 구매 처리 완료 시 `purchaseInfo` 데이터를 인수로 전달받 [original] | # 학습 과정 소개 메이플스토리 월드에서는 크리에이터가 자신의 월드에서 상품을 제작해 판매할 수 있습니다. 하지만 여러 가지 이유로 상품을 구매한 유저에게 환불 요청을 받을 수 있습니다. 메이플스토리 월드에서는 크리에이터 편의를 위해 상품 구매 관련 로그를 제공할 예정이나 아직은 로그 조회 시스템을 구축하는 중입니다. 시스템이 완성되기 전까지는 크리에이터가 직접 자신의 월드에 구매 정보를 기록하고 조회하는 스크립트를 추가해두어야 합니다. 이번 시간에는 **월드 내 상품 구매 정보를 기록/조회하는 방법**과 이를 토대로 **유저 [chunk_id] | Guides:835:0
[task] | distill [title] | 원거리 발사체 만들기 [category] | Guides [rephrased] | # 원거리 발사체 만들기 (1편) 원거리 발사체 모델을 생성하고 관련 스크립트 컴포넌트를 작성하는 과정입니다. 다음 단계(2편)에서 캐릭터 공격 로직을 연결합니다. ## 모델 설정 (`Model_Projectile_Arrow`) `Workspace - MyDesk`에서 새 모델을 생성하고 아래 컴포넌트를 구성합니다. 1. **SpriteRendererComponent** * `PlayRate`: 2.5 * `SpriteRUID`: `82013caa86844d32853f8433266ef25e` (화살 스 [original] | # 학습 과정 소개 > 본 가이드는 아래의 순서로 이어지는 과정입니다. > **▶ 1편.** [**원거리 발사체 만들기**](/docs?postId=935) > 2편. [캐릭터가 발사체로 몬스터 공격하기](/docs?postId=937) 원거리 발사체를 날려서 몬스터를 처치하는 월드를 만들어 보기 위한 첫 번째 과정입니다. 원거리 발사체 모델을 만들고 관련 스크립트 컴포넌트를 작성하는 예제를 살펴봅시다. # 월드 템플릿 제작 편의를 위해 "기본" 템플릿으로 월드 생성하는 것을 권장합니다. # 발사체 모델 먼저 발사체 모델 [chunk_id] | Guides:935:0
[task] | extract_knowledge [title] | 모바일 기기의 중력 센서 사용하기 [category] | Guides [rephrased] | # 모바일 기기의 중력 센서 사용하기 ## 개념 설명 `MobileGyroscopeService`는 모바일 기기의 자이로스코프(Gyroscope) 센서 데이터를 읽어내는 서비스입니다. 이를 통해 기기의 중력, 중력 가속도, 회전 가속도 값을 실시간으로 측정하여 기기가 어느 방향으로, 얼마나 움직였는지(예: 핸드폰을 위로 던졌을 때의 상승량)를 파악할 수 있습니다. 이 서비스는 **모바일 환경에서만** 테스트 및 활용이 가능하며, 데스크톱이나 다른 플랫폼에서는 동작하지 않습니다. 따라서 스크립트 실행 전, 해당 기기가 하드웨어적 [original] | # 학습 과정 소개 `MobileGyroscopeService`를 활용해 모바일 기기에서 자이로스코프 센서 기능을 지원하는지 확인하고, 값을 측정할 수 있습니다. # MobileGyroscopeService `MobileGyroscopeService`를 활용하면 모바일 기기의 중력, 중력 가속도, 회전 가속도 값 등을 측정해 기기가 어디서, 얼마만큼의 힘을 받아 움직였는지 알 수 있습니다. 예를 들어 핸드폰을 위로 던졌을 때 얼마나 위로 올라갔는지 측정할 때 이 서비스를 사용합니다. MobileGyroScopeService는 [chunk_id] | Guides:831:0
[task] | extract_knowledge [title] | 모바일 기기의 중력 센서 사용하기 [category] | Guides [rephrased] | # 모바일 기기 중력 센서(자이로스코프) 활용 ## 개념 설명 메이플스토리 월드에서는 `MobileGyroscopeService`를 통해 모바일 기기의 자이로스코프(중력) 센서 데이터를 스크립트에서 접근할 수 있습니다. 이 서비스는 하드웨어 지원 여부를 확인하고, 센서 데이터를 수신하여 사용자의 기기 기울기에 따른 가속도(`UserAcceleration`)를 `Vector3` 형태로 제공합니다. 이를 활용하여 캐릭터나 오브젝트를 실제 물리적 기울기 방향으로 이동시키는 상호작용을 구현할 수 있습니다. ## API 사용법 자이로 [original] | 1. 새로운 **GyroscopeLogic**을 생성합니다. 2. Property를 추가하고, BallEntityRef에 TiltBall을 지정합니다. ```lua Property: [None] EntityRef BallEntityRef = /maps/map01/TiltBall [None] number ForcePower = 100 ``` 3. `MobileGyroscopeService:IsHWSupported()`를 활용해 기기에서 자이로스코프 센서를 지원하는지 확인한 후, 값 [chunk_id] | Guides:831:1
[task] | distill [title] | 월드코인 환불하기 [category] | Guides [rephrased] | # 유료화 월드코인 환불하기 ## 구매 정보 조회 `_LogStorageService:GetPurchaseLogPagesAsync`를 사용하여 특정 기간의 구매 기록을 조회합니다. 반환된 `PurchaseLogPages` 객체를 통해 페이지네이션을 처리합니다. ```lua local fromDate = DateTime(2022, 11, 25) local toDate = DateTime(2022, 11, 30) _LogStorageService:GetPurchaseLogPagesAsync(fromDate, toDate, fun [original] | 기록한 구매 정보를 조회하는 예제 코드를 살펴봅시다. ```lua -- 협정 세계시 기준으로 11월 25일부터 11월 30일 사이에 기록된 구매 정보를 조회합니다. local fromDate = DateTime(2022, 11, 25) local toDate = DateTime(2022, 11, 30) _LogStorageService:GetPurchaseLogPagesAsync(fromDate, toDate, function(purchaseLogPages) while true do -- GetCurrent [chunk_id] | Guides:835:1
[task] | extract_knowledge [title] | 모바일 기기의 가속도 센서 사용하기 [category] | Guides [rephrased] | # 모바일 가속도 센서 활용 ## 개념 설명 `MobileAccelerometerService`는 모바일 기기의 물리적 가속도 센서 데이터에 접근하기 위한 서비스입니다. 기기가 기울어지는 방향을 감지하여 게임 오브젝트의 이동이나 물리 효과를 제어하는 데 사용됩니다. 이 기능은 클라이언트 측에서 센서 데이터를 수집하고, 이를 서버 측으로 전달하여 실제 물리 시뮬레이션(`PhysicsRigidbodyComponent`)에 힘을 가하는 방식으로 동작합니다. ## API 사용법 ### 핵심 서비스 및 메서드 - **`_MobileA [original] | 1. 새로운 **AccelerometerLogic**을 생성합니다. 2. Property를 아래와 같이 추가하고, BallEntityRef에 TiltBall을 지정합니다. ```lua Property: [None] EntityRef BallEntityRef = /maps/map01/TiltBall [None] number ForcePower = 100 ``` 3. `MobileAccelerometerService:IsHWSupported()`를 활용해 기기에서 가속도 센서를 지원 [chunk_id] | Guides:832:1
[task] | knowledge_list [title] | 원거리 발사체 만들기 [category] | Guides [rephrased] | 제시된 원문에는 "발사체 스크립트 컴포넌트" 섹션의 실제 내용(코드, API 정의, 메서드 등)이 포함되지 않아 스크립트 관련 핵심 사실은 추출할 수 없습니다. 따라서 원문에 명시된 **모델 제작 및 설정** 관련 핵심 사실만 정리합니다. 1. `Workspace - MyDesk`의 콘텍스트 메뉴에서 **Create Model**을 클릭하여 이름을 `Model_Projectile_Arrow`로 하는 새 모델을 생성합니다. 2. `Model_Projectile_Arrow`에 `SpriteRendererComponent`를 추가하고, [original] | # 학습 과정 소개 > 본 가이드는 아래의 순서로 이어지는 과정입니다. > **▶ 1편.** [**원거리 발사체 만들기**](/docs?postId=935) > 2편. [캐릭터가 발사체로 몬스터 공격하기](/docs?postId=937) 원거리 발사체를 날려서 몬스터를 처치하는 월드를 만들어 보기 위한 첫 번째 과정입니다. 원거리 발사체 모델을 만들고 관련 스크립트 컴포넌트를 작성하는 예제를 살펴봅시다. # 월드 템플릿 제작 편의를 위해 "기본" 템플릿으로 월드 생성하는 것을 권장합니다. # 발사체 모델 먼저 발사체 모델 [chunk_id] | Guides:935:0
[task] | wikipedia [title] | 월드코인 환불하기 [category] | Guides [rephrased] | # 월드코인 환불 정책 및 구매 정보 기록 가이드 메이플스토리 월드(MapleStory Worlds)에서는 크리에이터가 자작 월드 내에서 상품을 제작하여 판매할 수 있으며, 이 과정에서 구매자에게 환불 요청을 받을 수 있습니다. 현재 시스템은 상품 구매 관련 로그를 제공하도록 개발 중이나, 아직 로그 조회 기능이 완성되지 않았습니다. 따라서 시스템이 완성되기 전까지는 크리에이터가 직접 스크립트를 통해 자신의 월드에 상품 구매 정보를 기록하고 이를 조회할 수 있도록 구현해 두어야 합니다. ## 환불 의무 사항 원칙적으로 크리에이 [original] | # 학습 과정 소개 메이플스토리 월드에서는 크리에이터가 자신의 월드에서 상품을 제작해 판매할 수 있습니다. 하지만 여러 가지 이유로 상품을 구매한 유저에게 환불 요청을 받을 수 있습니다. 메이플스토리 월드에서는 크리에이터 편의를 위해 상품 구매 관련 로그를 제공할 예정이나 아직은 로그 조회 시스템을 구축하는 중입니다. 시스템이 완성되기 전까지는 크리에이터가 직접 자신의 월드에 구매 정보를 기록하고 조회하는 스크립트를 추가해두어야 합니다. 이번 시간에는 **월드 내 상품 구매 정보를 기록/조회하는 방법**과 이를 토대로 **유저 [chunk_id] | Guides:835:0
[task] | diverse_qa [title] | 월드코인 환불하기 [category] | Guides [rephrased] | 질문: 메이플스토리 월드에서 크리에이터가 상품 구매 관련 로그를 조회하기 위해 현재 어떤 조치를 취해야 하나요? 답변: 로그 조회 시스템이 완성되기 전까지는 크리에이터가 직접 자신의 월드에 구매 정보를 기록하고 조회하는 스크립트를 추가해두어야 합니다. 질문: 이용자가 구매한 유료 상품을 미사용한 상태에서 구매일로부터 7일이 지나지 않았을 경우, 크리에이터는 어떻게 해야 하나요? 답변: 구매자에게 월드코인을 환불해 주어야 합니다. 질문: 크리에이터가 임의로 유료 상품을 삭제 또는 변경하여 보유 중인 상품에 중대한 영향을 준 경우, [original] | # 학습 과정 소개 메이플스토리 월드에서는 크리에이터가 자신의 월드에서 상품을 제작해 판매할 수 있습니다. 하지만 여러 가지 이유로 상품을 구매한 유저에게 환불 요청을 받을 수 있습니다. 메이플스토리 월드에서는 크리에이터 편의를 위해 상품 구매 관련 로그를 제공할 예정이나 아직은 로그 조회 시스템을 구축하는 중입니다. 시스템이 완성되기 전까지는 크리에이터가 직접 자신의 월드에 구매 정보를 기록하고 조회하는 스크립트를 추가해두어야 합니다. 이번 시간에는 **월드 내 상품 구매 정보를 기록/조회하는 방법**과 이를 토대로 **유저 [chunk_id] | Guides:835:0
[task] | knowledge_list [title] | 월드코인 환불하기 [category] | Guides [rephrased] | 제시된 문서에 포함된 핵심 사실과 API 정보를 바탕으로 추출한 목록입니다. 1. `DateTime` 타입은 연도, 월, 일을 매개변수로 받아 날짜 객체를 생성하며, 구매 정보 조회 시 조회 기간의 시작일(`fromDate`)과 종료일(`toDate`)로 사용된다. 2. `_LogStorageService:GetPurchaseLogPagesAsync(fromDate, toDate, callback)` 메서드는 서버에서 실행되며, 지정된 기간의 구매 로그 페이지를 비동기로 조회하기 위해 시작일, 종료일, 그리고 조회 완료 시 호출될 [original] | 기록한 구매 정보를 조회하는 예제 코드를 살펴봅시다. ```lua -- 협정 세계시 기준으로 11월 25일부터 11월 30일 사이에 기록된 구매 정보를 조회합니다. local fromDate = DateTime(2022, 11, 25) local toDate = DateTime(2022, 11, 30) _LogStorageService:GetPurchaseLogPagesAsync(fromDate, toDate, function(purchaseLogPages) while true do -- GetCurrent [chunk_id] | Guides:835:1
[task] | diverse_qa [title] | 모바일 기기의 가속도 센서 사용하기 [category] | Guides [rephrased] | 질문: `MobileAccelerometerService`는 어떤 기능을 제공하는 서비스인가요? 답변: `MobileAccelerometerService`는 모바일 기기의 기울기를 측정할 수 있는 기능을 제공하는 서비스입니다. 질문: `MobileAccelerometerService`는 모든 모바일 기기에서 동작하나요? 답변: 아니요, `MobileAccelerometerService`는 가속도 센서가 있는 모바일 기기에서만 동작합니다. 질문: 가속도 센서를 지원하지 않는 기기를 사용하는 유저에게 어떤 조치가 필요한가요? 답변: [original] | # 학습 과정 소개 `MobileAccelerometerService` 활용해 모바일 기기에서 가속도 센서 기능을 지원하는지 확인하고, 값을 측정할 수 있습니다. # MobileAccelerometerService `MobileAccelerometerService`를 활용하면 모바일 기기의 기울기를 측정할 수 있습니다. MobileAccelerometerService는 가속도 센서가 있는 모바일 기기에서만 동작합니다. 그러므로 월드에 입장한 유저가 정상적으로 플레이할 수 있는지 확인하고 가속도 센서를 지원하지 않는 기기를 사용 [chunk_id] | Guides:832:0
[task] | wikipedia [title] | 원거리 발사체 만들기 [category] | Guides [rephrased] | # 원거리 발사체 만들기 본 가이드는 '원거리 발사체로 몬스터 처치하기' 시리즈의 첫 번째 편에 해당하며, 캐릭터가 발사체로 몬스터를 공격하는 두 번째 편으로 이어집니다. 이 과정에서는 원거리 발사체 모델을 생성하고, 이를 제어하는 스크립트 컴포넌트를 작성하는 방법을 학습합니다. ## 월드 템플릿 제작 편의를 위해 '기본' 템플릿을 사용하여 월드를 생성하는 것이 권장됩니다. ## 발사체 모델 생성 발사체 모델을 생성하기 위한 단계는 다음과 같습니다. 첫째, **Workspace - MyDesk**의 컨텍스트 메뉴에서 ** [original] | # 학습 과정 소개 > 본 가이드는 아래의 순서로 이어지는 과정입니다. > **▶ 1편.** [**원거리 발사체 만들기**](/docs?postId=935) > 2편. [캐릭터가 발사체로 몬스터 공격하기](/docs?postId=937) 원거리 발사체를 날려서 몬스터를 처치하는 월드를 만들어 보기 위한 첫 번째 과정입니다. 원거리 발사체 모델을 만들고 관련 스크립트 컴포넌트를 작성하는 예제를 살펴봅시다. # 월드 템플릿 제작 편의를 위해 "기본" 템플릿으로 월드 생성하는 것을 권장합니다. # 발사체 모델 먼저 발사체 모델 [chunk_id] | Guides:935:0
[task] | diverse_qa [title] | 원거리 발사체 만들기 [category] | Guides [rephrased] | 질문: 본 가이드가 다루는 학습 과정의 1편과 2편의 제목은 무엇인가요? 답변: 1편은 '원거리 발사체 만들기', 2편은 '캐릭터가 발사체로 몬스터 공격하기'입니다. 질문: 월드 제작 편의를 위해 어떤 템플릿을 사용하는 것이 권장되나요? 답변: "기본" 템플릿을 사용하는 것이 권장됩니다. 질문: 발사체 모델의 이름을 무엇으로 설정하나요? 답변: Model_Projectile_Arrow로 설정합니다. 질문: SpriteRendererComponent에서 PlayRate 값을 얼마로 설정하나요? 답변: 2.5로 설정합니다. 질문 [original] | # 학습 과정 소개 > 본 가이드는 아래의 순서로 이어지는 과정입니다. > **▶ 1편.** [**원거리 발사체 만들기**](/docs?postId=935) > 2편. [캐릭터가 발사체로 몬스터 공격하기](/docs?postId=937) 원거리 발사체를 날려서 몬스터를 처치하는 월드를 만들어 보기 위한 첫 번째 과정입니다. 원거리 발사체 모델을 만들고 관련 스크립트 컴포넌트를 작성하는 예제를 살펴봅시다. # 월드 템플릿 제작 편의를 위해 "기본" 템플릿으로 월드 생성하는 것을 권장합니다. # 발사체 모델 먼저 발사체 모델 [chunk_id] | Guides:935:0
[task] | distill [title] | 원거리 발사체 만들기 [category] | Guides [rephrased] | `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:PlayEffect(self.ExplodeSpriteRUID, [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] | extract_knowledge [title] | 월드코인 환불하기 [category] | Guides [rephrased] | # 월드코인 환불 및 구매 정보 관리 ## 1. 개념 설명 메이플스토리 월드(MapleStory Worlds)에서는 크리에이터가 상품 판매를 수행할 수 있습니다. 크리에이터의 편의를 위해 시스템이 상품 구매 로그를 제공하려 하지만, 해당 시스템이 완성되지 않은 상태이므로 크리에이터가 직접 스크립트를 통해 구매 정보를 기록하고 조회하는 로직을 구현해야 합니다. 크리에이터는 다음 세 가지 경우에 해당할 때 구매자에게 월드코인을 환불해 주어야 하는 의무가 있습니다. 1. **미사용 및 기간 내:** 이용자가 유료 상품을 미사용 [original] | # 학습 과정 소개 메이플스토리 월드에서는 크리에이터가 자신의 월드에서 상품을 제작해 판매할 수 있습니다. 하지만 여러 가지 이유로 상품을 구매한 유저에게 환불 요청을 받을 수 있습니다. 메이플스토리 월드에서는 크리에이터 편의를 위해 상품 구매 관련 로그를 제공할 예정이나 아직은 로그 조회 시스템을 구축하는 중입니다. 시스템이 완성되기 전까지는 크리에이터가 직접 자신의 월드에 구매 정보를 기록하고 조회하는 스크립트를 추가해두어야 합니다. 이번 시간에는 **월드 내 상품 구매 정보를 기록/조회하는 방법**과 이를 토대로 **유저 [chunk_id] | Guides:835:0
[task] | distill [title] | 원거리 발사체 만들기 [category] | Guides [rephrased] | # 원거리 발사체 스크립트 구현 가이드 발사체 모델에 `Projectile` 컴포넌트를 연결하여 이동 및 소멸 로직을 구현합니다. ### 1. 프로퍼티 정의 발사체 속도와 이펙트 정보를 정의합니다. ```lua Property: [Sync] number DestroyAfterSec = 2 -- 발사 후 소멸까지의 시간(초) [Sync] number Speed = 7.5 -- 발사체 속도 [Sync] string ExplodeSpriteRUID = "47a613712de34f9ba2ea25ef40894756" -- 폭발 이펙트 [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] | 질문: `_LogStorageService:GetPurchaseLogPagesAsync` 메서드를 호출할 때 전달해야 하는 두 개의 날짜 파라미터의 용도는 무엇인가요? 답변: 구매 정보가 기록된 기간의 시작 날짜(`fromDate`)와 종료 날짜(`toDate`)를 지정하여 해당 기간 내의 구매 로그를 조회하기 위한 것입니다. 질문: 아래 코드에서 `while true` 루프 내부에서 `break` 문이 실행되는 조건은 무엇인가요? ```lua if purchaseLogPages.IsLastPage == true then [original] | 기록한 구매 정보를 조회하는 예제 코드를 살펴봅시다. ```lua -- 협정 세계시 기준으로 11월 25일부터 11월 30일 사이에 기록된 구매 정보를 조회합니다. local fromDate = DateTime(2022, 11, 25) local toDate = DateTime(2022, 11, 30) _LogStorageService:GetPurchaseLogPagesAsync(fromDate, toDate, function(purchaseLogPages) while true do -- GetCurrent [chunk_id] | Guides:835:1
[task] | wikipedia [title] | 월드코인 환불하기 [category] | Guides [rephrased] | # 유료화 월드코인 환불하기 이 문서는 메이플스토리 월드(MapleStory Worlds)에서 유료화 월드코인(World Coin)의 구매 내역 조회 방법과 환불 처리 절차를 설명합니다. ## 구매 정보 조회 크리에이터는 `_LogStorageService`를 통해 특정 기간에 기록된 구매 정보를 조회할 수 있습니다. 아래 코드 예제는 협정 세계시 기준으로 2022년 11월 25일부터 11월 30일까지의 구매 기록을 페이지 단위로 순회하며 출력하는 방법입니다. ```lua -- 협정 세계시 기준으로 11월 25일부터 11월 [original] | 기록한 구매 정보를 조회하는 예제 코드를 살펴봅시다. ```lua -- 협정 세계시 기준으로 11월 25일부터 11월 30일 사이에 기록된 구매 정보를 조회합니다. local fromDate = DateTime(2022, 11, 25) local toDate = DateTime(2022, 11, 30) _LogStorageService:GetPurchaseLogPagesAsync(fromDate, toDate, function(purchaseLogPages) while true do -- GetCurrent [chunk_id] | Guides:835:1
[task] | wikipedia [title] | 원거리 발사체 만들기 [category] | Guides [rephrased] | 원거리 발사체 스크립트에서 폭발 이펙트를 재생하고 발사체 엔티티를 제거하는 로직은 `Explode()` 함수의 기존 코드 아래에 추가하여 구현합니다. 먼저 폭발 이펙트가 표시될 위치를 계산합니다. 계산식은 현재 변환 컴포넌트(`transform`)의 좌표에 효과 오프셋(`effectOffset`) 값을 더한 값이며, 결과로 생성된 `Vector3` 타입의 변수는 `effectPosition`으로 정의됩니다. 이어서 이펙트 재생 시 사용할 옵션 테이블 `options`을 생성합니다. 이 테이블에는 키 `"FlipX"`에 대해 `se [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] | knowledge_list [title] | 원거리 발사체 만들기 [category] | Guides [rephrased] | ```lua -- 폭발 이펙트 재생 local effectPosition = Vector3(transform.Position.x + effectOffset.x, transform.Position.y + effectOffset.y, transform.Position.z) local options = { ["FlipX"] = not self.ToLeft } _EffectService:PlayEffect(self.ExplodeSpriteRUID, self.Entity, effectPosition, 0, Vector3.one * self. [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] | knowledge_list [title] | 원거리 발사체 만들기 [category] | Guides [rephrased] | 1. `Explode()` 메서드는 발사체의 공격 영역을 설정하고 폭발 이펙트를 재생하기 위해 사용되며, 초기화 단계에서 `BoxShape(Vector2.zero, Vector2.one, 0)` 객체를 생성하여 기본 형태를 준비합니다. 2. `_ResourceService:PreloadAsync({self.ExplodeSpriteRUID}, function() ... end)` 호출을 통해 폭발 이펙트 리소스를 비동기로 사전 로드하며, 콜백 함수 내에서 리소스 로드가 완료된 후 처리를 수행합니다. 3. 콜백 함수 진입 시 `isva [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] | distill [title] | 원거리 발사체 만들기 [category] | Guides [rephrased] | `Explode()` 함수는 리소스 로딩 후 스프라이트 정보(크기, 피벗)를 기반으로 회전·스케일·좌우 방향을 보정하여 `BoxShape` 공격 영역을 계산하고, `PlayerAttack:AttackFast`로 몬스터를 타격하며 이펙트를 재생합니다. ```lua void Explode() { local shape = BoxShape(Vector2.zero, Vector2.one, 0) _ResourceService:PreloadAsync({self.ExplodeSpriteRUID}, function() [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] | diverse_qa [title] | 원거리 발사체 만들기 [category] | Guides [rephrased] | 질문: 폭발 이펙트를 재생하기 위해 `effectPosition` 변수에 어떤 값이 할당되나요? 답변: `transform.Position`의 x, y, z 좌표에 각각 `effectOffset`의 x, y 값과 z 좌표를 더하여 생성된 `Vector3` 값이 할당됩니다. 질문: `options` 테이블에 포함된 `"FlipX"` 키의 값은 어떻게 결정되나요? 답변: `self.ToLeft` 프로퍼티의 논리 부정(`not`) 값이 할당됩니다. 질문: `_EffectService:PlayEffect` 함수 호출 시 사용된 이펙트 [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] | distill [title] | 원거리 발사체 만들기 [category] | Guides [rephrased] | ### 7. 공격 영역 설정 및 폭발 이펙트 재생 (`Explode`) `Explode()` 함수에서 이펙트 스프라이트 정보를 기반으로 `BoxShape`를 생성합니다. ```lua void Explode() { local shape = BoxShape(Vector2.zero, Vector2.one, 0) -- 이펙트 스프라이트 정보를 통해 공격 영역 크기/오프셋 계산 _ResourceService:PreloadAsync({self.ExplodeSpriteRUID}, function() [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] | knowledge_list [title] | 원거리 발사체 만들기 [category] | Guides [rephrased] | 1. 새 스크립트 컴포넌트는 Workspace의 MyDesk 노드에서 'Create Scripts - Create Component' 메뉴를 통해 생성하며, 컴포넌트 이름은 `Projectile`로 설정합니다. 2. 생성된 `Projectile` 스크립트 컴포넌트는 발사체 모델 `Model_Projectile_Arrow`에 연결하여 적용합니다. 3. `Projectile` 컴포넌트의 `[Sync]` 프로퍼티 `DestroyAfterSec`는 `number` 타입으로, 발사 시점부터 소멸까지 소요되는 시간(초)을 나타내며 기본값은 2 [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()` 함수 내에서 폭발 이펙트의 스프라이트 크기를 가져와 공격 영역의 `shape.Size`에 적용하기 위해 어떤 계산 과정을 거치나요? 답변: 먼저 `_ResourceService:LoadAnimationClipAndWait`로 클립을 로드한 후 첫 번째 프레임의 `FrameSprite`를 가져옵니다. 이후 픽셀 단위 크기(`firstSpriteSizeInPixel`)를 픽셀당 단위(`PixelPerUnit`, ppu)로 나눈 값(`spriteSize`)을 계산하고, 이 값을 `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. 개념 설명 메이플스토리 월드(MapleStory Worlds)에서 크리에이터는 `_LogStorageService`를 통해 특정 기간 내 기록된 월드코인 구매 내역을 조회할 수 있습니다. 이 정보는 구매자의 환불 요청이 정당한지 검토하기 위해 사용됩니다. 구매 정보 조회 기능은 메이커(Maker) 환경에서 테스트할 수 없으며, 월드가 출시된 이후에만 동작합니다. 따라서 비공개 월드로 출시하여 조회 로직이 정상적으로 동작하는지 확인한 후 공개 전환하는 것이 권장됩니다. 구매 [original] | 기록한 구매 정보를 조회하는 예제 코드를 살펴봅시다. ```lua -- 협정 세계시 기준으로 11월 25일부터 11월 30일 사이에 기록된 구매 정보를 조회합니다. local fromDate = DateTime(2022, 11, 25) local toDate = DateTime(2022, 11, 30) _LogStorageService:GetPurchaseLogPagesAsync(fromDate, toDate, function(purchaseLogPages) while true do -- GetCurrent [chunk_id] | Guides:835:1
[task] | extract_knowledge [title] | 원거리 발사체 만들기 [category] | Guides [rephrased] | # 원거리 발사체 모델 및 스크립트 구성 ## 1. 개념 설명 원거리 발사체(Projile)는 캐릭터나 객체에서 분리되어 이동하며, 특정 대상(몬스터 등)과 충돌 시 효과를 발생시키는 엔티티입니다. mLua 환경에서 발사체를 구현하기 위해서는 시각적 요소(Sprite), 물리적 크기 및 위치(Transform), 그리고 충돌 감지(Trigger)를 담당하는 컴포넌트가 결합된 모델이 필요합니다. 이 가이드에서는 `Model_Projectile_Arrow`라는 이름의 모델을 생성하고, `SpriteRendererComponent`, [original] | # 학습 과정 소개 > 본 가이드는 아래의 순서로 이어지는 과정입니다. > **▶ 1편.** [**원거리 발사체 만들기**](/docs?postId=935) > 2편. [캐릭터가 발사체로 몬스터 공격하기](/docs?postId=937) 원거리 발사체를 날려서 몬스터를 처치하는 월드를 만들어 보기 위한 첫 번째 과정입니다. 원거리 발사체 모델을 만들고 관련 스크립트 컴포넌트를 작성하는 예제를 살펴봅시다. # 월드 템플릿 제작 편의를 위해 "기본" 템플릿으로 월드 생성하는 것을 권장합니다. # 발사체 모델 먼저 발사체 모델 [chunk_id] | Guides:935:0