← 목록

mLua · Nemotron-CC 리프레이즈 (CPT)

총 8,200개 · 페이지 184/274
🔀 랜덤
불러오는 중…

[task] | extract_knowledge [title] | Callback [category] | Guides [rephrased] | # 흐름 제어: Callback ## 1. 개념 설명 mLua 로직 처리는 기본적으로 **동기(Synchronous)**와 **비동기(Asynchronous)** 두 가지 방식으로 구분됩니다. * **동기 방식**: 이전 작업이 종료될 때까지 대기하고, 완료 후 다음 작업을 순차적으로 실행합니다. 작업 완료 시점을 명확히 알 수 있지만, 처리 시간이 누적됩니다. * **비동기 방식**: 특정 작업을 별도 프로세스로 위임하여 다른 작업과 병행 처리합니다. 외부 데이터 교환이나 I/O 처리 등 실제 계산 시간보다 대기 시간 [original] | # 학습 과정 소개 로직은 기본적으로 순차적으로 진행되지만 그렇지 않은 경우도 종종 있습니다. 작업을 순차적으로 진행하는 동기 방식과 그렇게 진행하지 않는 비동기 방식의 차이점을 살펴보고, 비동기 방식을 활용하는데 필요한 Callback에 대해서도 살펴봅시다. # 동기, 비동기 로직을 처리하는 방식에는 두 가지가 있습니다. 1. 동기(Synchronous) 2. 비동기(Asynchronous) **동기 방식(Synchronous)**은 로직을 순서대로 처리합니다. 이를 실생활에 대입해봅시다. 톰은 집 대청소를 하는 날입니다 [chunk_id] | Guides:745:0

[task] | diverse_qa [title] | Callback [category] | Guides [rephrased] | 질문: 주어진 코드 예시에서 `Power` 프로퍼티의 동기화 속성은 무엇인가요? 답변: `Power` 프로퍼티는 `[Sync]` 속성을 가지고 있어 클라이언트와 서버 간에 동기화됩니다. 질문: `OnBeginPlay` 메서드는 어떤 실행 공간에서 동작하나요? 답변: `OnBeginPlay` 메서드는 `[server only]` 실행 공간에서 동작합니다. 질문: 코드에서 `_DataStorageService:GetGlobalDataStorage("data")`를 호출하는 목적은 무엇인가요? 답변: 이름이 "data"인 글로벌 데이 [original] | 처리가 완료되었을 때 Callback 함수를 실행하는 예시입니다. ```lua Property: [Sync] number Power = 0 Method: [server only] void OnBeginPlay () { local data = _DataStorageService:GetGlobalDataStorage("data") self.Power = 20 local callBack = function (errorcode, key) log("Power is saved") [chunk_id] | Guides:745:1

[task] | knowledge_list [title] | TweenLogic을 활용해 엔티티 제어하기 [category] | Guides [rephrased] | * `_TweenLogic:MoveTo()` 메서드는 엔티티를 지정된 위치로 이동시키기 위해 사용되며, 매개변수로 이동 대상 `Entity`, 목적지 `Vector2`, 이동 시간 `number`, 그리고 `EaseType`을 받아 `Tweener` 객체를 반환합니다. * `Tweener` 객체는 `Delay` 속성을 통해 이동 시작 전 지연 시간을, `LoopCount` 속성을 통해 반복 횟수를, `LoopType` 속성을 통해 `TweenLoopType.PingPong`과 같은 반복 방식을, 그리고 `AutoDestroy [original] | `MoveTo()`를 활용해 엔티티를 이동시킬 수 있습니다. 1. 새로운 컴포넌트를 생성하고, 특정 엔티티에 추가합니다. 2. 엔티티가 이동할 목적지, 시간, EaseType을 작성합니다. 3. 반환하는 Tweener의 지연 시간, 반복 타입, 횟수, 자동 파괴 여부 처리를 함께 작성합니다. 자동 파괴를 false로 하거나 LoopCount를 -1로 설정해 트윈이 계속 실행되도록 하는 경우 의도치 않게 더 이상 작동하지 않는 Tweener 객체가 쌓일 수도 있습니다. 이러한 Tweener 객체가 지나치게 많아지면 월드에 성능 하 [chunk_id] | Guides:746:1

