← 목록

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

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

[task] | single_turn [pass] | ⏳ 미판정 [title] | 물체의 이동 Ⅰ [question] | 스택트립에서 [Sync] 어노테이션을 붙인 Component 타입 프로퍼티에 TransformComponent를 직접 대입할 수 없다면 어떻게 해야 하나요? [answer] | 참고 문서에 따르면, `[Sync]` 어노테이션이 붙은 `Component` 타입 프로퍼티에 `TransformComponent`를 직접 대입하는 것은 불가능합니다. 대신 문서에서 권장하는 방식은 **`Entity` 타입의 프로퍼티를 사용**하거나, **`TransformComponent`에 직접 접근**하는 것입니다. 문서에서 제시된 올바른 방법은 다음과 같습니다. ### 방법 1: `Entity` 타입 프로퍼티를 사용 (권장) `Component` 타입이 아닌 `Entity` 타입의 프로퍼티를 선언하고, 해당 엔티티를 저장 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 택시를 이동시키기 위해서는 `TransformComponent`의 **Position** 값을 변경해야 합니다. 맵에 배치되는 모든 엔티티는 위치 정보를 가지고 있습니다. 이 위치 정보는 TransformComponent에서 Position x, y, z 값으로 표현됩니다. 오른쪽으로 이동시키기 위해서는 x 값이 커지도록 만들어야 합니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/1747902531299ee5bec9350ac458d9f255a76eba57191.g

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 물체의 이동 Ⅱ [question] | OnBeginPlay에서 컴포넌트 참조를 초기화하는 코드를 출력하되, 설명은 주석으로만 작성하고 본문은 코드만 포함하세요. [answer] | ```lua Method: [server only] void OnBeginPlay() { -- 택시 엔티티 경로로 엔티티 객체를 가져옴 local taxi = _EntityService:GetEntityByPath("/maps/map01/Taxi") -- 현재 스크립트가 부착된 엔티티(원숭이) 객체를 가져옴 local monkey = self.Entity -- 프로퍼티에 각 엔티티의 Transform 컴포넌트 참조를 할당 self.TaxiTransform = taxi.Tr [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | RigidbodyComponent를 활용해 질주하는 택시가 원숭이를 밀어낼 수 있도록 만들어 봅시다. 원숭이를 밀어내기 위해서는 원숭이가 택시 위치를 확인하고, 택시가 원숭이게 근접하면 원숭이의 RigidbodyComponent에 힘을 주도록 만들어봅시다. 1. **Workspace - MyDesk - Create Scripts - Create Component**을 선택해 새 스크립트 컴포넌트를 추가하고 이름을 **Monkey**로 변경합니다. 2. **Monkey** 엔티티에 **Monkey 컴포넌트**를 추가합니

[task] | two_turn [pass] | ⏳ 미판정 [title] | 물체의 이동 Ⅰ [question] | StaticNPC 모델에서 물체를 이동시키기 위해 어떤 컴포넌트를 수정해야 하며, 왜 그렇게 해야 하나요? [answer] | StaticNPC 모델에서 물체를 이동시키기 위해서는 `RigidbodyComponent`를 제거해야 합니다. StaticNPC에는 기본적으로 `RigidbodyComponent`와 `TransformComponent`가 모두 포함되어 있습니다. 이 두 컴포넌트가 동시에 존재할 경우, `Position` 값을 변경했을 때 두 컴포넌트의 값이 충돌하여 원하는 방식으로 물체가 움직이지 않을 수 있기 때문입니다. 따라서 정확한 이동을 위해 `RigidbodyComponent`를 삭제하는 것이 필요합니다. [followup] | RigidbodyComponent와 TransformComponent의 Position 값 충돌이 발생하면 어떤 문제가 생기며, WorkSpace에서 컴포넌트를 제거하는 구체적인 절차는 어떻게 되나요? [followup_answer] | `RigidbodyComponent`와 `TransformComponent`의 `Position` 값이 충돌하면 원하는 방식으로 물체가 움직이지 않을 수 있습니다. StaticNPC에는 두 컴포넌트가 모두 포함되어 있기 때문에, `Position`을 변경할 때 두 값 간 충돌을 방지하기 위해 반드시 둘 중 하나를 제거해야 합니다. WorkSpace에서 `RigidbodyComponent`를 제거하는 구체적인 절차는 다음과 같습니다. 1. **WorkSpace - NativeModel - StaticNPC**를 선택합니다. 2. [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 용감한 시그너스 기사단 소속 아잘린이 먼저 고통의 미궁으로 출발한 나이트워커 부대에 합류할 수 있도록 택시를 불러봅시다. 부른 택시가 아잘린을 지나치지 않고 아잘린 앞에서 멈춰서 아잘린이 탑승할 수 있도록 만들어야 합니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/1747902531299ee5bec9350ac458d9f255a76eba57191.gif "Example") # StaticNPC 모델 수정하기 StaticNPC 모델에서 Rigid

[task] | two_turn [pass] | ⏳ 미판정 [title] | 물체의 이동 Ⅰ [question] | 학습 과정에서 택시와 아잘린을 배치할 때 엔티티 이름을 변경하는 것이 스크립트 작성에 어떤 이점이 있나요? [answer] | 엔티티 이름을 변경하면 스크립트에서 해당 엔티티를 식별하고 호출하는 경로가 간결해집니다. 엔티티 이름을 지정하면 `_EntityService`와 같은 서비스를 통해 경로를 사용해 엔티티를 검색할 때 복잡한 기본 경로 대신 지정된 이름(예: `Taxi`, `Azallin`)을 포함하는 더 짧은 경로를 사용할 수 있습니다. 이는 스크립트 가독성을 높이고, 엔티티를 참조하는 코드를 작성하기 쉽게 만들어 줍니다. [followup] | 엔티티 이름을 'Taxi'와 'Azallin'으로 변경한 후, 스크립트에서 간결한 경로로 엔티티를 호출하는 구체적인 코드 예시를 보여주세요. [followup_answer] | 제공된 참고 문서에는 엔티티 이름을 변경하면 "스크립트에서 간결한 경로로 엔티티를 호출할 수 있다"는 설명과 `_EntityService:GetEntityByPath("/maps/map01/obj")` 형태의 서비스 사용 예시는 있으나, 'Taxi'와 'Azallin'이라는 특정 이름을 사용해 엔티티를 가져오는 **구체적인 mLua 코드 예시는 포함되어 있지 않습니다.** 따라서 문서에 근거하여 정확한 코드 예시를 제시할 수 없습니다. [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 용감한 시그너스 기사단 소속 아잘린이 먼저 고통의 미궁으로 출발한 나이트워커 부대에 합류할 수 있도록 택시를 불러봅시다. 부른 택시가 아잘린을 지나치지 않고 아잘린 앞에서 멈춰서 아잘린이 탑승할 수 있도록 만들어야 합니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/1747902531299ee5bec9350ac458d9f255a76eba57191.gif "Example") # StaticNPC 모델 수정하기 StaticNPC 모델에서 Rigid

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 물체의 이동 Ⅱ [question] | 원숭이 스크립트 컴포넌트에 정의된 4개의 프로퍼티 이름과 그 역할을 표로 정리해서 보여주세요. [answer] | 원숭이 스크립트 컴포넌트(`Monkey`)에 정의된 4개의 프로퍼티와 그 역할은 다음과 같습니다. | 프로퍼티 이름 | 역할 | | :--- | :--- | | `MonkeyTransform` | 원숭이 엔티티의 `Transform` 컴포넌트 참조 값을 저장합니다. | | `TaxiTransform` | 택시 엔티티의 `Transform` 컴포넌트 참조 값을 저장합니다. | | `MonkeyRigidbody` | 원숭이 엔티티의 `Rigidbody` 컴포넌트 참조 값을 저장합니다. | | `IsHit` | 택시가 원숭이에 접근했을 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | RigidbodyComponent를 활용해 질주하는 택시가 원숭이를 밀어낼 수 있도록 만들어 봅시다. 원숭이를 밀어내기 위해서는 원숭이가 택시 위치를 확인하고, 택시가 원숭이게 근접하면 원숭이의 RigidbodyComponent에 힘을 주도록 만들어봅시다. 1. **Workspace - MyDesk - Create Scripts - Create Component**을 선택해 새 스크립트 컴포넌트를 추가하고 이름을 **Monkey**로 변경합니다. 2. **Monkey** 엔티티에 **Monkey 컴포넌트**를 추가합니

[task] | single_turn [pass] | ⏳ 미판정 [title] | 엔티티 구간 이동시키기 [question] | Positions 배열에 여러 목적지를 입력했는데 Interpolation을 SplineTypeA로 변경해도 움직임이 직선으로만 보이는 원인은 무엇인가요? [answer] | `Interpolation`을 `SplineTypeA`로 설정해도 움직임이 직선으로만 보이는 주된 원인은 **목적지(`Positions`)의 개수가 2개 미만**이기 때문입니다. 문서에 따르면 `Interpolation`은 **점이 2개 이상일 경우에만 유효하게 동작**합니다. ### 원인 분석 1. **보간(Interpolation)의 정의**: 점과 점을 연결한 직선 이동이 아닌, 곡선으로 완만하게 움직이게 하는 방식입니다. 2. **작동 조건**: `SplineTypeA`나 `SplineTypeB`와 같은 보간 방식은 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 원점을 기준으로 목적지까지 선형 운동을 하게 만들 때 사용합니다. 목적지까지 편도, 왕복 운동 여부와 더불어 가·감속, 도달 시 튕김 등 운동 방식을 설정할 수 있습니다. **TweenLineComponent**의 프로퍼티를 살펴봅시다. | 프로퍼티 명 | 설명 | | ------ | --- | | TweenType | 기본값은 Linear입니다. 다른 모양의 운동 방식을 선택할 수 있습니다. 선형운동 종류별 설명은 하단의 참고자료를 참고하세요. | | Duration | 목적지까지 도달하는 데 걸리는 시간을 의미합니다. | |

[task] | two_turn [pass] | ⏳ 미판정 [title] | 엔티티 구간 이동시키기 [question] | `TweenCircularComponent`의 `SyncType` 설정이 서버와 클라이언트에서 엔티티의 움직임에 어떤 차이를 만드나요? [answer] | `TweenCircularComponent`의 `SyncType` 설정은 원형 운동이 어디서 계산되고 어디에 보이는지를 결정하며, 서버와 클라이언트 사이에서 다음과 같은 차이를 만듭니다. 1. **Default (기본값)** * **동작 방식**: 서버에서 컴포넌트가 동작합니다. * **시각적 결과**: 모든 클라이언트(플레이어)에게 동일한 움직임으로 보입니다. 서버가 원운동을 처리하여 모든 클라이언트에 동기화되므로, 모든 플레이어는 동일한 위치와 회전 상태를 공유합니다. 2. **ClientOnly** [followup] | `SyncType`을 `ClientOnly`로 설정했을 때 다른 유저에게 보이는 모습과 `Default`일 때의 차이, 그리고 `AutoDestroy`와 함께 사용할 경우의 주의점을 알려주세요. [followup_answer] | `SyncType` 설정에 따른 다른 유저에게 보이는 모습의 차이와 `AutoDestroy` 조합 시 주의점은 다음과 같습니다. **1. `SyncType` 설정별 다른 유저에게 보이는 모습 차이** * **`Default` (기본값):** * 컴포넌트가 서버에서 동작하며 모든 클라이언트에게 동일하게 보입니다. * 따라서 다른 유저(클라이언트)들도 서버에서 동기화된 동일한 위치와 회전 상태로 엔티티의 원형 운동을 볼 수 있습니다. * **`ClientOnly`:** * 컴포넌트가 해당 클라 [scores] | [judge_reason] | [source_doc] | 원점을 기준으로 원형 운동을 하게 만들 때 사용합니다. 회전 수, 속도, 반경을 설정할 수 있습니다. **TweenCircularComponent**의 프로퍼티를 살펴봅시다. | 프로퍼티 명 | 설명 | | --- | --- | | Radius | 원점을 기준으로 입력한 값만큼 멀어져 원운동을 합니다. 숫자가 클수록 중심에서 멀어집니다. | | Speed | 입력한 숫자가 클수록 엔티티가 빠르게 원운동을 합니다. | | LookAtCenter | 활성화하면 엔티티 사각형 테두리 윗변이 중심점을 바라보고 회전합니다. | | Deg

[task] | code [pass] | ⏳ 미판정 [title] | 엔티티 구간 이동시키기 [question] | 게임 시작 시 TweenCircularComponent 의 LookAtCenter 를 활성화하고 SyncType 을 Default 로 설정하여 서버에서 원운동이 동기화되도록 하는 스크립트를 작성해줘 [answer] | 사용자가 요청한 설정(`LookAtCenter` 활성화, `SyncType`을 `Default`로 설정)은 `TweenCircularComponent`의 프로퍼티를 초기화하는 방식으로 구현할 수 있습니다. 제공된 문서와 예제 코드를 바탕으로, 엔티티에 `TweenCircularComponent`가 이미 추가되어 있다고 가정하고 프로퍼티를 설정하는 스크립트입니다. `OnBeginPlay()` 생명주기 메서드에서 설정을 적용하여 게임 시작 시점에 초기화되도록 작성했습니다. 참고로, 문서에는 `SyncType` 프로퍼티의 값으로 `D [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 원점을 기준으로 원형 운동을 하게 만들 때 사용합니다. 회전 수, 속도, 반경을 설정할 수 있습니다. **TweenCircularComponent**의 프로퍼티를 살펴봅시다. | 프로퍼티 명 | 설명 | | --- | --- | | Radius | 원점을 기준으로 입력한 값만큼 멀어져 원운동을 합니다. 숫자가 클수록 중심에서 멀어집니다. | | Speed | 입력한 숫자가 클수록 엔티티가 빠르게 원운동을 합니다. | | LookAtCenter | 활성화하면 엔티티 사각형 테두리 윗변이 중심점을 바라보고 회전합니다. | | Deg

[task] | two_turn [pass] | ⏳ 미판정 [title] | 엔티티 구간 이동시키기 [question] | 엔티티가 자연스럽게 움직이도록 `Ease Type`을 적용할 때 어떤 종류와 변형을 선택해야 하나요? [answer] | 메이플스토리 월드에서는 엔티티가 자연스럽게 움직이도록 속도와 반동을 조절하기 위해 Ease Type을 사용합니다. 총 10가지 종류와 각각 3가지 변형이 제공되며, 원하는 움직임에 따라 선택해야 합니다. **1. Ease Type 종류** 다음과 같은 10가지 기본 종류가 있습니다. * Quad * Expo * Cubic * Quart * Quint * Circ * Sine * Elastic * Bounce * Back **2. 변형별 특징** 각 종류에 대해 아래 3가지 변형 중 하나를 적용 [followup] | `Elastic`이나 `Bounce` 타입의 `Ease In`, `Ease Out`, `Ease In-Out` 변형이 각각 어떤 움직임 특성을 보이는지 비교해 주세요. [followup_answer] | 참고 문서에는 Ease Type의 종류(Quad, Expo, Cubic, Quart, Quint, Circ, Sine, Elastic, Bounce, Back)와 변형(Ease In, Ease Out, Ease In-Out)에 대한 **일반적인 정의**만 제공되며, `Elastic`이나 `Bounce` 타입 각각에 대해 변형별 구체적인 움직임 특성(예: 진동 횟수, 반동 강도 차이 등)을 비교하는 상세 정보는 포함되어 있지 않습니다. 문서에 명시된 변형의 일반적 정의는 다음과 같습니다. * **Ease In**: 느리게 움직 [scores] | [judge_reason] | [source_doc] | 원점을 기준으로 원형 운동을 하게 만들 때 사용합니다. 회전 수, 속도, 반경을 설정할 수 있습니다. **TweenCircularComponent**의 프로퍼티를 살펴봅시다. | 프로퍼티 명 | 설명 | | --- | --- | | Radius | 원점을 기준으로 입력한 값만큼 멀어져 원운동을 합니다. 숫자가 클수록 중심에서 멀어집니다. | | Speed | 입력한 숫자가 클수록 엔티티가 빠르게 원운동을 합니다. | | LookAtCenter | 활성화하면 엔티티 사각형 테두리 윗변이 중심점을 바라보고 회전합니다. | | Deg

[task] | single_turn [pass] | ⏳ 미판정 [title] | 물체의 이동 Ⅱ [question] | 몬스터를 맵에 배치할 때 엔티티 이름을 변경하지 않으면 스크립트에서 해당 객체를 찾지 못하거나 동작하지 않는 원인이 무엇인가요? [answer] | 제시된 참고 문서에는 몬스터 엔티티의 이름을 변경하지 않았을 때 스크립트에서 객체를 찾지 못하거나 동작하지 않는 구체적인 원인이나 기술적 설명이 포함되어 있지 않습니다. 참고 문서에서 다루는 내용은 다음과 같습니다: 1. `Preset List - Monster`에서 `monster-1415`를 맵에 배치합니다. 2. 배치한 엔티티의 이름을 `Monkey`로 변경합니다. 3. `TransformComponent`의 `Translate`와 `RigidbodyComponent`의 `Translate`를 사용하여 택시와 원숭이를 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 이번 가이드는 [물체의 이동 Ⅰ](/docs?postId=123)을 따라 만든 월드에서 이어서 제작해야 정상적으로 동작합니다. 택시가 아잘린을 태우러 가야하는데 원숭이가 길을 가로 막고 있습니다. `TransformComponent`의 `Translate`를 이용하여 택시를 이동시키고 `RigidbodyComponent`의 `Translate` 함수를 사용하여 원숭이를 밀어내봅시다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/174790801778

[task] | single_turn [pass] | ⏳ 미판정 [title] | 물체의 이동 Ⅱ [question] | 물체의 이동 Ⅱ 가이드를 시작하기 전에 반드시 선행 과정인 물체의 이동 Ⅰ을 완료해야 하는 기술적 이유는 무엇인가요? [answer] | 제공된 참고 문서에는 '물체의 이동 Ⅱ'가 '물체의 이동 Ⅰ'을 따라 만든 월드에서 이어서 제작해야 정상적으로 동작한다는 사실만 명시되어 있습니다. 그러나 두 가이드 사이의 구체적인 기술적 의존성(예: 특정 엔티티 경로, 전역 변수, 상태, 또는 Ⅰ에서 생성된 특수한 객체 등)에 대한 설명은 문서에 포함되어 있지 않습니다. 따라서 제공된 정보만으로 선행 과정이 반드시 필요한 구체적인 기술적 이유를 설명할 수 없습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 이번 가이드는 [물체의 이동 Ⅰ](/docs?postId=123)을 따라 만든 월드에서 이어서 제작해야 정상적으로 동작합니다. 택시가 아잘린을 태우러 가야하는데 원숭이가 길을 가로 막고 있습니다. `TransformComponent`의 `Translate`를 이용하여 택시를 이동시키고 `RigidbodyComponent`의 `Translate` 함수를 사용하여 원숭이를 밀어내봅시다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/174790801778

[task] | single_turn [pass] | ⏳ 미판정 [title] | 물체의 이동 Ⅱ [question] | 이 가이드에서 택시를 이동시킬 때 왜 RigidbodyComponent 대신 TransformComponent를 사용하는 것이 적절하다고 볼 수 있나요? [answer] | 제시된 문서에 따르면, 택시를 이동시킬 때 `TransformComponent`의 `Translate`를 사용하는 것이 적절하다고 명시되어 있습니다. 문서에서는 택시를 이동시키는 데 `TransformComponent`의 `Translate`를, 원숭이를 밀어내는 데 `RigidbodyComponent`의 `Translate` 함수를 사용할 것을 권장하고 있습니다. 이는 두 대상의 물리 특성이나 의도된 동작 방식에 따른 차이를 반영한 것으로 보이지만, **왜** 택시는 `TransformComponent`를 사용하는 것이 `Rig [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 이번 가이드는 [물체의 이동 Ⅰ](/docs?postId=123)을 따라 만든 월드에서 이어서 제작해야 정상적으로 동작합니다. 택시가 아잘린을 태우러 가야하는데 원숭이가 길을 가로 막고 있습니다. `TransformComponent`의 `Translate`를 이용하여 택시를 이동시키고 `RigidbodyComponent`의 `Translate` 함수를 사용하여 원숭이를 밀어내봅시다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/174790801778

[task] | single_turn [pass] | ⏳ 미판정 [title] | 물체의 이동 Ⅱ [question] | 원숭이를 밀어내는 동작을 구현할 때 RigidbodyComponent의 Translate 함수를 호출하기 전에 어떤 전제 조건을 만족해야 하나요? [answer] | 제공된 참고 문서에는 `RigidbodyComponent`의 `Translate` 함수를 호출하기 전에 충족해야 하는 구체적인 전제 조건(예: 물리 상태 확인, 특정 태그 존재 확인 등)에 대한 설명이 포함되어 있지 않습니다. 문서에서는 원숭이를 밀어내는 동작을 구현할 때 `RigidbodyComponent`의 `Translate`를 사용한다고 언급만 하고 있으며, 실제 코드 예제로는 `TransformComponent:Translate`를 사용하는 두 가지 사례(시간 기반 이동, 회전각 조건 기반 이동)만 제시되어 있습니다. 따 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 이번 가이드는 [물체의 이동 Ⅰ](/docs?postId=123)을 따라 만든 월드에서 이어서 제작해야 정상적으로 동작합니다. 택시가 아잘린을 태우러 가야하는데 원숭이가 길을 가로 막고 있습니다. `TransformComponent`의 `Translate`를 이용하여 택시를 이동시키고 `RigidbodyComponent`의 `Translate` 함수를 사용하여 원숭이를 밀어내봅시다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/174790801778

[task] | code [pass] | ⏳ 미판정 [title] | 엔티티 구간 이동시키기 [question] | 엔티티에 TweenFloatingComponent와 TweenLineComponent를 모두 적용한 상태에서, OnBeginPlay에서 TweenFloatingComponent의 AutoStart를 true로, TweenLineComponent의 자동 시작 옵션을 false로 설정하여 부유 운동만 단독으로 동작하도록 제어하는 스크립트를 작성해줘 [answer] | ```lua Property: [None] number FloatingAmplitude = 1.0 number FloatingCycleTime = 2.0 number LineDistance = 10.0 number LineCycleTime = 5.0 Method: [server only] void OnBeginPlay() { -- TweenFloatingComponent 설정 local floatingTween = self.Entity.TweenFloatingComponent floatingTween.Ampl [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 엔티티에 동작을 만드는 세 가지 **Tween Component**의 개념을 이해합니다. 컴포넌트를 이용해 크리에이터가 원하는 엔티티 운동 방향과 폭을 조정할 수 있습니다. ##### 참고 가이드 [엔티티의 위치, 크기, 회전 조정](/docs?postId=82) # Tween Component 소개 **Tween Component**를 이용하여 엔티티에 운동성을 만들고, 세부 설정을 조정할 수 있습니다. 운동 성질에 따른 세 가지 컴포넌트가 있으며, 상황에 맞게 단독으로 사용하거나 조합하여 사용할 수 있습

[task] | two_turn [pass] | ⏳ 미판정 [title] | 물체의 이동 Ⅱ [question] | RigidbodyComponent를 사용하여 택시가 원숭이를 밀어내는 원리를 설명해 주세요 [answer] | RigidbodyComponent를 사용하여 택시가 원숭이를 밀어내는 원리는 **위치 기반의 근접 감지**와 **물리 힘(Force) 적용**을 결합한 방식입니다. 구체적인 작동 과정은 다음과 같습니다. 1. **초기화 (OnBeginPlay)** * 스크립트가 실행되면 `_EntityService:GetEntityByPath`를 통해 택시 엔티티를 찾습니다. * 원숭이(`self.Entity`)와 택시 각각의 `TransformComponent`와 원숭이의 `RigidbodyComponent` 참조를 프 [followup] | `OnUpdate`에서 `taxiPos.x > monkeyPos.x - 0.8` 조건이 참일 때 `SetForce`를 호출하는 코드 예시를 보여주세요 [followup_answer] | 참고 문서에 나와 있는 `OnUpdate` 함수의 코드 예시는 다음과 같습니다. ```lua OnUpdate() { if self.IsHit == false then local taxiPos = self.TaxiTransform.Position local monkeyPos = self.MonkeyTransform.Position if taxiPos.x > monkeyPos.x -0.8 then self.MonkeyRigidbody:SetForce(Vector2 [scores] | [judge_reason] | [source_doc] | RigidbodyComponent를 활용해 질주하는 택시가 원숭이를 밀어낼 수 있도록 만들어 봅시다. 원숭이를 밀어내기 위해서는 원숭이가 택시 위치를 확인하고, 택시가 원숭이게 근접하면 원숭이의 RigidbodyComponent에 힘을 주도록 만들어봅시다. 1. **Workspace - MyDesk - Create Scripts - Create Component**을 선택해 새 스크립트 컴포넌트를 추가하고 이름을 **Monkey**로 변경합니다. 2. **Monkey** 엔티티에 **Monkey 컴포넌트**를 추가합니

[task] | code [pass] | ⏳ 미판정 [title] | 물체의 이동 Ⅱ [question] | RigidbodyComponent의 Translate 메서드를 사용하여 원숭이 엔티티를 특정 방향으로 밀어내는 스크립트를 작성해줘. [answer] | 제공된 참고 문서에는 `RigidbodyComponent`의 `Translate` 함수를 **사용하여 원숭이를 밀어내야 한다는 설명**만 있을 뿐, 실제 `RigidbodyComponent:Translate` 호출 예제 코드나 해당 메서드의 정확한 파라미터 시그니처가 포함되어 있지 않습니다. 문서에는 `TransformComponent:Translate`를 사용한 택시 이동 예제는 제공되지만, 물리 엔진 기반의 `RigidbodyComponent:Translate` 사용법은 문서에 명시되어 있지 않아 해당 API의 정확한 사용법을 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 이번 가이드는 [물체의 이동 Ⅰ](/docs?postId=123)을 따라 만든 월드에서 이어서 제작해야 정상적으로 동작합니다. 택시가 아잘린을 태우러 가야하는데 원숭이가 길을 가로 막고 있습니다. `TransformComponent`의 `Translate`를 이용하여 택시를 이동시키고 `RigidbodyComponent`의 `Translate` 함수를 사용하여 원숭이를 밀어내봅시다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/174790801778

[task] | instruction_following [pass] | ⏳ 미판정 [title] | Maple GYM 만들기 Ⅰ [question] | WorkOut 메소드에서 SetPow를 호출하는 코드를 코드만 출력하고 설명은 주석으로 작성하세요. [answer] | ```lua -- WorkOut 메소드에서 SetPow를 호출하는 코드 self.Stats:SetPow(calePow) ``` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | ```lua [multicast] void SetPow (number currentPow) { self.CurrentPow = currentPow log(self.CurrentPow) } ``` 8. `WorkOut()` 메소드에 `SetPow()` 메소드를 호출할 수 있도록 가장 하단에 아래 내용을 추가 작성합니다. ```lua self.Stats:SetPow(calePow) ``` 9. `Ctrl`키를 누를 때마다 숫자가 증가하는

[task] | two_turn [pass] | ⏳ 미판정 [title] | 엔티티 구간 이동시키기 [question] | `TweenCircularComponent`를 이용해 엔티티를 원형으로 이동시키려면 어떤 프로퍼티를 설정해야 하나요? [answer] | `TweenCircularComponent`를 사용해 엔티티를 원형으로 이동시키려면 아래 프로퍼티를 설정해야 합니다. **핵심 설정 프로퍼티** * **Radius**: 원운동의 반경입니다. 원점(중심) 기준으로 엔티티가 얼마나 멀리서 회전할지 결정합니다. 숫자가 클수록 중심에서 멀어집니다. * **Speed**: 원운동의 속력입니다. 숫자가 클수록 엔티티가 빠르게 회전합니다. * **Degree**: 회전할 각도입니다. 특정 각도만큼만 회전하고 멈추게 하려면 원하는 각도를 입력합니다. 계속 원운동을 하게 하려면 `0` [followup] | `Degree`를 0으로 설정했을 때와 특정 값으로 설정했을 때의 동작 차이와 `IsClockwise`가 회전 방향에 미치는 구체적인 영향을 설명해 주세요. [followup_answer] | `TweenCircularComponent`의 `Degree`와 `IsClockwise` 프로퍼티의 동작 차이는 다음과 같습니다. ### 1. `Degree` 프로퍼티의 동작 차이 * **0을 설정한 경우**: 엔티티는 **멈추지 않고 계속 원운동을 합니다.** * **특정 값(각도)을 설정한 경우**: 입력한 각도만큼만 회전한 뒤 **멈춥니다.** ### 2. `IsClockwise` 프로퍼티가 회전 방향에 미치는 영향 `IsClockwise`는 엔티티가 회전하는 방향을 정의합니다. * **`tr [scores] | [judge_reason] | [source_doc] | 원점을 기준으로 원형 운동을 하게 만들 때 사용합니다. 회전 수, 속도, 반경을 설정할 수 있습니다. **TweenCircularComponent**의 프로퍼티를 살펴봅시다. | 프로퍼티 명 | 설명 | | --- | --- | | Radius | 원점을 기준으로 입력한 값만큼 멀어져 원운동을 합니다. 숫자가 클수록 중심에서 멀어집니다. | | Speed | 입력한 숫자가 클수록 엔티티가 빠르게 원운동을 합니다. | | LookAtCenter | 활성화하면 엔티티 사각형 테두리 윗변이 중심점을 바라보고 회전합니다. | | Deg

[task] | instruction_following [pass] | ⏳ 미판정 [title] | Maple GYM 만들기 Ⅰ [question] | SetPow 메소드의 실행 공간 속성을 3문장 이내로 설명하세요. [answer] | SetPow 메소드의 실행 공간 속성은 [multicast]입니다. 이 속성은 해당 메소드가 서버와 클라이언트 양쪽에서 동시에 실행됨을 의미합니다. 따라서 self.CurrentPow 값이 변경되면 모든 관련 엔티티에 동기화되어 반영됩니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | ```lua [multicast] void SetPow (number currentPow) { self.CurrentPow = currentPow log(self.CurrentPow) } ``` 8. `WorkOut()` 메소드에 `SetPow()` 메소드를 호출할 수 있도록 가장 하단에 아래 내용을 추가 작성합니다. ```lua self.Stats:SetPow(calePow) ``` 9. `Ctrl`키를 누를 때마다 숫자가 증가하는

[task] | two_turn [pass] | ⏳ 미판정 [title] | 물체의 이동 Ⅰ [question] | 택시를 맵에 배치하고 FlipX 값을 True로 변경하는 과정은 무엇을 의미하며, 이 설정은 물체의 이동 방향에 어떤 영향을 미치나요? [answer] | 택시를 맵에 배치하고 `SpriteRendererComponent`의 **FlipX** 값을 **True**로 변경하는 과정은 택시 스프라이트(이미지)의 좌우 방향을 반전시키는 것을 의미합니다. 기본적으로 NPC 모델은 특정 방향(보통 오른쪽)을 바라보는 모습으로 제작됩니다. 학습 과정의 예시에서는 택시를 맵의 **왼쪽**에 배치하고, 아잘린을 **오른쪽**에 배치합니다. 택시가 오른쪽에 있는 아잘린을 향해 이동하려면, 택시의 앞부분(노즈)이 오른쪽을 향해야 합니다. 따라서 **FlipX = True** 설정은 택시 스프라이트를 [followup] | FlipX 설정이 적용된 상태에서 택시를 특정 위치까지 이동시키기 위해 TransformComponent의 Position을 변경하는 mLua 스크립트 코드를 작성해 주세요. [followup_answer] | 참고 문서에 따르면, 물체를 이동시키기 위해 `TransformComponent`의 `Position` 값을 변경할 때 `RigidbodyComponent`가 존재하면 두 컴포넌트의 값이 충돌하여 원하는 대로 움직이지 않을 수 있으므로, 먼저 `RigidbodyComponent`를 제거해야 합니다. 엔티티를 경로로 가져오는 `_EntityService:GetEntityByPath` 메서드와 `OnUpdate` 생명주기 메서드를 사용하여 택시의 위치를 변경하는 mLua 스크립트는 다음과 같습니다. ```lua Property: [ [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 용감한 시그너스 기사단 소속 아잘린이 먼저 고통의 미궁으로 출발한 나이트워커 부대에 합류할 수 있도록 택시를 불러봅시다. 부른 택시가 아잘린을 지나치지 않고 아잘린 앞에서 멈춰서 아잘린이 탑승할 수 있도록 만들어야 합니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/1747902531299ee5bec9350ac458d9f255a76eba57191.gif "Example") # StaticNPC 모델 수정하기 StaticNPC 모델에서 Rigid

[task] | instruction_following [pass] | ⏳ 미판정 [title] | Maple GYM 만들기 Ⅰ [question] | PlayerStats 컴포넌트의 Property 블록을 복사하여 출력하되, 각 프로퍼티 주석은 `--`로 유지하고 설명 문장은 작성하지 마세요. [answer] | ```lua Property: [Sync] number CurrentPower = 0 --현재 캐릭터의 힘 [Sync] number MaxPower = 15 --최대 누적 가능한 힘 [Sync] number CurrentMoney = 0 --현재 캐릭터의 돈 [Sync] number CurrentSkillGrade = 1 --현재 캐릭터의 운동 등급 [Sync] number CurrentDanGrad = 1 --현재 캐릭터의 DNA 등급 [Sync] number WeightBonus = 1 --운동 시 증가하는 힘의 양 ``` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | Maple Gym에는 힘과 최대 누적 가능한 힘, 돈, 등급 등 다양한 스탯 정보가 필요합니다. 다양한 정보를 저장하고 관리할 수 있는 컴포넌트를 만들어 봅시다. 1. 새로운 **PlayerStats** 컴포넌트를 생성합니다. 2. **PlayerStats**컴포넌트를 **DefaultPlayer**에 추가합니다. 3. PlayerStats에 스탯 정보로 사용할 프로퍼티를 추가합니다. ```lua Property: [Sync] number CurrentPower = 0 --현재 캐릭터의 힘

[task] | instruction_following [pass] | ⏳ 미판정 [title] | Maple GYM 만들기 Ⅰ [question] | PlayerStats 컴포넌트의 프로퍼티 6가지를 이름, 초기값, 주석 설명으로 구분하여 표로 정리하세요. [answer] | PlayerStats 컴포넌트에 포함된 6가지 프로퍼티는 다음과 같습니다. | 프로퍼티 이름 | 초기값 | 설명 | | :--- | :--- | :--- | | `CurrentPower` | `0` | 현재 캐릭터의 힘 | | `MaxPower` | `15` | 최대 누적 가능한 힘 | | `CurrentMoney` | `0` | 현재 캐릭터의 돈 | | `CurrentSkillGrade` | `1` | 현재 캐릭터의 운동 등급 | | `CurrentDanGrad` | `1` | 현재 캐릭터의 DNA 등급 | | `WeightBo [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | Maple Gym에는 힘과 최대 누적 가능한 힘, 돈, 등급 등 다양한 스탯 정보가 필요합니다. 다양한 정보를 저장하고 관리할 수 있는 컴포넌트를 만들어 봅시다. 1. 새로운 **PlayerStats** 컴포넌트를 생성합니다. 2. **PlayerStats**컴포넌트를 **DefaultPlayer**에 추가합니다. 3. PlayerStats에 스탯 정보로 사용할 프로퍼티를 추가합니다. ```lua Property: [Sync] number CurrentPower = 0 --현재 캐릭터의 힘

[task] | code [pass] | ⏳ 미판정 [title] | 물체의 이동 Ⅰ [question] | 택시 엔티티에 TouchEvent 이벤트 핸들러를 추가하여 아잘린 엔티티가 택시를 터치하면 택시의 이동 속도를 0으로 설정하여 즉시 정지시키는 스크립트를 작성해줘 [answer] | 제공된 참고 문서에는 `TouchEvent` 이벤트 핸들러의 구체적인 사용법, 터치 감지 설정, 또는 `RigidbodyComponent`의 `Velocity` 속성에 대한 설명이 포함되어 있지 않습니다. 문서에서는 StaticNPC 모델에서 `RigidbodyComponent`를 제거해야 한다고만 언급하고 있으며, 물체의 이동은 `TransformComponent.Position`을 직접 수정하는 방식으로만 예시가 제시되어 있습니다. 또한 `TouchEvent`가 발생할 수 있는 컴포넌트(예: Trigger 컴포넌트 등)나 이벤 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 용감한 시그너스 기사단 소속 아잘린이 먼저 고통의 미궁으로 출발한 나이트워커 부대에 합류할 수 있도록 택시를 불러봅시다. 부른 택시가 아잘린을 지나치지 않고 아잘린 앞에서 멈춰서 아잘린이 탑승할 수 있도록 만들어야 합니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/1747902531299ee5bec9350ac458d9f255a76eba57191.gif "Example") # StaticNPC 모델 수정하기 StaticNPC 모델에서 Rigid

[task] | instruction_following [pass] | ⏳ 미판정 [title] | Maple GYM 만들기 Ⅰ [question] | Ctrl 키 입력 시 로그 확인 단계를 단계별 번호 목록으로 정리하세요. [answer] | 참고 문서에 따르면 Ctrl 키 입력 시 로그를 확인하는 단계는 다음과 같습니다. 1. `WorkOut()` 메소드 하단에 `self.Stats:SetPow(calePow)`를 호출하도록 코드를 추가합니다. 2. `Ctrl` 키를 누릅니다. 3. 숫자가 증가하는 로그가 출력되는지 확인합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | ```lua [multicast] void SetPow (number currentPow) { self.CurrentPow = currentPow log(self.CurrentPow) } ``` 8. `WorkOut()` 메소드에 `SetPow()` 메소드를 호출할 수 있도록 가장 하단에 아래 내용을 추가 작성합니다. ```lua self.Stats:SetPow(calePow) ``` 9. `Ctrl`키를 누를 때마다 숫자가 증가하는

[task] | two_turn [pass] | ⏳ 미판정 [title] | 물체의 이동 Ⅰ [question] | 택시 컴포넌트에 아잘린의 위치 정보를 저장하기 위해 추가해야 하는 프로퍼티의 이름과 타입은 무엇인가요? [answer] | 택시 컴포넌트에 아잘린의 위치 정보를 저장하기 위해 추가해야 하는 프로퍼티의 이름은 `AzallinTransform`이며, 타입은 `Component`입니다. ```lua Property: [Sync] Component AzallinTransform = nil ``` [followup] | [Sync] 속성을 가진 Component 타입의 AzallinTransform 프로퍼티 선언 문법을 포함하여 Property: 블록의 전체 코드를 제시해 주세요. [followup_answer] | ```lua Property: [Sync] Component AzallinTransform = nil ``` [scores] | [judge_reason] | [source_doc] | 만든 택시는 멈추지 않고 계속 이동하고 있습니다. 택시는 아잘린이 서 있는 곳에서 멈춰야 하므로, 아잘린의 위치 정보를 이용해야 합니다. 택시가 이동하다 아잘린과의 거리가 가까워지면, 멈추도록 조건을 추가해봅시다. 1. **Taxi**컴포넌트에 새로운 **AzallinTransform** 프로퍼티를 추가하고, 타입을 **Component**로 변경합니다. ```lua Property: [Sync] Component AzallinTransform = nil ``` 2. `OnBeginP

[task] | single_turn [pass] | ⏳ 미판정 [title] | 물체의 이동 Ⅱ [question] | TransformComponent의 Translate와 RigidbodyComponent의 Translate는 사용 목적과 물리 엔진 적용 여부에서 어떻게 다른가요? [answer] | 참고 문서에 따르면 두 함수의 차이는 다음과 같습니다. **1. TransformComponent:Translate** * **사용 목적:** 택시와 같이 **물리 엔진의 영향을 받지 않고** 단순히 위치만 이동시키고 싶은 객체에 사용됩니다. * **물리 엔진 적용 여부:** 물리 엔진에 의해 다른 객체와 충돌하거나 밀리는 등의 상호작용을 하지 않는 순수한 변환(위치 이동) 기능입니다. * **예시:** 문서에서는 택시가 원숭이를 만나기 전까지 좌우로 이동하는 데 `self.Entity.TransformComponent [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 이번 가이드는 [물체의 이동 Ⅰ](/docs?postId=123)을 따라 만든 월드에서 이어서 제작해야 정상적으로 동작합니다. 택시가 아잘린을 태우러 가야하는데 원숭이가 길을 가로 막고 있습니다. `TransformComponent`의 `Translate`를 이용하여 택시를 이동시키고 `RigidbodyComponent`의 `Translate` 함수를 사용하여 원숭이를 밀어내봅시다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/174790801778

[task] | code [pass] | ⏳ 미판정 [title] | 엔티티 구간 이동시키기 [question] | 엔티티에 TweenLineComponent를 적용하여 시작 위치에서 목표 위치까지 선형 이동하도록 설정하고, OnUpdate에서 self.Entity.TransformComponent.Position을 확인하여 목표 위치에 도달하면 log로 도달 사실을 출력하는 스크립트를 작성해줘 [answer] | 제시된 참고 문서에는 `TweenLineComponent`에 대한 설명이 매우 제한적입니다. 문서에서 `TweenLineComponent`의 구체적인 프로퍼티 이름(목표 위치를 설정하는 프로퍼티 등)이나 mLua를 통해 해당 컴포넌트를 조작하는 API(메서드)에 대한 정보는 제공되지 않습니다. 따라서 제공된 문서만으로는 `TweenLineComponent`를 설정하는 정확한 코드 작성이나, 컴포넌트가 내부적으로 엔티티의 위치(`TransformComponent.Position`)를 어떻게 변경하는지에 대한 세부 동작 방식을 확인할 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 엔티티에 동작을 만드는 세 가지 **Tween Component**의 개념을 이해합니다. 컴포넌트를 이용해 크리에이터가 원하는 엔티티 운동 방향과 폭을 조정할 수 있습니다. ##### 참고 가이드 [엔티티의 위치, 크기, 회전 조정](/docs?postId=82) # Tween Component 소개 **Tween Component**를 이용하여 엔티티에 운동성을 만들고, 세부 설정을 조정할 수 있습니다. 운동 성질에 따른 세 가지 컴포넌트가 있으며, 상황에 맞게 단독으로 사용하거나 조합하여 사용할 수 있습

[task] | instruction_following [pass] | ⏳ 미판정 [title] | Maple GYM 만들기 Ⅰ [question] | KinematicMove로 이동 방식을 변경한 후, 캐릭터가 지면 영역에서만 이동하도록 제한하기 위해 PlayerController 컴포넌트에 추가해야 하는 두 개의 [Sync] 프로퍼티 선언 코드를 주석 없이 출력하세요. [answer] | ```lua Property: [Sync] Component Transform = nil [Sync] Component Movement = nil ``` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 운동할수록 캐릭터가 커지고, 그 힘을 돈으로 바꿀 수 있는 월드, 'Maple GYM'을 만들어봅시다. # 이동 방식 변경 RigidBodyComponent의 **KinematicMove**를 활용해 캐릭터의 이동 방식을 변경해봅시다. **DefaultPlayer - RigidBodyComponent**에서 **KinematicMove**를 선택합니다. #### 이동 영역 제한 캐릭터의 이동 방식을 **KinematicMove**로 변경하면 캐릭터가 자유롭게 상하좌우로 이동하게 됩니다. 캐릭터가 지면 영

[task] | code [pass] | ⏳ 미판정 [title] | 엔티티 구간 이동시키기 [question] | TweenLineComponent의 Positions에 (0, 10), (10, 20), (20, 10)의 3개 좌표를 입력하고 Interpolation을 SplineTypeA로 설정하여 부드러운 곡선 경로로 이동하는 스크립트를 작성해줘 [answer] | 참고 문서에 `TweenLineComponent`의 프로퍼티(`Positions`, `Interpolation` 등)는 설명되어 있지만, mLua 스크립트에서 이 프로퍼티들을 직접 조작하는 예제 코드(API 호출 형식)는 제공되지 않았습니다. 따라서 **mLua 코드 블록은 작성할 수 없습니다.** 대신, Scene 편집기에서 `TweenLineComponent`를 설정하는 방법을 문서에 근거하여 안내해 드립니다. ### 설정 방법 엔티티에 **TweenLineComponent**를 추가하고 다음과 같이 설정합니다. 1. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 원점을 기준으로 목적지까지 선형 운동을 하게 만들 때 사용합니다. 목적지까지 편도, 왕복 운동 여부와 더불어 가·감속, 도달 시 튕김 등 운동 방식을 설정할 수 있습니다. **TweenLineComponent**의 프로퍼티를 살펴봅시다. | 프로퍼티 명 | 설명 | | ------ | --- | | TweenType | 기본값은 Linear입니다. 다른 모양의 운동 방식을 선택할 수 있습니다. 선형운동 종류별 설명은 하단의 참고자료를 참고하세요. | | Duration | 목적지까지 도달하는 데 걸리는 시간을 의미합니다. | |

[task] | instruction_following [pass] | ⏳ 미판정 [title] | Maple GYM 만들기 Ⅰ [question] | WorkOut() 메소드의 힘 계산 로직을 구현하는 코드만 출력하고, MaxPow 초과 시 처리 방법은 주석으로 설명하세요. [answer] | ```lua [server only] void WorkOut() { local calePow = self.Stats.CurrentPow + self.Stats.WeightBonus if calePow > self.Stats.MaxPow then -- MaxPow를 초과하는 경우, 힘은 MaxPow 값을 넘지 않도록 제한됩니다. calePow = self.Stats.MaxPow end self.Stats:SetPow(calePow) } ``` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | `Ctrl`키를 눌러 Attack 상태가 되면 운동을 하고, 힘이 증가하도록 만듭니다. 1. **PlayerController**에 **Component** 타입의 **Stats** 프로퍼티를 추가합니다. 이 프로퍼티는 **PlayerStats** 컴포넌트를 참고하게 됩니다. ```lua Property: [Sync] Component Stats = nil ``` 2. `OnBeginPlay()` 메소드에 **PlayerStats** 컴포넌트를 받아오도록 아래와 같이 작성합니다.**Playe

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