← 목록

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

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

[task] | two_turn [pass] | ⏳ 미판정 [title] | 다양한 선 그리기 [question] | 플레이어의 이동 궤적을 따라 선이 생성되고 시간이 지나면 자동으로 사라지는 트레일(Trail) 효과는 어떤 구조로 구현할 수 있나요? [answer] | 플레이어의 이동 궤적을 따라 선이 생성되고 시간이 지나면 자동으로 사라지는 트레일(Trail) 효과는 `LineRendererComponent`를 활용하여 구현할 수 있습니다. 이 구조는 플레이어의 위치를 추적하여 일정 거리 이상 이동할 때마다 선의 점을 추가하고, 각 점에 수명을 부여하여 시간이 지나면 가장 오래된 점을 제거하는 방식으로 동작합니다. 구현을 위해 다음과 같은 컴포넌트와 프로퍼티, 메서드 구조를 사용해야 합니다. ### 1. 컴포넌트 구성 * **Trail 모델**: `TransformComponent`와 ` [followup] | LineRendererComponent의 점(Points)과 PointLives 테이블을 어떻게 연동하여 꼬리 부분을 지우는 로직(EraseTail)을 작성해야 하는지 코드 예시를 주세요. [followup_answer] | `LineRendererComponent`의 `Points`와 `PointLives` 테이블은 동일한 인덱스 구조를 공유해야 합니다. 즉, `LineRendererComponent.Points`의 1번 점은 `PointLives` 테이블의 1번 요소와 대응되며, 2번 점은 2번 요소와 대응됩니다. 꼬리 부분을 지우는 `EraseTail` 로직은 매 프레임마다 `PointLives` 테이블에 저장된 모든 점의 남은 수명을 `delta`(프레임 경과 시간)만큼 감소시키고, 가장 오래된 점(인덱스 1)의 수명이 0 이하가 되면 해당 점 [scores] | [judge_reason] | [source_doc] | 플레이어를 따라 다니는 모델을 만들어, 플레이어의 움직임을 따라 선이 그려지고, 사라지게 만들어봅시다. 1. Trail 모델을 생성하고, TransformComponent와 LineRendererComponent를 추가합니다. 2. 새로운 TrailDrawer 컴포넌트를 생성하고, Trail 모델에 추가합니다. ```lua [None] Vector3 PrevPos = Vector3(0,0,0) [None] number Threshold = 0.1 [None] number P

[task] | two_turn [pass] | ⏳ 미판정 [title] | 스크린샷 촬영 및 공유하기 [question] | ScreenshotService로 스크린샷을 촬영하고 저장하는 기본 원리와 주요 함수들의 차이점을 설명해 주세요. [answer] | `ScreenshotService`를 사용하면 PC(Windows, macOS)와 모바일(Android, iOS) 환경에서 메이플스토리 월드의 화면을 캡처하여 이미지 파일로 저장할 수 있습니다. 이 서비스는 단순히 화면을 찍는 역할뿐만 아니라, 촬영한 이미지를 모바일 기기에서 다른 앱으로 공유할 수 있도록 `MobileShareService`와 연동하는 기능도 제공합니다. 주요 함수는 용도와 저장 경로에 따라 두 가지 유형으로 나뉩니다. ### 1. 사진 보관함(갤러리)에 저장하는 함수 이 함수들은 사용자의 기기 기본 사진 보관 [followup] | CaptureFullScreenToPhotoLibraryAndWait()와 CaptureFullScreenAsFileAndWait()의 저장 경로가 OS별로 어떻게 다른지, 그리고 각각 어떤 상황에서 사용해야 하는지 구체적으로 알려 주세요. [followup_answer] | `CaptureFullScreenToPhotoLibraryAndWait()`와 `CaptureFullScreenAsFileAndWait()`는 모두 화면 전체를 캡처하지만, 저장되는 위치와 용도가 명확히 다릅니다. ### 1. 저장 경로 차이 (OS별) 두 함수의 저장 경로는 운영체제에 따라 다음과 같이 구분됩니다. **CaptureFullScreenToPhotoLibraryAndWait() (사진 보관함 저장용)** 이 함수는 사용자의 기본 사진 앱(갤러리)에 이미지를 저장합니다. * **Windows**: `내 PC > [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] | 사다리나 로프를 Entity에 배치할 때, 아바타가 이를 정상적으로 인지하고 오를 수 있도록 SortingLayer 관계를 어떻게 설정해야 합니까? [answer] | 메이플스토리 월드에서 아바타가 사다리나 로프를 정상적으로 인지하고 오를 수 있도록 설정하려면, `RigidbodyComponent`의 `LayerSettingType` 값을 적절히 변경해야 합니다. 이 설정은 아바타의 `AvatarRendererComponent` SortingLayer가 사다리/로프의 SortingLayer와 어떻게 상호작용하는지를 결정합니다. 주요 설정 방식은 다음과 같습니다. 1. **`All` 타입 사용 (권장, 메이플스토리 기본 이동 방식)** * `RigidbodyComponent`의 `L [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | **RigidbodyComponent의 LayerSettingType** 타입을 변경해 메이플스토리 이동을 따르게 설정합니다. 혹은 사다리/로프/발판의 SortingLayer와 RigidbodyComponent를 가진 Entity의 SortingLayer들과의 관계를 변경해 메이플스토리 이동과 다르게 설정할 수 있습니다. 아래와 같이 Layer1에 타일을 그리고, Layer1,2,3,4에 각각 사다리를 배치했을 때 각 타입에 따라 아바타와 사다리의 관계가 어떻게 변하는지 살펴보겠습니다. DefaultPlayer에는 Rigidbod

