← 목록

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

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

[task] | extract_knowledge [title] | MSW 단축키 [category] | Guides [rephrased] | # 메이커(Maker) 단축키 메이커(Maker)는 패널, 계층 구조, 디버그 도구, 팝업 창을 빠르게 전환하기 위해 다양한 키보드 단축키를 제공합니다. 이 절에서는 메이커 환경 내에서 사용할 수 있는 단축키를 분류별로 정리합니다. ## 1. 개념 설명 메이커의 단축키는 크게 네 가지 범주로 나뉩니다. 1. **패널 포커스 이동**: `Ctrl` + 숫자 키 또는 `Alt` + 숫자 키 조합으로 특정 패널에 포커스를 옮깁니다. 패널이 생성되지 않은 상태라면 생성 확인 후 포커스가 이동합니다. 2. **Workspace/H [original] | | 단축키 | 액션 | 설명 | | --- | --- | --- | | `Ctrl(L)` + `1` | Scene | **Scene** 패널로 포커스가 이동합니다. | | `Ctrl(L)` + `2` | Property | **Property** 패널 생성 확인 후 포커스가 이동합니다. | | `Ctrl(L)` + `3` | Hierarchy | **Hierarchy** 패널 생성 확인 후 포커스가 이동합니다. | | `Ctrl(L)` + `4` | Workspace | **Workspace** 패널 생성 확인 후 포커스가 이동합니 [chunk_id] | Guides:813:3

[task] | extract_knowledge [title] | UI 디자인 가이드 [category] | Guides [rephrased] | # UI 디자인 가이드 일관된 UI 디자인은 사용자가 월드의 플레이 방식을 빠르게 이해하고 상호작용하는 데 기여합니다. 본 절에서는 색상, 아이콘, 텍스트 및 이미지 서식, 버튼 배치, 애니메이션, 해상도, 리소스 최적화, 필터 모드, 폰트, 섬네일 제작 기준에 대해 설명합니다. ## 1. 색상 팔레트 UI에서 사용할 색상 팔레트를 사전에 결정하고 일관되게 적용해야 합니다. 과도한 색상 사용은 UI를 지저분하게 만들고 색상별 의미를 혼동하게 만듭니다. * **원칙:** 월드 UI에 사용할 핵심 색상을 제한하고, 유사한 기능을 [original] | 일관성 있는 UI 디자인은 유저가 월드 플레이 방식을 보다 빠르게 이해하고 즐길 수 있도록 도와줍니다. 이러한 UI 디자인을 위해 아래 사항을 참고해 봅시다. ##### 색상 팔레트 UI에서 사용할 색상 팔레트를 결정하고 일관되게 사용해 봅시다. 너무 많은 색상을 사용하면 UI가 지저분해지고 해당 색상이 무엇을 의미하는지도 알 수 없게 됩니다. 해당 월드 UI에서 사용할 몇 가지 색상을 정하고, 비슷한 기능을 하는 요소는 같은 색상을 사용하여 일관성을 유지하는 것이 좋습니다. 예를 들어, [예] 또는 [확인] 버튼에 파란색을 사용 [chunk_id] | Guides:816:1

[task] | diverse_qa [title] | 아바타 애니메이션 제어하기 [category] | Guides [rephrased] | 질문: `ActionStateChangedEvent`에서 어떤 애니메이션을 재생할지 결정하는 속성은 무엇인가요? 답변: `ActionName`으로 어떤 애니메이션을 재생할지 결정합니다. 질문: `ActionName` 목록에 포함된 기본 이동 관련 액션 이름 세 가지를 나열하세요. 답변: `stand1`, `walk1`, `jump` (또는 `stand2`, `walk2` 등 문서에 기재된 항목 중 임의의 세 가지) 질문: 아바타의 맨몸 액션을 제어하는 속성은 무엇인가요? 답변: `CoreActionName`은 아바타의 맨몸 액션 [original] | **ActionStateChangedEvent**는 **ActionName**으로 어떤 애니메이션을 재생할지 결정합니다. 아래는 **ActionName**의 목록입니다. |@cols=4:@rows=1:ActionName| |:---:|:---:|:---:|:---:| | stand1 | swingO1 | stabO1 | shoot1 | | stand2 | swingO2 | stabO2 | shoot2 | | walk1 | swingO3 | stabOF | shootF | | walk2 | swingOF | stabT1 | | | [chunk_id] | Guides:820:1

