[task] | instruction_following [pass] | ⏳ 미판정 [title] | ActionSheet로 아바타 애니메이션 손쉽게 제어하기 [question] | StateToAvatarBodyActionSheet의 기본 11개 상태 중 Key가 대문자가 아닌 값은 무엇인지 표로 정리해서 알려줘 [answer] | StateToAvatarBodyActionSheet에 기본으로 등록된 11개 상태의 Key 값은 모두 대문자로 입력해야 하며, 실제 기본값 표를 확인해 보면 **대문자가 아닌 Key 값은 없습니다.** 문서에 명시된 기본 11개 Key는 다음과 같이 모두 대문자로 정의되어 있습니다. | Key | AvatarBodyActionStateName | PlayRate | | :--- | :--- | :--- | | IDLE | stand | 1 | | MOVE | walk | 1.68 | | ATTACK | attack | 1.33 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 **StateToAvatarBodyActionSheet**의 아바타 상태를 통해 애니메이션을 손쉽게 제어하는 방법을 소개합니다. # 아바타 애니메이션 아바타가 걸을 때, 앉을 때, 공격할 때, 점프할 때를 유저가 인지하려면 상태에 맞는 애니메이션이 필요합니다. [AvatarStateAnimationComponent](/apiReference/Components/AvatarStateAnimationComponent)의 **StateToAvatarBodyActionSheet**에 **Key**와 **Avatar
[task] | two_turn [pass] | ⏳ 미판정 [title] | 인스턴스 맵 만들기 [question] | 크리에이터가 맵을 인스턴스 맵으로 설정하고 특정 유저만 입장하는 특수 던전을 만들 때의 필수 설정 사항이 무엇인가요 [answer] | 크리에이터가 특정 유저만 입장하는 특수 던전(인스턴스 맵)을 만들 때의 필수 설정 사항은 다음과 같습니다. 1. **맵의 InstanceMap 프로퍼티 설정** * 크리에이터가 특정 맵을 인스턴스 맵으로 사용하고자 한다면, 해당 맵의 **MapComponent**에서 **InstanceMap** 프로퍼티를 **true**로 설정해야 합니다. * 맵의 기본값은 정적 맵(Static Map)이므로, 인스턴스 맵으로 사용하려면 반드시 이 설정이 필요합니다. 2. **RoomService를 통한 인스턴스 룸 생 [followup] | Map의 MapComponent에서 InstanceMap 프로퍼티를 true로 설정해야 한다는 점과, 정적 룸의 정적 맵을 우선 거쳐야 인스턴스 룸의 인스턴스 맵으로 유저를 보낼 수 있는 제한 사항을 고려한 실제 스크립트 예시가 필요합니다 [followup_answer] | 크리에이터가 인스턴스 맵을 설정하고 `RoomService`를 통해 특정 유저를 이동시키는 과정은 두 가지 전제 조건을 만족해야 합니다. 1. **맵 설정**: 대상 맵의 `MapComponent`에서 `InstanceMap` 프로퍼티가 `true`로 설정되어 있어야 합니다. (이것은 에디터 설정이며 스크립트로 변경하지 않습니다) 2. **이동 경로**: 유저는 반드시 **정적 룸의 정적 맵**에서 시작해야 합니다. 인스턴스 룸으로의 이동은 `RoomService`를 통해서만 가능하며, 정적 맵에서 `MoveUsersToIns [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 월드를 제작하다 보면 특정한 유저만 입장할 수 있는 특수 던전 같은 별도의 공간을 만들고 싶을 때가 있습니다. 이때 `RoomService`를 활용할 수 있습니다 다른 유저들과 분리할 수 있는 별도의 공간을 만들고, 유저를 이동시키는 `RoomService`를 알아봅시다. 인스턴스 맵을 활용하기 위해 정적 룸, 정적 맵 개념을 함께 설명합니다. # 정적 룸 하나의 월드에는 하나의 **정적 룸(Static Room)**이 있습니다. 정적 룸에는 정적 맵이 생성됩니다. 유저는 정적 맵 간 이동을 자유롭게 할 수
[task] | single_turn [pass] | ⏳ 미판정 [title] | 아바타 표정 바꾸기 [question] | KeyDownEvent 핸들러에서 self:Emote을 호출할 때 매개변수로 전달하는 userId 값이 잘못되면 어떤 오류가 발생하나요? [answer] | 제공된 참고 문서에는 `KeyDownEvent` 핸들러에서 `self:Emote`을 호출할 때 `userId` 값이 잘못되거나 유효하지 않을 경우 발생하는 구체적인 오류 메시지나 예외 처리 방식에 대한 정보가 포함되어 있지 않습니다. 문서에는 `_UserService:GetUserEntityByUserId(userId)`를 통해 엔티티를 조회하고 `AvatarRendererComponent`에 접근하는 코드 구조만 제시되어 있을 뿐, `userId`가 존재하지 않거나 잘못된 값일 때 어떤 오류가 발생하며 이를 어떻게 처리해야 하는 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 키보드의 숫자키를 1부터 5까지 누르면 각각 다른 표정이 5초 동안 재생합니다. 1. MyDesk에서 새로운 컴포넌트를 만들고, 스크립트 작성 화면을 엽니다. 2. Function: 옆의 추가 를 눌러 **New**를 선택합니다. 3. 함수 이름을 Emote로 변경하고, 더 보기 를 선택해 **Add Parameter**를 두 번 추가해 매개 변수를 입력합니다. 5. `PlayEmotion`을 이용해 재생할 표정을 작성합니다. 6. Entity Event Handler에 `KeyDownEvent`를 추가하고, 표정 재생을
[task] | two_turn [pass] | ⏳ 미판정 [title] | 아바타 표정 바꾸기 [question] | `AvatarRendererComponent`의 `PlayEmotion` 메서드를 통해 아바타의 표정을 변경하는 기본 원리와 제공되는 22가지 표정(key) 목록에 대해 설명해 주세요. [answer] | `AvatarRendererComponent`의 `PlayEmotion` 메서드를 사용하면 플레이어 아바타의 표정을 변경할 수 있습니다. 이 메서드는 특정 입력 키와 표정을 연결하거나, 몬스터에게 맞았을 때 특정 표정을 재생하는 등 다양한 상황에서 활용되어 유저 간 의사소통을 원활하게 하는 데 도움을 줍니다. 표정은 총 22가지가 제공되며, 크리에이터가 설정한 얼굴에 따라 실제 화면에서 보이는 표정의 모양은 다를 수 있습니다. 제공되는 22가지 표정과 해당 key는 다음과 같습니다. | 표정 | key | | --- | --- [followup] | `Hit`이나 `Smile` 같은 특정 표정 key를 입력값으로 사용하여, 몬스터에게 공격을 당했을 때 자동으로 표정이 바뀌도록 하는 mLua 스크립트 예제를 작성해 주세요. [followup_answer] | 몬스터에게 공격을 당했을 때 자동으로 표정이 바뀌도록 하는 mLua 스크립트는 `AvatarRendererComponent`의 `PlayEmotion` 메서드를 사용해야 합니다. 단, 제공된 참고 문서에는 `Hit`이나 `Smile` 키를 사용하는 **입력 키 연결 예제**와 **트리거 충돌 시 색상/복장 변경 예제**만 포함되어 있으며, **몬스터에게 공격을 당했을 때(피격 이벤트)를 감지하여 표정을 변경하는 구체적인 이벤트 핸들러 이름이나 API는 문서에 명시되어 있지 않습니다.** 따라서 문서에 없는 API나 이벤트를 지어 [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 AvatarRendererComponent의 `PlayEmotion`을 사용해 플레이어 아바타의 표정을 바꿀 수 있습니다. 특정 입력 키와 표정을 연결 지어 생동감 있게 감정을 표현할 수도 있고, 몬스터에게 맞았을 때 특정 표정을 재생시킬 수도 있습니다. 적극적으로 사용해 유저들끼리의 활발하고 쉬운 의사소통을 할 수 있게 도와주세요. # 표정 종류 총 22가지의 표정을 제공합니다. 표정은 얼굴마다 다르게 나타나므로 크리에이터가 설정한 얼굴에 따라 가이드의 표정과 다를 수 있습니다 | 표정 | key | 예
[task] | single_turn [pass] | ⏳ 미판정 [title] | 인스턴스 맵 만들기 [question] | `HandleButtonClickEvent`에서 `self.Entity.TextComponent.Text` 수정과 `_UserService.LocalPlayer.Player:OnCancelReady()` 호출 순서가 바뀌어도 기능상 차이가 없는지, 그리고 UI 업데이트가 서버 상태 변경보다 늦게 반영될 때의 처리 방법은 무엇인가요? [answer] | 제시된 참고 문서와 mLua 스크립트 규칙에 기반하여 질문에 답변드립니다. ### 1. `self.Entity.TextComponent.Text` 수정과 `_UserService.LocalPlayer.Player:OnCancelReady()` 호출 순서 차이 **기능상 차이는 없습니다.** 제시된 `ReadyButton` 스크립트 예제를 보면, `HandleButtonClickEvent` 핸들러는 `[client only]` 공간에서 실행됩니다. 1. **UI 업데이트 (`self.Entity.TextComponent.Te [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 3. **ReadyButton** 스크립트 컴포넌트를 생성하고 **Ready UI 버튼**에 추가합니다. 유저가 준비 상태가 되면 서버에 해당 유저가 준비되었다는 정보를 보내줍니다. ```lua Property: [None] boolean isReady = false Event Handler: [client only] [Entity: UIButton(/ui/DefaultGroup/UIButton)] HandleButtonClickEvent(ButtonClickEvent e
[task] | instruction_following [pass] | ⏳ 미판정 [title] | MovementComponent를 활용한 엔티티의 이동 제어 [question] | MovementComponent가 RigidbodyComponent 포함 여부를 체크하여 이동을 제어하는 방식을 3문장 이내로 설명하세요. [answer] | MovementComponent는 엔티티에 RigidbodyComponent가 포함되어 있는지 자동으로 체크합니다. 체크 결과에 따라 TransformComponent 또는 RigidbodyComponent 중 적절한 컴포넌트를 선택하여 제어합니다. 이로 인해 제작자가 직접 RigidbodyComponent의 포함 여부를 확인하지 않아도 쉽게 엔티티의 이동을 제어할 수 있습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 이번 과정에서는 점프, 플레이어 이동 및 엔티티 좌표 설정 등 MovementComponent가 제공하는 주요 기능들과 MovementComponent의 기본 작동 방식에 대해 알아봅니다. # MovementComponent 소개 **MovementComponent**는 캐릭터의 이동속도와 점프력 설정은 물론 RigidbodyComponent가 포함된 엔티티를 강제로 점프시키거나 이동 또는 정지시킬 수 있는 여러 기능을 제공합니다. 스크립트 컴포넌트를 통해 TransformComponent를 제어하여 동적으
[task] | single_turn [pass] | ⏳ 미판정 [title] | 아바타 표정 바꾸기 [question] | EmotionalType.Angry와 같은 표정 유형은 mLua의 기본 내장 타입으로 제공되는 것인가요? [answer] | 네, `EmotionalType.Angry`와 같은 표정 유형은 mLua의 기본 내장 타입으로 제공됩니다. 참고 문서의 코드 예제에서 `avatar:PlayEmotion(EmotionalType.Angry, 5)`와 같이 `EmotionalType` 이름 공간(또는 열거형)을 직접 참조하여 사용하고 있으며, 별도의 추가 선언이나 외부 라이브러리 임포트가 필요한 것으로 명시되지 않았습니다. 이는 스크립트 엔진이 기본적으로 인식하는 타입임을 의미합니다. 문서에 명시된 `EmotionalType`의 값은 다음과 같습니다: * `E [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 키보드의 숫자키를 1부터 5까지 누르면 각각 다른 표정이 5초 동안 재생합니다. 1. MyDesk에서 새로운 컴포넌트를 만들고, 스크립트 작성 화면을 엽니다. 2. Function: 옆의 추가 를 눌러 **New**를 선택합니다. 3. 함수 이름을 Emote로 변경하고, 더 보기 를 선택해 **Add Parameter**를 두 번 추가해 매개 변수를 입력합니다. 5. `PlayEmotion`을 이용해 재생할 표정을 작성합니다. 6. Entity Event Handler에 `KeyDownEvent`를 추가하고, 표정 재생을
[task] | instruction_following [pass] | ⏳ 미판정 [title] | MovementComponent를 활용한 엔티티의 이동 제어 [question] | IsClimbPaused를 확인하는 OnUpdate 코드만 출력하고 설명은 주석으로 작성하세요. [answer] | ```lua Method: [server only] void OnUpdate(number delta) { -- IsClimbPaused는 플레이어 엔티티가 사다리나 로프 위에서 정지해 있는지 확인하는 boolean 타입의 읽기 전용 프로퍼티입니다. -- true가 반환되면 현재 사다리/로프에서 이동이 멈춰 있는 상태입니다. local isClimbPaused = self.Entity.MovementComponent.IsClimbPaused log(isClimbPaused) } ``` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 이번 과정에서는 점프, 플레이어 이동 및 엔티티 좌표 설정 등 MovementComponent가 제공하는 주요 기능들과 MovementComponent의 기본 작동 방식에 대해 알아봅니다. # MovementComponent 소개 **MovementComponent**는 캐릭터의 이동속도와 점프력 설정은 물론 RigidbodyComponent가 포함된 엔티티를 강제로 점프시키거나 이동 또는 정지시킬 수 있는 여러 기능을 제공합니다. 스크립트 컴포넌트를 통해 TransformComponent를 제어하여 동적으
[task] | single_turn [pass] | ⏳ 미판정 [title] | ActionSheet로 아바타 애니메이션 손쉽게 제어하기 [question] | StateToAvatarBodyActionSheet에서 Key를 소문자로 입력했는데 애니메이션이 재생되지 않는 원인은 무엇인가요? [answer] | **StateToAvatarBodyActionSheet**의 **Key**는 항상 **대문자**로 입력해야 합니다. 문서가 제공하는 기본 상태 키(IDLE, MOVE, ATTACK, HIT, CROUCH, FALL, JUMP, CLIMB, LADDER, DEAD, SIT) 모두 대문자로 정의되어 있으며, Tip 항목에서도 "Key는 항상 대문자로 입력해야 합니다"라고 명시되어 있습니다. 따라서 Key를 소문자(예: `idle`, `attack`)로 입력하면 시스템이 해당 상태를 인식하지 못하여 연결된 애니메이션이 재생되지 않습니 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 **StateToAvatarBodyActionSheet**의 아바타 상태를 통해 애니메이션을 손쉽게 제어하는 방법을 소개합니다. # 아바타 애니메이션 아바타가 걸을 때, 앉을 때, 공격할 때, 점프할 때를 유저가 인지하려면 상태에 맞는 애니메이션이 필요합니다. [AvatarStateAnimationComponent](/apiReference/Components/AvatarStateAnimationComponent)의 **StateToAvatarBodyActionSheet**에 **Key**와 **Avatar
[task] | single_turn [pass] | ⏳ 미판정 [title] | ActionSheet로 아바타 애니메이션 손쉽게 제어하기 [question] | 기존의 ATTACK 상태 키에 다른 애니메이션을 연결하려면 StateToAvatarBodyActionSheet의 어떤 값을 수정해야 하나요? [answer] | 기존의 ATTACK 상태 키에 다른 애니메이션을 연결하려면 **StateToAvatarBodyActionSheet** 프로퍼티에서 **Key**가 `ATTACK`인 항목의 **AvatarBodyActionStateName** 값을 수정해야 합니다. 예를 들어, 공격 시 재생되는 애니메이션을 `attack`에서 `dead`로 변경하려면, 해당 항목의 `AvatarBodyActionStateName`을 `dead`로 변경하면 됩니다. `Key`는 항상 대문자로 입력되어야 하므로 `ATTACK`을 유지하고, 애니메이션 이름만 원하는 값 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 **StateToAvatarBodyActionSheet**의 아바타 상태를 통해 애니메이션을 손쉽게 제어하는 방법을 소개합니다. # 아바타 애니메이션 아바타가 걸을 때, 앉을 때, 공격할 때, 점프할 때를 유저가 인지하려면 상태에 맞는 애니메이션이 필요합니다. [AvatarStateAnimationComponent](/apiReference/Components/AvatarStateAnimationComponent)의 **StateToAvatarBodyActionSheet**에 **Key**와 **Avatar
[task] | single_turn [pass] | ⏳ 미판정 [title] | ActionSheet로 아바타 애니메이션 손쉽게 제어하기 [question] | 기본값에서 ladder 상태를 삭제했을 때 아바타가 사다리를 오르는 동작과 애니메이션에 어떤 변화가 생기는지 설명해 주세요. [answer] | `StateToAvatarBodyActionSheet`의 기본값에서 **LADDER** 상태(Key)와 **ladder** 애니메이션(AvatarBodyActionStateName) 연결을 삭제하면, 아바타가 사다리를 오를 때 사다리 올라가는 전용 애니메이션이 재생되지 않습니다. 이 경우 아바타는 사다리 오름 동작은 수행하지만, 걷기 애니메이션이 멈춘 상태(정지 상태)로 사다리를 올라가게 됩니다. 즉, 사다리를 오르는 물리적 이동은 일어나지만, 해당 동작에 맞춰진 사다리 애니메이션 대신 캐릭터가 멈춰있는 듯한 외형으로 사다리를 오 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 **StateToAvatarBodyActionSheet**의 아바타 상태를 통해 애니메이션을 손쉽게 제어하는 방법을 소개합니다. # 아바타 애니메이션 아바타가 걸을 때, 앉을 때, 공격할 때, 점프할 때를 유저가 인지하려면 상태에 맞는 애니메이션이 필요합니다. [AvatarStateAnimationComponent](/apiReference/Components/AvatarStateAnimationComponent)의 **StateToAvatarBodyActionSheet**에 **Key**와 **Avatar
[task] | code [pass] | ⏳ 미판정 [title] | 아바타의 외형 변경과 활용 [question] | DefaultPlayer의 AvatarRendererComponent와 CostumeManagerComponent를 활용하여, 게임 시작 시(UserEnter 이벤트 등) 모든 플레이어가 착용 중인 특정 장비(예: 모자)의 색상을 지정된 색상으로 변경하는 스크립트를 작성해줘. [answer] | 제공된 문서에는 `UserEnter` 이벤트에 대해 명시된 정보가 없습니다. 문서에 언급된 이벤트는 트리거 충돌 시 발생하는 `TriggerEnterEvent`입니다. 따라서 문서에 근거하여 `UserEnter` 이벤트를 활용하는 스크립트는 작성할 수 없습니다. 대신, 문서에 존재하는 **트리거(Trigger) 오브젝트**에 플레이어가 닿았을 때(`TriggerEnterEvent`) 해당 플레이어의 특정 장비(예: 모자)를 지정된 색상으로 변경하는 스크립트를 작성해 드립니다. 문서에 따르면 색상 변경은 `AvatarRendere [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 아바타 구성을 살펴보고, 아바타의 장비를 교체하는 방법을 알아봅니다. 아바타의 구성을 이해해 새로운 방식으로 아바타를 활용할 수 있습니다. # 아바타 **DefaultPlayer**의 프로퍼티 에디터에는 **AvatarRendererComponent**와 **CostumeManagerComponent**가 있습니다. * **AvatarRendererComponent** * 복장 정보를 가져와 아바타를 그리는(Rendering) 역할을 합니다. * **CostumeManagerComponent**
[task] | instruction_following [pass] | ⏳ 미판정 [title] | MovementComponent를 활용한 엔티티의 이동 제어 [question] | InputSpeed, IsClimbPaused, IsFaceLeft 프로퍼티/함수의 타입과 적용 대상(플레이어 전용 여부)을 표로 정리하세요. [answer] | MovementComponent의 `InputSpeed`, `IsClimbPaused`, `IsFaceLeft` 항목의 타입과 적용 대상은 다음과 같습니다. | 항목 이름 | 타입 | 적용 대상 | 설명 | | :--- | :--- | :--- | :--- | | `InputSpeed` | number | 플레이어 전용 | 조작키를 눌렀을 때 엔티티를 이동시키는 힘(속도)을 설정합니다. 값이 클수록 이동 속도가 빨라집니다. | | `IsClimbPaused` | boolean | 플레이어 전용 | 엔티티가 사다리 또는 로프 위에서 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 이번 과정에서는 점프, 플레이어 이동 및 엔티티 좌표 설정 등 MovementComponent가 제공하는 주요 기능들과 MovementComponent의 기본 작동 방식에 대해 알아봅니다. # MovementComponent 소개 **MovementComponent**는 캐릭터의 이동속도와 점프력 설정은 물론 RigidbodyComponent가 포함된 엔티티를 강제로 점프시키거나 이동 또는 정지시킬 수 있는 여러 기능을 제공합니다. 스크립트 컴포넌트를 통해 TransformComponent를 제어하여 동적으
[task] | code [pass] | ⏳ 미판정 [title] | 아바타 표정 바꾸기 [question] | AvatarRendererComponent의 PlayEmotion 메서드를 사용해 특정 키 입력 시 아바타가 웃음 표정(Smile)을 재생하는 스크립트를 작성해줘 [answer] | 사용자가 특정 키를 누르면 아바타가 웃음(Smile) 표정을 5초간 재생하도록 하는 mLua 스크립트입니다. ```lua Method: [client only] void PlaySmileEmotion() { self.Entity.AvatarGUIRendererComponent:PlayEmotion(EmotionalType.Smile, 5) } Event Handler: [client only] [service: InputService] HandleKeyDownEvent(KeyDownEvent event) { loc [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 AvatarRendererComponent의 `PlayEmotion`을 사용해 플레이어 아바타의 표정을 바꿀 수 있습니다. 특정 입력 키와 표정을 연결 지어 생동감 있게 감정을 표현할 수도 있고, 몬스터에게 맞았을 때 특정 표정을 재생시킬 수도 있습니다. 적극적으로 사용해 유저들끼리의 활발하고 쉬운 의사소통을 할 수 있게 도와주세요. # 표정 종류 총 22가지의 표정을 제공합니다. 표정은 얼굴마다 다르게 나타나므로 크리에이터가 설정한 얼굴에 따라 가이드의 표정과 다를 수 있습니다 | 표정 | key | 예
[task] | two_turn [pass] | ⏳ 미판정 [title] | 인스턴스 맵 만들기 [question] | 정적 맵과 인스턴스 맵의 차이점 및 RoomService를 활용한 인스턴스 룸 생성 원리가 궁금합니다 [answer] | **정적 맵과 인스턴스 맵의 차이점** 1. **생성 시점과 범위** - **정적 맵(Static Map)**: 월드가 생성될 때 자동으로 함께 생성되며, 크리에이터가 제작하는 맵의 기본값입니다. 하나의 월드에는 하나의 **정적 룸(Static Room)**만 존재하며, 이 정적 룸 안에 정적 맵들이 생성됩니다. - **인스턴스 맵(Instance Map)**: 크리에이터가 특정 맵을 인스턴스 맵으로 사용하고자 할 때만 사용할 수 있습니다. 이를 위해 해당 맵의 `MapComponent`에서 **`InstanceMap` [followup] | RoomService:MoveUsersToInstanceRoom()을 호출할 때 인스턴스 룸을 식별하기 위한 Key의 구체적인 사용법과, 인스턴스 룸에서 정적 맵으로 복귀할 때 MapName을 지정하지 않으면 시작 맵으로 돌아가는 동작을 확인하는 코드 예제가 필요합니다 [followup_answer] | **Key의 구체적인 사용법** `RoomService`를 활용하여 인스턴스 룸을 생성할 때 **Key(식별 키)**는 동일한 인스턴스 맵 구성으로 여러 인스턴스 룸을 만들 때 서로 구별하기 위해 사용됩니다. 1. **생성 시 지정**: `_RoomService:CreateInstanceRoom(roomKey, mapList)` 메서드의 첫 번째 인자로 Key를 전달합니다. 2. **유일성 유지**: 이미 사용 중인 식별자(Key)를 다시 사용하거나, 짧은 시간에 동일한 Key로 생성을 반복 요청하면 인스턴스 룸 생성이 실패 [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 월드를 제작하다 보면 특정한 유저만 입장할 수 있는 특수 던전 같은 별도의 공간을 만들고 싶을 때가 있습니다. 이때 `RoomService`를 활용할 수 있습니다 다른 유저들과 분리할 수 있는 별도의 공간을 만들고, 유저를 이동시키는 `RoomService`를 알아봅시다. 인스턴스 맵을 활용하기 위해 정적 룸, 정적 맵 개념을 함께 설명합니다. # 정적 룸 하나의 월드에는 하나의 **정적 룸(Static Room)**이 있습니다. 정적 룸에는 정적 맵이 생성됩니다. 유저는 정적 맵 간 이동을 자유롭게 할 수
[task] | single_turn [pass] | ⏳ 미판정 [title] | 아바타 표정 바꾸기 [question] | 아바타 표정 목록에 있는 "qBlue" 키가 왜 소문자 q로 시작하는지, 다른 표정 키들과 달리 특수한 이유가 있나요? [answer] | 제공된 문서에는 `qBlue` 키가 소문자 `q`로 시작하는 이유나 다른 표정 키들과 다른 특수한 이유가 설명되어 있지 않습니다. 문서에는 단순히 표정 목록 중 하나로서 "창백"에 해당하는 키가 `qBlue`라고만 명시되어 있을 뿐, 명명 규칙이나 기술적 배경에 대한 정보는 없습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 AvatarRendererComponent의 `PlayEmotion`을 사용해 플레이어 아바타의 표정을 바꿀 수 있습니다. 특정 입력 키와 표정을 연결 지어 생동감 있게 감정을 표현할 수도 있고, 몬스터에게 맞았을 때 특정 표정을 재생시킬 수도 있습니다. 적극적으로 사용해 유저들끼리의 활발하고 쉬운 의사소통을 할 수 있게 도와주세요. # 표정 종류 총 22가지의 표정을 제공합니다. 표정은 얼굴마다 다르게 나타나므로 크리에이터가 설정한 얼굴에 따라 가이드의 표정과 다를 수 있습니다 | 표정 | key | 예
[task] | single_turn [pass] | ⏳ 미판정 [title] | ActionSheet로 아바타 애니메이션 손쉽게 제어하기 [question] | StateToAvatarBodyActionSheet 프로퍼티의 Size 값을 변경하거나 [+], [-] 버튼을 이용해 Key를 추가할 수 있는 구체적인 방법은 무엇인가요? [answer] | `StateToAvatarBodyActionSheet` 프로퍼티에서 `Key`를 추가하거나 삭제하는 구체적인 방법은 다음과 같습니다. 1. **Size 값 변경**: `StateToAvatarBodyActionSheet` 프로퍼티의 **Size** 값을 직접 수정합니다. Size 값을 증가시키면 `Key` 항목이 추가되고, 감소시키면 삭제됩니다. 2. **[+], [-] 버튼 사용**: 프로퍼티 하단에 위치한 **[+]** 버튼을 누르면 `Key`가 추가되고, **[-]** 버튼을 누르면 `Key`가 삭제됩니다. 참고로, ` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 **StateToAvatarBodyActionSheet**의 아바타 상태를 통해 애니메이션을 손쉽게 제어하는 방법을 소개합니다. # 아바타 애니메이션 아바타가 걸을 때, 앉을 때, 공격할 때, 점프할 때를 유저가 인지하려면 상태에 맞는 애니메이션이 필요합니다. [AvatarStateAnimationComponent](/apiReference/Components/AvatarStateAnimationComponent)의 **StateToAvatarBodyActionSheet**에 **Key**와 **Avatar
[task] | code [pass] | ⏳ 미판정 [title] | 아바타 표정 바꾸기 [question] | AvatarRendererComponent의 PlayEmotion 메서드를 이용하여 버튼 클릭 시 아바타가 뽀뽀 표정(Chu)을 3초 동안 유지 후 원복하는 스크립트를 작성해줘 [answer] | `AvatarRendererComponent`의 `PlayEmotion` 메서드를 사용하여 버튼(트리거)을 클릭했을 때 아바타가 뽀뽀 표정(`EmotionalType.Chu`)을 3초간 표현하도록 작성할 수 있습니다. 참고 문서의 예제에 따르면, `PlayEmotion` 메서드는 두 번째 인수로 유지 시간을 초 단위(`number`)로 지정하며, 시간이 지나면 자동으로 기본 표정으로 복귀합니다. 또한, 트리거를 통해 플레이어와 상호작용하려면 `OnEnterTriggerBody` 이벤트 핸들러를 사용하고, 대상이 `AvatarRen [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 AvatarRendererComponent의 `PlayEmotion`을 사용해 플레이어 아바타의 표정을 바꿀 수 있습니다. 특정 입력 키와 표정을 연결 지어 생동감 있게 감정을 표현할 수도 있고, 몬스터에게 맞았을 때 특정 표정을 재생시킬 수도 있습니다. 적극적으로 사용해 유저들끼리의 활발하고 쉬운 의사소통을 할 수 있게 도와주세요. # 표정 종류 총 22가지의 표정을 제공합니다. 표정은 얼굴마다 다르게 나타나므로 크리에이터가 설정한 얼굴에 따라 가이드의 표정과 다를 수 있습니다 | 표정 | key | 예
[task] | instruction_following [pass] | ⏳ 미판정 [title] | ActionSheet로 아바타 애니메이션 손쉽게 제어하기 [question] | AvatarStateAnimationComponent의 Size를 15로 설정하고, 테이블 형식으로 추가해야 할 4개의 Key와 해당 AvatarBodyActionStateName을 나열하세요. [answer] | `AvatarStateAnimationComponent`의 `Size`를 15로 변경한 후, 아래 4개의 Key와 `AvatarBodyActionStateName`을 추가해야 합니다. | Key | AvatarBodyActionStateName | | --- | --- | | NEW_ATTACK | attack | | NEW_DEAD | dead | | NEW_JUMP | fall | | NEW_CROUCH | crouch | [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 새로운 상태(Key)를 추가하고, 애니메이션을 지정할 수 있습니다. 기존의 키를 삭제하지 않고 새로운 상태와 액션을 추가하면 두 상태 모두 동작합니다. 숫자 6, 7, 8, 9를 눌렀을 때 특정 애니메이션이 재생되게 만들어봅시다. 1. **Workspace - DefaultPlayer - AvatarStateAnimationComponent**의 **Size**를 **15**로 변경합니다. 2. 추가한 칸에 새로운 **Key**와 **AvatarBodyActionStateName**를 입력합니다. | Key |
[task] | single_turn [pass] | ⏳ 미판정 [title] | 아바타 표정 바꾸기 [question] | AvatarRendererComponent에 접근하기 위해 _UserService:GetUserEntityByUserId를 사용하는 이유는 무엇이며, 다른 방법으로 아바타를 찾을 수 있나요? [answer] | 참고 문서에 제공된 예제 코드에서 `_UserService:GetUserEntityByUserId(userId)`를 사용하는 이유는, **클라이언트에서 키 입력 이벤트(`KeyDownEvent`)가 발생했을 때 그 키를 누른 플레이어의 아바타 엔티티를 정확히 식별하기 위해서**입니다. 구체적인 과정은 다음과 같습니다. 1. `HandleKeyDownEvent`는 클라이언트 공간(`[Client Only]`)에서 실행되며, 이벤트 객체 `event`에는 키 정보만 있고 누가 눌렀는지에 대한 정보가 직접적으로 포함되어 있지 않습니다 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 키보드의 숫자키를 1부터 5까지 누르면 각각 다른 표정이 5초 동안 재생합니다. 1. MyDesk에서 새로운 컴포넌트를 만들고, 스크립트 작성 화면을 엽니다. 2. Function: 옆의 추가 를 눌러 **New**를 선택합니다. 3. 함수 이름을 Emote로 변경하고, 더 보기 를 선택해 **Add Parameter**를 두 번 추가해 매개 변수를 입력합니다. 5. `PlayEmotion`을 이용해 재생할 표정을 작성합니다. 6. Entity Event Handler에 `KeyDownEvent`를 추가하고, 표정 재생을
[task] | code [pass] | ⏳ 미판정 [title] | 아바타의 외형 변경과 활용 [question] | CostumeManagerComponent를 활용해 문서의 복장 RUID 중 Hair와 Face를 지정하고, PortalComponent와 NameTagComponent가 추가된 아바타 모양 포탈 엔티티의 외형을 설정하는 스크립트를 작성해줘 [answer] | 문서에 제시된 복장 RUID와 컴포넌트 구조를 바탕으로, 아바타 모양 포탈 엔티티의 외형(Hair, Face)을 설정하는 스크립트를 작성했습니다. 이 스크립트는 엔티티가 생성될 때(`OnBeginPlay`) 실행되며, 해당 엔티티의 `CostumeManagerComponent`를 통해 헤어와 얼굴 복장의 RUID를 지정합니다. ```lua Property: [None] string HairRUID = "0521135d1c234f10ab5c1c02b1aed813" string FaceRUID = "0b67e20c585145b7b5 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | **AvatarRendererComponent**와 **CostumeManagerComponent**를 활용해 새로운 아바타를 만들어 사용할 수 있습니다. 몬스터, 포탈, NPC 혹은 크리에이터만의 특별한 엔티티로 제작할 수 있습니다. 이때 **TransformComponent, AvatarRendererComponent, CostumeManagerComponent** 총 3가지는 필수 컴포넌트입니다. 필수 컴포넌트와 더불어 다른 네이티브 컴포넌트를 추가하거나, 크리에이터가 제작한 새로운 컴포넌트를 추가해 활용합니다. #### 아
[task] | code [pass] | ⏳ 미판정 [title] | 아바타의 외형 변경과 활용 [question] | TransformComponent, AvatarRendererComponent, CostumeManagerComponent 필수 컴포넌트를 갖춘 엔티티에 문서의 Body, Cape, Longcoat RUID를 적용해 특별한 몬스터 또는 NPC 외형을 만드는 스크립트를 작성해줘 [answer] | 아바타 외형 변경을 위해 `AvatarRendererComponent`와 `CostumeManagerComponent`를 활용합니다. 엔티티에 `TransformComponent`, `AvatarRendererComponent`, `CostumeManagerComponent` 컴포넌트가 필수로 장착되어 있어야 합니다. 문서에 제공된 Body, Cape, Longcoat의 RUID를 사용해 외형을 변경하는 스크립트입니다. ```lua Property: [None] string BodyRUID = "504244b76e654f5db2 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | **AvatarRendererComponent**와 **CostumeManagerComponent**를 활용해 새로운 아바타를 만들어 사용할 수 있습니다. 몬스터, 포탈, NPC 혹은 크리에이터만의 특별한 엔티티로 제작할 수 있습니다. 이때 **TransformComponent, AvatarRendererComponent, CostumeManagerComponent** 총 3가지는 필수 컴포넌트입니다. 필수 컴포넌트와 더불어 다른 네이티브 컴포넌트를 추가하거나, 크리에이터가 제작한 새로운 컴포넌트를 추가해 활용합니다. #### 아
[task] | single_turn [pass] | ⏳ 미판정 [title] | ActionSheet로 아바타 애니메이션 손쉽게 제어하기 [question] | Key는 반드시 대문자로 입력해야 하는 이유와, Key 없이 AvatarBodyActionStateName만 지정했을 때 발생하는 결과를 알려주세요. [answer] | **Key가 반드시 대문자로 입력되어야 하는 이유** 문서에는 "Key는 항상 **대문자**로 입력해야 합니다"라는 명확한 지침이 제시되어 있습니다. 이는 시스템이 아바타의 상태를 식별할 때 대문자 형식의 Key(예: `IDLE`, `MOVE`, `ATTACK` 등)를 기준으로 매칭을 수행하기 때문입니다. 따라서 Key를 소문자나 혼합 표기로 입력하면 시스템이 해당 상태를 올바르게 인식하지 못해 애니메이션이 재생되지 않을 수 있으므로, 반드시 표기 규칙에 맞춰 대문자로 작성해야 합니다. **Key 없이 AvatarBodyActio [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 **StateToAvatarBodyActionSheet**의 아바타 상태를 통해 애니메이션을 손쉽게 제어하는 방법을 소개합니다. # 아바타 애니메이션 아바타가 걸을 때, 앉을 때, 공격할 때, 점프할 때를 유저가 인지하려면 상태에 맞는 애니메이션이 필요합니다. [AvatarStateAnimationComponent](/apiReference/Components/AvatarStateAnimationComponent)의 **StateToAvatarBodyActionSheet**에 **Key**와 **Avatar
[task] | code [pass] | ⏳ 미판정 [title] | 아바타 표정 바꾸기 [question] | AvatarRendererComponent의 PlayEmotion 메서드를 적용해 다른 유저가 특정 영역에 진입했을 때 아바타가 꺄오 표정(Cheers)을 재생하는 스크립트를 작성해줘 [answer] | 사용자가 특정 영역에 진입했을 때 **그 유저의 아바타**가 `Cheers` 표정을 재생하도록 하려면, 트리거 영역에 `TriggerEnterEvent`를 붙이고 이벤트에서 진입한 플레이어 엔티티의 `AvatarGUIRendererComponent`를 찾아 `PlayEmotion`을 호출하면 됩니다. 참고 문서의 예제에서는 `AvatarGUIRendererComponent`를 통해 표정을 재생하는 방식을 사용하고 있으므로, 이 컴포넌트 이름을 따르겠습니다. ```lua Event Handler: [client only] [self [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 AvatarRendererComponent의 `PlayEmotion`을 사용해 플레이어 아바타의 표정을 바꿀 수 있습니다. 특정 입력 키와 표정을 연결 지어 생동감 있게 감정을 표현할 수도 있고, 몬스터에게 맞았을 때 특정 표정을 재생시킬 수도 있습니다. 적극적으로 사용해 유저들끼리의 활발하고 쉬운 의사소통을 할 수 있게 도와주세요. # 표정 종류 총 22가지의 표정을 제공합니다. 표정은 얼굴마다 다르게 나타나므로 크리에이터가 설정한 얼굴에 따라 가이드의 표정과 다를 수 있습니다 | 표정 | key | 예
[task] | instruction_following [pass] | ⏳ 미판정 [title] | ActionSheet로 아바타 애니메이션 손쉽게 제어하기 [question] | NewAvatarAnimation 스크립트에서 숫자 키 6부터 9까지 각각 어떤 상태 이름을 ChangeState 함수로 변경하는지 매핑 관계를 코드 주석으로만 설명하세요. [answer] | NewAvatarAnimation 스크립트에서 숫자 키 6부터 9까지의 입력에 따라 `ChangeState` 함수로 변경되는 상태 이름의 매핑 관계는 다음과 같습니다. ```lua -- 6번 키 입력 시: "NEW_ATTACK" 상태로 변경 -- 7번 키 입력 시: "NEW_DEAD" 상태로 변경 -- 8번 키 입력 시: "NEW_JUMP" 상태로 변경 -- 9번 키 입력 시: "NEW_CROUCH" 상태로 변경 ``` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 새로운 상태(Key)를 추가하고, 애니메이션을 지정할 수 있습니다. 기존의 키를 삭제하지 않고 새로운 상태와 액션을 추가하면 두 상태 모두 동작합니다. 숫자 6, 7, 8, 9를 눌렀을 때 특정 애니메이션이 재생되게 만들어봅시다. 1. **Workspace - DefaultPlayer - AvatarStateAnimationComponent**의 **Size**를 **15**로 변경합니다. 2. 추가한 칸에 새로운 **Key**와 **AvatarBodyActionStateName**를 입력합니다. | Key |
[task] | two_turn [pass] | ⏳ 미판정 [title] | 아바타 표정 바꾸기 [question] | 아바타의 표정을 특정 키 입력에 따라 5초 동안 재생하는 기능을 구현하려면 어떤 스크립트 구조와 API를 사용해야 하나요? [answer] | 아바타의 표정을 특정 키 입력에 따라 5초 동안 재생하려면 `InputService`의 `KeyDownEvent` 이벤트 핸들러와 `UserService`를 통해 해당 플레이어의 아바타 렌더러 컴포넌트를 접근하는 구조가 필요합니다. 구현을 위해 다음과 같은 API와 컴포넌트를 사용합니다. 1. **이벤트 처리**: `HandleKeyDownEvent`를 사용해 `KeyboardKey.Alpha1`부터 `Alpha5`까지의 키 입력을 감지합니다. 2. **사용자 엔티티 접근**: `_UserService:GetUserEntit [followup] | 만약 숫자키 1~5 외에 다른 키(예: Space)를 누를 경우 표정이 재생되지 않도록 하거나, 특정 표정만 반복 재생되도록 로직을 수정하려면 `HandleKeyDownEvent`와 `Emote` 함수를 어떻게 변경해야 하나요? [followup_answer] | 참고 문서에는 숫자키 1~5에 해당하는 `KeyboardKey.Alpha1`~`Alpha5`를 제외한 다른 키(예: Space) 입력 처리나 특정 표정 반복 재생 로직에 대한 명시된 내용이 없습니다. 따라서 문서에 근거하여 다른 키 입력 시 표정이 재생되지 않도록 하거나, 특정 표정만 반복 재생되도록 로직을 수정하는 구체적인 방법은 제시할 수 없습니다. 문서에 포함된 정보는 숫자키 1~5 입력 시 각각 다른 표정이 5초 동안 재생되는 기능 구현에 한정되어 있습니다. [scores] | [judge_reason] | [source_doc] | 키보드의 숫자키를 1부터 5까지 누르면 각각 다른 표정이 5초 동안 재생합니다. 1. MyDesk에서 새로운 컴포넌트를 만들고, 스크립트 작성 화면을 엽니다. 2. Function: 옆의 추가 를 눌러 **New**를 선택합니다. 3. 함수 이름을 Emote로 변경하고, 더 보기 를 선택해 **Add Parameter**를 두 번 추가해 매개 변수를 입력합니다. 5. `PlayEmotion`을 이용해 재생할 표정을 작성합니다. 6. Entity Event Handler에 `KeyDownEvent`를 추가하고, 표정 재생을
[task] | instruction_following [pass] | ⏳ 미판정 [title] | ActionSheet로 아바타 애니메이션 손쉽게 제어하기 [question] | HandleKeyDownEvent 이벤트 핸들러에서 KeyboardKey의 어떤 상수들이 숫자 6, 7, 8, 9 입력에 대응되는지 단계별 번호 목록으로 정리하세요. [answer] | 참고 문서에 나타난 `HandleKeyDownEvent` 이벤트 핸들러 코드에서 숫자 6, 7, 8, 9 입력에 대응되는 `KeyboardKey` 상수는 다음과 같습니다. 1. 숫자 6: `KeyboardKey.Alpha6` 2. 숫자 7: `KeyboardKey.Alpha7` 3. 숫자 8: `KeyboardKey.Alpha8` 4. 숫자 9: `KeyboardKey.Alpha9` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 새로운 상태(Key)를 추가하고, 애니메이션을 지정할 수 있습니다. 기존의 키를 삭제하지 않고 새로운 상태와 액션을 추가하면 두 상태 모두 동작합니다. 숫자 6, 7, 8, 9를 눌렀을 때 특정 애니메이션이 재생되게 만들어봅시다. 1. **Workspace - DefaultPlayer - AvatarStateAnimationComponent**의 **Size**를 **15**로 변경합니다. 2. 추가한 칸에 새로운 **Key**와 **AvatarBodyActionStateName**를 입력합니다. | Key |
[task] | instruction_following [pass] | ⏳ 미판정 [title] | MovementComponent를 활용한 엔티티의 이동 제어 [question] | MovementComponent의 Jump 함수가 정상 작동하기 위해 필수적인 다른 컴포넌트와, 리턴 값이 false가 되는 조건을 2문장 이내로 정리하세요. [answer] | MovementComponent의 Jump 함수는 엔티티에 RigidbodyComponent가 함께 존재할 때만 정상 작동합니다. RigidbodyComponent가 없으면 점프에 실패하여 false를 리턴합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | MovementComponent의 **Jump** 함수는 엔티티를 JumpForce에 입력한 힘만큼 점프시킵니다. boolean 타입으로 점프에 성공한 경우 true를 리턴합니다. 엔티티에 RigidbodyComponent가 함께 있어야 작동하며, RigidbodyComponent가 없으면 false를 리턴합니다. 동기화를 위해 일반적으로 server 공간에서 호출하는 것이 좋지만, 플레이어 엔티티의 경우에는 client에서 호출해야 합니다. ```lua [server only] void OnUpdate(number delta) {
[task] | code [pass] | ⏳ 미판정 [title] | 아바타 표정 바꾸기 [question] | AvatarRendererComponent의 PlayEmotion 메서드를 활용해 몬스터에게 공격당했을 때 아바타가 맞기 표정(Hit)을 자동으로 재생하는 스크립트를 작성해줘 [answer] | 몬스터에게 공격당했을 때 아바타가 자동으로 '맞기(Hit)' 표정을 재생하려면, 먼저 몬스터가 플레이어를 타격하는 시점에 감지할 수 있는 이벤트가 필요합니다. 참고 문서에 제공된 예제 코드들은 **키보드 입력(F1~F5)** 에 반응하거나, **트리거 볼륨(Trigger Volume)** 안에 들어왔을 때(`OnEnterTriggerBody`) 동작하는 것들입니다. 몬스터의 공격(타격)을 감지하는 이벤트 핸들러(예: `HandleMonsterAttackEvent` 등)나 관련 API가 문서에 명시되어 있지 않기 때문에, **문서에 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 AvatarRendererComponent의 `PlayEmotion`을 사용해 플레이어 아바타의 표정을 바꿀 수 있습니다. 특정 입력 키와 표정을 연결 지어 생동감 있게 감정을 표현할 수도 있고, 몬스터에게 맞았을 때 특정 표정을 재생시킬 수도 있습니다. 적극적으로 사용해 유저들끼리의 활발하고 쉬운 의사소통을 할 수 있게 도와주세요. # 표정 종류 총 22가지의 표정을 제공합니다. 표정은 얼굴마다 다르게 나타나므로 크리에이터가 설정한 얼굴에 따라 가이드의 표정과 다를 수 있습니다 | 표정 | key | 예
[task] | code [pass] | ⏳ 미판정 [title] | 아바타의 외형 변경과 활용 [question] | DefaultPlayer에 있는 CostumeManagerComponent의 UseCustomeEquipOnly 프로퍼티를 true로 설정하고, 특정 한벌옷과 두손무기 ID를 지정하여 모든 유저가 동일한 복장으로 입장하도록 하는 스크립트를 작성해줘. [answer] | `DefaultPlayer`의 `CostumeManagerComponent`에서 `UseCustomeEquipOnly`를 활성화하고 특정 복장 ID를 지정하는 것은 **스크립트 코드**가 아니라 **에디터의 프로퍼티 설정**을 통해 이루어집니다. 따라서 이 동작을 수행하는 mLua 스크립트는 존재하지 않으며, 에디터에서 직접 설정해야 합니다. 에디터에서 설정하는 방법은 다음과 같습니다. 1. `DefaultPlayer` 객체를 선택합니다. 2. `CostumeManagerComponent` 컴포넌트를 찾습니다. 3. `Us [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 아바타 구성을 살펴보고, 아바타의 장비를 교체하는 방법을 알아봅니다. 아바타의 구성을 이해해 새로운 방식으로 아바타를 활용할 수 있습니다. # 아바타 **DefaultPlayer**의 프로퍼티 에디터에는 **AvatarRendererComponent**와 **CostumeManagerComponent**가 있습니다. * **AvatarRendererComponent** * 복장 정보를 가져와 아바타를 그리는(Rendering) 역할을 합니다. * **CostumeManagerComponent**