[task] | diverse_qa [title] | 엔티티 구간 이동시키기 [category] | Guides [rephrased] | 질문: `TweenCircularComponent`는 어떤 목적으로 사용되는 컴포넌트인가요? 답변: 엔티티가 원점을 기준으로 원형 운동을 하도록 만들기 위해 사용됩니다. 질문: `TweenCircularComponent`의 `Radius` 프로퍼티 값이 클수록 엔티티는 어떻게 움직이나요? 답변: 원점(중심)에서 더 멀어지며 원운동을 합니다. 질문: `TweenCircularComponent`의 `LookAtCenter` 프로퍼티를 활성화하면 엔티티의 방향은 어떻게 되나요? 답변: 엔티티 사각형 테두리 윗변이 중심점을 바라보며 회 [original] | 원점을 기준으로 원형 운동을 하게 만들 때 사용합니다. 회전 수, 속도, 반경을 설정할 수 있습니다. **TweenCircularComponent**의 프로퍼티를 살펴봅시다. | 프로퍼티 명 | 설명 | | --- | --- | | Radius | 원점을 기준으로 입력한 값만큼 멀어져 원운동을 합니다. 숫자가 클수록 중심에서 멀어집니다. | | Speed | 입력한 숫자가 클수록 엔티티가 빠르게 원운동을 합니다. | | LookAtCenter | 활성화하면 엔티티 사각형 테두리 윗변이 중심점을 바라보고 회전합니다. | | Deg [chunk_id] | Guides:122:2
[task] | extract_knowledge [title] | 엔티티 구간 이동시키기 [category] | Guides [rephrased] | # 이동 엔티티 구간 이동시키기: Tween Component 활용 ## 1. 개념 설명 mLua 환경에서 엔티티의 운동성을 부여하기 위해 **Tween Component**를 사용합니다. 이 컴포넌트들은 엔티티의 원점 기준 운동 방향과 폭을 조정하며, 운동 성질에 따라 세 가지 종류로 나뉩니다. | 컴포넌트 이름 | 운동 형태 | | :--- | :--- | | `TweenFloatingComponent` | 원점을 기준으로 하는 부유 운동 (상하 진동) | | `TweenLineComponent` | 원점에서 목적지까지의 [original] | # 학습 과정 소개 엔티티에 동작을 만드는 세 가지 **Tween Component**의 개념을 이해합니다. 컴포넌트를 이용해 크리에이터가 원하는 엔티티 운동 방향과 폭을 조정할 수 있습니다. ##### 참고 가이드 [엔티티의 위치, 크기, 회전 조정](/docs?postId=82) # Tween Component 소개 **Tween Component**를 이용하여 엔티티에 운동성을 만들고, 세부 설정을 조정할 수 있습니다. 운동 성질에 따른 세 가지 컴포넌트가 있으며, 상황에 맞게 단독으로 사용하거나 조합하여 사용할 수 있습 [chunk_id] | Guides:122:0
[task] | wikipedia [title] | 엔티티 구간 이동시키기 [category] | Guides [rephrased] | # 이동 엔티티 구간 이동시키기 **이동 엔티티 구간 이동시키기**는 원점을 기준으로 목적지까지 선형 운동을 수행하도록 설계된 기능입니다. 이 기능을 통해 엔티티가 목적지까지 이동하는 방식을 편도 또는 왕복으로 설정할 수 있으며, 가감속이나 도달 시 튕김 등 다양한 운동 방식을 지정할 수 있습니다. 이러한 동작을 구현하기 위해 **TweenLineComponent**의 프로퍼티를 설정합니다. **TweenLineComponent**의 주요 프로퍼티와 그 동작 방식은 다음과 같습니다. **TweenType**은 엔티티의 기본 운 [original] | 원점을 기준으로 목적지까지 선형 운동을 하게 만들 때 사용합니다. 목적지까지 편도, 왕복 운동 여부와 더불어 가·감속, 도달 시 튕김 등 운동 방식을 설정할 수 있습니다. **TweenLineComponent**의 프로퍼티를 살펴봅시다. | 프로퍼티 명 | 설명 | | ------ | --- | | TweenType | 기본값은 Linear입니다. 다른 모양의 운동 방식을 선택할 수 있습니다. 선형운동 종류별 설명은 하단의 참고자료를 참고하세요. | | Duration | 목적지까지 도달하는 데 걸리는 시간을 의미합니다. | | [chunk_id] | Guides:122:1
[task] | wikipedia [title] | 물체의 이동 Ⅱ [category] | Guides [rephrased] | 본 문서는 『물체의 이동 Ⅰ』 가이드를 참고하여 제작한 월드를 기반으로 한 연속 학습 자료입니다. 시나리오는 택시가 아잘린을 태우러 이동해야 하지만, 경로에 원숭이가 가로막혀 있는 상황을 설정하고 있습니다. 이를 해결하기 위해 `TransformComponent`의 `Translate` 메서드를 사용하여 택시를 이동시키고, `RigidbodyComponent`의 `Translate` 메서드를 사용하여 원숭이를 물리적으로 밀어내는 방법을 다룹니다. 원숭이 엔티티를 배치하는 절차는 다음과 같습니다. 먼저 프리셋 리스트(Preset L [original] | # 학습 과정 소개 이번 가이드는 [물체의 이동 Ⅰ](/docs?postId=123)을 따라 만든 월드에서 이어서 제작해야 정상적으로 동작합니다. 택시가 아잘린을 태우러 가야하는데 원숭이가 길을 가로 막고 있습니다. `TransformComponent`의 `Translate`를 이용하여 택시를 이동시키고 `RigidbodyComponent`의 `Translate` 함수를 사용하여 원숭이를 밀어내봅시다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/174790801778 [chunk_id] | Guides:125:0
[task] | wikipedia [title] | 엔티티 구간 이동시키기 [category] | Guides [rephrased] | # 이동 엔티티 구간 이동시키기: 원형 운동 (TweenCircularComponent) 이동 엔티티 구간 이동시키기 기능 중 **TweenCircularComponent**는 엔티티가 원점을 기준으로 원형 운동을 수행하도록 하는 데 사용됩니다. 이 컴포넌트를 통해 회전 수, 속도, 반경 등을 설정하여 엔티티의 원운동 궤적을 제어할 수 있습니다. ## TweenCircularComponent 프로퍼티 **TweenCircularComponent**는 다음과 같은 프로퍼티를 제공하여 원형 운동의 세부 동작을 정의합니다. * [original] | 원점을 기준으로 원형 운동을 하게 만들 때 사용합니다. 회전 수, 속도, 반경을 설정할 수 있습니다. **TweenCircularComponent**의 프로퍼티를 살펴봅시다. | 프로퍼티 명 | 설명 | | --- | --- | | Radius | 원점을 기준으로 입력한 값만큼 멀어져 원운동을 합니다. 숫자가 클수록 중심에서 멀어집니다. | | Speed | 입력한 숫자가 클수록 엔티티가 빠르게 원운동을 합니다. | | LookAtCenter | 활성화하면 엔티티 사각형 테두리 윗변이 중심점을 바라보고 회전합니다. | | Deg [chunk_id] | Guides:122:2
[task] | knowledge_list [title] | 물체의 이동 Ⅰ [category] | Guides [rephrased] | 제공된 문서에 기반하여 추출한 핵심 사실 목록입니다. 1. `Taxi` 컴포넌트에는 `[Sync]` 속성을 가진 `Component` 타입의 `AzallinTransform` 프로퍼티가 선언되며, 기본값은 `nil`입니다. 2. `OnBeginPlay()` 메서드는 `[server only]` 실행 공간에서 동작하며, `_EntityService:GetEntityByPath("/maps/map01/Azallin")`를 호출하여 아잘린 엔티티를 가져오고, 해당 엔티티의 `TransformComponent`를 `self.Azallin [original] | 만든 택시는 멈추지 않고 계속 이동하고 있습니다. 택시는 아잘린이 서 있는 곳에서 멈춰야 하므로, 아잘린의 위치 정보를 이용해야 합니다. 택시가 이동하다 아잘린과의 거리가 가까워지면, 멈추도록 조건을 추가해봅시다. 1. **Taxi**컴포넌트에 새로운 **AzallinTransform** 프로퍼티를 추가하고, 타입을 **Component**로 변경합니다. ```lua Property: [Sync] Component AzallinTransform = nil ``` 2. `OnBeginP [chunk_id] | Guides:123:2
[task] | diverse_qa [title] | 물체의 이동 Ⅰ [category] | Guides [rephrased] | 질문: 맵에 배치된 엔티티의 위치 정보는 어떤 컴포넌트의 어떤 값으로 표현됩니까? 답변: 위치 정보는 TransformComponent의 Position x, y, z 값으로 표현됩니다. 질문: 택시를 오른쪽으로 이동시키려면 Position의 어떤 값을 어떻게 변경해야 합니까? 답변: x 값이 커지도록 만들어야 합니다. 질문: 새로운 스크립트 컴포넌트를 생성하는 올바른 경로와 컴포넌트 이름은 무엇입니까? 답변: Workspace - MyDesk - Create Scripts - Create Component 경로를 선택하고 컴포 [original] | 택시를 이동시키기 위해서는 `TransformComponent`의 **Position** 값을 변경해야 합니다. 맵에 배치되는 모든 엔티티는 위치 정보를 가지고 있습니다. 이 위치 정보는 TransformComponent에서 Position x, y, z 값으로 표현됩니다. 오른쪽으로 이동시키기 위해서는 x 값이 커지도록 만들어야 합니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/1747902531299ee5bec9350ac458d9f255a76eba57191.g [chunk_id] | Guides:123:1
[task] | knowledge_list [title] | 물체의 이동 Ⅱ [category] | Guides [rephrased] | 제시된 원문에는 `TransformComponent`와 `RigidbodyComponent`의 `Translate` 함수에 대한 구체적인 매개변수, 반환 타입, 또는 실행 공간(서버/클라이언트) 제약 사항이 명시되어 있지 않습니다. 따라서 원문에 포함된 정보만을 사용하여 사실 목록을 정리하면 다음과 같습니다. 1. 본 가이드는 [물체의 이동 Ⅰ] 가이드를 따라 제작된 월드에서 이어서 제작되어야 정상적으로 동작합니다. 2. 이 가이드의 시나리오는 택시가 아잘린을 태우러 가려 하지만 원숭이가 길을 가로막고 있는 상황입니다. 3. 택시 [original] | # 학습 과정 소개 이번 가이드는 [물체의 이동 Ⅰ](/docs?postId=123)을 따라 만든 월드에서 이어서 제작해야 정상적으로 동작합니다. 택시가 아잘린을 태우러 가야하는데 원숭이가 길을 가로 막고 있습니다. `TransformComponent`의 `Translate`를 이용하여 택시를 이동시키고 `RigidbodyComponent`의 `Translate` 함수를 사용하여 원숭이를 밀어내봅시다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/174790801778 [chunk_id] | Guides:125:0
[task] | distill [title] | 물체의 이동 Ⅰ [category] | Guides [rephrased] | **[요약] 아잘린 위치 기반 택시 정지 처리** 택시가 아잘린의 위치에 도달할 때까지 이동하다가, 도달 시 멈추도록 로직을 구현합니다. ### 1. 프로퍼티 추가 `Taxi` 컴포넌트에 아잘린의 트랜스폼을 참조할 프로퍼티를 추가합니다. ```lua Property: [Sync] Component AzallinTransform = nil ``` ### 2. 초기화 (OnBeginPlay) 서버 실행 공간에서 아잘린 엔티티를 경로로 조회하여 `AzallinTransform` 프로퍼티에 할당합니다. ```lua [server [original] | 만든 택시는 멈추지 않고 계속 이동하고 있습니다. 택시는 아잘린이 서 있는 곳에서 멈춰야 하므로, 아잘린의 위치 정보를 이용해야 합니다. 택시가 이동하다 아잘린과의 거리가 가까워지면, 멈추도록 조건을 추가해봅시다. 1. **Taxi**컴포넌트에 새로운 **AzallinTransform** 프로퍼티를 추가하고, 타입을 **Component**로 변경합니다. ```lua Property: [Sync] Component AzallinTransform = nil ``` 2. `OnBeginP [chunk_id] | Guides:123:2
[task] | extract_knowledge [title] | 물체의 이동 Ⅰ [category] | Guides [rephrased] | # 물체의 이동 Ⅰ: StaticNPC 모델 수정 및 배치 본 절에서는 `StaticNPC` 모델의 구성 요소 충돌 문제 해결 방법과, 특정 엔티티를 맵에 배치하여 이동 준비 상태를 만드는 과정을 다룹니다. ## 1. 개념 설명 `StaticNPC` 모델은 기본적으로 `RigidbodyComponent`와 `TransformComponent`를 모두 포함합니다. 물체의 위치(`Position`)를 스크립트를 통해 제어할 때, `RigidbodyComponent`가 존재하면 물리 시뮬레이션과 `TransformComponent` [original] | # 학습 과정 소개 용감한 시그너스 기사단 소속 아잘린이 먼저 고통의 미궁으로 출발한 나이트워커 부대에 합류할 수 있도록 택시를 불러봅시다. 부른 택시가 아잘린을 지나치지 않고 아잘린 앞에서 멈춰서 아잘린이 탑승할 수 있도록 만들어야 합니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/1747902531299ee5bec9350ac458d9f255a76eba57191.gif "Example") # StaticNPC 모델 수정하기 StaticNPC 모델에서 Rigid [chunk_id] | Guides:123:0
[task] | knowledge_list [title] | 엔티티 구간 이동시키기 [category] | Guides [rephrased] | ```lua -- 문서 검토 및 핵심 사실 추출 -- 대상 문서: [Guides] 기본 제작 가이드 > 객체 제어 > 이동 엔티티 구간 이동시키기 local facts = { { category = "TweenCircularComponent 개요", description = "TweenCircularComponent는 원점을 기준으로 원형 운동을 하게 만들 때 사용되며, 회전 수, 속도, 반경을 설정할 수 있는 프로퍼티를 가집니다." }, { category = "T [original] | 원점을 기준으로 원형 운동을 하게 만들 때 사용합니다. 회전 수, 속도, 반경을 설정할 수 있습니다. **TweenCircularComponent**의 프로퍼티를 살펴봅시다. | 프로퍼티 명 | 설명 | | --- | --- | | Radius | 원점을 기준으로 입력한 값만큼 멀어져 원운동을 합니다. 숫자가 클수록 중심에서 멀어집니다. | | Speed | 입력한 숫자가 클수록 엔티티가 빠르게 원운동을 합니다. | | LookAtCenter | 활성화하면 엔티티 사각형 테두리 윗변이 중심점을 바라보고 회전합니다. | | Deg [chunk_id] | Guides:122:2
[task] | diverse_qa [title] | 물체의 이동 Ⅱ [category] | Guides [rephrased] | 질문: 이번 가이드는 어떤 전제 조건 하에 제작해야 정상적으로 동작합니까? 답변: [물체의 이동 Ⅰ]을 따라 만든 월드에서 이어서 제작해야 정상적으로 동작합니다. 질문: 이 가이드에서 택시를 이동시키기 위해 `TransformComponent`의 어떤 함수를 사용해야 합니까? 답변: `Translate` 함수를 이용하여 택시를 이동시킵니다. 질문: 원숭이를 밀어내기 위해 `RigidbodyComponent`의 어떤 함수를 사용해야 합니까? 답변: `RigidbodyComponent`의 `Translate` 함수를 사용하여 원숭이 [original] | # 학습 과정 소개 이번 가이드는 [물체의 이동 Ⅰ](/docs?postId=123)을 따라 만든 월드에서 이어서 제작해야 정상적으로 동작합니다. 택시가 아잘린을 태우러 가야하는데 원숭이가 길을 가로 막고 있습니다. `TransformComponent`의 `Translate`를 이용하여 택시를 이동시키고 `RigidbodyComponent`의 `Translate` 함수를 사용하여 원숭이를 밀어내봅시다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/174790801778 [chunk_id] | Guides:125:0
[task] | wikipedia [title] | 물체의 이동 Ⅰ [category] | Guides [rephrased] | # 물체의 이동 Ⅰ 메이플스토리 월드에서 맵에 배치된 엔티티를 이동시키려면 해당 엔티티의 `TransformComponent` 속성 중 **Position** 값을 변경해야 합니다. 맵에 존재하는 모든 엔티티는 위치 정보를 가지며, 이 정보는 `TransformComponent`의 `Position` 프로퍼티를 통해 x, y, z 좌표값으로 표현됩니다. 예를 들어, 엔티티를 오른쪽으로 이동시키려면 x 좌표 값을 증가시키는 방식으로 구현합니다. 아래에서는 `Taxi` 엔티티를 예로 들어, 스크립트를 통해 특정 방향으로 이동시키는 [original] | 택시를 이동시키기 위해서는 `TransformComponent`의 **Position** 값을 변경해야 합니다. 맵에 배치되는 모든 엔티티는 위치 정보를 가지고 있습니다. 이 위치 정보는 TransformComponent에서 Position x, y, z 값으로 표현됩니다. 오른쪽으로 이동시키기 위해서는 x 값이 커지도록 만들어야 합니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/1747902531299ee5bec9350ac458d9f255a76eba57191.g [chunk_id] | Guides:123:1
[task] | distill [title] | Maple GYM 만들기 Ⅰ [category] | Guides [rephrased] | # Maple GYM 만들기 Ⅰ: PlayerStats 컴포넌트 다양한 스탯(힘, 돈, 등급 등)을 저장·관리하기 위해 `PlayerStats` 컴포넌트를 `DefaultPlayer`에 추가합니다. ## 1. 프로퍼티 정의 클라이언트와 서버 간 동기화가 필요한 값이므로 `[Sync]` 속성을 적용합니다. ```lua Property: [Sync] number CurrentPower = 0 --현재 캐릭터의 힘 [Sync] number MaxPower = 15 --최대 누적 가능한 힘 [Sync] number CurrentMo [original] | Maple Gym에는 힘과 최대 누적 가능한 힘, 돈, 등급 등 다양한 스탯 정보가 필요합니다. 다양한 정보를 저장하고 관리할 수 있는 컴포넌트를 만들어 봅시다. 1. 새로운 **PlayerStats** 컴포넌트를 생성합니다. 2. **PlayerStats**컴포넌트를 **DefaultPlayer**에 추가합니다. 3. PlayerStats에 스탯 정보로 사용할 프로퍼티를 추가합니다. ```lua Property: [Sync] number CurrentPower = 0 --현재 캐릭터의 힘 [chunk_id] | Guides:126:1
[task] | wikipedia [title] | 물체의 이동 Ⅰ [category] | Guides [rephrased] | **택시의 이동 제어 및 정지 조건 구현** 이 가이드는 생성된 택시(Taxi) 엔티티가 무한정 이동하지 않도록, 특정 대상(아잘린)과의 거리를 기준으로 이동이 중단되도록 스크립트를 수정하는 과정을 설명합니다. 이를 위해 택시 컴포넌트에 아잘린의 위치 정보를 참조할 수 있는 프로퍼티를 추가하고, 초기화 및 업데이트 단계에서 해당 정보를 활용하여 이동 로직을 제어합니다. 첫째, `Taxi` 컴포넌트 내에 새로운 프로퍼티를 정의합니다. `AzallinTransform`이라는 이름의 프로퍼티를 추가하고, 그 타입을 `Component [original] | 만든 택시는 멈추지 않고 계속 이동하고 있습니다. 택시는 아잘린이 서 있는 곳에서 멈춰야 하므로, 아잘린의 위치 정보를 이용해야 합니다. 택시가 이동하다 아잘린과의 거리가 가까워지면, 멈추도록 조건을 추가해봅시다. 1. **Taxi**컴포넌트에 새로운 **AzallinTransform** 프로퍼티를 추가하고, 타입을 **Component**로 변경합니다. ```lua Property: [Sync] Component AzallinTransform = nil ``` 2. `OnBeginP [chunk_id] | Guides:123:2
[task] | wikipedia [title] | Maple GYM 만들기 Ⅰ [category] | Guides [rephrased] | Maple Gym에서는 캐릭터의 힘, 최대 누적 가능한 힘, 보유 자금, 등급 등 다양한 상태 정보를 관리해야 합니다. 이러한 정보를 저장하고 다루기 위해 전용 컴포넌트를 구성하는 과정을 다음과 같이 설명합니다. 먼저 PlayerStats라는 이름의 새 컴포넌트를 생성하고, 이를 DefaultPlayer에 추가합니다. 이후 PlayerStats 컴포넌트 내에 게임 진행에 필요한 스탯 정보를 나타내는 프로퍼티를 정의합니다. 모든 프로퍼티는 [Sync] 속성을 적용하여 클라이언트와 서버 간 동기화를 수행하며, 각 항목은 number [original] | Maple Gym에는 힘과 최대 누적 가능한 힘, 돈, 등급 등 다양한 스탯 정보가 필요합니다. 다양한 정보를 저장하고 관리할 수 있는 컴포넌트를 만들어 봅시다. 1. 새로운 **PlayerStats** 컴포넌트를 생성합니다. 2. **PlayerStats**컴포넌트를 **DefaultPlayer**에 추가합니다. 3. PlayerStats에 스탯 정보로 사용할 프로퍼티를 추가합니다. ```lua Property: [Sync] number CurrentPower = 0 --현재 캐릭터의 힘 [chunk_id] | Guides:126:1
[task] | distill [title] | 물체의 이동 Ⅱ [category] | Guides [rephrased] | # 응용 제작 가이드: 물체의 이동 Ⅱ 본 가이드는 **[물체의 이동 Ⅰ]** 기반 월드에서 이어서 작성해야 합니다. `TransformComponent:Translate`로 택시를 이동시키고, `RigidbodyComponent:Translate`로 원숭이를 밀어내는 방법을 다룹니다. ## 1. 원숭이 배치 1. **Preset List > Monster**에서 **monster-1415**를 배치합니다. 2. 엔티티 이름을 `Monkey`로 변경합니다. ## 2. 원숭이 밀어내기 (RigidbodyComponent) 물리 [original] | # 학습 과정 소개 이번 가이드는 [물체의 이동 Ⅰ](/docs?postId=123)을 따라 만든 월드에서 이어서 제작해야 정상적으로 동작합니다. 택시가 아잘린을 태우러 가야하는데 원숭이가 길을 가로 막고 있습니다. `TransformComponent`의 `Translate`를 이용하여 택시를 이동시키고 `RigidbodyComponent`의 `Translate` 함수를 사용하여 원숭이를 밀어내봅시다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/174790801778 [chunk_id] | Guides:125:0
[task] | distill [title] | Maple GYM 만들기 Ⅰ [category] | Guides [rephrased] | # Maple GYM 만들기 Ⅰ: 이동 방식 변경 `RigidBodyComponent`의 **KinematicMove**를 활성화하면 캐릭터가 자유 이동하게 되며, 이를 지면 영역으로 제한하기 위해 `PlayerController` 컴포넌트를 구성합니다. ### 1. 프로퍼티 및 초기화 `TransformComponent`와 `MovementComponent`를 참조하도록 설정합니다. ```lua Property: [Sync] Component Transform = nil [Sync] Component Movement = ni [original] | # 학습 과정 소개 운동할수록 캐릭터가 커지고, 그 힘을 돈으로 바꿀 수 있는 월드, 'Maple GYM'을 만들어봅시다. # 이동 방식 변경 RigidBodyComponent의 **KinematicMove**를 활용해 캐릭터의 이동 방식을 변경해봅시다. **DefaultPlayer - RigidBodyComponent**에서 **KinematicMove**를 선택합니다. #### 이동 영역 제한 캐릭터의 이동 방식을 **KinematicMove**로 변경하면 캐릭터가 자유롭게 상하좌우로 이동하게 됩니다. 캐릭터가 지면 영 [chunk_id] | Guides:126:0
[task] | distill [title] | 물체의 이동 Ⅱ [category] | Guides [rephrased] | # 응용 제작 가이드: 물체의 이동 Ⅱ (RigidbodyComponent 활용) 택시가 원숭이에 근접할 때 `RigidbodyComponent`에 힘을 적용하여 원숭이를 밀어내는 로직을 구현합니다. ## 1. 컴포넌트 설정 1. `Workspace > MyDesk > Create Scripts > Create Component`에서 **Monkey** 컴포넌트를 생성합니다. 2. `Monkey` 엔티티에 해당 컴포넌트를 추가합니다. 3. 아래 프로퍼티를 정의합니다. ```lua Property: Component Monkey [original] | RigidbodyComponent를 활용해 질주하는 택시가 원숭이를 밀어낼 수 있도록 만들어 봅시다. 원숭이를 밀어내기 위해서는 원숭이가 택시 위치를 확인하고, 택시가 원숭이게 근접하면 원숭이의 RigidbodyComponent에 힘을 주도록 만들어봅시다. 1. **Workspace - MyDesk - Create Scripts - Create Component**을 선택해 새 스크립트 컴포넌트를 추가하고 이름을 **Monkey**로 변경합니다. 2. **Monkey** 엔티티에 **Monkey 컴포넌트**를 추가합니 [chunk_id] | Guides:125:1
[task] | knowledge_list [title] | Maple GYM 만들기 Ⅰ [category] | Guides [rephrased] | 1. `PlayerStats` 컴포넌트는 다양한 스탯 정보를 저장하고 관리하기 위해 생성되며, `DefaultPlayer` 객체에 추가됩니다. 2. `PlayerStats` 컴포넌트에는 `[Sync]` 속성을 가진 `number` 타입의 프로퍼티인 `CurrentPower`가 선언되며, 기본값은 `0`으로 현재 캐릭터의 힘을 나타냅니다. 3. `PlayerStats` 컴포넌트에는 `[Sync]` 속성을 가진 `number` 타입의 프로퍼티인 `MaxPower`가 선언되며, 기본값은 `15`으로 최대 누적 가능한 힘을 나타냅니다. 4 [original] | Maple Gym에는 힘과 최대 누적 가능한 힘, 돈, 등급 등 다양한 스탯 정보가 필요합니다. 다양한 정보를 저장하고 관리할 수 있는 컴포넌트를 만들어 봅시다. 1. 새로운 **PlayerStats** 컴포넌트를 생성합니다. 2. **PlayerStats**컴포넌트를 **DefaultPlayer**에 추가합니다. 3. PlayerStats에 스탯 정보로 사용할 프로퍼티를 추가합니다. ```lua Property: [Sync] number CurrentPower = 0 --현재 캐릭터의 힘 [chunk_id] | Guides:126:1
[task] | diverse_qa [title] | 물체의 이동 Ⅰ [category] | Guides [rephrased] | 질문: 택시가 아잘린의 위치에서 멈추기 위해 어떤 정보를 이용해야 하나요? 답변: 아잘린의 위치 정보를 이용해야 합니다. 질문: 택시가 아잘린과의 거리가 가까워졌을 때 수행해야 할 동작은 무엇인가요? 답변: 택시가 멈추도록 조건을 추가하여 이동이 중단되게 합니다. 질문: Taxi 컴포넌트에 추가하는 `AzallinTransform` 프로퍼티의 타입은 무엇인가요? 답변: `Component` 타입입니다. 질문: `AzallinTransform` 프로퍼티에 `[Sync]` 태그가 붙어 있는 이유는 무엇으로 추론할 수 있나요? 답변 [original] | 만든 택시는 멈추지 않고 계속 이동하고 있습니다. 택시는 아잘린이 서 있는 곳에서 멈춰야 하므로, 아잘린의 위치 정보를 이용해야 합니다. 택시가 이동하다 아잘린과의 거리가 가까워지면, 멈추도록 조건을 추가해봅시다. 1. **Taxi**컴포넌트에 새로운 **AzallinTransform** 프로퍼티를 추가하고, 타입을 **Component**로 변경합니다. ```lua Property: [Sync] Component AzallinTransform = nil ``` 2. `OnBeginP [chunk_id] | Guides:123:2
[task] | knowledge_list [title] | Maple GYM 만들기 Ⅰ [category] | Guides [rephrased] | 제시된 문서 'Maple GYM 만들기 Ⅰ'의 내용을 바탕으로 핵심 사실과 API 정보를 추출하여 정리한 목록입니다. 1. `RigidBodyComponent`의 `KinematicMove` 옵션을 활성화하면 캐릭터가 자유로운 상하좌우 이동을 하게 되며, 이를 제어하기 위해 별도의 이동 영역 제한 로직이 필요합니다. 2. 이동 영역 제한을 구현하기 위해 `PlayerController` 컴포넌트를 생성하여 `DefaultPlayer` 엔티티에 추가합니다. 3. `PlayerController` 컴포넌트에는 `[Sync]` 속 [original] | # 학습 과정 소개 운동할수록 캐릭터가 커지고, 그 힘을 돈으로 바꿀 수 있는 월드, 'Maple GYM'을 만들어봅시다. # 이동 방식 변경 RigidBodyComponent의 **KinematicMove**를 활용해 캐릭터의 이동 방식을 변경해봅시다. **DefaultPlayer - RigidBodyComponent**에서 **KinematicMove**를 선택합니다. #### 이동 영역 제한 캐릭터의 이동 방식을 **KinematicMove**로 변경하면 캐릭터가 자유롭게 상하좌우로 이동하게 됩니다. 캐릭터가 지면 영 [chunk_id] | Guides:126:0
[task] | distill [title] | Maple GYM 만들기 Ⅰ [category] | Guides [rephrased] | `WorkOut()` 메서드 내부 하단에 `self.Stats:SetPow(calePow)` 를 호출하도록 추가합니다. ```lua self.Stats:SetPow(calePow) ``` `Ctrl` 키 입력 시 `CurrentPow` 값이 증가하는지 로그로 확인합니다. [original] | ```lua [multicast] void SetPow (number currentPow) { self.CurrentPow = currentPow log(self.CurrentPow) } ``` 8. `WorkOut()` 메소드에 `SetPow()` 메소드를 호출할 수 있도록 가장 하단에 아래 내용을 추가 작성합니다. ```lua self.Stats:SetPow(calePow) ``` 9. `Ctrl`키를 누를 때마다 숫자가 증가하는 [chunk_id] | Guides:126:3
[task] | diverse_qa [title] | Maple GYM 만들기 Ⅰ [category] | Guides [rephrased] | 질문: Maple Gym 제작 가이드에서 다양한 스탯 정보를 저장하고 관리하기 위해 생성해야 하는 컴포넌트의 이름은 무엇인가요? 답변: PlayerStats 컴포넌트입니다. 질문: PlayerStats 컴포넌트는 어떤 대상에 추가해야 하나요? 답변: DefaultPlayer에 추가해야 합니다. 질문: PlayerStats 컴포넌트의 프로퍼티들은 어떤 동기화 속성을 가지고 있나요? 답변: 모든 프로퍼티는 [Sync] 속성을 가지고 있습니다. 질문: 다음 코드는 무엇을 정의하고 있나요? ```lua [Sync] number Cur [original] | Maple Gym에는 힘과 최대 누적 가능한 힘, 돈, 등급 등 다양한 스탯 정보가 필요합니다. 다양한 정보를 저장하고 관리할 수 있는 컴포넌트를 만들어 봅시다. 1. 새로운 **PlayerStats** 컴포넌트를 생성합니다. 2. **PlayerStats**컴포넌트를 **DefaultPlayer**에 추가합니다. 3. PlayerStats에 스탯 정보로 사용할 프로퍼티를 추가합니다. ```lua Property: [Sync] number CurrentPower = 0 --현재 캐릭터의 힘 [chunk_id] | Guides:126:1
[task] | extract_knowledge [title] | 물체의 이동 Ⅰ [category] | Guides [rephrased] | # 물체의 이동 (Position 조작) ## 1. 개념 설명 메이플스토리 월드에서 맵에 배치된 모든 엔티티는 위치 정보를 가집니다. 이 위치 정보는 해당 엔티티의 `TransformComponent`에서 `Position` 프로퍼티로 표현되며, x, y, z 좌표 값을 가집니다. * **x 축**: 오른쪽으로 이동하려면 x 값이 커지도록 변경해야 합니다. * **y 축**: 일반적으로 수직 방향(높이)을 나타냅니다. * **z 축**: 일반적으로 전후 방향을 나타냅니다. 물체를 이동시키려면 `TransformComp [original] | 택시를 이동시키기 위해서는 `TransformComponent`의 **Position** 값을 변경해야 합니다. 맵에 배치되는 모든 엔티티는 위치 정보를 가지고 있습니다. 이 위치 정보는 TransformComponent에서 Position x, y, z 값으로 표현됩니다. 오른쪽으로 이동시키기 위해서는 x 값이 커지도록 만들어야 합니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/1747902531299ee5bec9350ac458d9f255a76eba57191.g [chunk_id] | Guides:123:1
[task] | extract_knowledge [title] | Maple GYM 만들기 Ⅰ [category] | Guides [rephrased] | # PlayerStats 컴포넌트 및 스탯 관리 ## 개념 설명 Maple Gym과 같은 응용 프로그램에서는 캐릭터의 힘, 최대 누적 가능한 힘, 돈, 등급 등 다양한 스탯 정보를 저장하고 관리해야 합니다. 이를 위해 `PlayerStats`라는 전용 컴포넌트를 생성하여 이러한 데이터를 프로퍼티로 정의하고, `DefaultPlayer` 엔티티에 부착하여 관리하는 구조를 취합니다. ## API 사용법 1. **컴포넌트 생성 및 부착**: - `PlayerStats` 컴포넌트를 새로 생성합니다. - 생성된 `PlayerS [original] | Maple Gym에는 힘과 최대 누적 가능한 힘, 돈, 등급 등 다양한 스탯 정보가 필요합니다. 다양한 정보를 저장하고 관리할 수 있는 컴포넌트를 만들어 봅시다. 1. 새로운 **PlayerStats** 컴포넌트를 생성합니다. 2. **PlayerStats**컴포넌트를 **DefaultPlayer**에 추가합니다. 3. PlayerStats에 스탯 정보로 사용할 프로퍼티를 추가합니다. ```lua Property: [Sync] number CurrentPower = 0 --현재 캐릭터의 힘 [chunk_id] | Guides:126:1
[task] | knowledge_list [title] | Maple GYM 만들기 Ⅰ [category] | Guides [rephrased] | 제시된 문서 원문에 포함된 정보만 바탕으로 핵심 사실을 정리한 목록입니다. 1. `SetPow` 메서드는 `[multicast]` 실행 공간 제약이 적용되며, 매개변수로 `number` 타입의 `currentPow`를 받아 `self.CurrentPow` 프로퍼티에 할당하고 해당 값을 `log` 함수로 출력하는 동작을 수행합니다. 2. `WorkOut` 메서드 내부의 가장 하단에 `self.Stats:SetPow(calePow)` 코드를 추가 작성하여 `Stats` 컴포넌트의 `SetPow` 메서드를 `calePow` 값을 인자로 [original] | ```lua [multicast] void SetPow (number currentPow) { self.CurrentPow = currentPow log(self.CurrentPow) } ``` 8. `WorkOut()` 메소드에 `SetPow()` 메소드를 호출할 수 있도록 가장 하단에 아래 내용을 추가 작성합니다. ```lua self.Stats:SetPow(calePow) ``` 9. `Ctrl`키를 누를 때마다 숫자가 증가하는 [chunk_id] | Guides:126:3
[task] | diverse_qa [title] | Maple GYM 만들기 Ⅰ [category] | Guides [rephrased] | 질문: 'Maple GYM' 월드의 주요 특징은 무엇인가요? 답변: 운동할수록 캐릭터가 커지고, 그 힘을 돈으로 바꿀 수 있는 월드입니다. 질문: 캐릭터의 이동 방식을 변경하기 위해 RigidBodyComponent에서 어떤 옵션을 선택해야 하나요? 답변: KinematicMove 옵션을 선택해야 합니다. 질문: KinematicMove로 이동 방식을 변경하면 캐릭터는 어떻게 이동하게 되나요? 답변: 캐릭터가 자유롭게 상하좌우로 이동하게 됩니다. 질문: 캐릭터의 이동 영역을 제한하기 위해 어떤 컴포넌트를 생성하고 추가해야 하나 [original] | # 학습 과정 소개 운동할수록 캐릭터가 커지고, 그 힘을 돈으로 바꿀 수 있는 월드, 'Maple GYM'을 만들어봅시다. # 이동 방식 변경 RigidBodyComponent의 **KinematicMove**를 활용해 캐릭터의 이동 방식을 변경해봅시다. **DefaultPlayer - RigidBodyComponent**에서 **KinematicMove**를 선택합니다. #### 이동 영역 제한 캐릭터의 이동 방식을 **KinematicMove**로 변경하면 캐릭터가 자유롭게 상하좌우로 이동하게 됩니다. 캐릭터가 지면 영 [chunk_id] | Guides:126:0
[task] | extract_knowledge [title] | 물체의 이동 Ⅰ [category] | Guides [rephrased] | # 물체의 이동: 목표 위치 도달 시 정지 본 절에서는 이동 중인 엔티티가 특정 목표 엔티티의 좌표에 도달했을 때 이동을 중단시키는 로직을 구현하는 방법을 다룹니다. ## 개념 설명 엔티티의 무한 이동을 방지하기 위해서는 현재 위치와 목표 위치 간의 관계를 실시간으로 확인해야 합니다. 이를 위해 목표 엔티티의 `TransformComponent`를 참조 프로퍼티로 저장하고, 매 프레임(`OnUpdate`)마다 두 위치의 차이를 비교하여 이동 여부를 결정하는 조건 분기를 적용합니다. ## API 사용법 1. **목표 엔티티 [original] | 만든 택시는 멈추지 않고 계속 이동하고 있습니다. 택시는 아잘린이 서 있는 곳에서 멈춰야 하므로, 아잘린의 위치 정보를 이용해야 합니다. 택시가 이동하다 아잘린과의 거리가 가까워지면, 멈추도록 조건을 추가해봅시다. 1. **Taxi**컴포넌트에 새로운 **AzallinTransform** 프로퍼티를 추가하고, 타입을 **Component**로 변경합니다. ```lua Property: [Sync] Component AzallinTransform = nil ``` 2. `OnBeginP [chunk_id] | Guides:123:2
[task] | diverse_qa [title] | 물체의 이동 Ⅱ [category] | Guides [rephrased] | 질문: 이 가이드에서 구현하려는 핵심 기능은 무엇인가요? 답변: RigidbodyComponent를 활용하여 질주하는 택시가 원숭이에 근접하면 원숭이를 밀어내는 기능을 구현하는 것입니다. 질문: 새 스크립트 컴포넌트를 생성할 때 지정한 이름은 무엇인가요? 답변: Monkey 질문: Monkey 컴포넌트에 추가해야 하는 프로퍼티의 총 개수는 몇 개인가요? 답변: 4개 질문: 택시의 위치 정보를 저장하기 위해 할당하는 프로퍼티의 이름은 무엇인가요? 답변: TaxiTransform 질문: 원숭이가 택시에 의해 밀려난 후, 다시 밀 [original] | RigidbodyComponent를 활용해 질주하는 택시가 원숭이를 밀어낼 수 있도록 만들어 봅시다. 원숭이를 밀어내기 위해서는 원숭이가 택시 위치를 확인하고, 택시가 원숭이게 근접하면 원숭이의 RigidbodyComponent에 힘을 주도록 만들어봅시다. 1. **Workspace - MyDesk - Create Scripts - Create Component**을 선택해 새 스크립트 컴포넌트를 추가하고 이름을 **Monkey**로 변경합니다. 2. **Monkey** 엔티티에 **Monkey 컴포넌트**를 추가합니 [chunk_id] | Guides:125:1