← 목록

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

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

[task] | code [pass] | ⏳ 미판정 [title] | 메이플 타일맵 만들기 [question] | TileMapComponent 를 사용하여 맵의 특정 타일 색상과 형태를 설정하는 스크립트를 작성해줘 [answer] | 참고 문서에 포함된 정보에 따르면, `TileMapComponent`는 `TileMap` 엔티티에 속하며, 이를 통해 MapleTile의 **색상(Color)** 등을 변경할 수 있습니다. 다만, 참고 문서에는 `TileMapComponent`의 **형태(Shape/Type)**를 설정하는 구체적인 프로퍼티 이름이나 메서드가 명시되어 있지 않습니다. 문서에 나와 있는 구체적인 예제는 `Color` 프로퍼티를 수정하는 것뿐입니다. 따라서 문서에 근거하여 **색상(Color)**만 설정하는 스크립트를 작성해 드립니다. 형태 설정에 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 메이플스토리 월드에서는 여러 가지 지형과 이동 방식을 제공하고 있습니다. 이번 시간에는 가장 기본이 되는 지형인 메이플스토리 형태의 타일 맵에 대해 알아보겠습니다. 메이플스토리 형태의 지형은 메이플스토리 형태의 이동과 매우 밀접한 연관이 있습니다. > **더 알아보기** > 메이플스토리 형태의 이동에 대해서는 [메이플 이동 개념 이해하기](/docs?postId=750)를 참고해주세요. # 메이플스토리 형태의 지형 메이플스토리 형태의 지형은 타일 에디터에서 MapleTile 모드를 선택한 후 만들 수

