← 목록

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

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

[task] | single_turn [pass] | ⏳ 미판정 [title] | 스크린샷 촬영 및 공유하기 [question] | `_MobileShareService:ShareFileAndWait()`를 호출하기 전에 반드시 확인해야 할 변수와 조건은 무엇인가요? [answer] | `_MobileShareService:ShareFileAndWait()`를 호출하기 전에 반드시 확인해야 할 것은 `self._T.lastPath` 변수입니다. 해당 변수에 저장된 경로가 빈 문자열(`""`)이 아닌지(`if path ~= "" then`)를 확인해야 합니다. `self._T.lastPath`는 스크린샷이 성공적으로 저장된 후에만 유효한 경로 값으로 설정됩니다. 따라서 스크린샷 저장 전이나 저장 실패 시에는 빈 문자열이므로, 이 조건을 확인하지 않고 공유를 시도하면 오류가 발생할 수 있습니다. 참고로, 스크린샷 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 모바일에서 스크린샷 공유하는 방법을 살펴봅시다. 단, PC에서는 공유할 수 없습니다. 1. **FullScreenBtn** 버튼의 콘텍스트 메뉴에서 **Duplicate**를 클릭해 버튼을 복제한 뒤 적당한 위치로 옮깁니다. 2. 복제한 버튼의 이름을 **ShareBtn**으로 변경합니다. **Text**에는 **Share**를 입력합니다. 3. 스크립트 에디터에서 **ScreenshotServiceTest**를 열고 **FullScreenBtn**에 연결한 이벤트를 찾습니다. `CaptureFullScre

[task] | two_turn [pass] | ⏳ 미판정 [title] | 스크린샷 촬영 및 공유하기 [question] | mLua에서 전체 화면 스크린샷을 촬영하기 위해 필요한 UI 버튼 설정과 스크립트 연결 과정은 어떻게 되나요? [answer] | mLua에서 전체 화면 스크린샷을 촬영하려면 UI 에디터에서 버튼과 텍스트 컴포넌트를 설정하고, 해당 버튼에 이벤트 핸들러를 연결하여 `_ScreenshotService`를 호출하는 과정을 거칩니다. ### 1. UI 버튼 설정 1. **UI 에디터**에서 새 버튼 **`FullScreenBtn`**을 생성합니다. 2. **`FullScreenBtn`**에 **`TextComponent`**를 추가하고 다음 프로퍼티를 설정합니다. * **Text**: `Full Screen Capture` * **Fon [followup] | `ScreenshotServiceTest` 스크립트에서 `_ScreenshotService:CaptureFullScreenToPhotoLibraryAndWait` 호출 시 `error`가 `ScreenshotError.Success`가 아닐 때 `_UIToast:ShowMessage`를 통해 사용자에게 실패를 알리는 로직이 포함된 코드 전체를 보여주세요. [followup_answer] | `ScreenshotServiceTest` 스크립트에서 전체 화면 캡처 실패 시 `_UIToast:ShowMessage`를 통해 에러 메시지와 경로를 표시하는 이벤트 핸들러 코드 전체는 다음과 같습니다. ```lua Event Handler: [entity: FullScreenBtn(/ui/DefaultGroup/FullScreenBtn)] HandleButtonClickEvent (ButtonClickEvent event) { --------------- Native Event Sender Info ------------ [scores] | [judge_reason] | [source_doc] | 버튼을 눌러 전체 화면 스크린샷을 촬영해 봅시다. 1. UI 에디터에서 버튼을 눌러 새 버튼 **FullScreenBtn**을 만듭니다. 2. **FullScreenBtn**에 **TextComponent**를 추가하고 프로퍼티를 아래와 같이 설정합니다. | Property | Value | | :---: | :---: | | Text | Full Screen Capture | | FontColor | #ffffff | 3. **Workspace - MyDesk**의 콘텍스트 메뉴에서 *

[task] | single_turn [pass] | ⏳ 미판정 [title] | 스크린샷 촬영 및 공유하기 [question] | 모바일에서 스크린샷을 촬영한 후 다른 앱으로 공유하려면 어떤 서비스와 함수를 조합해서 호출해야 하나요? [answer] | 모바일에서 스크린샷을 촬영한 후 다른 앱으로 공유하려면 `ScreenshotService`와 `MobileShareService`를 조합해서 사용해야 합니다. 구체적인 호출 순서와 함수 조합은 다음과 같습니다: 1. **스크린샷 촬영 및 파일 저장**: `ScreenshotService`의 `CaptureFullScreenAsFileAndWait()` 또는 `CaptureScreenRegionAsFileAndWait()` 함수를 호출합니다. * 이 함수들은 스크린샷을 촬영하여 모바일 기기의 특정 경로(예: Andro [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 `ScreenshotService`를 통해 화면을 캡처하고 이미지 파일을 저장하는 방법을 살펴봅시다. 추가로 모바일에서 스크린샷을 저장한 뒤 공유하는 방법도 알아봅시다. ##### 참고 API Reference [ScreenshotService](/apiReference?postId=807) [MobileShareService](/apiReference/Services/MobileShareService) # ScreenshotService `ScreenshotService`를 활용하면 PC나 모바일에서 메

[task] | single_turn [pass] | ⏳ 미판정 [title] | 스크린샷 촬영 및 공유하기 [question] | HandleButtonClickEvent 핸들러에서 이벤트 센더를 Entity로 설정해야 하는 구체적인 이유는 무엇이며, ButtonComponent로 설정하면 어떤 문제가 생길까요? [answer] | 제공된 참고 문서에는 `HandleButtonClickEvent` 핸들러에서 이벤트 센더를 `Entity`로 설정해야 하는 구체적인 이유나, `ButtonComponent`로 설정했을 때 발생하는 문제에 대한 설명이 포함되어 있지 않습니다. 문서에는 버튼에 `ButtonClickEvent` 이벤트 핸들러를 추가할 때 "이벤트 센더를 아래와 같이 Entity로 설정합니다"라는 절차적 지시와, 해당 설정을 적용한 코드 예제(`[entity: FullScreenBtn(/ui/DefaultGroup/FullScreenBtn)]` 태그 사 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 버튼을 눌러 전체 화면 스크린샷을 촬영해 봅시다. 1. UI 에디터에서 버튼을 눌러 새 버튼 **FullScreenBtn**을 만듭니다. 2. **FullScreenBtn**에 **TextComponent**를 추가하고 프로퍼티를 아래와 같이 설정합니다. | Property | Value | | :---: | :---: | | Text | Full Screen Capture | | FontColor | #ffffff | 3. **Workspace - MyDesk**의 콘텍스트 메뉴에서 *

[task] | single_turn [pass] | ⏳ 미판정 [title] | 스크린샷 촬영 및 공유하기 [question] | 일부 화면을 촬영할 때 startPixel과 endPixel 값을 고정해도 모바일 유저의 해상도에 따라 찍히는 영역이 달라지는 문제를 어떻게 해결할 수 있나요? [answer] | 제공된 문서에는 일부 화면 촬영 시 해상도 차이에 따라 촬영 위치가 달라질 수 있다는 사실과 "이 점에 유의하여 사용해야 한다"는 경고만 명시되어 있습니다. 문서에는 `startPixel`과 `endPixel` 값을 동적으로 계산하거나 해상도를 기준으로 정규화하는 구체적인 API(예: 화면 크기 조회 함수 등)나 해결 코드가 **제공되지 않습니다**. 따라서 문서 근거만으로 이 문제를 해결하는 코드나 방법을 제시할 수 없습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 버튼을 눌러 일부 화면 스크린샷을 촬영해 봅시다. 1. **FullScreenBtn** 버튼의 콘텍스트 메뉴에서 **Duplicate**를 클릭해 버튼을 복제한 뒤 적당한 위치로 옮깁니다. 2. 복제한 버튼의 이름을 **PartialScreenBtn**으로 변경합니다. **Text**에는 **Partial Screen Capture**를 입력합니다. 3. 스크립트 에디터에서 **ScreenshotServiceTest**를 열고 이벤트 핸들러에 `ButtonClickEvent`를 추가합니다. 이벤트 센

[task] | single_turn [pass] | ⏳ 미판정 [title] | 스크린샷 촬영 및 공유하기 [question] | _ScreenshotService:CaptureScreenRegionToPhotoLibraryAndWait 호출 시 두 번째 인자로 전달하는 "PartialScreen" 문자열은 어떤 역할을 하며, 저장 파일 이름에 어떤 영향을 주나요? [answer] | `_ScreenshotService:CaptureScreenRegionToPhotoLibraryAndWait`의 두 번째 인자인 `"PartialScreen"`은 촬영된 스크린샷의 **저장 파일 이름(파일명)으로 사용**됩니다. 따라서 해당 호출 후 생성되는 이미지의 파일 이름은 `PartialScreen.png`가 됩니다. 참고 문서의 마지막 부분에서도 "저장된 **PartialScreen.png**를 확인하면"이라고 명시되어 있어, 이 문자열이 파일명에 직접 반영됨을 알 수 있습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 버튼을 눌러 일부 화면 스크린샷을 촬영해 봅시다. 1. **FullScreenBtn** 버튼의 콘텍스트 메뉴에서 **Duplicate**를 클릭해 버튼을 복제한 뒤 적당한 위치로 옮깁니다. 2. 복제한 버튼의 이름을 **PartialScreenBtn**으로 변경합니다. **Text**에는 **Partial Screen Capture**를 입력합니다. 3. 스크립트 에디터에서 **ScreenshotServiceTest**를 열고 이벤트 핸들러에 `ButtonClickEvent`를 추가합니다. 이벤트 센

[task] | code [pass] | ⏳ 미판정 [title] | 충돌 그룹 만들기 [question] | HitComponent의 CollisionGroup 프로퍼티를 "HitBox"로 설정하고, TriggerComponent의 CollisionGroup을 "TriggerBox"로 설정하여 두 그룹 간 충돌이 발생하도록 설정한 후, HandleTriggerEnterEvent 이벤트 핸들러에서 충돌 발생 시 log로 메시지를 출력하는 스크립트를 작성해줘. [answer] | HitComponent의 `CollisionGroup`을 `HitBox`로, TriggerComponent의 `CollisionGroup`을 `TriggerBox`로 설정하는 과정은 에디터의 컴포넌트 설정을 통해 수행하며, 스크립트에서는 충돌 발생 시 이벤트를 처리하는 로직만 작성하면 됩니다. 요청하신 `HandleTriggerEnterEvent` 이벤트 핸들러를 포함하여 충돌 발생 시 메시지를 출력하는 mLua 스크립트는 다음과 같습니다. ```lua Event Handler: [server only] [self] Handle [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 충돌 그룹을 만들고, 엔티티끼리의 충돌 여부를 설정하는 방법을 알아봅시다. 충돌 그룹을 사용해 특정 그룹끼리만 충돌할 수 있거나, 충돌을 무시할 수 있게 만들 수 있습니다. # 충돌 그룹 기능 충돌 그룹은 메이플스토리 월드에 있는 여러 가지 충돌체를 특정 그룹 단위로 묶고, 그룹 간에 충돌 발생을 제어할 수 있는 기능입니다. 기본 충돌 그룹은 **Default, TriggerBox, HitBox**가 있으며 크리에이터가 만든 충돌 그룹을 포함해 **최대 15개**까지 만들 수 있습니다. * **Defa

[task] | single_turn [pass] | ⏳ 미판정 [title] | 스크린샷 촬영 및 공유하기 [question] | _ScreenshotService를 통해 촬영한 이미지를 모바일에서 바로 공유하는 기능은 어떤 API나 서비스를 통해 구현해야 하나요? [answer] | 제시된 참고 문서에는 `_ScreenshotService:CaptureScreenRegionToPhotoLibraryAndWait`를 사용하여 스크린샷을 촬영하고 저장 경로(`path`)를 반환받는 방법과, 해당 경로를 로그에 출력하거나 토스트 메시지로 표시하는 방법만 설명되어 있습니다. 문서에는 촬영된 이미지를 모바일에서 바로 공유하기 위한 구체적인 API나 서비스(예: 공유 시트 호출 서비스 등)에 대한 정보가 포함되어 있지 않습니다. 따라서 제공된 문서 범위 내에서 이미지 공유 기능을 구현하는 방법을 설명할 수 없습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 버튼을 눌러 일부 화면 스크린샷을 촬영해 봅시다. 1. **FullScreenBtn** 버튼의 콘텍스트 메뉴에서 **Duplicate**를 클릭해 버튼을 복제한 뒤 적당한 위치로 옮깁니다. 2. 복제한 버튼의 이름을 **PartialScreenBtn**으로 변경합니다. **Text**에는 **Partial Screen Capture**를 입력합니다. 3. 스크립트 에디터에서 **ScreenshotServiceTest**를 열고 이벤트 핸들러에 `ButtonClickEvent`를 추가합니다. 이벤트 센

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 물리 사용하기 [question] | 기본 맵에서 물리 법칙을 적용하기 위해 필요한 컴포넌트 추가 및 지면 충돌 활성화 단계를 1번부터 순서대로 번호를 매긴 목록으로 나열하세요. [answer] | 1. Hierachy - World - maps - map01을 선택합니다. 2. 맵에 PhysicsSimulatorComponent를 추가합니다. 3. PhysicsSimulatorComponent의 Gravity 프로퍼티에 원하는 중력 값을 입력합니다. 4. Hierachy - World - maps - map01 - TileMap을 선택합니다. 5. TileMapComponent의 PhysicsInteractable 프로퍼티를 활성화합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 메이플스토리 월드의 맵과 엔티티에 물리 법칙 적용 방법을 알아봅시다. 물리 법칙을 활용해 엔티티가 서로 충돌해 튕기거나, 포물선 운동을 하며 날아가거나, 엔티티가 서로 연결되어 움직이게 하는 등 물리를 활용한 움직임을 다양하게 만들어낼 수 있습니다. [엔티티의 충돌](/docs?postId=175)과 [충돌 그룹 만들기](/docs?postId=754)를 함께 학습하길 권장합니다. # 맵에 물리 법칙 적용하기 기본 맵은 메이플스토리 맵 구성과 이동 원칙을 따르므로 물리 법칙은 기본 적용되어 있지 않습니다.

[task] | single_turn [pass] | ⏳ 미판정 [title] | 스크린샷 촬영 및 공유하기 [question] | 스크립트에서 self._T.lastPath에 저장된 경로를 나중에 다른 컴포넌트에서 공유 기능으로 활용하려면 어떤 방식으로 접근해야 하나요? [answer] | 제공된 참고 문서에는 `self._T.lastPath`에 저장된 경로를 **다른 컴포넌트에서 접근하거나 공유 기능으로 활용하는 방법에 대한 설명이 없습니다.** 문서에는 `_ScreenshotService:CaptureScreenRegionToPhotoLibraryAndWait`를 호출하여 `PartialScreen` 영역을 촬영하고, 성공 시 경로를 `self._T.lastPath`에 저장하며, 실패 시 `_UIToast:ShowMessage`로 에러를 표시하는 내용까지만 기술되어 있습니다. 따라서 다른 컴포넌트에서 이 경로를 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 버튼을 눌러 일부 화면 스크린샷을 촬영해 봅시다. 1. **FullScreenBtn** 버튼의 콘텍스트 메뉴에서 **Duplicate**를 클릭해 버튼을 복제한 뒤 적당한 위치로 옮깁니다. 2. 복제한 버튼의 이름을 **PartialScreenBtn**으로 변경합니다. **Text**에는 **Partial Screen Capture**를 입력합니다. 3. 스크립트 에디터에서 **ScreenshotServiceTest**를 열고 이벤트 핸들러에 `ButtonClickEvent`를 추가합니다. 이벤트 센

[task] | single_turn [pass] | ⏳ 미판정 [title] | SideViewRectTile모드로 맵 만들기 [question] | SideViewRectTile 모드로 맵을 만들 때 배경을 변경하기 위해 Preset List에서 어떤 항목을 검색해야 하나요? [answer] | SideViewRectTile 모드로 맵을 만들 때 배경을 변경하려면 **Preset List**의 **Background** 항목에서 **back-4**를 검색하여 선택해야 합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 RectTileMapComponent와 KinematicbodyComponent는 탑다운뷰 게임 제작에는 적합하지만 횡스크롤 게임 제작에는 적합하지 않습니다. SideViewRectTile 모드는 RectTileMap을 활용해 손쉽게 횡스크롤 게임을 제작할 수 있도록 횡스크롤 방식의 이동, 점프, 타일과의 충돌 등을 지원합니다. 이번 시간에는 SideViewRectTile 모드에 대해 알아보고 맵을 제작해봅시다. > **더 알아보기** > SideViewRectTile 모드는 RectTile 모드를 기반으로

[task] | single_turn [pass] | ⏳ 미판정 [title] | 스크린샷 촬영 및 공유하기 [question] | _ScreenshotService:CaptureFullScreenToPhotoLibraryAndWait 호출 후 error 변수가 ScreenshotError.Success가 아닌 경우 _UIToast:ShowMessage에 출력되는 문자열 형식은 어떻게 구성되어야 하는가요? [answer] | `_ScreenshotService:CaptureFullScreenToPhotoLibraryAndWait` 호출 후 `error` 변수가 `ScreenshotError.Success`가 아닐 때, `_UIToast:ShowMessage`에 전달되는 문자열은 아래 형식으로 구성됩니다. ```lua "Failed to save! "..tostring(error)..", Path: "..path ``` 구체적인 구성 요소는 다음과 같습니다. 1. **고정 문구**: `"Failed to save! "` (실패를 알리는 고정된 메시 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 버튼을 눌러 전체 화면 스크린샷을 촬영해 봅시다. 1. UI 에디터에서 버튼을 눌러 새 버튼 **FullScreenBtn**을 만듭니다. 2. **FullScreenBtn**에 **TextComponent**를 추가하고 프로퍼티를 아래와 같이 설정합니다. | Property | Value | | :---: | :---: | | Text | Full Screen Capture | | FontColor | #ffffff | 3. **Workspace - MyDesk**의 콘텍스트 메뉴에서 *

[task] | single_turn [pass] | ⏳ 미판정 [title] | SideViewRectTile모드로 맵 만들기 [question] | RectTileMap의 활용 문서를 먼저 참고해야 하는 이유는 무엇인가요? [answer] | SideViewRectTile 모드가 RectTile 모드를 기반으로 만들어졌기 때문에, SideViewRectTile을 이해하고 활용하기 위해서는 먼저 RectTileMap의 활용 문서를 참고하는 것이 좋습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 RectTileMapComponent와 KinematicbodyComponent는 탑다운뷰 게임 제작에는 적합하지만 횡스크롤 게임 제작에는 적합하지 않습니다. SideViewRectTile 모드는 RectTileMap을 활용해 손쉽게 횡스크롤 게임을 제작할 수 있도록 횡스크롤 방식의 이동, 점프, 타일과의 충돌 등을 지원합니다. 이번 시간에는 SideViewRectTile 모드에 대해 알아보고 맵을 제작해봅시다. > **더 알아보기** > SideViewRectTile 모드는 RectTile 모드를 기반으로

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 스크린샷 촬영 및 공유하기 [question] | 모바일 스크린샷 공유 기능의 제작 단계를 번호 목록으로 정리하세요. [answer] | 모바일에서 스크린샷을 공유하는 기능은 PC에서는 사용할 수 없으며, 다음 단계에 따라 제작할 수 있습니다. 1. **FullScreenBtn 복제 및 이름 변경** * 기존 `FullScreenBtn` 버튼의 컨텍스트 메뉴에서 **Duplicate**를 클릭하여 버튼을 복제합니다. * 복제한 버튼을 적절한 위치로 이동하고, 이름을 **ShareBtn**으로 변경합니다. * 버튼의 **Text** 속성에 **Share**를 입력합니다. 2. **스크린샷 저장 방식 수정 (FullScreenBtn [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 모바일에서 스크린샷 공유하는 방법을 살펴봅시다. 단, PC에서는 공유할 수 없습니다. 1. **FullScreenBtn** 버튼의 콘텍스트 메뉴에서 **Duplicate**를 클릭해 버튼을 복제한 뒤 적당한 위치로 옮깁니다. 2. 복제한 버튼의 이름을 **ShareBtn**으로 변경합니다. **Text**에는 **Share**를 입력합니다. 3. 스크립트 에디터에서 **ScreenshotServiceTest**를 열고 **FullScreenBtn**에 연결한 이벤트를 찾습니다. `CaptureFullScre

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 물리 사용하기 [question] | PhysicsRigidbodyComponent 없이 PhysicsColliderComponent만 있는 엔티티의 물리 타입과 Static, Dynamic, Kinematic 세 가지 타입의 질량 및 충돌 특성을 비교하는 표를 출력하세요. [answer] | `PhysicsRigidbodyComponent`를 추가하지 않은 엔티티는 질량이 무한히 큰 **Static** 타입으로 취급됩니다. 물리 엔티티의 세 가지 타입(Static, Dynamic, Kinematic)의 질량 및 충돌 특성은 다음과 같습니다. | 물리 타입 | 질량 | 충돌 특성 | | :--- | :--- | :--- | | **Static** | 무한히 큼 | Dynamic 타입과 충돌할 수 있습니다. | | **Dynamic** | 물리 법칙에 따라 동작 | 물리 충돌이 가능한 다른 Entity와 충돌할 수 있습 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 메이플스토리 월드의 맵과 엔티티에 물리 법칙 적용 방법을 알아봅시다. 물리 법칙을 활용해 엔티티가 서로 충돌해 튕기거나, 포물선 운동을 하며 날아가거나, 엔티티가 서로 연결되어 움직이게 하는 등 물리를 활용한 움직임을 다양하게 만들어낼 수 있습니다. [엔티티의 충돌](/docs?postId=175)과 [충돌 그룹 만들기](/docs?postId=754)를 함께 학습하길 권장합니다. # 맵에 물리 법칙 적용하기 기본 맵은 메이플스토리 맵 구성과 이동 원칙을 따르므로 물리 법칙은 기본 적용되어 있지 않습니다.

[task] | single_turn [pass] | ⏳ 미판정 [title] | SideViewRectTile모드로 맵 만들기 [question] | 타일 위에 캐릭터가 서도록 설정하려면 타일 에디터의 어떤 옵션을 어떻게 변경해야 하나요? [answer] | 타일 위에 캐릭터가 서도록 설정하려면 타일 에디터에서 해당 타일을 **이동 불가**로 설정해야 합니다. SideViewRectTile 맵 제작 과정에서는 "타일 위에 캐릭터가 설 수 있도록 타일을 이동 불가로 설정합니다"라고 명시되어 있습니다. 이는 캐릭터의 이동 경로나 충돌 범위를 타일과 일치시켜, 캐릭터가 지형 위에 자연스럽게 서 있도록 하는 필수 설정입니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 RectTileMapComponent와 KinematicbodyComponent는 탑다운뷰 게임 제작에는 적합하지만 횡스크롤 게임 제작에는 적합하지 않습니다. SideViewRectTile 모드는 RectTileMap을 활용해 손쉽게 횡스크롤 게임을 제작할 수 있도록 횡스크롤 방식의 이동, 점프, 타일과의 충돌 등을 지원합니다. 이번 시간에는 SideViewRectTile 모드에 대해 알아보고 맵을 제작해봅시다. > **더 알아보기** > SideViewRectTile 모드는 RectTile 모드를 기반으로

[task] | single_turn [pass] | ⏳ 미판정 [title] | 스크린샷 촬영 및 공유하기 [question] | CaptureScreenRegionToPhotoLibraryAndWait 함수의 반환값으로 error와 path를 받는데, error가 ScreenshotError.Success가 아니면 어떻게 처리해야 하나요? [answer] | `CaptureScreenRegionToPhotoLibraryAndWait` 함수는 `error`와 `path` 두 값을 반환합니다. `error`가 `ScreenshotError.Success`가 아닐 경우, 스크린샷 저장에 실패한 것으로 간주해야 합니다. 참고 문서의 예시에서는 실패 시 `_UIToast:ShowMessage`를 사용하여 오류 코드와 경로를 포함한 실패 메시지를 사용자에게 표시하는 방식으로 처리하고 있습니다. 구체적인 처리 방법은 개발자의 의도에 따라 자유롭게 결정할 수 있지만, 문서에 제시된 표준적인 예시 코 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 버튼을 눌러 일부 화면 스크린샷을 촬영해 봅시다. 1. **FullScreenBtn** 버튼의 콘텍스트 메뉴에서 **Duplicate**를 클릭해 버튼을 복제한 뒤 적당한 위치로 옮깁니다. 2. 복제한 버튼의 이름을 **PartialScreenBtn**으로 변경합니다. **Text**에는 **Partial Screen Capture**를 입력합니다. 3. 스크립트 에디터에서 **ScreenshotServiceTest**를 열고 이벤트 핸들러에 `ButtonClickEvent`를 추가합니다. 이벤트 센

[task] | instruction_following [pass] | ⏳ 미판정 [title] | SideViewRectTileMap에서 캐릭터 이동 제어 [question] | KeyDownEvent 핸들러에서 2단 점프를 트리거하는 키 입력 두 가지를 코드 식별자 형태로만 나열하세요. [answer] | KeyboardKey.LeftAlt KeyboardKey.Space [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 캐릭터의 이동은 `MoveVelocity`를 통해 제어합니다. `MoveVelocity`를 통해 간단한 2단 점프 기능을 만들어봅시다. 1. MyDesk 아래에 새 스크립트 컴포넌트 DoubleJump를 만든 뒤, DefaultPlayer에 추가합니다. 2. 아래와 같이 DoubleJump에 `IsDoubleJumping` 프로퍼티와 `TryDoubleJump` 함수를 추가합니다. ```lua Property: [None] boolean IsDoubleJumping = false

[task] | instruction_following [pass] | ⏳ 미판정 [title] | SideViewRectTileMap에서 캐릭터 이동 제어 [question] | SideviewbodyComponent에서 사다리 탑승 시 캐릭터의 회전 동작을 제어하는 프로퍼티 이름과 그 boolean 값별 동작 방식을 한 문장으로 설명하세요. [answer] | SideviewbodyComponent에서 사다리 탑승 시 캐릭터의 회전 동작을 제어하는 프로퍼티는 `ApplyClimbableRotation`이며, 이 값이 `true`이면 캐릭터가 회전하거나 기울어진 사다리의 모습을 따르고 `false`이면 사다리의 기울기와 회전에 영향을 받지 않습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 DefaultPlayer에는 RigidbodyComponent, KinematicbodyComponent, SideviewbodyComponent가 모두 포함되어 있기 때문에 맵이 제작된 모드에 따라 자동으로 이동 제어의 주체가 달라집니다. 그중 SideViewRectTile 모드로 제작된 맵에서는 SideviewbodyComponent로 캐릭터의 이동을 제어합니다. 이번 시간에는 SideviewbodyComponent에 대해 알아보고 간단한 예제를 통해 활용법을 살펴봅시다. ##### 참고 API Refe

[task] | instruction_following [pass] | ⏳ 미판정 [title] | SideViewRectTileMap에서 캐릭터 이동 제어 [question] | TryDoubleJump 함수에서 2단 점프가 실행되는 조건을 논리 연산자를 포함하여 한 문장으로 설명하세요. [answer] | `IsDoubleJumping`이 `false`이고 `sb:IsOnGround()`가 `false`인 경우, 즉 캐릭터가 아직 2단 점프를 수행하지 않았고 공중에 있는 상태일 때 2단 점프가 실행됩니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 캐릭터의 이동은 `MoveVelocity`를 통해 제어합니다. `MoveVelocity`를 통해 간단한 2단 점프 기능을 만들어봅시다. 1. MyDesk 아래에 새 스크립트 컴포넌트 DoubleJump를 만든 뒤, DefaultPlayer에 추가합니다. 2. 아래와 같이 DoubleJump에 `IsDoubleJumping` 프로퍼티와 `TryDoubleJump` 함수를 추가합니다. ```lua Property: [None] boolean IsDoubleJumping = false

[task] | two_turn [pass] | ⏳ 미판정 [title] | 스크린샷 촬영 및 공유하기 [question] | 모바일에서 스크린샷을 촬영하고 공유하는 기능 구현 시 `_ScreenshotService`와 `_MobileShareService`의 기본 사용법은 어떻게 되나요? [answer] | 메이플스토리 월드에서 모바일 스크린샷 촬영 및 공유 기능을 구현하기 위해서는 `_ScreenshotService`와 `_MobileShareService`를 조합하여 사용해야 합니다. 이 기능은 PC 환경에서는 지원되지 않으며, 모바일 기기에서만 동작합니다. 기본 사용법은 다음과 같습니다. ### 1. 스크린샷 촬영 및 경로 저장 (`_ScreenshotService`) 화면 전체를 스크린샷으로 저장하려면 `_ScreenshotService:CaptureFullScreenAsFileAndWait()` 메서드를 사용합니다. 이 [followup] | `CaptureFullScreenAsFileAndWait` 호출 시 `ScreenshotError.Success`가 아닌 다른 에러 코드가 반환되면 `_UIToast`로 표시되는 구체적인 메시지와 1초에 1번만 저장 가능한 제한 사항을 어떻게 처리해야 하는지 알려주세요. [followup_answer] | 참고 문서에 근거하여 `_ScreenshotService:CaptureFullScreenAsFileAndWait()` 호출 시 에러 처리 및 저장 빈도 제한 사항에 대한 답변을 드리겠습니다. ### 1. 에러 코드 반환 시 `_UIToast` 표시 메시지 `CaptureFullScreenAsFileAndWait()`를 호출했을 때 `error` 값이 `ScreenshotError.Success`가 아닌 경우, 문서의 예제 코드에 따라 `_UIToast:ShowMessage()`를 통해 다음과 같은 형식의 메시지가 표시됩니다. [scores] | [judge_reason] | [source_doc] | 모바일에서 스크린샷 공유하는 방법을 살펴봅시다. 단, PC에서는 공유할 수 없습니다. 1. **FullScreenBtn** 버튼의 콘텍스트 메뉴에서 **Duplicate**를 클릭해 버튼을 복제한 뒤 적당한 위치로 옮깁니다. 2. 복제한 버튼의 이름을 **ShareBtn**으로 변경합니다. **Text**에는 **Share**를 입력합니다. 3. 스크립트 에디터에서 **ScreenshotServiceTest**를 열고 **FullScreenBtn**에 연결한 이벤트를 찾습니다. `CaptureFullScre

[task] | code [pass] | ⏳ 미판정 [title] | 충돌 그룹 만들기 [question] | TriggerComponent와 HitComponent가 있는 엔티티에서 HandleTriggerEnterEvent 이벤트 핸들러를 구현하여, 충돌한 엔티티의 이름이 "Player"인 경우에만 아이템 수집 로직을 수행하도록 하는 스크립트를 작성해줘. [answer] | 사용자가 요청한 로직은 `TriggerComponent`가 있는 엔티티(예: 아이템)에 스크립트를 적용하여, `HitComponent`가 있는 플레이어가 트리거 영역에 들어오는 순간(`HandleTriggerEnterEvent`)을 감지하고 충돌한 엔티티의 이름이 "Player"인지 확인하는 것입니다. 참고 문서에 따르면, `TriggerEnterEvent`를 사용하면 스크립트 내에서 조건을 직접 작성할 수 있으며, `event.TriggerBodyEntity`를 통해 충돌한 대상 엔티티에 접근할 수 있습니다. 또한, 문서의 예제 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 충돌 그룹을 만들고, 엔티티끼리의 충돌 여부를 설정하는 방법을 알아봅시다. 충돌 그룹을 사용해 특정 그룹끼리만 충돌할 수 있거나, 충돌을 무시할 수 있게 만들 수 있습니다. # 충돌 그룹 기능 충돌 그룹은 메이플스토리 월드에 있는 여러 가지 충돌체를 특정 그룹 단위로 묶고, 그룹 간에 충돌 발생을 제어할 수 있는 기능입니다. 기본 충돌 그룹은 **Default, TriggerBox, HitBox**가 있으며 크리에이터가 만든 충돌 그룹을 포함해 **최대 15개**까지 만들 수 있습니다. * **Defa

[task] | instruction_following [pass] | ⏳ 미판정 [title] | SideViewRectTileMap에서 캐릭터 이동 제어 [question] | SideviewbodyComponent의 프로퍼티 중 점프 높이에 영향을 주는 속성 두 가지를 나열하고 각각의 역할 설명을 포함하세요. [answer] | SideviewbodyComponent에서 점프 높이에 영향을 주는 속성은 `JumpSpeed`와 `DownJumpSpeed`입니다. * **JumpSpeed**: 일반 점프를 할 때 캐릭터가 위로 튀어 오르는 속력을 조절합니다. 이 값이 클수록 캐릭터가 더 높은 높이까지 점프합니다. * **DownJumpSpeed**: 아래 점프(DownJump) 기능을 사용할 때 위로 튀어 오르는 속력을 조절합니다. 이 값이 클수록 아래 점프 시에도 더 높은 높이까지 점프하게 됩니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 DefaultPlayer에는 RigidbodyComponent, KinematicbodyComponent, SideviewbodyComponent가 모두 포함되어 있기 때문에 맵이 제작된 모드에 따라 자동으로 이동 제어의 주체가 달라집니다. 그중 SideViewRectTile 모드로 제작된 맵에서는 SideviewbodyComponent로 캐릭터의 이동을 제어합니다. 이번 시간에는 SideviewbodyComponent에 대해 알아보고 간단한 예제를 통해 활용법을 살펴봅시다. ##### 참고 API Refe

[task] | single_turn [pass] | ⏳ 미판정 [title] | 스크린샷 촬영 및 공유하기 [question] | 스크린샷 촬영 후 바로 공유 버튼을 눌렀는데 실패했는데, 원인이 무엇일까요? [answer] | 스크린샷 촬영 후 바로 공유를 시도했을 때 실패하는 가장 큰 원인은 **스크린샷 파일 저장이 1초에 1번만 가능**하다는 제한 때문입니다. `CaptureFullScreenAsFileAndWait()`를 호출한 직후 파일 저장 프로세스가 완료되기 전에 `ShareBtn`의 `ShareFileAndWait()`가 실행되면, 파일 경로가 아직 유효하지 않거나 저장 작업이 충돌하여 공유가 실패할 수 있습니다. 이를 해결하기 위해 공유 버튼 이벤트 핸들러에서 파일 경로가 실제로 저장되었는지(`""`가 아닌지)를 확인하는 로직을 적용해야 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 모바일에서 스크린샷 공유하는 방법을 살펴봅시다. 단, PC에서는 공유할 수 없습니다. 1. **FullScreenBtn** 버튼의 콘텍스트 메뉴에서 **Duplicate**를 클릭해 버튼을 복제한 뒤 적당한 위치로 옮깁니다. 2. 복제한 버튼의 이름을 **ShareBtn**으로 변경합니다. **Text**에는 **Share**를 입력합니다. 3. 스크립트 에디터에서 **ScreenshotServiceTest**를 열고 **FullScreenBtn**에 연결한 이벤트를 찾습니다. `CaptureFullScre

[task] | instruction_following [pass] | ⏳ 미판정 [title] | SideViewRectTileMap에서 캐릭터 이동 제어 [question] | 제공된 코드에서 IsDoubleJumping 프로퍼티의 타입, 동기화 속성, 초기값을 각각 하나의 표로 정리하세요. [answer] | ```lua Property: [None] boolean IsDoubleJumping = false ``` 위 코드에 포함된 `IsDoubleJumping` 프로퍼티의 정보는 다음과 같습니다. | 항목 | 값 | | :--- | :--- | | 타입 | `boolean` | | 동기화 속성 | `[None]` | | 초기값 | `false` | [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 캐릭터의 이동은 `MoveVelocity`를 통해 제어합니다. `MoveVelocity`를 통해 간단한 2단 점프 기능을 만들어봅시다. 1. MyDesk 아래에 새 스크립트 컴포넌트 DoubleJump를 만든 뒤, DefaultPlayer에 추가합니다. 2. 아래와 같이 DoubleJump에 `IsDoubleJumping` 프로퍼티와 `TryDoubleJump` 함수를 추가합니다. ```lua Property: [None] boolean IsDoubleJumping = false

[task] | instruction_following [pass] | ⏳ 미판정 [title] | SideViewRectTileMap에서 캐릭터 이동 제어 [question] | SideViewRectTile 맵에서 2단 점프를 구현하기 위해 DefaultPlayer에 적용해야 하는 컴포넌트 이름을 명시하고, 해당 컴포넌트가 포함된 이유를 원문에 근거하여 설명하세요. [answer] | DefaultPlayer에 적용되어 있는 컴포넌트 이름은 **SideviewbodyComponent**입니다. DefaultPlayer에는 RigidbodyComponent, KinematicbodyComponent, SideviewbodyComponent가 모두 포함되어 있습니다. 맵이 SideViewRectTile 모드로 제작된 경우, 캐릭터 이동 제어의 주체가 자동으로 SideviewbodyComponent로 결정되기 때문입니다. 따라서 SideViewRectTile 맵에서 횡스크롤 방식의 캐릭터 이동(2단 점프 포함)을 제 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 DefaultPlayer에는 RigidbodyComponent, KinematicbodyComponent, SideviewbodyComponent가 모두 포함되어 있기 때문에 맵이 제작된 모드에 따라 자동으로 이동 제어의 주체가 달라집니다. 그중 SideViewRectTile 모드로 제작된 맵에서는 SideviewbodyComponent로 캐릭터의 이동을 제어합니다. 이번 시간에는 SideviewbodyComponent에 대해 알아보고 간단한 예제를 통해 활용법을 살펴봅시다. ##### 참고 API Refe

[task] | single_turn [pass] | ⏳ 미판정 [title] | SideViewRectTile모드로 맵 만들기 [question] | Hierarchy에서 맵 엔티티를 우클릭하는 방법과 상단 메뉴에서 타일 에디터 버튼을 길게 누르는 방법 중 SideViewRectTile 모드로 전환하는 절차는 어떻게 다른가요? [answer] | SideViewRectTile 모드로 전환하는 절차는 두 가지 모두 최종적으로 동일한 모드로 변경하지만, 진입 경로가 다릅니다. **1. Hierarchy 우클릭 메뉴를 통한 전환** 1. Hierarchy에서 현재 편집 중인 맵 엔티티를 선택합니다. 2. 선택된 엔티티에서 마우스 우클릭을 합니다. 3. 나타나는 메뉴에서 **Switch To SideViewRectTileMap**을 선택합니다. **2. 상단 메뉴 타일 에디터 버튼을 통한 전환** 1. 상단 메뉴의 타일 에디터 버튼을 길게 눌러 타일 모드 선택 메뉴를 엽니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 RectTileMapComponent와 KinematicbodyComponent는 탑다운뷰 게임 제작에는 적합하지만 횡스크롤 게임 제작에는 적합하지 않습니다. SideViewRectTile 모드는 RectTileMap을 활용해 손쉽게 횡스크롤 게임을 제작할 수 있도록 횡스크롤 방식의 이동, 점프, 타일과의 충돌 등을 지원합니다. 이번 시간에는 SideViewRectTile 모드에 대해 알아보고 맵을 제작해봅시다. > **더 알아보기** > SideViewRectTile 모드는 RectTile 모드를 기반으로

[task] | code [pass] | ⏳ 미판정 [title] | 스크린샷 촬영 및 공유하기 [question] | `_ScreenshotService:CaptureFullScreenAsFileAndWait()`와 `_MobileShareService`를 연동하여 촬영한 스크린샷을 모바일로 공유하는 스크립트를 작성해줘 [answer] | 제공된 참고 문서에는 `ScreenshotService`와 `MobileShareService`의 존재 및 연동 가능성이 언급되어 있지만, **`_MobileShareService`의 구체적인 메서드 이름(예: ShareImage, ShareFile 등)이나 파라미터 형식이 문서에 포함되어 있지 않습니다.** 따라서 요청하신 "모바일로 공유하는" 부분의 `_MobileShareService` 호출 코드는 문서에 근거가 없어 작성할 수 없습니다. 대신, 문서에 명시된 **`_ScreenshotService:CaptureFullSc [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 `ScreenshotService`를 통해 화면을 캡처하고 이미지 파일을 저장하는 방법을 살펴봅시다. 추가로 모바일에서 스크린샷을 저장한 뒤 공유하는 방법도 알아봅시다. ##### 참고 API Reference [ScreenshotService](/apiReference?postId=807) [MobileShareService](/apiReference/Services/MobileShareService) # ScreenshotService `ScreenshotService`를 활용하면 PC나 모바일에서 메

[task] | single_turn [pass] | ⏳ 미판정 [title] | SideViewRectTile모드로 맵 만들기 [question] | RectTileMapComponent와 KinematicbodyComponent는 왜 횡스크롤 게임 제작에는 적합하지 않나요? [answer] | RectTileMapComponent와 KinematicbodyComponent는 기본적으로 탑다운뷰(상단에서 내려다보는) 게임 제작을 위해 설계되어 있어, 횡스크롤 게임의 특성인 좌우 이동, 점프, 그리고 타일과의 정밀한 충돌 처리를 자연스럽게 지원하지 않기 때문입니다. 횡스크롤 게임에서는 캐릭터가 중력의 영향을 받아 바닥에 붙어 이동하거나, 벽이나 바닥 타일과 정확히 충돌하는 물리 동작이 필수적입니다. 반면, 탑다운뷰 기반의 컴포넌트는 이러한 횡스크롤 방식의 이동 로직이나 타일 충돌 처리를 직접적으로 지원하지 않습니다. 이 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 RectTileMapComponent와 KinematicbodyComponent는 탑다운뷰 게임 제작에는 적합하지만 횡스크롤 게임 제작에는 적합하지 않습니다. SideViewRectTile 모드는 RectTileMap을 활용해 손쉽게 횡스크롤 게임을 제작할 수 있도록 횡스크롤 방식의 이동, 점프, 타일과의 충돌 등을 지원합니다. 이번 시간에는 SideViewRectTile 모드에 대해 알아보고 맵을 제작해봅시다. > **더 알아보기** > SideViewRectTile 모드는 RectTile 모드를 기반으로

[task] | instruction_following [pass] | ⏳ 미판정 [title] | SideViewRectTileMap에서 캐릭터 이동 제어 [question] | CustomPlayerController 스크립트에서 PlayerControllerComponent를 비활성화하는 OnBeginPlay 함수의 코드만 출력하고, 그 이유는 주석으로만 명시하세요. [answer] | ```lua [client only] void OnBeginPlay() { -- 유저 입력을 직접 처리하기 위해 PlayerControllerComponent는 비활성화합니다. local controller = self.Entity.PlayerControllerComponent controller.Enable = false } ``` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | `MoveVelocity`를 응용하면 크리에이터가 의도하는 게임의 콘셉트에 맞게 캐릭터의 움직임을 만들어낼 수 있습니다. 이번 예제에서는 눈과 얼음이 가득한 필드라는 콘셉트에 맞게 가속도와 마찰력 개념을 추가해 미끄러운 길을 걷는 듯한 움직임을 만들어보겠습니다. 1. MyDesk 아래에 새 스크립트 컴포넌트 CustomPlayerController를 만든 뒤, DefaultPlayer에 추가합니다. 2. CustomPlayerController를 연 뒤, 아래와 같이 프로퍼티를 추가합니다. ```lua

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