[task] | knowledge_list [title] | TweenLogic을 활용해 엔티티 제어하기 [category] | Guides [rephrased] | 제시된 문서 내용만을 기반으로 추출한 핵심 사실 목록입니다. 1. `TweenLogic`은 엔티티의 위치, 크기, 회전을 여러 프레임에 걸쳐 변화시켜 애니메이션 효과를 생성하는 기능을 제공하는 로직 모듈입니다. 2. `TweenLineComponent`, `TweenCircularComponent`, `TweenFloatingComponent`는 스크립트 작성 없이 엔티티에 애니메이션을 부여할 때 권장되며, 네트워크 최적화가 되어 있어 멀티플레이 환경에서 다수 엔티티의 Tween 시 성능 향상을 기대할 수 있습니다. 3. `Twe [original] | # 학습 과정 소개 [TweenLogic](/apiReference?postId=700)을 사용해 엔티티를 확대, 축소, 회전, 이동시킬 수 있습니다. [Tweener](/apiReference?postId=714)를 함께 확인해보세요. # TweenLogic 개념 **TweenLogic**은 엔티티에 애니메이션 효과를 줄 수 있는 다양한 함수를 제공합니다. 여러 프레임에 걸쳐 Entity의 위치나 크기를 변화시키거나 회전시킬 수 있습니다. 다양한 함수를 사용해 엔티티를 Tween 시켜 애니메이션을 한 번의 함수 호출로 간단 [chunk_id] | Guides:746:0

[task] | wikipedia [title] | Callback [category] | Guides [rephrased] | # 흐름 제어: Callback 메이플스토리 월드(mLua) 스크립트에서 비동기 처리가 완료된 시점에 특정 함수를 실행하기 위해 Callback(콜백) 함수를 사용할 수 있습니다. 본 섹션에서는 전역 데이터 저장소(Global Data Storage)에 값을 비동기로 저장하는 과정에서 Callback이 어떻게 동작하는지 그 구조를 설명합니다. ## 동작 원리 및 예제 아래 코드는 컴포넌트의 초기화 단계인 `OnBeginPlay` 메서드 내에서 `_DataStorageService`를 이용하여 전역 데이터 저장소에 값을 저장하는 [original] | 처리가 완료되었을 때 Callback 함수를 실행하는 예시입니다. ```lua Property: [Sync] number Power = 0 Method: [server only] void OnBeginPlay () { local data = _DataStorageService:GetGlobalDataStorage("data") self.Power = 20 local callBack = function (errorcode, key) log("Power is saved") [chunk_id] | Guides:745:1

[task] | diverse_qa [title] | Callback [category] | Guides [rephrased] | 질문: 로직을 처리하는 두 가지 방식은 무엇인가요? 답변: 동기(Synchronous) 방식과 비동기(Asynchronous) 방식입니다. 질문: 동기 방식의 특징으로 올바른 설명은 무엇인가요? 답변: 이전 작업이 끝날 때까지 대기하고 있다가 그 작업이 끝나고 나면 새로운 작업을 시작하며, 순차적으로 처리하므로 언제 작업이 끝났을 때를 알 수 있습니다. 질문: 비동기 방식은 모든 작업을 순차적으로 처리하나요? 답변: 아닙니다. 비동기 방식은 모든 작업을 순차적으로 처리하지 않으며, 어떤 작업은 별도의 작업으로 병행하여 처리합니다 [original] | # 학습 과정 소개 로직은 기본적으로 순차적으로 진행되지만 그렇지 않은 경우도 종종 있습니다. 작업을 순차적으로 진행하는 동기 방식과 그렇게 진행하지 않는 비동기 방식의 차이점을 살펴보고, 비동기 방식을 활용하는데 필요한 Callback에 대해서도 살펴봅시다. # 동기, 비동기 로직을 처리하는 방식에는 두 가지가 있습니다. 1. 동기(Synchronous) 2. 비동기(Asynchronous) **동기 방식(Synchronous)**은 로직을 순서대로 처리합니다. 이를 실생활에 대입해봅시다. 톰은 집 대청소를 하는 날입니다 [chunk_id] | Guides:745:0

[task] | wikipedia [title] | TweenLogic을 활용해 엔티티 제어하기 [category] | Guides [rephrased] | # TweenLogic을 활용한 엔티티 제어 `TweenLogic` 서비스의 `MoveTo()` 메서드를 사용하면 엔티티의 이동을 애니메이션 방식으로 제어할 수 있습니다. 이 기능을 활용하려면 다음 단계를 따릅니다. 먼저, 새로운 컴포넌트를 생성하여 특정 엔티티에 추가합니다. 다음으로, 엔티티가 이동할 목적지 좌표, 이동 시간, 그리고 이동을 제어할 `EaseType` 값을 정의합니다. 마지막으로, `MoveTo()`가 반환하는 `Tweener` 객체의 지연 시간(`Delay`), 반복 타입(`LoopType`), 반복 횟수(`L [original] | `MoveTo()`를 활용해 엔티티를 이동시킬 수 있습니다. 1. 새로운 컴포넌트를 생성하고, 특정 엔티티에 추가합니다. 2. 엔티티가 이동할 목적지, 시간, EaseType을 작성합니다. 3. 반환하는 Tweener의 지연 시간, 반복 타입, 횟수, 자동 파괴 여부 처리를 함께 작성합니다. 자동 파괴를 false로 하거나 LoopCount를 -1로 설정해 트윈이 계속 실행되도록 하는 경우 의도치 않게 더 이상 작동하지 않는 Tweener 객체가 쌓일 수도 있습니다. 이러한 Tweener 객체가 지나치게 많아지면 월드에 성능 하 [chunk_id] | Guides:746:1

[task] | extract_knowledge [title] | 월드 워프하기 [category] | Guides [rephrased] | # 이동 월드 워프 및 데이터 전달 이 절에서는 `mLua` 스크립트를 사용하여 유저를 다른 월드(맵)로 이동(Warp)시키고, 해당 이동 시 유저 데이터를 함께 전달하는 방법과, 도착한 월드에서 해당 데이터를 수신하는 방법을 설명합니다. ## 1. 개념 및 API ### 1.1 데이터 직렬화 및 역직렬화 (`UtilLogic`) 월드 간 이동 시 구조화된 데이터(테이블)를 문자열로 변환하여 전송하고, 수신 측에서 다시 테이블로 복원해야 합니다. 이를 위해 `_UtilLogic` 서비스의 다음 메서드를 사용합니다. * ` [original] | 유저의 데이터를 이동할 월드로 전달할 수 있습니다. 1. 새로운 스크립트 컴포넌트를 생성합니다. 2. 맵에 포탈을 추가한 뒤, 만든 스크립트 컴포넌트를 포탈에 추가합니다. 3. 아래와 같이 `WarpUserToWorldAndWait()`와 `UtilLogic`을 활용해 다른 월드에 데이터를 전달할 수 있게 작성합니다. ```lua Property: [Sync] string WorldId = "" Method: [server] void Warp(string userId) [chunk_id] | Guides:743:2

[task] | distill [title] | TweenLogic을 활용해 엔티티 제어하기 [category] | Guides [rephrased] | `MakeTween()`으로 `SpriteRendererComponent`의 Alpha(`Color.a`)를 조절해 엔티티 투명도를 제어합니다. **핵심 동작** * `_TweenLogic:MakeTween(startValue, endValue, duration, easeType, callback)` 호출 시 `callback`에 현재 보간값(`tweenValue`)이 전달됩니다. * `tween.LoopCount = -1` (무한 루프), `tween.LoopType = TweenLoopType.PingPong` (왕복) [original] | `MakeTween()`에서 **Alpha** 값을 조절해 특정 엔티티가 점점 옅어지게 만들 수 있습니다. 1. 새로운 컴포넌트를 생성하고, 특정 엔티티에 추가합니다. 2. `MakeTween()`의 startvalue를 SpriteRenderer의 a로 지정하고, endvalue를 0으로 지정해 엔티티가 투명해질 수 있도록 아래와 같이 작성합니다. ```lua Method: [server only] void OnBeginPlay() { local spriteRenderer [chunk_id] | Guides:746:3

[task] | knowledge_list [title] | TweenLogic을 활용해 엔티티 제어하기 [category] | Guides [rephrased] | 제공된 문서 내용 기반으로 추출한 핵심 사실 목록입니다. 1. `_TweenLogic:RotateTo(entity, angle, duration, easeType)` 메서드를 호출하여 특정 엔티티를 지정된 각도만큼 회전시킬 수 있으며, 이 메서드는 tween 객체를 반환합니다. 2. `_TweenLogic:RotateAroundOffset(entity, angle, offset, isRelative, duration, easeType)` 메서드를 호출하여 특정 엔티티의 offset을 기준으로 다른 엔티티를 따라다니게 회전시킬 수 [original] | `RotateTo()`를 활용해 엔티티를 회전시킬 수 있고, `TweenLogic:RotateAroundOffset()`를 활용해 특정 엔티티의 offset을 기준으로 따라다니게 회전시킬 수 있습니다. 1. 새로운 컴포넌트를 생성하고, 특정 엔티티에 추가합니다. 2. **angle**을 360도로 설정해 엔티티가 한 바퀴 돌 수 있게 작성합니다. ```lua Method: void OnBeginPlay() { self._T.tween = _TweenLogic:RotateTo(self.E [chunk_id] | Guides:746:2

[task] | diverse_qa [title] | TweenLogic을 활용해 엔티티 제어하기 [category] | Guides [rephrased] | 질문: TweenLogic은 주로 어떤 목적으로 사용되나요? 답변: TweenLogic은 엔티티에 애니메이션 효과를 줄 수 있는 다양한 함수를 제공하여, 여러 프레임에 걸쳐 Entity의 위치나 크기를 변화시키거나 회전시킬 때 사용됩니다. 질문: TweenLogic과 TweenComponent는 같은 기능인가요? 답변: 아닙니다. 두 가지는 월드에서 보기에는 비슷한 동작처럼 보이지만 서로 다른 기능이므로, 크리에이터의 제작 계획에 적합한 것을 선택해 사용해야 합니다. 질문: 스크립트 작성 없이 엔티티에 애니메이션을 부여하고 멀티 [original] | # 학습 과정 소개 [TweenLogic](/apiReference?postId=700)을 사용해 엔티티를 확대, 축소, 회전, 이동시킬 수 있습니다. [Tweener](/apiReference?postId=714)를 함께 확인해보세요. # TweenLogic 개념 **TweenLogic**은 엔티티에 애니메이션 효과를 줄 수 있는 다양한 함수를 제공합니다. 여러 프레임에 걸쳐 Entity의 위치나 크기를 변화시키거나 회전시킬 수 있습니다. 다양한 함수를 사용해 엔티티를 Tween 시켜 애니메이션을 한 번의 함수 호출로 간단 [chunk_id] | Guides:746:0

[task] | wikipedia [title] | Callback [category] | Guides [rephrased] | # 흐름 제어: Callback 메이플스토리 월드(MapleStory Worlds)의 스크립트 로직은 기본적으로 순차적으로 진행되지만, 외부 데이터 처리나 입력/출력(IO) 작업과 같이 실제 계산 시간보다 대기 시간이 긴 경우가 존재합니다. 이러한 비동기(Asynchronous) 작업을 효율적으로 처리하기 위해 **Callback(콜백)** 메커니즘을 사용합니다. 본 섹션에서는 동기 및 비동기 방식의 차이와 Callback의 원리, 그리고 관련 API의 활용 방법을 설명합니다. ## 동기와 비동기 방식 로직 처리 방식은 크게 [original] | # 학습 과정 소개 로직은 기본적으로 순차적으로 진행되지만 그렇지 않은 경우도 종종 있습니다. 작업을 순차적으로 진행하는 동기 방식과 그렇게 진행하지 않는 비동기 방식의 차이점을 살펴보고, 비동기 방식을 활용하는데 필요한 Callback에 대해서도 살펴봅시다. # 동기, 비동기 로직을 처리하는 방식에는 두 가지가 있습니다. 1. 동기(Synchronous) 2. 비동기(Asynchronous) **동기 방식(Synchronous)**은 로직을 순서대로 처리합니다. 이를 실생활에 대입해봅시다. 톰은 집 대청소를 하는 날입니다 [chunk_id] | Guides:745:0

[task] | diverse_qa [title] | TweenLogic을 활용해 엔티티 제어하기 [category] | Guides [rephrased] | 질문: `MoveTo()` 함수의 주요 용도는 무엇인가요? 답변: `MoveTo()`는 엔티티를 이동시키는 데 활용할 수 있는 함수입니다. 질문: `MoveTo()`를 사용하여 엔티티를 제어하기 위해 작성해야 하는 파라미터 세 가지는 무엇인가요? 답변: 엔티티가 이동할 목적지, 시간, EaseType(이동 방식)입니다. 질문: `MoveTo()` 호출 후 반환되는 객체의 이름은 무엇이며, 이 객체에 설정할 수 있는 주요 프로퍼티 네 가지를 나열하세요. 답변: 반환되는 객체의 이름은 Tweener입니다. 설정할 수 있는 주요 프로 [original] | `MoveTo()`를 활용해 엔티티를 이동시킬 수 있습니다. 1. 새로운 컴포넌트를 생성하고, 특정 엔티티에 추가합니다. 2. 엔티티가 이동할 목적지, 시간, EaseType을 작성합니다. 3. 반환하는 Tweener의 지연 시간, 반복 타입, 횟수, 자동 파괴 여부 처리를 함께 작성합니다. 자동 파괴를 false로 하거나 LoopCount를 -1로 설정해 트윈이 계속 실행되도록 하는 경우 의도치 않게 더 이상 작동하지 않는 Tweener 객체가 쌓일 수도 있습니다. 이러한 Tweener 객체가 지나치게 많아지면 월드에 성능 하 [chunk_id] | Guides:746:1

[task] | extract_knowledge [title] | TweenLogic을 활용해 엔티티 제어하기 [category] | Guides [rephrased] | # TweenLogic을 활용한 엔티티 제어 ## 1. 개념 설명 **TweenLogic**은 엔티티의 위치, 크기, 회전을 여러 프레임에 걸쳐 변화시켜 애니메이션 효과를 생성하기 위한 함수 집합입니다. 한 번의 함수 호출로 복잡한 움직임이 가능하도록 설계되었습니다. ### TweenComponent와의 차이점 * **TweenComponent (TweenLine, TweenCircular, TweenFloating)**: 스크립트 작성 없이 엔티티에 애니메이션을 부여할 때 사용 권장. 네트워크 최적화가 적용되어 있어 멀티 [original] | # 학습 과정 소개 [TweenLogic](/apiReference?postId=700)을 사용해 엔티티를 확대, 축소, 회전, 이동시킬 수 있습니다. [Tweener](/apiReference?postId=714)를 함께 확인해보세요. # TweenLogic 개념 **TweenLogic**은 엔티티에 애니메이션 효과를 줄 수 있는 다양한 함수를 제공합니다. 여러 프레임에 걸쳐 Entity의 위치나 크기를 변화시키거나 회전시킬 수 있습니다. 다양한 함수를 사용해 엔티티를 Tween 시켜 애니메이션을 한 번의 함수 호출로 간단 [chunk_id] | Guides:746:0

[task] | distill [title] | TweenLogic을 활용해 엔티티 제어하기 [category] | Guides [rephrased] | **TweenLogic을 활용한 엔티티 제어** `TweenLogic`은 엔티티의 회전, 크기, 투명도를 보간(Interpolation)하여 제어하는 API입니다. ### 1. 회전 (Rotation) **`RotateTo()`**: 엔티티 자체를 회전시킵니다. **`RotateAroundOffset()`**: 특정 엔티티를 중심으로 다른 엔티티가 공전하도록 회전시킵니다. * **공통 주의사항**: * `OnBeginPlay`에서 tween 객체를 생성하여 `self._T`에 저장합니다. * `Loo [original] | `RotateTo()`를 활용해 엔티티를 회전시킬 수 있고, `TweenLogic:RotateAroundOffset()`를 활용해 특정 엔티티의 offset을 기준으로 따라다니게 회전시킬 수 있습니다. 1. 새로운 컴포넌트를 생성하고, 특정 엔티티에 추가합니다. 2. **angle**을 360도로 설정해 엔티티가 한 바퀴 돌 수 있게 작성합니다. ```lua Method: void OnBeginPlay() { self._T.tween = _TweenLogic:RotateTo(self.E [chunk_id] | Guides:746:2

[task] | knowledge_list [title] | TweenLogic을 활용해 엔티티 제어하기 [category] | Guides [rephrased] | * `MakeTween()` 메서드의 `Alpha` 값을 조절하여 특정 엔티티가 점진적으로 옅어지도록 제어할 수 있습니다. * `MakeTween()`을 활용하려면 먼저 새로운 컴포넌트를 생성하고 이를 대상 엔티티에 추가해야 합니다. * `MakeTween()`의 startvalue 매개변수는 `SpriteRenderer`의 `a` 값으로 지정하며, endvalue는 `0`으로 설정하여 엔티티가 투명해지는 효과를 생성합니다. * 제공된 예제 코드의 `OnBeginPlay()` 메서드는 `[server only]` 실행 [original] | `MakeTween()`에서 **Alpha** 값을 조절해 특정 엔티티가 점점 옅어지게 만들 수 있습니다. 1. 새로운 컴포넌트를 생성하고, 특정 엔티티에 추가합니다. 2. `MakeTween()`의 startvalue를 SpriteRenderer의 a로 지정하고, endvalue를 0으로 지정해 엔티티가 투명해질 수 있도록 아래와 같이 작성합니다. ```lua Method: [server only] void OnBeginPlay() { local spriteRenderer [chunk_id] | Guides:746:3

[task] | wikipedia [title] | TweenLogic을 활용해 엔티티 제어하기 [category] | Guides [rephrased] | # TweenLogic을 활용한 엔티티 투명도 제어 메이플스토리 월드 스크립트 환경에서는 `TweenLogic` 서비스의 `MakeTween()` 메서드를 통해 엔티티의 시각적 변화를 애니메이션화할 수 있습니다. 특히 `Alpha` 채널 값을 조절하여 특정 엔티티가 점진적으로 옅어지도록 만드는 효과를 구현할 수 있습니다. 이 과정은 새로운 컴포넌트를 생성하여 대상 엔티티에 적용한 후, `SpriteRenderer` 컴포넌트의 색상 속성 중 알파 값을 시작점으로, 목표 투명도인 0을 끝점으로 지정하는 방식으로 진행됩니다. 구체적인 [original] | `MakeTween()`에서 **Alpha** 값을 조절해 특정 엔티티가 점점 옅어지게 만들 수 있습니다. 1. 새로운 컴포넌트를 생성하고, 특정 엔티티에 추가합니다. 2. `MakeTween()`의 startvalue를 SpriteRenderer의 a로 지정하고, endvalue를 0으로 지정해 엔티티가 투명해질 수 있도록 아래와 같이 작성합니다. ```lua Method: [server only] void OnBeginPlay() { local spriteRenderer [chunk_id] | Guides:746:3

[task] | extract_knowledge [title] | 기본 UI 컴포넌트 [category] | Guides [rephrased] | # TextInputComponent: 텍스트 입력 처리 ## 개념 설명 `TextInputComponent`는 사용자의 텍스트 입력을 수신하는 데 사용되는 컴포넌트입니다. 이 컴포넌트는 입력값을 직접 화면에 렌더링하지 않으므로, 입력된 텍스트를 시각적으로 표시하려면 `TextComponent`와 함께 사용해야 합니다. 입력된 데이터의 처리 로직(저장, 검증, 전송 등)은 mLua 스크립트를 통해 이벤트 핸들러를 구현하여 정의합니다. ## API 사용법 ### 주요 프로퍼티 (Properties) `TextInputCompon [original] | [TextInputComponent](/apiReference/Components/TextInputComponent)은 텍스트 입력을 받을 수 있는 컴포넌트입니다. 주요 프로퍼티는 다음과 같습니다. | 번호 | 항목 | 설명 | | :---: | :---: | --- | | | AutoClear | True 이면 텍스트 입력 후 입력 영역을 자동으로 초기화합니다. | | | ContentType | 입력할 수 있는 텍스트 유형을 지정합니다. <ul> <li>**Standard** : 모든 입력을 허용합니다. </li> [chunk_id] | Guides:744:2

[task] | extract_knowledge [title] | TweenLogic을 활용해 엔티티 제어하기 [category] | Guides [rephrased] | # TweenLogic을 활용한 엔티티 이동 제어 ## 1. 개념 설명 `TweenLogic` 서비스의 `MoveTo()` 메서드를 사용하면 엔티티를 지정한 목적지까지 부드러운 이동을 시킬 수 있습니다. 이 방식은 즉각적인 좌표 변경이 아닌, 시간과 이징 함수(EaseType)에 따라补간(Interpolation)이 적용된 이동 경로를 생성합니다. 이동 트윈(Tween)을 생성한 후, 반환되는 `Tweener` 객체를 통해 지연 시간(`Delay`), 반복 횟수(`LoopCount`), 반복 방식(`LoopType`), 그리고 [original] | `MoveTo()`를 활용해 엔티티를 이동시킬 수 있습니다. 1. 새로운 컴포넌트를 생성하고, 특정 엔티티에 추가합니다. 2. 엔티티가 이동할 목적지, 시간, EaseType을 작성합니다. 3. 반환하는 Tweener의 지연 시간, 반복 타입, 횟수, 자동 파괴 여부 처리를 함께 작성합니다. 자동 파괴를 false로 하거나 LoopCount를 -1로 설정해 트윈이 계속 실행되도록 하는 경우 의도치 않게 더 이상 작동하지 않는 Tweener 객체가 쌓일 수도 있습니다. 이러한 Tweener 객체가 지나치게 많아지면 월드에 성능 하 [chunk_id] | Guides:746:1

[task] | distill [title] | TweenLogic을 활용해 엔티티 제어하기 [category] | Guides [rephrased] | # TweenLogic을 활용한 엔티티 제어 `_TweenLogic` 서비스의 `PlayTween()`과 `RotateTo()`를 조합해 위치 이동과 회전을 동시에 제어합니다. ## 1. 모델 및 컴포넌트 설정 1. **Model_Ball** 생성: `TransformComponent`, `SpriteRendererComponent` 추가. - `SpriteRuid`: `d4dddd1f07d445939433f70cd1aa82fa` 2. **BallComponent** 생성 후 `Model_Ball`에 추가. ## 2. 스 [original] | 높은 곳에서 공을 던졌을 때 공이 앞으로 나아감과 동시에 통통 튀게 만들어 봅시다. 1. 새로운 Model_Ball 모델을 생성합니다. TransformComponent, SpriteRendererComponent를 추가하고, 아래의 Ruid를 사용합니다. * SpriteRuid: d4dddd1f07d445939433f70cd1aa82fa 2. 새로운 BallComponent 생성하고, Model Ball에 추가합니다. 3. 공이 돌면서 날아가게 만들기 위해 `PlayTween()`과 `RotateTo()`를 [chunk_id] | Guides:746:4

[task] | wikipedia [title] | 메이플 타일맵 만들기 [category] | Guides [rephrased] | 지형 생성의 주요 목적은 엔티티가 이동할 수 있는 물리적 공간을 제공하는 것입니다. 메이플 타일 환경에서 엔티티가 실제로 이동할 수 있는 영역은 발판(Foothold)으로 정의됩니다. 지형과 결합하여 사용되는 [RigidbodyComponent](/docs?postId=750)는 두 가지 서로 다른 이동 방식을 지원합니다. 첫째는 발판 위에서의 이동이며, 둘째는 발판 밖에서의 이동입니다. 발판은 지형 생성 규칙에 따라 자동 생성되며, 대부분의 경우 지형과 1:1로 직관적으로 매칭됩니다. 편집 모드에서 발판 정보 버튼을 활성화하면 [original] | 지형을 생성하는 가장 큰 이유는 엔티티가 이동할 수 있는 공간이 필요하기 때문일 것입니다. 메이플 타일에서 이동할 수 있는 영역을 **발판**이라고 합니다. 메이플 타일과 쌍을 이루는 [RigidbodyComponent](/docs?postId=750)의 이동 방식은 두 가지가 있습니다. **1. 발판 위에서 이동 2. 발판 밖에서 이동** 발판은 지형 생성 규칙에 의해 만들어지며 대부분 직관적으로 지형과 1:1 매칭됩니다. 발판 정보 버튼을 누르면 지형 위에 빨간색 선으로 발판 정보가 나타납니다. > **더 알아보기** [chunk_id] | Guides:747:1

[task] | distill [title] | 메이플 타일맵 만들기 [category] | Guides [rephrased] | ### 지형 메이플 타일맵 만들기 지형의 핵심 목적은 엔티티의 이동 공간을 제공하는 것입니다. 메이플 타일에서 이동 가능한 영역은 **발판**으로 정의되며, `RigidbodyComponent`의 이동 방식은 다음과 같습니다. 1. **발판 위에서 이동** 2. **발판 밖에서 이동** 발판은 지형 생성 규칙에 의해 자동으로 생성되며, 대부분 지형과 1:1로 매칭됩니다. > **참고:** 발판은 지형 외 `CustomFootholdComponent`를 사용해 엔티티에도 추가할 수 있습니다. 자세한 내용은 [발판 만들기]( [original] | 지형을 생성하는 가장 큰 이유는 엔티티가 이동할 수 있는 공간이 필요하기 때문일 것입니다. 메이플 타일에서 이동할 수 있는 영역을 **발판**이라고 합니다. 메이플 타일과 쌍을 이루는 [RigidbodyComponent](/docs?postId=750)의 이동 방식은 두 가지가 있습니다. **1. 발판 위에서 이동 2. 발판 밖에서 이동** 발판은 지형 생성 규칙에 의해 만들어지며 대부분 직관적으로 지형과 1:1 매칭됩니다. 발판 정보 버튼을 누르면 지형 위에 빨간색 선으로 발판 정보가 나타납니다. > **더 알아보기** [chunk_id] | Guides:747:1

[task] | knowledge_list [title] | TweenLogic을 활용해 엔티티 제어하기 [category] | Guides [rephrased] | 제공된 문서 원문에 포함된 정보만을 바탕으로 핵심 사실을 추출하여 정리합니다. 1. `PlayTween()` 메서드는 마지막 매개변수로 `Action<number> tweenFunction` 타입의 함수를 받으며, 이 함수는 매 프레임마다 호출됩니다. 2. `tweenFunction`은 매개변수로 Tween 시작 시점부터 경과된 시간에 따른 Ease 계산 결과값을 전달받습니다. 3. Tween이 시작된 후 1.2초가 경과했을 때 Ease의 결과값은 `Ease(self.posY, yDestination, tweenDuration, [original] | 위의 예시에서 `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 [chunk_id] | Guides:746:5

[task] | diverse_qa [title] | 메이플 타일맵 만들기 [category] | Guides [rephrased] | 질문: 지형을 생성하는 가장 큰 이유는 무엇인가요? 답변: 엔티티가 이동할 수 있는 공간이 필요하기 때문입니다. 질문: 메이플 타일에서 이동할 수 있는 영역을 무엇이라고 하나요? 답변: 발판이라고 합니다. 질문: [RigidbodyComponent]의 이동 방식은 몇 가지가 있으며 각각 무엇인가요? 답변: 두 가지가 있으며, 각각 '발판 위에서 이동'과 '발판 밖에서 이동'입니다. 질문: 발판은 어떻게 만들어지나요? 답변: 지형 생성 규칙에 의해 만들어집니다. 질문: 지형과 발판의 매칭 관계는 대략 어떻게 되나요? 답변: 대 [original] | 지형을 생성하는 가장 큰 이유는 엔티티가 이동할 수 있는 공간이 필요하기 때문일 것입니다. 메이플 타일에서 이동할 수 있는 영역을 **발판**이라고 합니다. 메이플 타일과 쌍을 이루는 [RigidbodyComponent](/docs?postId=750)의 이동 방식은 두 가지가 있습니다. **1. 발판 위에서 이동 2. 발판 밖에서 이동** 발판은 지형 생성 규칙에 의해 만들어지며 대부분 직관적으로 지형과 1:1 매칭됩니다. 발판 정보 버튼을 누르면 지형 위에 빨간색 선으로 발판 정보가 나타납니다. > **더 알아보기** [chunk_id] | Guides:747:1

[task] | diverse_qa [title] | TweenLogic을 활용해 엔티티 제어하기 [category] | Guides [rephrased] | 질문: 이 문서에서 만든 게임 로직의 주요 목적은 무엇인가요? 답변: 높은 곳에서 공을 던졌을 때 공이 앞으로 나아감과 동시에 통통 튀게 만드는 것입니다. 질문: `Model_Ball` 모델에 추가해야 하는 컴포넌트는 무엇인가요? 답변: `TransformComponent`와 `SpriteRendererComponent`입니다. 질문: `Model_Ball` 모델의 `SpriteRendererComponent`에 사용할 Ruid는 무엇인가요? 답변: d4dddd1f07d445939433f70cd1aa82fa입니다. 질문: `B [original] | 높은 곳에서 공을 던졌을 때 공이 앞으로 나아감과 동시에 통통 튀게 만들어 봅시다. 1. 새로운 Model_Ball 모델을 생성합니다. TransformComponent, SpriteRendererComponent를 추가하고, 아래의 Ruid를 사용합니다. * SpriteRuid: d4dddd1f07d445939433f70cd1aa82fa 2. 새로운 BallComponent 생성하고, Model Ball에 추가합니다. 3. 공이 돌면서 날아가게 만들기 위해 `PlayTween()`과 `RotateTo()`를 [chunk_id] | Guides:746:4

[task] | wikipedia [title] | TweenLogic을 활용해 엔티티 제어하기 [category] | Guides [rephrased] | **TweenLogic을 활용한 엔티티 제어** 메이플스토리 월드(MapleStory Worlds)의 `TweenLogic` 시스템은 엔티티의 회전, 크기 변화, 투명도 조절 등 시각적 트랜지션을 제어하는 데 사용됩니다. 본 섹션에서는 `RotateTo()`, `RotateAroundOffset()`, `ScaleTo()` 메서드를 통해 엔티티를 제어하는 구체적인 구현 방법을 다룹니다. **엔티티 회전: RotateTo()** `RotateTo()` 메서드는 엔티티를 지정한 각도만큼 회전시킵니다. 엔티티가 무한정 한 바퀴씩 돌 [original] | `RotateTo()`를 활용해 엔티티를 회전시킬 수 있고, `TweenLogic:RotateAroundOffset()`를 활용해 특정 엔티티의 offset을 기준으로 따라다니게 회전시킬 수 있습니다. 1. 새로운 컴포넌트를 생성하고, 특정 엔티티에 추가합니다. 2. **angle**을 360도로 설정해 엔티티가 한 바퀴 돌 수 있게 작성합니다. ```lua Method: void OnBeginPlay() { self._T.tween = _TweenLogic:RotateTo(self.E [chunk_id] | Guides:746:2

[task] | wikipedia [title] | TweenLogic을 활용해 엔티티 제어하기 [category] | Guides [rephrased] | # TweenLogic을 활용한 엔티티 제어 `TweenLogic`은 메이플스토리 월드에서 엔티티의 위치, 크기, 회전을 시간의 흐름에 따라 부드럽게 변경하는 애니메이션 기능을 제공하는 스크립트 모듈입니다. 이 모듈을 사용하면 복잡한 수식이나 프레임별 수동 계산 없이 한 번의 함수 호출로 다양한 움직임 효과를 구현할 수 있습니다. 관련 인터페이스인 `Tweener` 객체에 대한 자세한 내용은 별도 API 문서를 참고할 수 있습니다. ## TweenLogic의 개념 및 특징 `TweenLogic`은 엔티티에 애니메이션 효과를 부 [original] | # 학습 과정 소개 [TweenLogic](/apiReference?postId=700)을 사용해 엔티티를 확대, 축소, 회전, 이동시킬 수 있습니다. [Tweener](/apiReference?postId=714)를 함께 확인해보세요. # TweenLogic 개념 **TweenLogic**은 엔티티에 애니메이션 효과를 줄 수 있는 다양한 함수를 제공합니다. 여러 프레임에 걸쳐 Entity의 위치나 크기를 변화시키거나 회전시킬 수 있습니다. 다양한 함수를 사용해 엔티티를 Tween 시켜 애니메이션을 한 번의 함수 호출로 간단 [chunk_id] | Guides:746:0

[task] | distill [title] | TweenLogic을 활용해 엔티티 제어하기 [category] | Guides [rephrased] | # TweenLogic을 활용한 엔티티 제어 ## PlayTween 동작 원리 `PlayTween()`의 마지막 매개변수 `Action<number> tweenFunction`은 매 프레임 호출되며, Tween 시작 후 경과 시간의 Ease 결괏값을 인자로 받습니다. * **동작 예시**: Tween 시작 후 1.2초 경과 시 `Ease(self.posY, yDestination, tweenDuration, EaseType.BounceEaseOut, 1.2)`의 결괏값이 `tweenFunction`의 `val`로 전달됩니다. [original] | 위의 예시에서 `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 [chunk_id] | Guides:746:5

[task] | knowledge_list [title] | 메이플 타일맵 만들기 [category] | Guides [rephrased] | 1. 메이플 타일맵에서 엔티티가 이동할 수 있는 영역을 발판이라고 정의합니다. 2. `RigidbodyComponent`의 이동 방식은 '발판 위에서 이동'과 '발판 밖에서 이동'의 두 가지로 구분됩니다. 3. 발판은 지형 생성 규칙에 따라 자동 생성되며, 대부분 직관적으로 지형과 1:1 매칭됩니다. 4. 지형 위에 발판 정보 버튼을 클릭하면 발판 정보가 빨간색 선으로 시각화되어 표시됩니다. 5. `CustomFootholdComponent`를 사용하면 지형뿐만 아니라 엔티티에도 직접 발판을 추가할 수 있습니다. [original] | 지형을 생성하는 가장 큰 이유는 엔티티가 이동할 수 있는 공간이 필요하기 때문일 것입니다. 메이플 타일에서 이동할 수 있는 영역을 **발판**이라고 합니다. 메이플 타일과 쌍을 이루는 [RigidbodyComponent](/docs?postId=750)의 이동 방식은 두 가지가 있습니다. **1. 발판 위에서 이동 2. 발판 밖에서 이동** 발판은 지형 생성 규칙에 의해 만들어지며 대부분 직관적으로 지형과 1:1 매칭됩니다. 발판 정보 버튼을 누르면 지형 위에 빨간색 선으로 발판 정보가 나타납니다. > **더 알아보기** [chunk_id] | Guides:747:1

[task] | knowledge_list [title] | TweenLogic을 활용해 엔티티 제어하기 [category] | Guides [rephrased] | 제시된 문서에 포함된 핵심 사실만 추출하여 목록으로 정리합니다. 1. `Model_Ball` 모델을 생성할 때 `TransformComponent`와 `SpriteRendererComponent`를 추가하고, `SpriteRendererComponent`의 `SpriteRuid`로 `d4dddd1f07d445939433f70cd1aa82fa`를 설정해야 합니다. 2. `BallComponent`를 생성하여 `Model_Ball`에 추가해야 합니다. 3. `BallComponent`의 `posX` 프로퍼티는 `[None]` 동 [original] | 높은 곳에서 공을 던졌을 때 공이 앞으로 나아감과 동시에 통통 튀게 만들어 봅시다. 1. 새로운 Model_Ball 모델을 생성합니다. TransformComponent, SpriteRendererComponent를 추가하고, 아래의 Ruid를 사용합니다. * SpriteRuid: d4dddd1f07d445939433f70cd1aa82fa 2. 새로운 BallComponent 생성하고, Model Ball에 추가합니다. 3. 공이 돌면서 날아가게 만들기 위해 `PlayTween()`과 `RotateTo()`를 [chunk_id] | Guides:746:4

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