[task] | two_turn [pass] | ⏳ 미판정 [title] | 메이플 이동 개념 이해하기 [question] | RigidbodyComponent가 적용된 플레이어 캐릭터가 발판을 밟고 이동할 때, 발판과 떨어지거나 다른 발판으로 넘어가는 기본 규칙이 어떻게 작동하나요? [answer] | RigidbodyComponent가 적용된 플레이어 캐릭터의 발판 이동과 전환 규칙은 다음과 같이 작동합니다. **1. 발판 위에서 이동 (기본 규칙)** * 플레이어는 특별한 이동 변화(예: 점프)가 없는 한, 현재 밟고 있는 발판 위에서만 계속 이동합니다. * 다른 발판과 경로가 교차하더라도, 현재 발판에서 벗어나지 않는 한 다른 발판으로 넘어가지 않습니다. * **예외:** 현재 발판과 다른 발판이 겹치는 지점에서 플레이어 캐릭터가 점프를 하면, 다른 발판을 밟게 되며 이후부터는 그 발판의 이동 규칙을 따르게 됩니 [followup] | 빨간 발판과 초록 발판이 교차하는 지점에서 캐릭터가 점프하지 않고 그냥 지나가면 초록 발판으로 넘어가는지, 아니면 빨간 발판의 이동 규칙을 계속 따르는지 구체적인 상황과 예외를 알려주세요. [followup_answer] | 빨간 발판과 초록 발판이 교차하는 지점에서 캐릭터가 점프하지 않고 그냥 지나가는 경우, **빨간 발판의 이동 규칙을 계속 따릅니다.** 구체적인 상황과 예외는 다음과 같습니다. **1. 기본 규칙 (점프 없이 이동)** * 플레이어는 특별한 이동 변화가 없는 이상, 현재 밟고 있는 발판(빨간 발판) 위에서만 계속 이동합니다. * 따라서 초록 발판과 경로가 교차하는 지점을 지나가더라도, 초록 발판으로 옮겨 가며 이동하지 않습니다. * 캐릭터는 빨간 발판과의 관계를 유지한 채로 교차 지점을 통과하며, 이후에도 빨간 발판의 [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 월드 제작에 필수적인 이동 방식 중 메이플스토리 이동 방식을 따르는 RigidbodyComponent 특성을 알아봅시다. 이동은 [메이플 타일 맵 만들기](/docs?postId=747)와 함께 학습하기 권장합니다. # 메이플스토리 이동 방식 RigidbodyComponent는 메이플스토리 이동 방식처럼 이동하고자 할 때 사용합니다. 이동 방식은 지형 종류와 밀접한 연관이 있기에 TileMapComponent를 함께 사용해 메이플스토리식 이동 방식을 만들 수 있습니다. 이때 타일 위에서 이동은 Rigidbo

[task] | instruction_following [pass] | ⏳ 미판정 [title] | SideViewRectTile모드로 맵 만들기 [question] | RectTileMapComponent와 SideViewRectTile 모드의 차이를 3문장 이내로 설명하세요. [answer] | RectTileMapComponent는 탑다운뷰 게임 제작에 적합하지만 횡스크롤 게임에는 적합하지 않습니다. 반면 SideViewRectTile 모드는 RectTileMap을 기반으로 하여 횡스크롤 방식의 이동, 점프, 타일 충돌 등을 지원합니다. 따라서 횡스크롤 게임을 제작하려면 맵 타일 모드를 SideViewRectTile로 변경해야 합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 RectTileMapComponent와 KinematicbodyComponent는 탑다운뷰 게임 제작에는 적합하지만 횡스크롤 게임 제작에는 적합하지 않습니다. SideViewRectTile 모드는 RectTileMap을 활용해 손쉽게 횡스크롤 게임을 제작할 수 있도록 횡스크롤 방식의 이동, 점프, 타일과의 충돌 등을 지원합니다. 이번 시간에는 SideViewRectTile 모드에 대해 알아보고 맵을 제작해봅시다. > **더 알아보기** > SideViewRectTile 모드는 RectTile 모드를 기반으로

[task] | two_turn [pass] | ⏳ 미판정 [title] | 충돌 그룹 만들기 [question] | 충돌 그룹 매트릭스란 무엇이며, 충돌 허용 여부를 어떻게 설정하나요? [answer] | 충돌 그룹 매트릭스(Matrix)는 서로 다른 충돌 그룹 간의 충돌을 허용할지 여부를 결정하는 데 사용되는 도구입니다. 충돌 그룹을 새로 생성하면 매트릭스에 자동으로 해당 그룹이 추가되며, 가로와 세로에 배치된 그룹명을 확인하여 특정 두 그룹 간에 충돌을 허용하려면 교차점에 있는 체크 박스를 활성화하면 됩니다. 설정 방법은 다음과 같습니다. 1. **Panels** 메뉴에서 **Collision Groups**를 선택한 뒤 **Matrix** 탭을 엽니다. 2. 매트릭스에서 가로와 세로에 표시된 충돌 그룹명을 확인합니다. 3. [followup] | Player와 Monster가 서로 충돌하지 않도록 매트릭스를 설정할 때, 체크 박스 활성화 여부와 그룹 지정 순서에 주의할 점이 무엇인가요? [followup_answer] | 참고 문서에 따르면 Player와 Monster가 서로 충돌하지 않도록 설정할 때 주의할 점은 다음과 같습니다. **1. 체크 박스 활성화 여부** * **Player-Monster 교차점:** Player와 Monster 그룹이 만나는 위치의 체크 박스는 **비활성화**(끄기) 상태여야 합니다. 체크 박스가 활성화되면 두 그룹 간 충돌이 허용되므로, 충돌을 막기 위해서는 체크하지 않아야 합니다. * **다른 그룹과의 관계:** Player는 Item과, Monster는 Item과 충돌하는지 여부에 따라 해당 교차점의 체크 [scores] | [judge_reason] | [source_doc] | 충돌 그룹 매트릭스(Matrix)는 충돌 그룹끼리의 충돌을 허용할지 말지를 결정할 때 사용합니다. 충돌 그룹을 생성하면 매트릭스에 자동으로 새로운 충돌 그룹이 생성됩니다. 충돌 그룹끼리의 충돌 허용 여부는 체크 박스를 선택해서 간단하게 설정할 수 있습니다. 매트릭스에 적힌 충돌 그룹끼리의 관계를 확인하고 충돌을 허용하고 싶다면 체크 박스를 활성화합니다. 1. **Panels - Collision Groups - Matrix**를 선택합니다. 2. 가로 세로의 그룹명을 확인한 뒤 충돌을 허용하면 체크 박스를 활성화합니다.

[task] | code [pass] | ⏳ 미판정 [title] | 메이플 이동 개념 이해하기 [question] | RigidbodyComponent의 LayerSettingType을 'Climbable'로 변경해 아바타가 사다리에서 내려와 발판을 밟더라도 마지막으로 탄 사다리의 SortingLayer 값을 유지하도록 하는 스크립트를 작성해줘 [answer] | RigidbodyComponent의 `LayerSettingType`을 `Climbable`로 설정하면, 아바타가 마지막으로 탔던 사다리나 로프의 `SortingLayer` 값이 기준이 됩니다. 따라서 아바타가 사다리에서 내려와 일반 발판을 밟더라도, 그 전까지 타고 있던 사다리의 `SortingLayer` 값을 그대로 유지합니다. `RigidbodyComponent`에 직접 접근하여 `LayerSettingType` 프로퍼티를 변경하는 mLua 스크립트 예제는 다음과 같습니다. ```lua Property: [None] Rig [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | **RigidbodyComponent의 LayerSettingType** 타입을 변경해 메이플스토리 이동을 따르게 설정합니다. 혹은 사다리/로프/발판의 SortingLayer와 RigidbodyComponent를 가진 Entity의 SortingLayer들과의 관계를 변경해 메이플스토리 이동과 다르게 설정할 수 있습니다. 아래와 같이 Layer1에 타일을 그리고, Layer1,2,3,4에 각각 사다리를 배치했을 때 각 타입에 따라 아바타와 사다리의 관계가 어떻게 변하는지 살펴보겠습니다. DefaultPlayer에는 Rigidbod

[task] | two_turn [pass] | ⏳ 미판정 [title] | 충돌 그룹 만들기 [question] | Coin 모델에 ItemComponent를 추가하여 PlayerComponent와 부딪혔을 때만 코인이 사라지게 하려면 어떤 스크립트를 작성해야 하나요? [answer] | Coin 모델에 ItemComponent 스크립트를 추가하고, `HandleTriggerEnterEvent` 이벤트 핸들러에서 `TriggerBodyEntity`의 이름이 `PlayerComponent`인지 확인하여 해당 조건일 때만 엔티티를 소거하면 됩니다. 참고로 충돌 그룹 설정을 통해 Player와 Item은 충돌을 허용하고, Monster와 Item은 충돌을 허용하지 않도록 매트릭스를 미리 구성해 두어야 이 로직이 정상적으로 작동합니다. ```lua Event Handler: [server only] [self] Hand [followup] | HandleTriggerEnterEvent 이벤트 핸들러 내부에서 event.TriggerBodyEntity를 확인하여 Player인지 판별하는 로직과 self.Entity:Destroy() 호출을 포함한 전체 코드 예제를 보여주세요. [followup_answer] | 참고 문서의 활용 예제 6번에 따르면, Coin 모델의 ItemComponent에서 PlayerComponent와 부딪혔을 때만 코인이 사라지도록 작성하는 스크립트는 다음과 같습니다. 참고로 문서에 포함된 예제 코드 본문에는 `TriggerBodyEntity`의 이름 확인 로직이 명시적으로 작성되어 있지 않으며, 단순히 `self.Entity:Destroy()`만 호출하고 있습니다. 하지만 질문에서 요구하는 "Player인지 판별하는 로직"을 포함하려면, 실제 mLua 예제에서 볼 수 있듯이 `TriggerBodyEntity.Na [scores] | [judge_reason] | [source_doc] | 충돌 그룹 매트릭스(Matrix)는 충돌 그룹끼리의 충돌을 허용할지 말지를 결정할 때 사용합니다. 충돌 그룹을 생성하면 매트릭스에 자동으로 새로운 충돌 그룹이 생성됩니다. 충돌 그룹끼리의 충돌 허용 여부는 체크 박스를 선택해서 간단하게 설정할 수 있습니다. 매트릭스에 적힌 충돌 그룹끼리의 관계를 확인하고 충돌을 허용하고 싶다면 체크 박스를 활성화합니다. 1. **Panels - Collision Groups - Matrix**를 선택합니다. 2. 가로 세로의 그룹명을 확인한 뒤 충돌을 허용하면 체크 박스를 활성화합니다.

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 스크린샷 촬영 및 공유하기 [question] | FullScreenBtn에서 ShareBtn으로 스크린샷 저장 및 공유 기능을 구현하는 스크립트 코드만 출력하고, 설명은 주석으로 작성하세요. [answer] | ```lua Property: [None] string lastPath = "" Event Handler: [client only] [entity: FullScreenBtn (/ui/DefaultGroup/FullScreenBtn)] HandleButtonClickEvent (ButtonClickEvent event) { --------------- Native Event Sender Info ---------------- -- Sender: ButtonComponent -- Space: Client ------------ [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 모바일에서 스크린샷 공유하는 방법을 살펴봅시다. 단, PC에서는 공유할 수 없습니다. 1. **FullScreenBtn** 버튼의 콘텍스트 메뉴에서 **Duplicate**를 클릭해 버튼을 복제한 뒤 적당한 위치로 옮깁니다. 2. 복제한 버튼의 이름을 **ShareBtn**으로 변경합니다. **Text**에는 **Share**를 입력합니다. 3. 스크립트 에디터에서 **ScreenshotServiceTest**를 열고 **FullScreenBtn**에 연결한 이벤트를 찾습니다. `CaptureFullScre

[task] | code [pass] | ⏳ 미판정 [title] | RectTileMap에서 캐릭터 이동 제어 [question] | RectTileEnterEvent 이벤트 핸들러와 self.Entity.TransformComponent.Position을 활용하여, "Buff" 타일에 진입할 때마다 해당 좌표에 "SpeedUp"이라는 이름의 Entity를 _SpawnService:SpawnByModelId로 생성하고 2초 후 _TimerService:SetTimerOnce로 제거하는 SpeedBuffVisual 스크립트를 작성해줘 [answer] | `RectTileEnterEvent` 이벤트 핸들러와 `self.Entity.TransformComponent.Position`을 활용하여 요청하신 `SpeedBuffVisual` 스크립트를 작성합니다. 참고 문서와 실제 mLua 예제에 기반한 작성 원칙을 적용했습니다. 1. **이벤트 핸들러**: `HandleRectTileEnterEvent(RectTileEnterEvent event)`를 사용합니다. 2. **좌표 접근**: `self.Entity.TransformComponent.Position`을 사용하여 현재 위치를 가 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 밟으면 속도가 증가하는 타일을 만들어 봅시다. 1. 타일맵 모드를 RectTile로 설정합니다. 2. 타일 셋 팔레트 좌측 상단의 **[+]** 버튼을 누른 뒤, **Create TileSet From Template - BnB** 타일 셋을 선택합니다. 3. 타일 셋의 이름을 **BnB TileSet**으로 설정합니다. 4. 타일 셋 팔레트 우측 상단의 편집 버튼을 눌러 타일 속성 편집 모드로 들어갑니다. 5. 편집 대상에서 **이동 가능 여부**를

[task] | single_turn [pass] | ⏳ 미판정 [title] | 스크린샷 촬영 및 공유하기 [question] | PC에서 스크린샷 공유 기능을 테스트하려고 했는데 왜 작동하지 않나요? [answer] | PC에서는 모바일 스크린샷 공유 기능이 지원되지 않기 때문에 작동하지 않습니다. 해당 기능은 모바일 환경에서만 사용할 수 있습니다. [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] | SideViewRectTile모드로 맵 만들기 [question] | SideViewRectTile 모드로 전환하는 두 가지 방법을 표로 정리해서 출력하세요. [answer] | SideViewRectTile 모드로 전환하는 두 가지 방법은 다음과 같습니다. | 방법 | 절차 | | :--- | :--- | | **Hierarchy 메뉴 이용** | 1. Hierarchy에서 현재 편집 중인 맵 엔티티를 선택합니다.<br>2. 우클릭 메뉴에서 **Switch To SideViewRectTileMap**을 선택합니다. | | **타일 에디터 메뉴 이용** | 1. 상단 메뉴의 타일 에디터 버튼을 길게 눌러 타일 모드 선택 메뉴를 엽니다.<br>2. 메뉴에서 **SideViewRectTile**을 선택합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 RectTileMapComponent와 KinematicbodyComponent는 탑다운뷰 게임 제작에는 적합하지만 횡스크롤 게임 제작에는 적합하지 않습니다. SideViewRectTile 모드는 RectTileMap을 활용해 손쉽게 횡스크롤 게임을 제작할 수 있도록 횡스크롤 방식의 이동, 점프, 타일과의 충돌 등을 지원합니다. 이번 시간에는 SideViewRectTile 모드에 대해 알아보고 맵을 제작해봅시다. > **더 알아보기** > SideViewRectTile 모드는 RectTile 모드를 기반으로

[task] | code [pass] | ⏳ 미판정 [title] | 메이플 이동 개념 이해하기 [question] | RigidbodyComponent의 LayerSettingType을 'None'으로 설정하여 크리에이터가 지정한 Entity의 SortingLayer(예: Default)를 고정으로 유지하게 하는 스크립트를 작성해줘 [answer] | RigidbodyComponent의 `LayerSettingType`을 `None`으로 설정하면, 아바타가 사다리나 로프를 타더라도 해당 사다리의 SortingLayer를 따르지 않고, RigidbodyComponent를 가진 Entity 자체에 설정된 SortingLayer(예: Default)를 유지합니다. 참고 문서에는 `LayerSettingType`을 변경하는 구체적인 mLua 메서드나 프로퍼티 이름이 명시되어 있지 않아, 해당 값을 스크립트 코드로 직접 변경하는 예시를 제공하기 어렵습니다. 대신, `LayerSettin [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | **RigidbodyComponent의 LayerSettingType** 타입을 변경해 메이플스토리 이동을 따르게 설정합니다. 혹은 사다리/로프/발판의 SortingLayer와 RigidbodyComponent를 가진 Entity의 SortingLayer들과의 관계를 변경해 메이플스토리 이동과 다르게 설정할 수 있습니다. 아래와 같이 Layer1에 타일을 그리고, Layer1,2,3,4에 각각 사다리를 배치했을 때 각 타입에 따라 아바타와 사다리의 관계가 어떻게 변하는지 살펴보겠습니다. DefaultPlayer에는 Rigidbod

[task] | two_turn [pass] | ⏳ 미판정 [title] | 메이플 이동 개념 이해하기 [question] | 발판과 사다리를 동시에 사용 가능한 맵을 만들 때, 특정 발판에서만 아바타가 배경으로 숨겨지도록 설정하려면 어떤 SortingLayer 조합이 필요할까요? [answer] | 제공된 참고 문서에는 `RigidbodyComponent`의 `LayerSettingType`이 `All`, `Climbable`, `None`일 때 SortingLayer가 어떻게 결정되는지 설명하고 있습니다. 하지만 **"특정 발판에서만 아바타가 배경으로 숨겨지도록 설정하는 구체적인 SortingLayer 조합"** 또는 발판별 개별 설정 방법을 명시적으로 다루지 않습니다. 문서에 따르면 아바타의 SortingLayer는 다음과 같은 규칙을 따릅니다: 1. **`All` (메이플스토리 이동 따름)**: * 발판을 [followup] | LayerSettingType이 All인 상태에서, 발판의 SortingLayer를 1로, 사다리의 SortingLayer를 3으로 설정했을 때 발판을 밟고 있는 동안과 사다리를 타는 동안의 렌더링 순서를 코드 예시와 함께 설명해 주세요. [followup_answer] | `LayerSettingType`이 `All`일 때, 아바타(`AvatarRendererComponent`)의 SortingLayer는 현재 상호작용 중인 객체(발판 또는 사다리)의 SortingLayer 값을 그대로 따릅니다. 따라서 주어진 조건(발판 SortingLayer: 1, 사다리 SortingLayer: 3)에서 렌더링 순서는 다음과 같이 결정됩니다. 1. **발판을 밟고 있을 때**: * 아바타의 SortingLayer = **1** (발판의 SortingLayer) * 아바타는 Sorting [scores] | [judge_reason] | [source_doc] | **RigidbodyComponent의 LayerSettingType** 타입을 변경해 메이플스토리 이동을 따르게 설정합니다. 혹은 사다리/로프/발판의 SortingLayer와 RigidbodyComponent를 가진 Entity의 SortingLayer들과의 관계를 변경해 메이플스토리 이동과 다르게 설정할 수 있습니다. 아래와 같이 Layer1에 타일을 그리고, Layer1,2,3,4에 각각 사다리를 배치했을 때 각 타입에 따라 아바타와 사다리의 관계가 어떻게 변하는지 살펴보겠습니다. DefaultPlayer에는 Rigidbod

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 스크린샷 촬영 및 공유하기 [question] | 버튼 생성부터 로직 연결까지의 과정을 표로 정리하되, '단계', '대상', '동작/설정값' 세 컬럼만 사용하세요. [answer] | | 단계 | 대상 | 동작/설정값 | | :--- | :--- | :--- | | 1 | UI 에디터 | 새 버튼 **FullScreenBtn** 생성 | | 2 | **FullScreenBtn** | **TextComponent** 추가 및 프로퍼티 설정:<br>- Text: `Full Screen Capture`<br>- FontColor: `#ffffff` | | 3 | Workspace - MyDesk | 콘텍스트 메뉴에서 **Create Scripts - Create Logic** 클릭 후 로직 이름 변경: **Screen [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] | instruction_following [pass] | ⏳ 미판정 [title] | 스크린샷 촬영 및 공유하기 [question] | 일부 화면 촬영 시 유저 스크린 해상도 변화에 따라 발생할 수 있는 문제점을 1문장 이내로 요약하고, 이를 해결하기 위해 고려해야 할 사항을 1문장으로 제시하세요. [answer] | 일부 화면 촬영 시 유저의 스크린 해상도에 따라 촬영되는 화면의 위치가 달라질 수 있으므로, 이 점을 고려하여 기능을 사용해야 합니다. [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] | CaptureFullScreenToPhotoLibraryAndWait와 CaptureFullScreenAsFileAndWait의 차이점이 무엇이며, 각각 어떤 상황에서 사용해야 하나요? [answer] | `CaptureFullScreenToPhotoLibraryAndWait`와 `CaptureFullScreenAsFileAndWait`는 모두 전체 화면을 캡처하는 기능이지만, 저장 경로와 활용 목적이 다릅니다. **1. CaptureFullScreenToPhotoLibraryAndWait** * **용도:** 캡처한 이미지를 **사진 보관함(갤러리)**에 직접 저장합니다. * **저장 경로:** * **Windows:** 내 PC > 사진 > MapleStory Worlds > 월드 ID > fileName.pn [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 `ScreenshotService`를 통해 화면을 캡처하고 이미지 파일을 저장하는 방법을 살펴봅시다. 추가로 모바일에서 스크린샷을 저장한 뒤 공유하는 방법도 알아봅시다. ##### 참고 API Reference [ScreenshotService](/apiReference?postId=807) [MobileShareService](/apiReference/Services/MobileShareService) # ScreenshotService `ScreenshotService`를 활용하면 PC나 모바일에서 메

[task] | code [pass] | ⏳ 미판정 [title] | 충돌 그룹 만들기 [question] | TriggerComponent를 가진 엔티티에서 HandleTriggerExitEvent 이벤트 핸들러를 구현하여, 플레이어가 트리거 영역을 벗어날 때 log로 "Player left the area"를 출력하는 스크립트를 작성해줘. [answer] | TriggerComponent가 있는 엔티티에 `HandleTriggerExitEvent` 이벤트 핸들러를 구현하여, 트리거 영역을 벗어난 엔티티가 플레이어일 때 `log`를 출력하는 스크립트는 다음과 같습니다. 플레이어 여부 확인을 위해 `PlayerComponent`의 존재 여부를 체크하는 로직을 포함했습니다. ```lua Event Handler: [server only] [self] HandleTriggerExitEvent(TriggerExitEvent event) { -- Parameters local T [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 충돌 그룹을 만들고, 엔티티끼리의 충돌 여부를 설정하는 방법을 알아봅시다. 충돌 그룹을 사용해 특정 그룹끼리만 충돌할 수 있거나, 충돌을 무시할 수 있게 만들 수 있습니다. # 충돌 그룹 기능 충돌 그룹은 메이플스토리 월드에 있는 여러 가지 충돌체를 특정 그룹 단위로 묶고, 그룹 간에 충돌 발생을 제어할 수 있는 기능입니다. 기본 충돌 그룹은 **Default, TriggerBox, HitBox**가 있으며 크리에이터가 만든 충돌 그룹을 포함해 **최대 15개**까지 만들 수 있습니다. * **Defa

[task] | two_turn [pass] | ⏳ 미판정 [title] | 충돌 그룹 만들기 [question] | 플레이어 캐릭터가 동전(Item)과는 충돌하되 몬스터(Monster)와는 충돌하지 않도록 하려면, 각 컴포넌트의 CollisionGroup은 어떻게 지정해야 하나요? [answer] | 충돌 그룹 매트릭스(Matrix)를 활용하여 플레이어와 동전은 충돌을 허용하고, 플레이어와 몬스터는 충돌을 차단하는 설정을 해야 합니다. 이를 위한 컴포넌트별 `CollisionGroup` 지정 방법은 다음과 같습니다. 1. **Player (플레이어 캐릭터)** * `DefaultPlayer` 에티티에서 `TriggerComponent` 와 `PlayerHit` 컴포넌트의 `CollisionGroup` 을 **Player** 로 지정합니다. 2. **Monster (몬스터)** * Monster 모델에 [followup] | Monster 모델의 TriggerComponent와 HitComponent의 CollisionGroup을 변경할 때, Preset List에서 모델을 가져오는 과정과 함께 구체적인 설정 방법을 알려주세요. [followup_answer] | Monster 모델의 `TriggerComponent` 와 `HitComponent` 의 `CollisionGroup` 을 설정하기 위해서는 먼저 Preset List 에서 모델을 워크스페이스로 가져와야 합니다. 구체적인 과정은 다음과 같습니다. 1. **Preset List - Monster** 에서 원하는 모델을 선택합니다. 2. 선택한 모델에 대해 콘텍스트 메뉴를 열고 **Add to Workspace** 를 눌러 워크스페이스에 추가합니다. 3. 워크스페이스에 추가된 Monster 모델에서 **TriggerComponent* [scores] | [judge_reason] | [source_doc] | 충돌 그룹 매트릭스(Matrix)는 충돌 그룹끼리의 충돌을 허용할지 말지를 결정할 때 사용합니다. 충돌 그룹을 생성하면 매트릭스에 자동으로 새로운 충돌 그룹이 생성됩니다. 충돌 그룹끼리의 충돌 허용 여부는 체크 박스를 선택해서 간단하게 설정할 수 있습니다. 매트릭스에 적힌 충돌 그룹끼리의 관계를 확인하고 충돌을 허용하고 싶다면 체크 박스를 활성화합니다. 1. **Panels - Collision Groups - Matrix**를 선택합니다. 2. 가로 세로의 그룹명을 확인한 뒤 충돌을 허용하면 체크 박스를 활성화합니다.

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 스크린샷 촬영 및 공유하기 [question] | `PartialScreenBtn` 이벤트 핸들러 코드에서 `startPixel`과 `endPixel` 좌표 값을 추출하여 2행 3열의 표(좌표 변수명, X값, Y값)로 정리하세요. [answer] | 제공된 코드에서 `startPixel`과 `endPixel`의 좌표 값을 추출하여 요청하신 2행 3열 표로 정리하면 다음과 같습니다. | 좌표 변수명 | X값 | Y값 | | :--- | :--- | :--- | | startPixel | 600 | 0 | | endPixel | 1100 | 700 | [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] | 스크린샷 촬영 함수 이름 뒤에 Wait가 붙어 있는 이유는 무엇이며, 이 함수 호출 시 주의해야 할 점은 무엇인가요? [answer] | `ScreenshotService`의 스크린샷 촬영 함수 이름 뒤에 `Wait`가 붙어 있는 이유는 해당 함수들이 비동기(Aynchronous) 처리를 수행하고, 촬영 및 저장 작업이 완료될 때까지 코드의 실행을 일시 정지(Blocking)하기 위함입니다. 즉, `CaptureFullScreenToPhotoLibraryAndWait()`와 같은 함수를 호출하면 스크립트는 캡처가 끝날 때까지 대기 상태가 됩니다. 이 함수 호출 시 주의해야 할 점은 다음과 같습니다. 1. **메인 스레드 블로킹**: `Wait` 함수는 현재 실행 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 `ScreenshotService`를 통해 화면을 캡처하고 이미지 파일을 저장하는 방법을 살펴봅시다. 추가로 모바일에서 스크린샷을 저장한 뒤 공유하는 방법도 알아봅시다. ##### 참고 API Reference [ScreenshotService](/apiReference?postId=807) [MobileShareService](/apiReference/Services/MobileShareService) # ScreenshotService `ScreenshotService`를 활용하면 PC나 모바일에서 메

[task] | code [pass] | ⏳ 미판정 [title] | 스크린샷 촬영 및 공유하기 [question] | `_ScreenshotService:CaptureScreenRegionToPhotoLibraryAndWait()`를 사용하여 지정된 영역의 스크린샷을 사진 보관함에 저장하는 스크립트를 작성해줘 [answer] | `_ScreenshotService:CaptureScreenRegionToPhotoLibraryAndWait()` 함수는 스크린의 특정 영역을 캡처하여 사진 보관함(Windows/macOS의 MapleStory Worlds 폴더, Android의 갤러리, iOS의 사진 앱)에 저장합니다. 참고 문서에 제시된 API 시그니처나 파라미터 목록(예: 캡처할 영역의 좌표/크기 등)이 구체적으로 명시되어 있지 않아, 정확한 인자 전달 방식을 알 수 없습니다. 문서에는 해당 함수가 존재하며 "사진 보관함에 스크린샷 저장" 용도로 사용된다는 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 `ScreenshotService`를 통해 화면을 캡처하고 이미지 파일을 저장하는 방법을 살펴봅시다. 추가로 모바일에서 스크린샷을 저장한 뒤 공유하는 방법도 알아봅시다. ##### 참고 API Reference [ScreenshotService](/apiReference?postId=807) [MobileShareService](/apiReference/Services/MobileShareService) # ScreenshotService `ScreenshotService`를 활용하면 PC나 모바일에서 메

[task] | instruction_following [pass] | ⏳ 미판정 [title] | SideViewRectTile모드로 맵 만들기 [question] | SideViewRectTile 맵 제작의 1단계부터 9단계까지를 단계별 번호 목록으로 나열하세요. [answer] | SideViewRectTile 맵 제작 단계는 다음과 같습니다. 1. 타일 모드를 **SideViewRectTile**로 변경합니다. 2. 준비한 4개의 이미지를 `Resource Storage - 내 리소스 - etc`에 추가합니다. 3. `Preset List - Background`에서 `back-4`를 검색하여 선택하고 맵의 배경을 변경합니다. 4. 타일 셋 팔레트 좌측 상단의 `+` 버튼을 누르고 `Create Empty TileSet`을 선택한 뒤, 새 타일 셋의 이름을 `TileSet`으로 입력합니다. 5. 타일 셋 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 RectTileMapComponent와 KinematicbodyComponent는 탑다운뷰 게임 제작에는 적합하지만 횡스크롤 게임 제작에는 적합하지 않습니다. SideViewRectTile 모드는 RectTileMap을 활용해 손쉽게 횡스크롤 게임을 제작할 수 있도록 횡스크롤 방식의 이동, 점프, 타일과의 충돌 등을 지원합니다. 이번 시간에는 SideViewRectTile 모드에 대해 알아보고 맵을 제작해봅시다. > **더 알아보기** > SideViewRectTile 모드는 RectTile 모드를 기반으로

[task] | single_turn [pass] | ⏳ 미판정 [title] | 스크린샷 촬영 및 공유하기 [question] | _ScreenshotService의 CaptureFullScreenToPhotoLibraryAndWait 메서드에서 두 번째 인자로 true를 전달하면 어떤 동작 차이가 발생하나요? [answer] | 제공된 참고 문서에는 `_ScreenshotService:CaptureFullScreenToPhotoLibraryAndWait("FullScreen", true)` 호출 예시만 포함되어 있으며, 두 번째 인자 `true`가 의미하는 구체적인 동작 차이(예: 동기/비동기, 압축 여부, 저장 위치 등)에 대한 설명은 없습니다. 따라서 주어진 문서 범위 내에서는 두 번째 인자가 `true`일 때의 동작 차이를 알 수 없습니다. [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] | instruction_following [pass] | ⏳ 미판정 [title] | 스크린샷 촬영 및 공유하기 [question] | `_ScreenshotService:CaptureScreenRegionToPhotoLibraryAndWait` 함수 호출 시 전달되는 인자 3개와 반환 값 2개를 나열하되, 반환 값이 성공일 때(`ScreenshotError.Success`) 수행되는 동작을 1문장으로 설명하세요. [answer] | `_ScreenshotService:CaptureScreenRegionToPhotoLibraryAndWait` 함수에 전달되는 인자 3개는 다음과 같습니다. 1. `"PartialScreen"` (string): 저장될 파일의 이름 2. `startPixel` (Vector2): 촬영 시작 좌표 3. `endPixel` (Vector2): 촬영 종료 좌표 반환 값 2개는 다음과 같습니다. 1. `error`: `ScreenshotError` 타입의 결과 상태 2. `path`: 촬영된 이미지가 저장된 경로 반환 값이 성공일 [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] | `_ScreenshotService:CaptureFullScreenToPhotoLibraryAndWait()`를 호출하여 전체 화면을 사진 보관함에 저장하는 스크립트를 작성해줘 [answer] | `_ScreenshotService:CaptureFullScreenToPhotoLibraryAndWait()`를 호출하면 현재 보이는 전체 화면을 캡처하여 플랫폼에 따라 지정된 사진 보관함 경로에 저장합니다. 이 함수는 비동기적으로 동작하므로, 실행이 완료될 때까지 대기하는 로직이 필요합니다. 아래는 스크립트 컴포넌트 형식에 맞게 작성된 예제입니다. `OnBeginPlay` 생명주기 메서드 내에서 캡처를 시작하고, 완료 후 로그를 출력하도록 구성했습니다. ```lua Property: [None] number CaptureDel [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] | UI 에디터에서 FullScreenBtn에 TextComponent를 추가할 때 FontColor를 #ffffff로 설정하는 것과 스크립트 코드를 통해 변경하는 것 중 어떤 방식이 권장되나요? [answer] | 제시된 참고 문서에는 UI 에디터에서 `TextComponent`의 `FontColor`를 직접 설정하는 방법(값: `#ffffff`)만 설명되어 있습니다. 스크립트 코드를 통해 `FontColor`를 변경하는 API나 방법에 대한 정보는 문서에 포함되어 있지 않습니다. 따라서 문서에 근거할 때, **UI 에디터에서 직접 설정하는 방식**이 명시적으로 안내된 유일한 방법입니다. 코드 기반 변경 방식에 대한 권장 여부나 API 존재 여부는 확인할 수 없습니다. [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] | `_ScreenshotService:CaptureFullScreenAsFileAndWait()` 호출 시 `error` 변수가 `ScreenshotError.Success`가 아니라면 어떤 처리를 해야 하나요? [answer] | `_ScreenshotService:CaptureFullScreenAsFileAndWait()` 호출 시 `error` 변수가 `ScreenshotError.Success`가 아니라면, 스크린샷 저장에 실패한 것입니다. 이 경우 사용자에게 실패를 알리는 토스트 메시지를 표시하는 것이 권장되는 처리 방식입니다. 참고 문서의 예시 코드를 보면, 실패 시 `_UIToast:ShowMessage()` 함수를 호출하여 에러 코드와 경로 정보를 함께 보여주는 방식으로 처리하고 있습니다. ```lua local error, path = _S [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 모바일에서 스크린샷 공유하는 방법을 살펴봅시다. 단, PC에서는 공유할 수 없습니다. 1. **FullScreenBtn** 버튼의 콘텍스트 메뉴에서 **Duplicate**를 클릭해 버튼을 복제한 뒤 적당한 위치로 옮깁니다. 2. 복제한 버튼의 이름을 **ShareBtn**으로 변경합니다. **Text**에는 **Share**를 입력합니다. 3. 스크립트 에디터에서 **ScreenshotServiceTest**를 열고 **FullScreenBtn**에 연결한 이벤트를 찾습니다. `CaptureFullScre

[task] | single_turn [pass] | ⏳ 미판정 [title] | 스크린샷 촬영 및 공유하기 [question] | 스크립트에서 self._T.lastPath에 경로를 저장할 때 _T라는 테이블이 선언되어 있지 않으면 어떤 오류가 발생하며 어떻게 해결해야 하나요? [answer] | 제공된 참고 문서에는 `_T` 테이블에 대한 선언 방법, 사용 예시, 또는 `self._T.lastPath`가 nil(미선언)일 때 발생하는 구체적인 오류 메시지나 해결 방법이 명시되어 있지 않습니다. 문서에서는 단순히 `self._T.lastPath = path`라는 코드가 동작하는 것으로만 제시하고 있으며, `_T`라는 객체가 어떻게 초기화되는지(mLua의 특정 내장 객체인지, 아니면 Property로 선언해야 하는지)에 대한 설명이 포함되어 있지 않습니다. 따라서 문서 근거만으로는 `_T`가 선언되지 않았을 때의 정확한 오 [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] | code [pass] | ⏳ 미판정 [title] | SideViewRectTile모드로 맵 만들기 [question] | SideViewRectTile 모드의 맵 엔티티에 RectTileMapComponent와 KinematicBodyComponent를 적용하고, OnUpdate에서 캐릭터의 좌우 이동과 점프 입력을 처리하여 SideViewRectTileMap의 물리 규칙에 따라 캐릭터가 타일 위를 이동하고 충돌하는 스크립트를 작성해줘. [answer] | 제공된 참고 문서에는 `SideViewRectTile` 모드를 활성화하는 방법(우클릭 메뉴 또는 상단 메뉴)과 맵을 꾸미는 절차(타일셋 생성, 이미지 추가, 이동 불가 설정 등)만 설명되어 있습니다. 문서에는 `SideViewRectTileMap`에서 캐릭터의 좌우 이동, 점프 입력 처리, 그리고 타일 충돌 물리 규칙을 제어하는 구체적인 mLua 스크립트 코드나 관련 API(예: `Jump()`, `MoveLeft()`, `MoveRight()` 등)가 포함되어 있지 않습니다. 문서의 "더 알아보기" 섹션에서 횡스크롤 이동 제어에 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 RectTileMapComponent와 KinematicbodyComponent는 탑다운뷰 게임 제작에는 적합하지만 횡스크롤 게임 제작에는 적합하지 않습니다. SideViewRectTile 모드는 RectTileMap을 활용해 손쉽게 횡스크롤 게임을 제작할 수 있도록 횡스크롤 방식의 이동, 점프, 타일과의 충돌 등을 지원합니다. 이번 시간에는 SideViewRectTile 모드에 대해 알아보고 맵을 제작해봅시다. > **더 알아보기** > SideViewRectTile 모드는 RectTile 모드를 기반으로

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