[task] | wikipedia [title] | 아바타 애니메이션 제어하기 [category] | Guides [rephrased] | 아바타의 상태가 변경될 때마다 이벤트를 전송하여 애니메이션을 개별적으로 제어하는 방식은 번거로울 수 있습니다. 이를 해결하기 위해 `AvatarStateAnimationComponent`의 `ActionSheet`에 아바타 상태와 연결할 애니메이션을 사전에 설정해 두면, `StateComponent`를 통해 아바타 상태를 변경하는 시점에 애니메이션이 자동으로 함께 변경됩니다. `AvatarStateAnimationComponent`에서 기본으로 제공하는 `ActionSheet`에는 다음과 같은 상태(`Key`)와 애니메이션(`Va [original] | 이미 정의된, 혹은 새로 정의할 아바타의 상태가 바뀔 때마다 매번 이벤트를 보내서 애니메이션을 변경하는 것도 번거로울 수 있습니다. 이벤트를 보내지 않고도 아바타 상태가 바뀔 때마다 애니메이션도 함께 변경되면 매우 편리할 것입니다. [AvatarStateAnimationComponent](/apiReference/Components/AvatarStateAnimationComponent)의 **ActionSheet**에 아바타 상태와 연결될 애니메이션을 설정하고 [StateComponent](/apiReference/Component [chunk_id] | Guides:820:4

[task] | distill [title] | 아바타 애니메이션 제어하기 [category] | Guides [rephrased] | # 아바타 애니메이션 제어: AvatarStateAnimationComponent & StateComponent `AvatarStateAnimationComponent`의 **ActionSheet**에 상태별 애니메이션을 매핑하고, `StateComponent`로 아바타 상태를 변경하면 이벤트 전송 없이 자동으로 애니메이션이 전환됩니다. ## ActionSheet 매핑 규칙 * **Key**: 아바타 **State** * **Value**: **MapleAvatarBodyActionState** (몸통/파츠 애니메이션 [original] | 이미 정의된, 혹은 새로 정의할 아바타의 상태가 바뀔 때마다 매번 이벤트를 보내서 애니메이션을 변경하는 것도 번거로울 수 있습니다. 이벤트를 보내지 않고도 아바타 상태가 바뀔 때마다 애니메이션도 함께 변경되면 매우 편리할 것입니다. [AvatarStateAnimationComponent](/apiReference/Components/AvatarStateAnimationComponent)의 **ActionSheet**에 아바타 상태와 연결될 애니메이션을 설정하고 [StateComponent](/apiReference/Component [chunk_id] | Guides:820:4

[task] | diverse_qa [title] | 아바타 애니메이션 제어하기 [category] | Guides [rephrased] | 질문: 각 애니메이션의 총 프레임 수를 확인할 수 있는 도구는 무엇인가요? 답변: 각 애니메이션의 총 프레임은 **AvatarItem Editor**에서 확인할 수 있습니다. 질문: 크리에이터가 원하는 애니메이션 구간을 재생하기 위해 설정해야 하는 두 가지 프레임 프로퍼티의 이름은 무엇인가요? 답변: 크리에이터가 재생하기를 원하는 애니메이션의 시작 프레임은 **StartFrameIndex**, 종료 프레임은 **EndFrameIndex**를 설정해야 합니다. 질문: 프레임값 설정 시 시작 프레임과 종료 프레임 사이의 관계는 어떻 [original] | 각 애니메이션의 총 프레임은 **AvatarItem Editor**에서 확인할 수 있습니다. 위와 같이 총 프레임을 확인한 뒤, 크리에이터가 재생하기를 원하는 애니메이션 시작 프레임(StartFrameIndex)과 종료 프레임(EndFrameIndex)을 설정하면 됩니다. 프레임을 설정할 때는 다음 사항을 주의해야 합니다. * 프레임은 양수로 설정해야 합니다. * 시작 프레임은 종료 프레임보다 작거나 같아야 합니다. * 종료 프레임은 총 애니메이션 프레임보다 작거나 같아야 합니다. * 프레임값을 잘못 설정하면 보정됩니다. * [chunk_id] | Guides:820:2

[task] | wikipedia [title] | 아바타 애니메이션 제어하기 [category] | Guides [rephrased] | # 아바타 애니메이션 제어 메이플스토리 월드 스크립트에서 아바타의 동작을 제어하기 위해 **ActionStateChangedEvent**는 **ActionName** 속성을 기반으로 재생할 애니메이션을 결정합니다. **ActionName**은 아바타의 기본 동작부터 특정 무기나 장비의 동작까지 다양한 상태를 나타내는 문자열 값으로 구성됩니다. ## ActionName 종류 **ActionName**에는 다음과 같은 값들이 포함됩니다. 이 값들은 아바타의 기본 포즈(예: 서 있기, 걷기, 앉기), 이동 상태(예: 점프, 비행, [original] | **ActionStateChangedEvent**는 **ActionName**으로 어떤 애니메이션을 재생할지 결정합니다. 아래는 **ActionName**의 목록입니다. |@cols=4:@rows=1:ActionName| |:---:|:---:|:---:|:---:| | stand1 | swingO1 | stabO1 | shoot1 | | stand2 | swingO2 | stabO2 | shoot2 | | walk1 | swingO3 | stabOF | shootF | | walk2 | swingOF | stabT1 | | | [chunk_id] | Guides:820:1

[task] | distill [title] | 아바타 애니메이션 제어하기 [category] | Guides [rephrased] | `BodyActionStateChangeEvent`는 아바타의 `bodyActionState`를 변경하는 이벤트로, 무기 타입별 애니메이션 분기를 별도로 지정할 필요가 없습니다. ### MapleAvatarBodyActionState 매핑 이벤트는 `MapleAvatarBodyActionState` 프리셋을 사용해 내부적으로 `ActionStateChangedEvent`를 호출합니다. 각 상태는 `CoreActionName`, `PartsActionName`, `PlayRate`, `PlayType`으로 정의됩니다. | Mapl [original] | [BodyActionStateChangeEvent](/apiReference/Events/BodyActionStateChangeEvent)는 이름 그대로 아바타의 bodyActionState를 변경하는 이벤트입니다. 이 이벤트는 무기 타입에 따른 애니메이션을 별도로 지정할 필요가 없어 편리합니다. **BodyActionStateChangeEvent**는 **MapleAvatarBodyActionState**로 애니메이션을 제어합니다. **MapleAvatarBodyActionState**에는 각 상태별로 어떤 몸통 액션과 파츠 액 [chunk_id] | Guides:820:3

[task] | wikipedia [title] | 아바타 애니메이션 제어하기 [category] | Guides [rephrased] | # 아바타 애니메이션 제어 아바타 애니메이션을 제어하기 위해서는 먼저 각 애니메이션의 총 프레임 수를 **AvatarItem Editor**에서 확인해야 합니다. 총 프레임 수를 파악한 후, 크리에이터가 재생하고자 하는 애니메이션의 시작 프레임(`StartFrameIndex`)과 종료 프레임(`EndFrameIndex`)을 설정합니다. 프레임 값을 설정할 때는 다음 제약 사항을 준수해야 합니다. 프레임은 반드시 양수로 설정해야 하며, 시작 프레임은 종료 프레임보다 작거나 같아야 합니다. 또한 종료 프레임은 해당 애니메이션의 총 [original] | 각 애니메이션의 총 프레임은 **AvatarItem Editor**에서 확인할 수 있습니다. 위와 같이 총 프레임을 확인한 뒤, 크리에이터가 재생하기를 원하는 애니메이션 시작 프레임(StartFrameIndex)과 종료 프레임(EndFrameIndex)을 설정하면 됩니다. 프레임을 설정할 때는 다음 사항을 주의해야 합니다. * 프레임은 양수로 설정해야 합니다. * 시작 프레임은 종료 프레임보다 작거나 같아야 합니다. * 종료 프레임은 총 애니메이션 프레임보다 작거나 같아야 합니다. * 프레임값을 잘못 설정하면 보정됩니다. * [chunk_id] | Guides:820:2

[task] | knowledge_list [title] | 아바타 애니메이션 제어하기 [category] | Guides [rephrased] | * `AvatarStateAnimationComponent`의 `ActionSheet` 프로퍼티에 아바타 상태(Key)와 애니메이션 값(Value)의 매핑을 설정하면, `StateComponent`로 아바타의 `State`만 변경해도 이벤트 전송 없이 해당 상태에 연결된 애니메이션이 자동으로 재생됩니다. * `AvatarStateAnimationComponent`의 기본 `ActionSheet`에는 `IDLE`(stand), `MOVE`(walk), `ATTACK`(attack), `HIT`(hit), `CROUCH`(cro [original] | 이미 정의된, 혹은 새로 정의할 아바타의 상태가 바뀔 때마다 매번 이벤트를 보내서 애니메이션을 변경하는 것도 번거로울 수 있습니다. 이벤트를 보내지 않고도 아바타 상태가 바뀔 때마다 애니메이션도 함께 변경되면 매우 편리할 것입니다. [AvatarStateAnimationComponent](/apiReference/Components/AvatarStateAnimationComponent)의 **ActionSheet**에 아바타 상태와 연결될 애니메이션을 설정하고 [StateComponent](/apiReference/Component [chunk_id] | Guides:820:4

[task] | diverse_qa [title] | 아바타 애니메이션 제어하기 [category] | Guides [rephrased] | 질문: `AvatarStateAnimationComponent`를 사용하면 아바타 애니메이션을 제어하는 데 어떤 장점이 있나요? 답변: 이벤트를 매번 보내지 않아도 `StateComponent`로 아바타 상태만 바꾸면 `ActionSheet`에 설정된 대로 애니메이션이 자동으로 함께 변경되어 편리합니다. 질문: `ActionSheet`의 Key와 Value 각각은 무엇을 의미하나요? 답변: Key는 **State**를 의미하고, Value는 **MapleAvatarBodyActionState**를 의미합니다. 질문: 기본 제공되 [original] | 이미 정의된, 혹은 새로 정의할 아바타의 상태가 바뀔 때마다 매번 이벤트를 보내서 애니메이션을 변경하는 것도 번거로울 수 있습니다. 이벤트를 보내지 않고도 아바타 상태가 바뀔 때마다 애니메이션도 함께 변경되면 매우 편리할 것입니다. [AvatarStateAnimationComponent](/apiReference/Components/AvatarStateAnimationComponent)의 **ActionSheet**에 아바타 상태와 연결될 애니메이션을 설정하고 [StateComponent](/apiReference/Component [chunk_id] | Guides:820:4

[task] | diverse_qa [title] | UI 디자인 가이드 [category] | Guides [rephrased] | 질문: 일관성 있는 UI 디자인이 유저에게 주는 주요 이점은 무엇인가요? 답변: 유저가 월드 플레이 방식을 보다 빠르게 이해하고 즐길 수 있도록 도와줍니다. 질문: UI에서 색상을 너무 많이 사용하게 되면 어떤 문제가 발생할 수 있나요? 답변: UI가 지저분해지고 해당 색상이 무엇을 의미하는지도 알 수 없게 됩니다. 질문: 비슷한 기능을 하는 UI 요소에 대해 색상 사용 시 권장되는 원칙은 무엇인가요? 답변: 비슷한 기능을 하는 요소는 같은 색상을 사용하여 일관성을 유지하는 것이 좋습니다. 질문: "예" 또는 "확인" 버튼에 [original] | 일관성 있는 UI 디자인은 유저가 월드 플레이 방식을 보다 빠르게 이해하고 즐길 수 있도록 도와줍니다. 이러한 UI 디자인을 위해 아래 사항을 참고해 봅시다. ##### 색상 팔레트 UI에서 사용할 색상 팔레트를 결정하고 일관되게 사용해 봅시다. 너무 많은 색상을 사용하면 UI가 지저분해지고 해당 색상이 무엇을 의미하는지도 알 수 없게 됩니다. 해당 월드 UI에서 사용할 몇 가지 색상을 정하고, 비슷한 기능을 하는 요소는 같은 색상을 사용하여 일관성을 유지하는 것이 좋습니다. 예를 들어, [예] 또는 [확인] 버튼에 파란색을 사용 [chunk_id] | Guides:816:1

[task] | extract_knowledge [title] | MSW 단축키 [category] | Guides [rephrased] | # 메이커(Maker) 사용 MSW 단축키 메이플스토리 월드 스크립트 편집 환경(메이커)에서는 코드 작성 효율을 높이기 위해 다양한 키보드 단축키를 제공합니다. 본 절에서는 텍스트 편집, 탐색, 검색 및 치환과 관련된 단축키 목록을 정리합니다. ## 1. 개념 설명 메이커의 단축키는 크게 네 가지 범주로 나뉩니다. 1. **기본 편집**: 들여쓰기, 줄 이동, 복제, 삭제 등 텍스트 커서(캐럿)를 이용한 기본적인 코드 조작 기능을 제공합니다. 2. **구조 탐색**: 함수(스코프) 단위 이동, 함수 접기/펼치기, 이전/이 [original] | | 단축키 | 액션 | 설명 | | --- | --- | --- | | `Tab` | 들여쓰기 | 캐럿 위치에서 들여쓰기 합니다. | | `Shift` + `Tab` | 내어 쓰기 | 캐럿 위치에서 내어 쓰기 합니다. | | `Home` | 앞 | 선택한 줄의 맨 앞으로 캐럿을 이동합니다. | | `End` | 뒤 | 선택한 줄의 맨 뒤로 캐럿을 이동합니다. | | `PageUp` | 코드 블록 최상단 | 선택한 코드 블록의 최상단으로 이동합니다. | | `PageDown` | 코드 블록 최하단 | 선택한 코드 블록의 최하단으로 이 [chunk_id] | Guides:813:1

[task] | distill [title] | 아바타 애니메이션 제어하기 [category] | Guides [rephrased] | # 아바타 애니메이션 제어 및 프레임 이벤트 ## 1. 애니메이션 제어 방법 비교 아바타 애니메이션은 세 가지 방법으로 제어할 수 있습니다. 의도에 맞는 방법을 선택하세요. | 제어 방법 | 장점 | 단점 | | :--- | :--- | :--- | | **ActionStateChangedEvent** | • 몸통/파츠 애니메이션 개별 조절 가능<br>• 재생 속도, 타입, 시작/종료 프레임 세밀 설정 가능 | • 자주 쓰는 액션 설정이 번거로움<br>• 무기별 애니메이션 별도 지정 필요 | | **BodyActionState [original] | 애니메이션 변경 과정을 정리하면 다음과 같습니다. 위에서 알아본 3가지 아바타 애니메이션 제어 방법의 장단점을 정리하면 아래 표와 같습니다. 각 방법은 장단점이 명확하므로 크리에이터의 의도에 맞는 방법을 적절히 선택하면 됩니다. | 아바타 애니메이션 제어 방법 | 장점 | 단점 | | :---: | --- | --- | | ActionStateChangedEvent | <ul> <li>몸통과 파츠 애니메이션을 각각 다르게 조절할 수 있습니다.</li> <li>재생 속도, 재생 타입, 애니메이션 시작/종료 프레임을 세밀하게 설 [chunk_id] | Guides:820:5

[task] | wikipedia [title] | 아바타 애니메이션 제어하기 [category] | Guides [rephrased] | 아바타 애니메이션 제어 방법을 선택할 때는 각 방식의 특성을 고려하여 크리에이터의 의도에 맞게 적절히 판단해야 합니다. 기본적으로 제공되는 세 가지 제어 방식은 다음과 같은 장단점을 가집니다. 첫째, `ActionStateChangedEvent`를 사용하는 방식은 몸통과 파츠의 애니메이션을 각각 독립적으로 조절할 수 있는 것이 가장 큰 장점입니다. 또한 재생 속도, 재생 타입, 그리고 애니메이션의 시작 및 종료 프레임을 세밀하게 설정할 수 있어 유연한 제어가 가능합니다. 그러나 자주 사용하는 액션을 매번 이러한 방식으로 설정하는 [original] | 애니메이션 변경 과정을 정리하면 다음과 같습니다. 위에서 알아본 3가지 아바타 애니메이션 제어 방법의 장단점을 정리하면 아래 표와 같습니다. 각 방법은 장단점이 명확하므로 크리에이터의 의도에 맞는 방법을 적절히 선택하면 됩니다. | 아바타 애니메이션 제어 방법 | 장점 | 단점 | | :---: | --- | --- | | ActionStateChangedEvent | <ul> <li>몸통과 파츠 애니메이션을 각각 다르게 조절할 수 있습니다.</li> <li>재생 속도, 재생 타입, 애니메이션 시작/종료 프레임을 세밀하게 설 [chunk_id] | Guides:820:5

[task] | diverse_qa [title] | 아바타 애니메이션 제어하기 [category] | Guides [rephrased] | 질문: `BodyActionStateChangeEvent`의 주요 목적은 무엇인가요? 답변: `BodyActionStateChangeEvent`는 아바타의 `bodyActionState`를 변경하는 이벤트이며, 무기 타입에 따른 애니메이션을 별도로 지정할 필요가 없어 편리합니다. 질문: `BodyActionStateChangeEvent`는 어떤 변수나 상수 집합을 사용하여 애니메이션을 제어하나요? 답변: `BodyActionStateChangeEvent`는 `MapleAvatarBodyActionState`로 애니메이션을 제어합니 [original] | [BodyActionStateChangeEvent](/apiReference/Events/BodyActionStateChangeEvent)는 이름 그대로 아바타의 bodyActionState를 변경하는 이벤트입니다. 이 이벤트는 무기 타입에 따른 애니메이션을 별도로 지정할 필요가 없어 편리합니다. **BodyActionStateChangeEvent**는 **MapleAvatarBodyActionState**로 애니메이션을 제어합니다. **MapleAvatarBodyActionState**에는 각 상태별로 어떤 몸통 액션과 파츠 액 [chunk_id] | Guides:820:3

[task] | diverse_qa [title] | 아바타 애니메이션 제어하기 [category] | Guides [rephrased] | 질문: ActionStateChangedEvent를 사용할 때의 주요 장점은 무엇인가요? 답변: 몸통과 파츠 애니메이션을 각각 다르게 조절할 수 있고, 재생 속도, 재생 타입, 애니메이션 시작/종료 프레임을 세밀하게 설정할 수 있습니다. 질문: BodyActionStateChangeEvent를 사용할 때의 단점 중 하나는 무엇인가요? 답변: 몸통과 파츠 애니메이션을 각각 다르게 조절할 수 없으며, MapleAvatarBodyActionState에서 정의되지 않은 상태로는 변경할 수 없습니다. 질문: ActionSheet와 Sta [original] | 애니메이션 변경 과정을 정리하면 다음과 같습니다. 위에서 알아본 3가지 아바타 애니메이션 제어 방법의 장단점을 정리하면 아래 표와 같습니다. 각 방법은 장단점이 명확하므로 크리에이터의 의도에 맞는 방법을 적절히 선택하면 됩니다. | 아바타 애니메이션 제어 방법 | 장점 | 단점 | | :---: | --- | --- | | ActionStateChangedEvent | <ul> <li>몸통과 파츠 애니메이션을 각각 다르게 조절할 수 있습니다.</li> <li>재생 속도, 재생 타입, 애니메이션 시작/종료 프레임을 세밀하게 설 [chunk_id] | Guides:820:5

[task] | extract_knowledge [title] | 아바타 애니메이션 제어하기 [category] | Guides [rephrased] | # 아바타 애니메이션 제어 아바타의 동작은 `ActionStateChangedEvent`를 통해 제어되며, 특정 애니메이션을 재생하기 위한 이름(`ActionName`), 재생 속도(`PlayRate`), 그리고 재생 방식(`PlayType`)을 설정합니다. ## 1. 개념 설명 ### ActionName `ActionStateChangedEvent`에서 사용할 애니메이션을 식별하는 문자열입니다. 아래 목록의 값 중 하나를 지정하여 아바타의 동작(스탠드, 걷기, 공격, 이동 등)을 결정합니다. | ActionName | Ac [original] | **ActionStateChangedEvent**는 **ActionName**으로 어떤 애니메이션을 재생할지 결정합니다. 아래는 **ActionName**의 목록입니다. |@cols=4:@rows=1:ActionName| |:---:|:---:|:---:|:---:| | stand1 | swingO1 | stabO1 | shoot1 | | stand2 | swingO2 | stabO2 | shoot2 | | walk1 | swingO3 | stabOF | shootF | | walk2 | swingOF | stabT1 | | | [chunk_id] | Guides:820:1

[task] | knowledge_list [title] | 아바타 애니메이션 제어하기 [category] | Guides [rephrased] | 제시된 문서의 내용을 바탕으로 핵심 사실을 추출하여 정리한 목록은 다음과 같습니다. 1. `ActionStateChangedEvent`를 사용하면 몸통과 파츠 애니메이션을 각각 다르게 조절할 수 있으며, 재생 속도, 재생 타입, 애니메이션 시작/종료 프레임을 세밀하게 설정할 수 있는 장점이 있지만, 자주 사용하는 액션을 매번 설정하는 것이 번거롭고 무기에 따라 달라지는 애니메이션을 별도로 지정해야 하는 단점이 있습니다. 2. `BodyActionStateChangeEvent`를 사용하면 무기에 따라 달라지는 애니메이션을 별도 지정 [original] | 애니메이션 변경 과정을 정리하면 다음과 같습니다. 위에서 알아본 3가지 아바타 애니메이션 제어 방법의 장단점을 정리하면 아래 표와 같습니다. 각 방법은 장단점이 명확하므로 크리에이터의 의도에 맞는 방법을 적절히 선택하면 됩니다. | 아바타 애니메이션 제어 방법 | 장점 | 단점 | | :---: | --- | --- | | ActionStateChangedEvent | <ul> <li>몸통과 파츠 애니메이션을 각각 다르게 조절할 수 있습니다.</li> <li>재생 속도, 재생 타입, 애니메이션 시작/종료 프레임을 세밀하게 설 [chunk_id] | Guides:820:5

[task] | wikipedia [title] | 아바타 애니메이션 제어하기 [category] | Guides [rephrased] | # 아바타 애니메이션 제어하기 `BodyActionStateChangeEvent`는 아바타의 `bodyActionState`를 변경하기 위한 이벤트입니다. 이 이벤트는 무기 타입에 따른 별도의 애니메이션 지정이 필요 없어 개발 편의성이 높습니다. `BodyActionStateChangeEvent`는 `MapleAvatarBodyActionState`를 통해 애니메이션을 제어합니다. `MapleAvatarBodyActionState`는 각 상태별로 사용할 몸통 액션(`CoreActionName`)과 파츠 액션(`PartsActio [original] | [BodyActionStateChangeEvent](/apiReference/Events/BodyActionStateChangeEvent)는 이름 그대로 아바타의 bodyActionState를 변경하는 이벤트입니다. 이 이벤트는 무기 타입에 따른 애니메이션을 별도로 지정할 필요가 없어 편리합니다. **BodyActionStateChangeEvent**는 **MapleAvatarBodyActionState**로 애니메이션을 제어합니다. **MapleAvatarBodyActionState**에는 각 상태별로 어떤 몸통 액션과 파츠 액 [chunk_id] | Guides:820:3

[task] | extract_knowledge [title] | 아바타 애니메이션 제어하기 [category] | Guides [rephrased] | # 아바타 애니메이션 제어: BodyActionStateChangeEvent ## 개념 설명 `BodyActionStateChangeEvent`는 아바타의 `bodyActionState`를 변경하는 데 사용되는 이벤트입니다. 이 이벤트는 `MapleAvatarBodyActionState` 상수를 통해 애니메이션을 제어하며, 무기 타입에 따른 별도의 애니메이션 지정이 필요하지 않습니다. `MapleAvatarBodyActionState`에는 각 상태별로 사용할 몸통 액션(`CoreActionName`)과 파츠 액션(`PartsA [original] | [BodyActionStateChangeEvent](/apiReference/Events/BodyActionStateChangeEvent)는 이름 그대로 아바타의 bodyActionState를 변경하는 이벤트입니다. 이 이벤트는 무기 타입에 따른 애니메이션을 별도로 지정할 필요가 없어 편리합니다. **BodyActionStateChangeEvent**는 **MapleAvatarBodyActionState**로 애니메이션을 제어합니다. **MapleAvatarBodyActionState**에는 각 상태별로 어떤 몸통 액션과 파츠 액 [chunk_id] | Guides:820:3

[task] | distill [title] | 아바타 애니메이션 제어하기 [category] | Guides [rephrased] | ### 아바타 애니메이션 제어: `SpriteAnimPlayerChangeFrameEvent` 아바타 애니메이션은 클라이언트에서 재생되므로, 관련 로직은 반드시 `[client]` 영역에서 구현해야 합니다. **1. 이벤트 구독 취소 및 애니메이션 전환** 특정 프레임 도달 시 이벤트 구독을 해제하고(`DisconnectEvent`), 목표 애니메이션(`ActionStateChangedEvent`)을 실행합니다. ```lua [client] void ChangeFrameEvent(any event) { if event. [original] | 3. 아까 저장한 **handler**를 통해 **SpriteAnimPlayerChangeFrameEvent** 구독을 취소합니다. `ChangeFrameEvent` 함수를 수정해 봅시다. ```lua [client] void ChangeFrameEvent(any event) { if event.FrameIndex == 2 then local body = self.Entity.AvatarRendererComponent:GetBodyEntity() [chunk_id] | Guides:820:7

[task] | knowledge_list [title] | 아바타 애니메이션 제어하기 [category] | Guides [rephrased] | - `ChangeFrameEvent` 함수는 클라이언트 공간(`[client]`)에서 실행되며, 매개변수로 `any` 타입의 `event`를 받아 `SpriteAnimPlayerChangeFrameEvent`에 대한 처리를 수행합니다. - 이벤트 객체의 `FrameIndex` 프로퍼티가 2와 같을 때만 해당 로직이 실행됩니다. - `self.Entity.AvatarRendererComponent:GetBodyEntity()` 메서드를 호출하여 아바타의 몸체 엔티티를 반환받아 `body` 변수에 저장합니다. - `body:Discon [original] | 3. 아까 저장한 **handler**를 통해 **SpriteAnimPlayerChangeFrameEvent** 구독을 취소합니다. `ChangeFrameEvent` 함수를 수정해 봅시다. ```lua [client] void ChangeFrameEvent(any event) { if event.FrameIndex == 2 then local body = self.Entity.AvatarRendererComponent:GetBodyEntity() [chunk_id] | Guides:820:7

[task] | distill [title] | 아바타 애니메이션 제어하기 [category] | Guides [rephrased] | **FrameEvent** 활용법: 아바타 애니메이션 재생 중 특정 프레임에서 다른 애니메이션으로 전환합니다. ### 1. 이벤트 구독 `SpriteAnimPlayerChangeFrameEvent`를 Body와 연결합니다. 언서바이트(취소) 처리를 위해 핸들러를 프로퍼티로 저장합니다. ```lua Property: [None] any handler = nil Method: [client only] void OnBeginPlay() { local body = self.Entity.AvatarRendererComponent [original] | 다음의 예제 코드를 보면서 **FrameEvent**의 사용법을 알아봅시다. 1. 어떤 아바타 애니메이션의 2번째 프레임이 재생될 때 다른 애니메이션으로 변경하고 싶다고 가정합니다. 그렇다면 **SpriteAnimPlayerChangeFrameEvent**를 활용할 수 있을 것입니다. `OnBeginPlay` 함수를 추가하고, 위에서 설명한 대로 이벤트를 **Body**와 연결합니다. 구독 취소를 대비해 연결한 이벤트의 핸들러는 프로퍼티로 가지고 있도록 합니다. ```lua Property: [None] [chunk_id] | Guides:820:6

[task] | distill [title] | 타이머 만들기 [category] | Guides [rephrased] | **핵심 요약: 타이머 0초 도달 시 UI 종료 처리** 타이머가 음수로 감소하는 문제를 방지하기 위해, `RemainingTime`이 0 이하가 되면 UI를 비활성화하여 게임을 종료합니다. **1. `EndGame` 메서드 구현** `CardPairGameLogic` 컴포넌트에서 UI를 끄는 메서드를 정의합니다. ```lua [client only] void EndGame () { self.CardPairGameUI.Enable = false } ``` **2. `OnUpdate` 내 조건 분기** 매 프레임마다 남은 [original] | 타이머를 완성했지만 이번에도 한 가지 추가하면 좋겠습니다 타이머가 0초가 된 이후에 수가 음수로 계속해서 감소하고 있습니다. 일반적으로 수가 줄어드는 모습을 보면, 0초가 되었을 때 게임이 종료될 거라 기대합니다. 그러나 지금은 0초 이후 수가 음수로 줄어들고 있습니다. 0초가 되면 ui가 꺼지게 만들어 봅시다. 1. **CardPairGameLogic** 로직의 `EndGame` 함수에 아래와 같이 작성합니다. ```lua [client only] void EndGame () { [chunk_id] | Guides:821:1

[task] | knowledge_list [title] | 아바타 애니메이션 제어하기 [category] | Guides [rephrased] | * `SpriteAnimPlayerChangeFrameEvent`는 아바타 애니메이션 재생 중 특정 프레임이 도달했을 때 발생하는 이벤트이며, `Body` 엔티티와 연결하여 구독할 수 있습니다. * `self.Entity.AvatarRendererComponent:GetBodyEntity()` 메서드는 아바타 렌더러 컴포넌트에서 바디(Body) 엔티티를 반환하며, 이 바디 엔티티는 애니메이션 관련 이벤트의 송신 및 수신 대상입니다. * `body:ConnectEvent("SpriteAnimPlayerChangeFrameE [original] | 다음의 예제 코드를 보면서 **FrameEvent**의 사용법을 알아봅시다. 1. 어떤 아바타 애니메이션의 2번째 프레임이 재생될 때 다른 애니메이션으로 변경하고 싶다고 가정합니다. 그렇다면 **SpriteAnimPlayerChangeFrameEvent**를 활용할 수 있을 것입니다. `OnBeginPlay` 함수를 추가하고, 위에서 설명한 대로 이벤트를 **Body**와 연결합니다. 구독 취소를 대비해 연결한 이벤트의 핸들러는 프로퍼티로 가지고 있도록 합니다. ```lua Property: [None] [chunk_id] | Guides:820:6

[task] | knowledge_list [title] | 타이머 만들기 [category] | Guides [rephrased] | 주어진 문서 텍스트에만 기반하여 핵심 사실을 추출한 목록입니다. 1. `CardPairGameLogic` 컴포넌트의 `EndGame` 메서드는 `[client only]` 실행 공간 제약 하에 정의되며, 매개변수가 없고 반환 타입은 `void`입니다. 2. `EndGame` 함수 본문에서는 `self.CardPairGameUI.Enable` 속성을 `false`로 설정하여 UI를 비활성화하는 로직을 수행합니다. 3. `OnUpdate` 함수 내부에서는 `self.RemainingTime` 변수의 값이 0 이하(`<= 0`)인 조건 [original] | 타이머를 완성했지만 이번에도 한 가지 추가하면 좋겠습니다 타이머가 0초가 된 이후에 수가 음수로 계속해서 감소하고 있습니다. 일반적으로 수가 줄어드는 모습을 보면, 0초가 되었을 때 게임이 종료될 거라 기대합니다. 그러나 지금은 0초 이후 수가 음수로 줄어들고 있습니다. 0초가 되면 ui가 꺼지게 만들어 봅시다. 1. **CardPairGameLogic** 로직의 `EndGame` 함수에 아래와 같이 작성합니다. ```lua [client only] void EndGame () { [chunk_id] | Guides:821:1

[task] | diverse_qa [title] | 아바타 애니메이션 제어하기 [category] | Guides [rephrased] | 질문: `SpriteAnimPlayerChangeFrameEvent`를 Body와 연결할 때, 이벤트 핸들러를 프로퍼티로 저장해야 하는 이유는 무엇인가요? 답변: 구독 취소를 대비하기 위해 연결한 이벤트의 핸들러를 프로퍼티로 가지고 있도록 해야 합니다. 질문: 아바타의 Body 엔티티를 가져오기 위해 `AvatarRendererComponent`에서 어떤 메서드를 호출해야 하나요? 답변: `GetBodyEntity()` 메서드를 호출해야 합니다. 질문: 아래 코드에서 `self.handler`가 어떤 값으로 할당되는가요? ``` [original] | 다음의 예제 코드를 보면서 **FrameEvent**의 사용법을 알아봅시다. 1. 어떤 아바타 애니메이션의 2번째 프레임이 재생될 때 다른 애니메이션으로 변경하고 싶다고 가정합니다. 그렇다면 **SpriteAnimPlayerChangeFrameEvent**를 활용할 수 있을 것입니다. `OnBeginPlay` 함수를 추가하고, 위에서 설명한 대로 이벤트를 **Body**와 연결합니다. 구독 취소를 대비해 연결한 이벤트의 핸들러는 프로퍼티로 가지고 있도록 합니다. ```lua Property: [None] [chunk_id] | Guides:820:6

[task] | wikipedia [title] | 아바타 애니메이션 제어하기 [category] | Guides [rephrased] | **아바타 애니메이션 제어하기** 아바타의 특정 애니메이션 프레임이 재생되는 시점에 다른 애니메이션으로 전환하려면, 클라이언트에서 애니메이션 플레이어의 프레임 변경 이벤트를 구독하고 해제하는 방식으로 제어할 수 있습니다. 구체적인 구현 방법은 다음과 같습니다. 먼저, 이전에 저장해 둔 `handler`를 사용하여 `SpriteAnimPlayerChangeFrameEvent` 구독을 취소합니다. 이를 위해 `ChangeFrameEvent` 함수를 수정하여, 이벤트의 `FrameIndex`가 2일 때인 경우에만 처리하도록 로직을 구 [original] | 3. 아까 저장한 **handler**를 통해 **SpriteAnimPlayerChangeFrameEvent** 구독을 취소합니다. `ChangeFrameEvent` 함수를 수정해 봅시다. ```lua [client] void ChangeFrameEvent(any event) { if event.FrameIndex == 2 then local body = self.Entity.AvatarRendererComponent:GetBodyEntity() [chunk_id] | Guides:820:7

[task] | knowledge_list [title] | 타이머 만들기 [category] | Guides [rephrased] | 1. `CardPairGameLogic` 컴포넌트에 `[None]` 동기화 속성을 가진 `number` 타입의 `PlayTime` 프로퍼티를 추가하며, 이 값의 초기값은 `60`으로 설정됩니다. 2. `CardPairGameLogic` 컴포넌트에 `[None]` 동기화 속성을 가진 `number` 타입의 `RemainingTime` 프로퍼티를 추가하며, 이 값의 초기값은 `0`으로 설정됩니다. 3. `CardPairGameLogic` 컴포넌트의 `[client only]` 실행 공간에서 `void OnUpdate(number del [original] | # 타이머 만들기 게임을 시작하면 1초씩 감소하는 타이머를 만들어봅시다. 1. **CardPairGameLogic** 로직에 게임 제한 시간으로 사용할 **PlayTime** 프로퍼티와 시간을 줄이기 위해 사용할 **RemainingTime** 프로퍼티를 추가합니다. PlayTime 초깃값은 **60**으로 설정합니다. ```lua Property: [None] number PlayTime = 60 [None] number RemainingTime = 0 ``` > ** [chunk_id] | Guides:821:0

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