[task] | code [pass] | ⏳ 미판정 [title] | TweenLogic을 활용해 엔티티 제어하기 [question] | _TweenLogic:PlayTween() 과 EaseType.BounceEaseOut 을 활용하여 공이 바닥(y=0.3)까지 통통 튀며 내려오는 스크립트를 작성해줘 [answer] | `_TweenLogic:PlayTween()`과 `EaseType.BounceEaseOut`을 사용하여 Y 좌표가 0.3까지 통통 튀며 내려오는 로직은 `OnBeginPlay`에서 초기 위치를 저장하고, `PlayTween`으로 보간된 값을 프로퍼티에 저장한 후, `OnUpdate`에서 해당 프로퍼티 값을 `TransformComponent.Position`에 매번 적용하는 방식으로 구현합니다. 아래는 요청하신 기능을 수행하는 mLua 스크립트입니다. ```lua Property: [None] number posX = 0 [No [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 높은 곳에서 공을 던졌을 때 공이 앞으로 나아감과 동시에 통통 튀게 만들어 봅시다. 1. 새로운 Model_Ball 모델을 생성합니다. TransformComponent, SpriteRendererComponent를 추가하고, 아래의 Ruid를 사용합니다. * SpriteRuid: d4dddd1f07d445939433f70cd1aa82fa 2. 새로운 BallComponent 생성하고, Model Ball에 추가합니다. 3. 공이 돌면서 날아가게 만들기 위해 `PlayTween()`과 `RotateTo()`를

[task] | single_turn [pass] | ⏳ 미판정 [title] | RectTileMap에서 캐릭터 이동 제어 [question] | KinematicbodyComponent에서 Acceleration 프로퍼티가 더 이상 사용되지 않는다고 되어 있는데, 현재 이동 속력을 조절하려면 어떤 프로퍼티를 설정해야 하나요? [answer] | `Acceleration` 프로퍼티는 더 이상 사용되지 않으며, 현재 이동 속력을 조절하려면 **`SpeedFactor`** 프로퍼티를 설정해야 합니다. `SpeedFactor`는 캐릭터가 이동할 때 X축과 Y축 속력에 곱해지는 가중치로, 이 값을 키우면 이동 속력이 빨라집니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 RectTileMap에서는 KinematicbodyComponent로 캐릭터의 이동을 제어합니다. 크리에이터는 KinematicbodyComponent를 통해 캐릭터를 2차원 평면에서 자유롭게 움직이고 점프하게 할 수 있습니다. 또한 그림자를 그릴 수도 있습니다. 이번 시간에는 KinematicbodyComponent에 대해 알아보고 간단한 예제를 통해 활용법을 살펴봅시다. ##### 참고 API Reference [KinematicbodyComponent](/apiReference/Components/Ki

[task] | instruction_following [pass] | ⏳ 미판정 [title] | RectTileMap에서 캐릭터 이동 제어 [question] | 타일 셋 팔레트에서 'Buff'와 'Trap' 스프라이트를 추가할 때 필요한 RUID 값을 표로 정리하세요. [answer] | 타일 셋 팔레트에 스프라이트를 추가할 때 사용하는 RUID 값은 다음과 같습니다. | 타일 이름 | RUID | | :--- | :--- | | Buff | 02652c247d9d40518702255bed1376c8 | | Trap | 510cf1b467634a3db7624041432c3de5 | [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] | RigidbodyComponent를 사용할 때 발판 위와 발판 밖에서의 이동 방식이 어떻게 다른가요? [answer] | 메이플 타일과 쌍을 이루는 `RigidbodyComponent`의 이동 방식은 발판(이동 가능한 영역)에 따라 두 가지로 나뉩니다. 1. **발판 위에서 이동**: 엔티티가 지형의 발판 영역 위에 있을 때 적용되는 이동 방식입니다. 2. **발판 밖에서 이동**: 엔티티가 발판 영역 밖에 있을 때(예: 공중, 또는 발판이 없는 공간) 적용되는 이동 방식입니다. 발판은 지형 생성 규칙에 의해 자동으로 생성되며, 대부분 지형과 1:1로 매칭됩니다. 에디터에서 '발판 정보' 버튼을 누르면 지형 위에 빨간색 선으로 발판의 경계가 시각적 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 지형을 생성하는 가장 큰 이유는 엔티티가 이동할 수 있는 공간이 필요하기 때문일 것입니다. 메이플 타일에서 이동할 수 있는 영역을 **발판**이라고 합니다. 메이플 타일과 쌍을 이루는 [RigidbodyComponent](/docs?postId=750)의 이동 방식은 두 가지가 있습니다. **1. 발판 위에서 이동 2. 발판 밖에서 이동** 발판은 지형 생성 규칙에 의해 만들어지며 대부분 직관적으로 지형과 1:1 매칭됩니다. 발판 정보 버튼을 누르면 지형 위에 빨간색 선으로 발판 정보가 나타납니다. > **더 알아보기**

[task] | single_turn [pass] | ⏳ 미판정 [title] | RectTileMap에서 캐릭터 이동 제어 [question] | 사다리 타기 시 캐릭터가 사다리의 기울기에 따라 회전하는 동작을 원하지 않을 때, 어떤 설정을 어떻게 바꿔야 하나요? [answer] | RectTileMap에서 캐릭터의 이동과 사다리 동작을 제어하는 `KinematicbodyComponent`의 `ApplyClimbableRotation` 프로퍼티를 사용해야 합니다. 사다리의 기울기나 회전에 따라 캐릭터가 회전하는 동작을 원하지 않는다면, `ApplyClimbableRotation` 값을 `False`로 설정하면 됩니다. 이 값이 `False`인 경우 캐릭터는 사다리의 기울기나 회전에 영향을 받지 않고 원래 자세를 유지합니다. Workspace - DefaultPlayer - Property 창에서 `Kinem [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 RectTileMap에서는 KinematicbodyComponent로 캐릭터의 이동을 제어합니다. 크리에이터는 KinematicbodyComponent를 통해 캐릭터를 2차원 평면에서 자유롭게 움직이고 점프하게 할 수 있습니다. 또한 그림자를 그릴 수도 있습니다. 이번 시간에는 KinematicbodyComponent에 대해 알아보고 간단한 예제를 통해 활용법을 살펴봅시다. ##### 참고 API Reference [KinematicbodyComponent](/apiReference/Components/Ki

[task] | single_turn [pass] | ⏳ 미판정 [title] | RectTileMap에서 캐릭터 이동 제어 [question] | RectTileMap에서 캐릭터가 벽이나 바닥과 충돌하게 하려면 EnableTileCollision을 True로 설정하면 되는 건가요? [answer] | 네, 맞습니다. RectTileMap에서 캐릭터가 사각형 타일맵(벽이나 바닥 등)과 충돌하게 하려면 `KinematicbodyComponent`의 `EnableTileCollision` 프로퍼티를 `True`로 설정해야 합니다. 이 값이 `True`이면 캐릭터는 타일맵과 충돌하여 벽에 막히거나 바닥 위에 서 있을 수 있게 됩니다. 반대로 `False`로 설정하면 타일맵을 통과하게 됩니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 RectTileMap에서는 KinematicbodyComponent로 캐릭터의 이동을 제어합니다. 크리에이터는 KinematicbodyComponent를 통해 캐릭터를 2차원 평면에서 자유롭게 움직이고 점프하게 할 수 있습니다. 또한 그림자를 그릴 수도 있습니다. 이번 시간에는 KinematicbodyComponent에 대해 알아보고 간단한 예제를 통해 활용법을 살펴봅시다. ##### 참고 API Reference [KinematicbodyComponent](/apiReference/Components/Ki

[task] | two_turn [pass] | ⏳ 미판정 [title] | TweenLogic을 활용해 엔티티 제어하기 [question] | TweenLogic을 사용해 엔티티를 회전시키거나 크기를 변경하는 기본적인 방법은 무엇인가요? [answer] | `TweenLogic`을 사용하면 엔티티의 회전(`RotateTo`, `RotateAroundOffset`)과 크기 변경(`ScaleTo`)을 시간과 이징 함수에 따라 부드럽게 제어할 수 있습니다. ### 1. 엔티티 회전하기 엔티티 자체를 회전시키거나 다른 엔티티를 중심으로 회전시킬 수 있습니다. **A. 엔티티 자체 회전 (`RotateTo`)** `_TweenLogic:RotateTo()` 메서드를 사용해 엔티티가 지정된 각도로 회전하도록 설정합니다. - 파라미터: `엔티티`, `회전 각도(도)`, `소요 시간(초)`, [followup] | RotateAroundOffset에서 offset 계산 시 Vector3과 Vector2 간 변환 주의점 및 LoopType 설정 예시를 알려주세요. [followup_answer] | `RotateAroundOffset`을 사용할 때의 offset 계산 및 `LoopType` 설정 예시는 다음과 같습니다. ### 1. Offset 계산 시 Vector3과 Vector2 간 변환 주의점 `RotateAroundOffset` 메서드의 offset 파라미터는 `Vector2` 타입을 요구하지만, 엔티티의 `TransformComponent.Position`은 `Vector3` 타입입니다. 따라서 두 엔티티의 위치 차이를 계산한 후 반드시 `:ToVector2()` 메서드를 호출하여 `Vector2`로 변환해야 합니 [scores] | [judge_reason] | [source_doc] | `RotateTo()`를 활용해 엔티티를 회전시킬 수 있고, `TweenLogic:RotateAroundOffset()`를 활용해 특정 엔티티의 offset을 기준으로 따라다니게 회전시킬 수 있습니다. 1. 새로운 컴포넌트를 생성하고, 특정 엔티티에 추가합니다. 2. **angle**을 360도로 설정해 엔티티가 한 바퀴 돌 수 있게 작성합니다. ```lua Method: void OnBeginPlay() { self._T.tween = _TweenLogic:RotateTo(self.E

[task] | instruction_following [pass] | ⏳ 미판정 [title] | RectTileMap에서 캐릭터 이동 제어 [question] | 문서의 15단계에 제시된 `CheckSpeedBuffTile` 스크립트 코드만 출력하되, 설명은 주석으로만 작성하세요. [answer] | ```lua Method: [server] void IncreaseSpeedFactor() { local kb = self.Entity.KinematicbodyComponent local oldSpeedFactor = kb.SpeedFactor local newSpeedFactor = Vector2(oldSpeedFactor.x + 1, oldSpeedFactor.y + 1) kb.SpeedFactor = newSpeedFactor } Event Handler : [client only] [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] | TweenLogic을 활용해 엔티티 제어하기 [question] | _TweenLogic:PlayTween()과 _TweenLogic:RotateTo()를 함께 사용할 때, 위치 보간 값이 즉시 TransformComponent에 반영되지 않는 이유는 무엇인가요? [answer] | `_TweenLogic:PlayTween()`은 요청한 시작 값과 목표 값을 주어진 시간(`tweenDuration`) 동안 특정 이징 함수(`EaseType`)에 따라 계산된 중간 값만 콜백 함수(`function(val) ... end`)를 통해 전달합니다. 이 함수는 엔티티의 `TransformComponent.Position`을 직접 변경하지 않으며, 단순히 계산된 숫자만 반환할 뿐입니다. 따라서 이 값을 실제 화면에 반영하려면 `OnUpdate`와 같은 매 프레임 실행되는 메서드에서 콜백으로 전달받은 값(예: `self. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 높은 곳에서 공을 던졌을 때 공이 앞으로 나아감과 동시에 통통 튀게 만들어 봅시다. 1. 새로운 Model_Ball 모델을 생성합니다. TransformComponent, SpriteRendererComponent를 추가하고, 아래의 Ruid를 사용합니다. * SpriteRuid: d4dddd1f07d445939433f70cd1aa82fa 2. 새로운 BallComponent 생성하고, Model Ball에 추가합니다. 3. 공이 돌면서 날아가게 만들기 위해 `PlayTween()`과 `RotateTo()`를

[task] | single_turn [pass] | ⏳ 미판정 [title] | TweenLogic을 활용해 엔티티 제어하기 [question] | HandlePlayerActionEvent에서 공격 동작 시 공을 소환할 때 부모 엔티티와 스폰 위치를 어떻게 설정해야 플레이어의 이동과 함께 공이 따라다니나요? [answer] | 제공된 문서에 따르면, 플레이어가 공격할 때 공을 소환하고 그 공이 플레이어의 이동과 함께 따라다니도록 하려면 `_SpawnService:SpawnByModelId` 메서드를 호출할 때 **부모 엔티티(parent)** 와 **스폰 위치(spawnPosition)** 를 다음과 같이 설정해야 합니다. 1. **부모 엔티티 설정**: * `self.Entity.Parent`를 부모로 지정해야 합니다. * 이렇게 하면 소환된 공(Ball)이 현재 스크립트가 붙어 있는 엔티티(플레이어)의 자식 엔티티가 되어, 플 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 위의 예시에서 `PlayTween()`은 마지막 매개 변수로 Action <number> tweenFunction를 받고 있습니다. tweenFunction은 매 프레임 호출되고, 매개 변수로 Tween이 시작된 후부터 Ease 결괏값을 받습니다. 만약 Tween이 시작된 후 1.2초가 지났다면 Ease의 결괏값은 Ease(self.posY, yDestination, tweenDuration, EaseType.BounceEaseOut, 1.2)가 됩니다. 그러므로 `function(val) self.posX = val end`는 E

[task] | single_turn [pass] | ⏳ 미판정 [title] | 메이플 타일맵 만들기 [question] | 발판 생성 규칙이 직관적이지 않을 때, 지형 설계 단계에서 주의해야 할 점은 무엇인가요? [answer] | 제공된 참고 문서에는 발판 생성 규칙이 직관적이지 않을 경우를 대비한 구체적인 지형 설계 단계의 주의사항이나 가이드라인이 포함되어 있지 않습니다. 문서에서 확인할 수 있는 정보와 방법은 다음과 같습니다: 1. **발판 확인:** 지형 위에서 **발판 정보 버튼**을 누르면 지형 위에 **빨간색 선**으로 발판 정보가 나타납니다. 이를 통해 실제 이동 가능한 영역이 지형과 1:1로 매칭되는지 시각적으로 확인하는 것이 중요합니다. 2. **발판 추가:** 지형이 아닌 엔티티에도 발판을 추가하려면 `CustomFootholdCom [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 지형을 생성하는 가장 큰 이유는 엔티티가 이동할 수 있는 공간이 필요하기 때문일 것입니다. 메이플 타일에서 이동할 수 있는 영역을 **발판**이라고 합니다. 메이플 타일과 쌍을 이루는 [RigidbodyComponent](/docs?postId=750)의 이동 방식은 두 가지가 있습니다. **1. 발판 위에서 이동 2. 발판 밖에서 이동** 발판은 지형 생성 규칙에 의해 만들어지며 대부분 직관적으로 지형과 1:1 매칭됩니다. 발판 정보 버튼을 누르면 지형 위에 빨간색 선으로 발판 정보가 나타납니다. > **더 알아보기**

[task] | single_turn [pass] | ⏳ 미판정 [title] | RectTileMap에서 캐릭터 이동 제어 [question] | 그림자가 점프 높이에 따라 크기가 변하게 하려면 ShadowScalingRatio 프로퍼티를 어떻게 활용해야 하나요? [answer] | KinematicbodyComponent의 `ShadowScalingRatio` 프로퍼티는 Entity의 점프 높이에 따라 그림자 크기가 변화하도록 조절하는 값입니다. `EnableShadow` 프로퍼티가 `True`로 설정되어 있어야 그림자 기능이 활성화되며, 이 상태에서 `ShadowScalingRatio` 값을 조정하면 점프 동작 시 그림자의 크기가 자연스럽게 변합니다. 특정 비율을 적용하려면 해당 컴포넌트의 `ShadowScalingRatio` 프로퍼티에 원하는 수치(실수)를 직접 대입하면 됩니다. 예를 들어, 캐릭터가 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 RectTileMap에서는 KinematicbodyComponent로 캐릭터의 이동을 제어합니다. 크리에이터는 KinematicbodyComponent를 통해 캐릭터를 2차원 평면에서 자유롭게 움직이고 점프하게 할 수 있습니다. 또한 그림자를 그릴 수도 있습니다. 이번 시간에는 KinematicbodyComponent에 대해 알아보고 간단한 예제를 통해 활용법을 살펴봅시다. ##### 참고 API Reference [KinematicbodyComponent](/apiReference/Components/Ki

[task] | single_turn [pass] | ⏳ 미판정 [title] | 메이플 타일맵 만들기 [question] | 발판이 정확히 무엇인지, 그리고 엔티티가 지형 위를 이동할 때 왜 발판 정보가 중요한지 설명해 주실 수 있나요? [answer] | 메이플 타일맵에서 **발판(Foothold)** 은 엔티티가 실제로 이동할 수 있는 영역을 의미합니다. 지형을 만들 때 발판이 함께 생성되며, 대부분 지형의 모양과 1:1로 직관적으로 매칭됩니다. 지형 편집기에서 '발판 정보' 버튼을 누르면 지형 위에 빨간색 선으로 이 이동 가능 영역이 시각적으로 표시됩니다. 엔티티가 지형 위를 이동할 때 발판 정보가 중요한 이유는 `RigidbodyComponent` 의 이동 방식이 발판의 존재 여부에 따라 결정되기 때문입니다. `RigidbodyComponent` 는 크게 두 가지 방식으로 움 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 지형을 생성하는 가장 큰 이유는 엔티티가 이동할 수 있는 공간이 필요하기 때문일 것입니다. 메이플 타일에서 이동할 수 있는 영역을 **발판**이라고 합니다. 메이플 타일과 쌍을 이루는 [RigidbodyComponent](/docs?postId=750)의 이동 방식은 두 가지가 있습니다. **1. 발판 위에서 이동 2. 발판 밖에서 이동** 발판은 지형 생성 규칙에 의해 만들어지며 대부분 직관적으로 지형과 1:1 매칭됩니다. 발판 정보 버튼을 누르면 지형 위에 빨간색 선으로 발판 정보가 나타납니다. > **더 알아보기**

[task] | single_turn [pass] | ⏳ 미판정 [title] | 메이플 타일맵 만들기 [question] | Hierarchy에서 생성된 TileMap 엔티티의 TileMapComponent를 통해 MapleTile의 어떤 속성을 직접 수정할 수 있나요? [answer] | 메이플스토리 형태의 지형을 만들 때 Hierarchy에서 생성되는 TileMap 엔티티의 TileMapComponent를 통해 MapleTile의 **속성**, **색상**, **형태**를 직접 수정할 수 있습니다. 특히 색상(Color)과 타일셋(TileSet)에 대한 수정은 다음과 같은 방식으로 수행할 수 있습니다. 1. **색상 수정**: `TileMapComponent.Color` 프로퍼티에 `Color` 타입의 값을 대입하여 변경합니다. 2. **타일셋 변경**: `TileMapComponent.TileSetRUID [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 메이플스토리 월드에서는 여러 가지 지형과 이동 방식을 제공하고 있습니다. 이번 시간에는 가장 기본이 되는 지형인 메이플스토리 형태의 타일 맵에 대해 알아보겠습니다. 메이플스토리 형태의 지형은 메이플스토리 형태의 이동과 매우 밀접한 연관이 있습니다. > **더 알아보기** > 메이플스토리 형태의 이동에 대해서는 [메이플 이동 개념 이해하기](/docs?postId=750)를 참고해주세요. # 메이플스토리 형태의 지형 메이플스토리 형태의 지형은 타일 에디터에서 MapleTile 모드를 선택한 후 만들 수

[task] | code [pass] | ⏳ 미판정 [title] | 메이플 타일맵 만들기 [question] | 사용할 수 있는 구체적인 API 명세(함수 시그니처, 프로퍼티 이름 등)가 문서에 포함되어 있지 않아, 지어진 규칙(없는 API를 지어내지 말 것)을 따를 수 없습니다. [answer] | 제공된 참고 문서에는 `RigidbodyComponent`의 이동 방식(발판 위/밖)과 발판(Foothold)의 개념, 그리고 `RigidbodyComponent`에 `AttachTo`, `Detach`, `SetForce` 메서드가 존재한다는 사실과 `StateComponent`의 `ChangeState` 메서드, `InputService`의 `HandleKeyUpEvent` 이벤트 핸들러 시그니처가 간접적으로 예제 코드를 통해 확인됩니다. 그러나 질문하신 **"구체적인 API 명세(함수 시그니처, 프로퍼티 이름 등)"** 가 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 지형을 생성하는 가장 큰 이유는 엔티티가 이동할 수 있는 공간이 필요하기 때문일 것입니다. 메이플 타일에서 이동할 수 있는 영역을 **발판**이라고 합니다. 메이플 타일과 쌍을 이루는 [RigidbodyComponent](/docs?postId=750)의 이동 방식은 두 가지가 있습니다. **1. 발판 위에서 이동 2. 발판 밖에서 이동** 발판은 지형 생성 규칙에 의해 만들어지며 대부분 직관적으로 지형과 1:1 매칭됩니다. 발판 정보 버튼을 누르면 지형 위에 빨간색 선으로 발판 정보가 나타납니다. > **더 알아보기**

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 다양한 선 그리기 [question] | 선 그리기 실행 전 필수로 설정해야 할 랩 모드와 리소스 종류를 3문장 이내로 요약하세요. [answer] | 유저 리소스와 복제한 MSW 리소스 모두 랩 모드를 반드시 Repeat로 설정해야 합니다. LineRendererComponent에 활용하는 스프라이트는 유저 리소스 또는 복제한 MSW 리소스만 사용할 수 있습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 머티리얼의 SpritePattern 셰이더를 활용해 선을 그릴 수 있습니다. 머티리얼 활용 방법은 [머티리얼 활용하기](docs/?postId=828)를 참고하세요. LineRendererComponent에 활용하는 스프라이트로는 유저 리소스와 복제한 MSW 리소스를 사용할 수 있습니다. MSW 리소스 복제 방법은 [리소스 관리](docs/?postId=690)를 참고하세요. 1. **Workspace - MyDesk - Create Material**을 선택해 새로운 Material을 만듭니다. 2. 생성한 머티리얼의 프로퍼티

[task] | code [pass] | ⏳ 미판정 [title] | RectTileMap에서 캐릭터 이동 제어 [question] | KinematicbodyComponent의 SpeedFactor 프로퍼티를 2.0으로 설정하여 이동 속력을 빠르게 하는 스크립트를 작성해줘 [answer] | KinematicbodyComponent의 `SpeedFactor` 프로퍼티는 이동할 때 X축과 Y축 속력에 곱해지는 가중치입니다. 이 값을 2.0으로 설정하면 캐릭터의 이동 속력이 기본값보다 2배 빨라집니다. 아래 스크립트는 `OnBeginPlay()` 생명주기 메서드에서 KinematicbodyComponent의 `SpeedFactor`를 2.0으로 설정하는 예제입니다. ```lua Method: [server only] void OnBeginPlay() { local kinematicBody = self.Entity [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 RectTileMap에서는 KinematicbodyComponent로 캐릭터의 이동을 제어합니다. 크리에이터는 KinematicbodyComponent를 통해 캐릭터를 2차원 평면에서 자유롭게 움직이고 점프하게 할 수 있습니다. 또한 그림자를 그릴 수도 있습니다. 이번 시간에는 KinematicbodyComponent에 대해 알아보고 간단한 예제를 통해 활용법을 살펴봅시다. ##### 참고 API Reference [KinematicbodyComponent](/apiReference/Components/Ki

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 다양한 선 그리기 [question] | 곡선으로 모양을 그리기 위해 필요한 Points 개수와 활성화해야 하는 프로퍼티 이름을 3문장 이내로 설명하세요. [answer] | 곡선으로 모양을 그리려면 최소 4개의 Points가 필요합니다. IsSmooth 프로퍼티를 활성화해야 부드러운 곡선으로 선이 그려집니다. Loop 프로퍼티를 함께 활성화하면 시작점과 끝점이 이어져 닫힌 곡선 모양을 만들 수 있습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 LineRendererComponent를 활용해 다양한 선을 월드에 자유롭게 그릴 수 있습니다. # LineRendererComponent LineRendererComponent는 점의 개수를 지정해 MapleTile, RectTile 위에서 원하는 직선, 곡선을 그릴 수 있습니다. LineRendererComponent 하나당 하나의 선을 그릴 수 있으므로, 여러 선을 표현하고 싶다면 여러 개의 LineRendererComponent가 포함된 엔티티를 사용해야 합니다. 주요 프로퍼티는 아래와 같습니다.

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 다양한 선 그리기 [question] | LineRendererComponent의 Loop 프로퍼티가 활성화된 상태에서 삼각형을 그리기 위해 필요한 Steps를 단계별 번호 목록으로 작성하세요. [answer] | LineRendererComponent의 Loop 프로퍼티가 활성화된 상태에서 삼각형을 그리기 위한 단계는 다음과 같습니다. 1. EmptyEntity를 생성하고, LineRendererComponent를 추가합니다. 2. Size에 3을 입력하고, Color와 Width를 지정합니다. 3. 각각의 Position에 (0,0), (1,1), (2,0)을 입력합니다. 4. Loop 프로퍼티를 활성화합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 LineRendererComponent를 활용해 다양한 선을 월드에 자유롭게 그릴 수 있습니다. # LineRendererComponent LineRendererComponent는 점의 개수를 지정해 MapleTile, RectTile 위에서 원하는 직선, 곡선을 그릴 수 있습니다. LineRendererComponent 하나당 하나의 선을 그릴 수 있으므로, 여러 선을 표현하고 싶다면 여러 개의 LineRendererComponent가 포함된 엔티티를 사용해야 합니다. 주요 프로퍼티는 아래와 같습니다.

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 다양한 선 그리기 [question] | SpritePattern 셰이더를 활용한 선 그리기 절차를 6단계 번호 목록으로 정리하세요. [answer] | SpritePattern 셰이더를 활용한 선 그리기 절차는 다음과 같습니다. 1. Workspace - MyDesk - Create Material을 선택해 새로운 Material을 만듭니다. 2. 생성한 머티리얼의 프로퍼티 창에서 Shader - LineRenderer - SpritePattern을 선택합니다. 3. SpriteRUID에 사용할 이미지를 선택하며, 필요한 경우 Offset과 Scale 값을 조정합니다. 4. EmptyEntity를 생성하고, LineRendererComponent를 추가합니다. 5. LineRen [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 머티리얼의 SpritePattern 셰이더를 활용해 선을 그릴 수 있습니다. 머티리얼 활용 방법은 [머티리얼 활용하기](docs/?postId=828)를 참고하세요. LineRendererComponent에 활용하는 스프라이트로는 유저 리소스와 복제한 MSW 리소스를 사용할 수 있습니다. MSW 리소스 복제 방법은 [리소스 관리](docs/?postId=690)를 참고하세요. 1. **Workspace - MyDesk - Create Material**을 선택해 새로운 Material을 만듭니다. 2. 생성한 머티리얼의 프로퍼티

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 다양한 선 그리기 [question] | IsSmooth와 Loop 프로퍼티의 차이를 '활성화 시 동작', '비활성화 시 동작' 두 열을 가진 표로 정리하세요. [answer] | LineRendererComponent의 IsSmooth와 Loop 프로퍼티의 차이는 다음과 같습니다. | 프로퍼티 | 활성화 시 동작 | 비활성화 시 동작 | | :--- | :--- | :--- | | **IsSmooth** | 부드러운 곡선을 그려줍니다. | 날카로운 꺾은 선으로 그립니다. | | **Loop** | 시작점과 끝점을 이어 닫힌 선을 그려줍니다. | 시작점과 끝점을 잇지 않고 열린 선을 그립니다. (기본값) | [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 LineRendererComponent를 활용해 다양한 선을 월드에 자유롭게 그릴 수 있습니다. # LineRendererComponent LineRendererComponent는 점의 개수를 지정해 MapleTile, RectTile 위에서 원하는 직선, 곡선을 그릴 수 있습니다. LineRendererComponent 하나당 하나의 선을 그릴 수 있으므로, 여러 선을 표현하고 싶다면 여러 개의 LineRendererComponent가 포함된 엔티티를 사용해야 합니다. 주요 프로퍼티는 아래와 같습니다.

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 다양한 선 그리기 [question] | LineRendererComponent의 LinePoints 한계와 IsSmooth 옵션에 따른 성능 차이를 표로 정리하세요. [answer] | LineRendererComponent의 LinePoints 한계와 IsSmooth 옵션에 따른 성능 차이는 다음과 같습니다. | IsSmooth 상태 | LinePoints 최대 한계 | 비고 | | :--- | :--- | :--- | | False (미사용) | 10,000개 | 10,000개를 초과하는 LinePoints는 선이 그려지지 않습니다. | | True (사용) | 약 1,000개 | IsSmooth를 사용하게 되면 그릴 수 있는 LinePoints 총 개수가 약 1,000개로 감소합니다. | [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 머티리얼의 SpritePattern 셰이더를 활용해 선을 그릴 수 있습니다. 머티리얼 활용 방법은 [머티리얼 활용하기](docs/?postId=828)를 참고하세요. LineRendererComponent에 활용하는 스프라이트로는 유저 리소스와 복제한 MSW 리소스를 사용할 수 있습니다. MSW 리소스 복제 방법은 [리소스 관리](docs/?postId=690)를 참고하세요. 1. **Workspace - MyDesk - Create Material**을 선택해 새로운 Material을 만듭니다. 2. 생성한 머티리얼의 프로퍼티

[task] | code [pass] | ⏳ 미판정 [title] | TweenLogic을 활용해 엔티티 제어하기 [question] | `TweenLogic` 서비스의 `MoveTo()` 메서드로 엔티티를 목적지 `Vector2(2.0, 2.0)`까지 3.0초간 이동시키되, `Delay`를 1.0초로 설정해 이동이 1초 지연되도록 하고 `AutoDestroy`를 true로 설정하는 스크립트를 작성해줘. [answer] | `_TweenLogic:MoveTo()` 메서드를 사용하여 엔티티를 이동시키며, `Delay`와 `AutoDestroy` 속성을 설정하는 스크립트입니다. ```lua Property: [None] any tween = nil Method: [server only] void OnBeginPlay() { self.tween = _TweenLogic:MoveTo(self.Entity, Vector2(2.0, 2.0), 3.0, EaseType.Linear) self.tween.Delay = 1.0 self.twe [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | `MoveTo()`를 활용해 엔티티를 이동시킬 수 있습니다. 1. 새로운 컴포넌트를 생성하고, 특정 엔티티에 추가합니다. 2. 엔티티가 이동할 목적지, 시간, EaseType을 작성합니다. 3. 반환하는 Tweener의 지연 시간, 반복 타입, 횟수, 자동 파괴 여부 처리를 함께 작성합니다. 자동 파괴를 false로 하거나 LoopCount를 -1로 설정해 트윈이 계속 실행되도록 하는 경우 의도치 않게 더 이상 작동하지 않는 Tweener 객체가 쌓일 수도 있습니다. 이러한 Tweener 객체가 지나치게 많아지면 월드에 성능 하

[task] | two_turn [pass] | ⏳ 미판정 [title] | 메이플 타일맵 만들기 [question] | 메이플스토리 월드에서 MapleTile 모드로 지형을 만들 때, 하나의 맵에서 타일 맵 모드를 변경하면 기존 지형에 어떤 영향이 미치는지? [answer] | 하나의 맵에서는 하나의 타일 맵 모드만 사용할 수 있습니다. MapleTile 모드로 지형을 만든 뒤, 다른 타일 맵 모드로 변환하면 기존에 생성된 지형은 모두 초기화됩니다. 따라서 타일 맵 모드를 변경하기 전에 기존 지형이 삭제된다는 점에 주의해야 합니다. [followup] | TileMapComponent의 TileSetRUID를 직접 수정하여 TileSet을 변경할 때, 이전에 배치했던 지형 데이터는 어떻게 처리되는지? [followup_answer] | TileSet을 변경하면 이전에 해당 레이어에 배치했던 지형도 모두 새로운 TileSet으로 변경됩니다. [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 메이플스토리 월드에서는 여러 가지 지형과 이동 방식을 제공하고 있습니다. 이번 시간에는 가장 기본이 되는 지형인 메이플스토리 형태의 타일 맵에 대해 알아보겠습니다. 메이플스토리 형태의 지형은 메이플스토리 형태의 이동과 매우 밀접한 연관이 있습니다. > **더 알아보기** > 메이플스토리 형태의 이동에 대해서는 [메이플 이동 개념 이해하기](/docs?postId=750)를 참고해주세요. # 메이플스토리 형태의 지형 메이플스토리 형태의 지형은 타일 에디터에서 MapleTile 모드를 선택한 후 만들 수

[task] | single_turn [pass] | ⏳ 미판정 [title] | TweenLogic을 활용해 엔티티 제어하기 [question] | SpriteRendererComponent의 Color.a를 직접 수정하는 것과 MakeTween()을 사용하여 조절하는 것의 차이점과, 각각 어떤 상황에서 사용하는 것이 효율적인가요? [answer] | `SpriteRendererComponent`의 `Color.a` 값을 직접 수정하는 것과 `_TweenLogic:MakeTween()`을 사용하여 조절하는 것의 차이는 **변화 과정의 자동화 여부**와 **시간 기반 보간(Interpolation) 처리**에 있습니다. ### 1. 차이점 * **직접 수정 (`spriteRenderer.Color.a = value`)** * 개발자가 수동으로 값을 설정해야 합니다. * 값이 갑자기 변경되거나, 개발자가 `OnUpdate` 등에서 매 프레임마다 값을 계산 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | `MakeTween()`에서 **Alpha** 값을 조절해 특정 엔티티가 점점 옅어지게 만들 수 있습니다. 1. 새로운 컴포넌트를 생성하고, 특정 엔티티에 추가합니다. 2. `MakeTween()`의 startvalue를 SpriteRenderer의 a로 지정하고, endvalue를 0으로 지정해 엔티티가 투명해질 수 있도록 아래와 같이 작성합니다. ```lua Method: [server only] void OnBeginPlay() { local spriteRenderer

[task] | code [pass] | ⏳ 미판정 [title] | RectTileMap에서 캐릭터 이동 제어 [question] | KinematicbodyComponent의 EnableShadow 프로퍼티를 True로 설정하고 ShadowColor와 ShadowSize를 각각 지정하여 그림자를 표시하는 스크립트를 작성해줘 [answer] | KinematicbodyComponent의 `EnableShadow` 프로퍼티를 `True`로 설정하고, `ShadowColor`와 `ShadowSize` 값을 지정하는 스크립트입니다. 참고: `ShadowColor`와 `ShadowSize`의 정확한 데이터 타입(예: Color, Vector2 등)이 제공된 문서에 명시되지 않아, 일반적인 mLua 색상/벡터 생성자 문법을 가정하여 작성했습니다. 실제 엔진에서 지원하지 않는 타입이라면 해당 생성자 이름을 확인해야 합니다. ```lua Property: [None] Entity [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 RectTileMap에서는 KinematicbodyComponent로 캐릭터의 이동을 제어합니다. 크리에이터는 KinematicbodyComponent를 통해 캐릭터를 2차원 평면에서 자유롭게 움직이고 점프하게 할 수 있습니다. 또한 그림자를 그릴 수도 있습니다. 이번 시간에는 KinematicbodyComponent에 대해 알아보고 간단한 예제를 통해 활용법을 살펴봅시다. ##### 참고 API Reference [KinematicbodyComponent](/apiReference/Components/Ki

[task] | two_turn [pass] | ⏳ 미판정 [title] | RectTileMap에서 캐릭터 이동 제어 [question] | 맵에서 특정 타일을 밟을 때 캐릭터가 사망하도록 처리하는 방법을 알고 싶어요. [answer] | 맵에서 특정 타일(예: "Trap")을 밟을 때 캐릭터가 사망하도록 처리하려면, `RectTileEnterEvent` 이벤트를 통해 밟은 타일의 이름을 확인하고, 해당 타일이 목표 타일이라면 `PlayerComponent:ProcessDead()` 메서드를 호출하면 됩니다. 아래는 `DefaultPlayer`에 추가할 `CheckTrapTile` 스크립트 컴포넌트 예시입니다. ```lua Property: [None] string CurrentTileName = "" Method: [client only] void OnUpd [followup] | `RectTileEnterEvent`에서 `TileInfo.Name`을 통해 "Trap" 타일임을 확인하고, `KinematicbodyComponent:IsOnGround()` 상태와 함께 `PlayerComponent:ProcessDead()`를 호출하는 코드가 어떻게 작성되는지 보여주세요. [followup_answer] | 요청하신 로직을 포함하는 `CheckTrapTile` 스크립트 컴포넌트 코드는 다음과 같습니다. `RectTileEnterEvent` 핸들러에서 `TileInfo.Name`을 프로퍼티에 저장하고, `OnUpdate`에서 지면에 닿아 있는지(`IsOnGround()`)를 확인한 후, 현재 타일이 "Trap"이면 `PlayerComponent:ProcessDead()`를 호출하는 구조입니다. ```lua Property: [None] string CurrentTileName = "" Method: [client only] voi [scores] | [judge_reason] | [source_doc] | ## 장애물 타일 피하기 점프로만 넘어갈 수 있는 장애물을 만들고, 장애물을 밟으면 캐릭터가 죽도록 설정해 봅시다. 1. 맵에 Trap 타일을 배치합니다. 2. **MyDesk** 아래에 새 스크립트 컴포넌트 **CheckTrapTile**를 만든 뒤, **DefaultPlayer**에 추가합니다. 3. 아래와 같이 **CheckTrapTile**을 작성합니다. ```lua Property: [None] string CurrentTileName = "" Met

[task] | single_turn [pass] | ⏳ 미판정 [title] | TweenLogic을 활용해 엔티티 제어하기 [question] | tweenFunction 내에서 Ease 함수의 결괏값(val)을 self.posY 프로퍼티에 할당하는 로직이 매 프레임마다 어떻게 작동하나요? [answer] | `PlayTween`의 마지막 매개변수로 전달되는 `tweenFunction`은 Tween이 진행되는 동안 **매 프레임마다 호출**됩니다. 이 함수는 Tween 시작 시점부터 경과한 시간과 Ease 타입에 따라 계산된 중간 값(결괏값)을 인자 `val`로 전달받습니다. 구체적인 작동 원리는 다음과 같습니다: 1. **매 프레임 Ease 계산**: Tween이 실행 중일 때, `_TweenLogic`은 현재 경과 시간(`elapsedTime`)을 기준으로 `Ease(시작값, 도착값, 총시간, EaseType, 현재경과시간)`을 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 위의 예시에서 `PlayTween()`은 마지막 매개 변수로 Action <number> tweenFunction를 받고 있습니다. tweenFunction은 매 프레임 호출되고, 매개 변수로 Tween이 시작된 후부터 Ease 결괏값을 받습니다. 만약 Tween이 시작된 후 1.2초가 지났다면 Ease의 결괏값은 Ease(self.posY, yDestination, tweenDuration, EaseType.BounceEaseOut, 1.2)가 됩니다. 그러므로 `function(val) self.posX = val end`는 E

[task] | single_turn [pass] | ⏳ 미판정 [title] | TweenLogic을 활용해 엔티티 제어하기 [question] | PlayTween의 tweenFunction 매개변수로 전달된 Ease 결괏값을 특정 좌표축(예: x)에만 적용하려면 어떻게 구현해야 하나요? [answer] | `_TweenLogic:PlayTween`의 `tweenFunction`은 Ease 함수의 전체 결괏값(보통 `Vector3`)을 단일 매개변수 `val`로 전달받습니다. 이 `val`을 특정 좌표축(예: x)에만 적용하려면, `val`에서 해당 축의 값을 추출하여 원본 위치나 다른 축의 값과 합쳐서 최종 위치를 계산해야 합니다. 문서에 명시된 대로, `Vector2`를 매개변수로 받는 `PlayTween`을 두 번 호출하여 x와 y를 각각 조작하는 방식은 정상 동작하지 않습니다. `Vector2`는 x, y를 쌍으로 사용하므로 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 위의 예시에서 `PlayTween()`은 마지막 매개 변수로 Action <number> tweenFunction를 받고 있습니다. tweenFunction은 매 프레임 호출되고, 매개 변수로 Tween이 시작된 후부터 Ease 결괏값을 받습니다. 만약 Tween이 시작된 후 1.2초가 지났다면 Ease의 결괏값은 Ease(self.posY, yDestination, tweenDuration, EaseType.BounceEaseOut, 1.2)가 됩니다. 그러므로 `function(val) self.posX = val end`는 E

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