[task] | single_turn [pass] | ⏳ 미판정 [title] | 엔티티의 위치, 크기, 회전 조정 [question] | WorldZRotation과 ZRotation 값이 서로 교환되는 관계라면, TransformComponent의 ZRotation을 45로 변경할 때 엔티티는 어떤 방향으로 회전하나요? [answer] | WorldZRotation과 ZRotation은 값이 상호 교환되는 관계이며, TransformComponent의 ZRotation 값을 45로 설정하면 엔티티는 **반시계 방향으로 45도** 회전합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | **Scale**의 **X, Y**값에 **4**를 입력하면 기존 대비 비례하게 4배 커집니다. # 회전 **WorldZRotation**과 **ZRotaion**은 값을 상호 교환합니다. #### 방법 1 **TransformComponent**의 **ZRotation** 값을 **45**로 변경합니다. 엔티티가 반시계 방향으로 45도 회전된 것을 확인합니다. #### 방법 2 1. **Scene**에서 엔티티를 선택, 핸들러를 활성화합니다. 2. 핸들러 박스의 모서리 쪽으로 마우스를 움직입니다. 3. 커서가 모양으로
[task] | single_turn [pass] | ⏳ 미판정 [title] | NPC 대화창 만들기 [question] | 빈 셀과 nil 값을 구분하지 못해 대화창이 중간에 끊기는 현상이 발생하는 이유는 무엇인가요? [answer] | 빈 셀과 `nil` 값을 구분하지 못해 대화창이 중간에 끊기는 이유는 **데이터에서 값을 가져올 때 반환되는 타입의 차이** 때문입니다. 참고 문서에 따르면, `GetCell()` 함수를 이용해 데이터를 가져올 때 다음 두 가지 경우가 발생합니다. 1. **빈 셀의 경우:** `nil`이 아닌 **빈 문자열(`""`)** 이 반환됩니다. 2. **값이 존재하지 않는 경우 (예: 마지막 행 이후 등):** **`nil`** 이 반환됩니다. 대화창 로직(`ShowNextText()`)은 **본문 텍스트(`text` 컬럼)** [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | elf.uiNameEntity.TextComponent.Text = name end if portrait ~= "" then isPortraitEnable = true self.uiPortraitEntity.SpriteGUIRendererComponent.ImageRUID = portrait end self.uiNameEntity.Enable = isNameEnable self.uiP
[task] | two_turn [pass] | ⏳ 미판정 [title] | 원하는 이미지 갖고 오기 [question] | 메이플스토리 월드에서 이미지 리소스를 불러와 스프라이트로 활용하는 방법은 크게 몇 가지로 나뉘는데, 각각의 차이점이 궁금합니다. [answer] | 메이플스토리 월드에서 이미지 리소스를 불러와 스프라이트로 활용하는 방법은 크게 3가지로 나뉩니다. 각 방법의 차이점은 다음과 같습니다. **1. Workspace - MyDesk에서 Place To Hierarchy 사용** Workspace의 MyDesk 폴더에 있는 이미지 파일의 컨텍스트 메뉴에서 `Place To Hierarchy`를 클릭하는 방식입니다. 이는 이미지가 있는 위치에서 바로 위계 구조(Hierarchy)에 객체를 생성하는 방법입니다. **2. Workspace - MyDesk에서 Scene으로 배치** Wor [followup] | `Place To Hierarchy`를 사용하여 배치한 경우와 `NativeModel`에서 `Sprite RUID` 값을 직접 변경해 사용하는 경우 중, 스크립트에서 해당 객체를 제어하거나 애니메이션을 변경할 때 어떤 접근 방식이 더 유리한지 구체적인 코드를 포함해 설명해 주세요. [followup_answer] | 제시된 참고 문서에는 `Place To Hierarchy`로 배치한 객체와 `NativeModel`에서 `Sprite RUID`를 변경한 객체 중 스크립트 제어나 애니메이션 변경 시 어떤 접근 방식이 더 유리한지에 대한 비교 정보나 구체적인 장단점 설명이 포함되어 있지 않습니다. 또한, 해당 문서에는 스프라이트 객체를 스크립트로 제어하는 구체적인 mLua 코드 예제나 애니메이션 변경 관련 API가 언급되지 않았습니다. 문서에 언급된 유일한 스크립트 관련 내용은 "스프라이트 색상 조정"에 대한 참고 가이드 링크뿐이며, 실제 색상 조 [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 게임에 필요한 이미지 리소스를 찾아 메이커에서 활용할 수 있습니다. # 이미지 불러오기 1. **Workspace - MyDesk**의 콘텍스트 메뉴를 열고, **Import From - Import Image**를 선택합니다. 2. 사용할 이미지를 선택하여 불러옵니다. **MyDesk** 하위에 불러온 이미지 파일이 개별 생성됩니다. 3. 원하는 방식으로 이미지를 활용합니다. # 이미지 활용 방식 이미지를 배치하는 방법은 크게 3가지가 있습니다. **첫 번째 방법**은 **Workspace -
[task] | single_turn [pass] | ⏳ 미판정 [title] | 다른 위치로 이동하는 포탈 만들기 [question] | Preset List의 Portal을 씁니다만, 직접 만든 스프라이트로 포탈을 만들 때는 어떤 절차로 컴포넌트를 추가해야 하나요? [answer] | 직접 만든 스프라이트로 포탈을 만들려면 다음 단계를 따르세요. 1. 크리에이터가 제작한 스프라이트를 사용한 엔티티나 MSW 리소스를 활용한 엔티티를 맵에 배치합니다. 2. 프로퍼티 에디터 창을 열어 해당 엔티티에 **PortalComponent**를 추가합니다. 이후 포탈의 목적지를 설정하려면, 목적지로 이동할 다른 엔티티에도 **PortalComponent**가 있어야 합니다. 시작 포탈의 **PortalComponent - PortalEntityRef**를 클릭하여 목적지 포탈을 선택하면 연결이 완료됩니다. 참고로 포탈 경 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 월드나 하나의 맵 안에서 이동하는 포탈을 만들어 간단하게 플레이어 아바타가 맵을 이동하게 만들 수 있습니다. [PortalComponent](/apiReference/Components/PortalComponent) 사용 방법을 알아보겠습니다. # 포탈 만들기 [PortalComponent](/apiReference/Components/PortalComponent)는 동일한 포탈 컴포넌트를 가진 엔티티를 목적지로 설정하고, 플레이어 아바타가 포탈 영역에서 특정 동작을 수행하면(키 입력) 목적지로 이동할 수
[task] | single_turn [pass] | ⏳ 미판정 [title] | 엔티티의 위치, 크기, 회전 조정 [question] | OnBeginPlay 이벤트 핸들러에서 Translate와 Rotate 함수를 호출한 후, 콘솔 창에 이동 및 회전 완료 여부를 확인하기 위해 어떤 함수를 사용해야 하나요? [answer] | `log(...)` 함수를 사용합니다. `Translate`와 `Rotate` 함수 호출 후 이 함수를 실행하면, 콘솔 창에 입력한 문자열이 출력되어 작업이 완료되었음을 확인할 수 있습니다. ```lua void OnBeginPlay() { self.Entity.TransformComponent:Translate(4, 5) log("move on") self.Entity.TransformComponent:Rotate(6) log("rotate on") } ``` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | **Scale**의 **X, Y**값에 **4**를 입력하면 기존 대비 비례하게 4배 커집니다. # 회전 **WorldZRotation**과 **ZRotaion**은 값을 상호 교환합니다. #### 방법 1 **TransformComponent**의 **ZRotation** 값을 **45**로 변경합니다. 엔티티가 반시계 방향으로 45도 회전된 것을 확인합니다. #### 방법 2 1. **Scene**에서 엔티티를 선택, 핸들러를 활성화합니다. 2. 핸들러 박스의 모서리 쪽으로 마우스를 움직입니다. 3. 커서가 모양으로
[task] | single_turn [pass] | ⏳ 미판정 [title] | 엔티티의 위치, 크기, 회전 조정 [question] | Translate 함수를 사용해서 엔티티를 이동시키려면 원점 기준이 아닌 현재 배치된 위치를 기준으로 상대 좌표를 어떻게 입력해야 하나요? [answer] | `Translate` 함수는 엔티티가 현재 배치된 위치를 원점(기준점)으로 삼아, 입력한 값만큼 상대적으로 이동합니다. 따라서 현재 위치에서 X축 방향으로 4만큼, Y축 방향으로 5만큼 이동하려면 `Translate(4, 5)`와 같이 두 인수를 순서대로 입력하면 됩니다. ```lua void OnBeginPlay() { self.Entity.TransformComponent:Translate(4, 5) log("move on") } ``` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | **Scale**의 **X, Y**값에 **4**를 입력하면 기존 대비 비례하게 4배 커집니다. # 회전 **WorldZRotation**과 **ZRotaion**은 값을 상호 교환합니다. #### 방법 1 **TransformComponent**의 **ZRotation** 값을 **45**로 변경합니다. 엔티티가 반시계 방향으로 45도 회전된 것을 확인합니다. #### 방법 2 1. **Scene**에서 엔티티를 선택, 핸들러를 활성화합니다. 2. 핸들러 박스의 모서리 쪽으로 마우스를 움직입니다. 3. 커서가 모양으로
[task] | single_turn [pass] | ⏳ 미판정 [title] | 게임 시작 위치 설정 [question] | DefaultPlayer의 TransformComponent를 통해 확인할 수 있는 플레이어 아바타의 기본 좌표값은 어떻게 되나요? [answer] | 플레이어 아바타의 기본 위치는 X 좌표 0, Y 좌표 0인 화면 중앙입니다. 이 기본 위치는 게임 시작과 리스폰 시점에 적용되며, `DefaultPlayer`의 `TransformComponent`를 통해 확인할 수 있습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 **플레이어 아바타**의 등장 위치 설정 방법을 소개합니다. 게임 시작 위치, 재등장(리스폰), 게임 제작 중 테스트 위치 설정에 대해 알아보겠습니다. # 플레이어 아바타의 기본 위치 플레이어 아바타의 기본 위치는 화면 중간입니다. X, Y 좌표상 X값 0, Y값 0인 위치입니다. 기본적으로 게임 시작과 리스폰 위치가 이 설정을 따릅니다. 플레이어 아바타의 기본 위치는 **DefaultPlayer의 TransformComponent**에서 확인할 수 있습니다. # SpawnLocation을 이용한 시작
[task] | single_turn [pass] | ⏳ 미판정 [title] | 배경음악 변경하기 [question] | Preset List에서 BGM을 선택하면 map의 Property에 어떤 컴포넌트가 자동으로 추가되나요? [answer] | Preset List에서 BGM을 선택하면 map의 Property에 **SoundComponent**가 자동으로 추가됩니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 게임에 어울리는 배경음악을 간편하게 넣어봅시다. # 배경음악 넣기 1. **Preset List - BGM**을 선택합니다. 2. 원하는 배경음악을 클릭합니다. 3. map의 **Property**에 [**SoundComponent**](/apiReference/Components/SoundComponent)가 추가된 것을 확인할 수 있습니다. 제어할 수 있는 프로퍼티에 대한 자세한 내용은 [**SoundComponent**](/apiReference/Com
[task] | two_turn [pass] | ⏳ 미판정 [title] | 엔티티의 위치, 크기, 회전 조정 [question] | Translate 함수의 예시 코드에서 self.Entity.TransformComponent:Translate(4,5) 호출 시 엔티티가 어떻게 이동하며, log 출력은 언제 발생하나요? [answer] | `self.Entity.TransformComponent:Translate(4, 5)`를 호출하면 엔티티가 현재 배치된 위치를 원점으로 삼아 **X 좌표 방향으로 4, Y 좌표 방향으로 5만큼** 상대적으로 이동합니다. `log("move on")` 출력은 `Translate` 함수의 이동 작업이 완료된 직후에 발생하여 콘솔 창에 "move on"이 표시됩니다. 참고로, 제공된 문서에는 `Translate` 함수의 매개변수가 X, Y 좌표임을 명시하고 있으며, 이동 완료 시점에 로그가 출력되는 흐름을 예시 코드 주석으로 설명하고 [followup] | Rotate 함수의 예시 코드처럼 반시계 방향으로 6만큼 회전하는 동작을 OnBeginPlay에서 구현하는 정확한 코드 예제는 무엇인가요? [followup_answer] | `OnBeginPlay`에서 엔티티를 반시계 방향으로 6만큼 회전시키는 예시 코드는 다음과 같습니다. ```lua void OnBeginPlay() { self.Entity.TransformComponent:Rotate(6) -- 배치된 엔티티 위치를 기준으로 6만큼 반시계 방향으로 회전합니다. log("Move On") -- 실행이 완료되면 콘솔 창에 Move On을 출력합니다. } ``` 이 코드는 `Rotate` 함수를 통해 엔티티가 배치된 위치를 기준으로 왼쪽(반시계 방향)으로 6만큼 회전하도록 하며, 동작 [scores] | [judge_reason] | [source_doc] | **Scale**의 **X, Y**값에 **4**를 입력하면 기존 대비 비례하게 4배 커집니다. # 회전 **WorldZRotation**과 **ZRotaion**은 값을 상호 교환합니다. #### 방법 1 **TransformComponent**의 **ZRotation** 값을 **45**로 변경합니다. 엔티티가 반시계 방향으로 45도 회전된 것을 확인합니다. #### 방법 2 1. **Scene**에서 엔티티를 선택, 핸들러를 활성화합니다. 2. 핸들러 박스의 모서리 쪽으로 마우스를 움직입니다. 3. 커서가 모양으로
[task] | single_turn [pass] | ⏳ 미판정 [title] | 게임 시작 위치 설정 [question] | 게임 제작 중 특정 구간만 반복 테스트하기 위해 설정하는 '여기서 시작' 버튼은 어디에 위치해 있나요? [answer] | '여기서 시작' 버튼은 **Scene 탭 아래**에 위치해 있습니다. 게임 제작 중 특정 구간을 반복적으로 테스트할 때, 처음부터 진행하는 대신 원하는 위치에서 바로 시작하기 위해 이 버튼을 사용합니다. 해당 버튼을 선택한 뒤, 테스트를 시작하고 싶은 위치(타일이나 발판 위)로 아바타를 이동시켜 배치하면, 테스트 시작 시 해당 위치에서 플레이어 아바타가 등장합니다. 참고로, 맵에 이미 'SpawnLocation'이 배치되어 있더라도 테스트 중에는 '여기서 시작'으로 설정한 위치가 우선 적용됩니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 **플레이어 아바타**의 등장 위치 설정 방법을 소개합니다. 게임 시작 위치, 재등장(리스폰), 게임 제작 중 테스트 위치 설정에 대해 알아보겠습니다. # 플레이어 아바타의 기본 위치 플레이어 아바타의 기본 위치는 화면 중간입니다. X, Y 좌표상 X값 0, Y값 0인 위치입니다. 기본적으로 게임 시작과 리스폰 위치가 이 설정을 따릅니다. 플레이어 아바타의 기본 위치는 **DefaultPlayer의 TransformComponent**에서 확인할 수 있습니다. # SpawnLocation을 이용한 시작
[task] | instruction_following [pass] | ⏳ 미판정 [title] | 스프라이트 색상 조정 [question] | 스프라이트 색상 조정 UI의 '헥스코드'와 '팔레트' 기능에 대한 설명을 각 1문장 이내로 작성하세요. [answer] | 헥스코드는 스프라이트에 적용된 색상 값을 코드로 표시하여 다른 스프라이트에 동일한 색을 복사해 적용할 수 있게 해주는 기능입니다. 팔레트는 사용자가 고른 색을 저장해두고 마지막 칸을 누를 때마다 새로운 저장 칸이 생성되는 기능입니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 스프라이트를 간단하게 여러 색상으로 변경할 수 있습니다. 스프라이트와 웹스프라이트의 차이점과 스프라이트 색상 변경 방법을 알아보겠습니다. # 스프라이트 2D 이미지를 스프라이트(Sprite)라 칭합니다. 스프라이트는 위치, 크기, 회전 등을 변경할 수 있습니다. 스프라이트마다 고유한 RUID 값을 갖고 있습니다. RUID 값을 이용해 간편하게 빈 모델에 스프라이트를 넣거나, 변경할 수 있습니다. 크리에이터가 직접 제작한 이미지 파일을 메이커에 업로드하면 RUID 또한 자동으로 발급됩니다. > Tip. >
[task] | single_turn [pass] | ⏳ 미판정 [title] | 게임 시작 위치 설정 [question] | 한 맵에 여러 개의 SpawnLocation이 있을 때 플레이어의 재등장 위치는 어떤 기준으로 결정되나요? [answer] | 한 맵에 여러 개의 'SpawnLocation'이 배치되어 있을 경우, 플레이어 아바타의 재등장 위치는 **'SpawnLocation'과 플레이어 아바타 사이의 거리**를 기준으로 결정됩니다. 구체적으로, 플레이어 아바타가 사망한 시점의 위치에서 가장 가까운 'SpawnLocation'이 재등장 지점으로 선택됩니다. 예를 들어, 플레이어 아바타가 두 개의 'SpawnLocation' 사이에서 사망한 경우, 아바타의 진행 방향과 관계없이 물리적으로 더 가까운 'SpawnLocation'에서 재등장하게 됩니다. 이를 통해 게임 중간에 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 **플레이어 아바타**의 등장 위치 설정 방법을 소개합니다. 게임 시작 위치, 재등장(리스폰), 게임 제작 중 테스트 위치 설정에 대해 알아보겠습니다. # 플레이어 아바타의 기본 위치 플레이어 아바타의 기본 위치는 화면 중간입니다. X, Y 좌표상 X값 0, Y값 0인 위치입니다. 기본적으로 게임 시작과 리스폰 위치가 이 설정을 따릅니다. 플레이어 아바타의 기본 위치는 **DefaultPlayer의 TransformComponent**에서 확인할 수 있습니다. # SpawnLocation을 이용한 시작
[task] | single_turn [pass] | ⏳ 미판정 [title] | 배경음악 변경하기 [question] | SoundComponent를 통해 제어할 수 있는 프로퍼티의 상세 정보는 어디서 확인해야 하나요? [answer] | SoundComponent를 통해 제어할 수 있는 프로퍼티의 상세 정보는 **API Reference > Components > SoundComponent** 항목에서 확인해야 합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 게임에 어울리는 배경음악을 간편하게 넣어봅시다. # 배경음악 넣기 1. **Preset List - BGM**을 선택합니다. 2. 원하는 배경음악을 클릭합니다. 3. map의 **Property**에 [**SoundComponent**](/apiReference/Components/SoundComponent)가 추가된 것을 확인할 수 있습니다. 제어할 수 있는 프로퍼티에 대한 자세한 내용은 [**SoundComponent**](/apiReference/Com
[task] | code [pass] | ⏳ 미판정 [title] | NPC 대화창 만들기 [question] | NPCTalk 스크립트 컴포넌트 내의 ShowNextText() 함수가 존재하지 않아 발생하는 에러를 해결하고, Z키 입력 시 "Z key Down" 로그가 정상 출력되도록 하는 초기 구현 코드를 작성해줘 [answer] | `ShowNextText()` 함수가 정의되지 않아 발생하는 에러는 해당 메서드를 실제 구현하여 해결할 수 있습니다. 문서의 가이드에 따라 Z키가 눌릴 때마다 대화 내용을 갱신하고, 더 이상 데이터가 없으면 대화창을 닫는 로직을 포함해야 합니다. 아래 코드는 `NPCTalk` 스크립트 컴포넌트에 필요한 Property, Event Handler, Method를 모두 포함하여 초기 구현을 완성한 것입니다. ```lua Property: [None] string[] TalkData = { "안녕하세요! 메이플스토리 월드에 오 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 스크립트에서 구현해야 할 주요 항목은 다음과 같습니다. * 특정 키를 입력하면 대화창이 출력됩니다. * 키를 입력할 때 마다 데이터의 내용이 대화창에 갱신됩니다. * 더 이상 사용할 데이터가 없으면 대화창을 닫습니다. 먼저 키 입력을 체크하여 대화창이 출력되도록 하겠습니다. 1. 새로운 스크립트 컴포넌트를 추가합니다. 컴포넌트 이름을 **NPCTalk**로 변경합니다. 2. **Workspace**에서 **NPCTalk** 스크립트를 열고, Entity Event Handler에 **KeyDownEvent**를 추가하고 아
[task] | two_turn [pass] | ⏳ 미판정 [title] | 엔티티의 위치, 크기, 회전 조정 [question] | 메이플스토리 월드가 2D 모델을 사용함에도 불구하고 TransformComponent에서 회전은 오직 Z 축(ZRotation/WorldZRotation) 기준으로만 수행되는 이유와, X 또는 Y 축 기준 회전이 왜 부적합한지에 대한 원리를 자세히 알려주세요. [answer] | 메이플스토리 월드는 2D 이미지를 기반으로 하므로, 엔티티의 회전은 오직 Z 축(`ZRotation` 또는 `WorldZRotation`) 기준으로만 수행됩니다. X 축이나 Y 축 기준 회전이 부적합한 이유는 다음과 같습니다. **1. 2D 이미지의 평면성** 2D 이미지는 면적만 존재하며 앞뒤로 튀어나온 부피가 없습니다. 회전은 본질적으로 3차원 공간에서의 방향 변경을 의미하지만, 2D 이미지에서는 이러한 3D 회전 중 일부만 화면에 올바르게 표현됩니다. **2. X, Y 축 회전의 문제점 (이미지 일그러짐)** X 축이나 Y [followup] | 여러 엔티티가 겹쳐 있을 때 Z 값의 크기에 따른 앞뒤 배치 순서가 어떻게 결정되며, SpriteRendererComponent의 OrderInLayer와 Z 값 조정은 어떤 우선순위 관계에 있나요? [followup_answer] | 여러 엔티티가 겹쳐 있을 때 Z 값의 크기에 따른 앞뒤 배치 순서는 다음과 같이 결정됩니다. * **Z 값이 클수록 앞에, Z 값이 작을수록 뒤에** 놓입니다. * 이는 마치 레이어 순서처럼 동작하여, Z 값을 조정함으로써 엔티티들의 겹침 순서를 변경할 수 있습니다. * 참고로 문서 예시에서는 `Position Z` 값에 각각 1과 2를 입력했을 때, **적은 숫자(1)가 앞에 배치된다고** 설명하고 있습니다. 이는 앞선 일반적 설명(클수록 앞)과 문맥상 모순이 있을 수 있으나, 제공된 문서의 "Z 값 변경 예시" 섹션 [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 **TransformComponent** 구성과 사용 방법을 설명합니다. 좌표 개념을 이해하고, 엔티티의 이동, 회전, 크기 조절을 할 수 있습니다. # 엔티티 변형 방법 엔티티를 변형하는 방법은 두 가지입니다. 크리에이터의 선호에 따라 사용할 수 있습니다. * 프로퍼티 에디터에서 **TransformComponent** 프로퍼티 값을 변경합니다. * **Scene**에서 엔티티를 선택, 드래그하거나 핸들러를 이용해 조정합니다. # 좌표 이해하기 **TransformComponent**를 사용하기 위해
[task] | instruction_following [pass] | ⏳ 미판정 [title] | 배경음악 변경하기 [question] | 배경musik을 추가한 뒤 실제 재생 여부를 확인하기 위한 최종 테스트 단계를 한 줄로 요약하세요. [answer] | 시작을 누른 뒤 맵에서 배경음악이 재생되는 것을 확인합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 게임에 어울리는 배경음악을 간편하게 넣어봅시다. # 배경음악 넣기 1. **Preset List - BGM**을 선택합니다. 2. 원하는 배경음악을 클릭합니다. 3. map의 **Property**에 [**SoundComponent**](/apiReference/Components/SoundComponent)가 추가된 것을 확인할 수 있습니다. 제어할 수 있는 프로퍼티에 대한 자세한 내용은 [**SoundComponent**](/apiReference/Com
[task] | instruction_following [pass] | ⏳ 미판정 [title] | 배경음악 변경하기 [question] | 배경음악 적용 시 map의 Property에 추가되는 컴포넌트 이름과 해당 컴포넌트에서 제어 가능한 프로퍼티 확인 방법을 2문장 이내로 설명하세요. [answer] | 배경음악을 적용하면 맵의 Property에 SoundComponent가 추가됩니다. 제어 가능한 프로퍼티는 SoundComponent 항목에서 확인할 수 있습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 게임에 어울리는 배경음악을 간편하게 넣어봅시다. # 배경음악 넣기 1. **Preset List - BGM**을 선택합니다. 2. 원하는 배경음악을 클릭합니다. 3. map의 **Property**에 [**SoundComponent**](/apiReference/Components/SoundComponent)가 추가된 것을 확인할 수 있습니다. 제어할 수 있는 프로퍼티에 대한 자세한 내용은 [**SoundComponent**](/apiReference/Com
[task] | single_turn [pass] | ⏳ 미판정 [title] | 게임 시작 위치 설정 [question] | SpawnLocation을 배치할 때 캐릭터가 의도한 위치에 나타나지 않고 화면 중앙으로 이동하는 오류의 원인은 무엇인가요? [answer] | SpawnLocation을 배치했는데 캐릭터가 의도한 위치가 아닌 화면 중앙(기본 좌표 X:0, Y:0)으로 이동하는 가장 큰 원인은 **캐릭터가 설 수 있는 발판(타일) 영역 위에 SpawnLocation이 정확히 배치되지 않았기 때문**입니다. 맵에 발판이나 타일을 배치하지 않은 상태에서 시작 위치를 지정하면, 테스트가 시작될 때 캐릭터가 임의로 화면 중앙에 배치됩니다. 따라서 캐릭터가 의도한 위치에 나타나게 하려면 반드시 **캐릭터가 설 수 있는 발판 영역 위에 SpawnLocation을 두어야** 합니다. 추가로 참고할 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 **플레이어 아바타**의 등장 위치 설정 방법을 소개합니다. 게임 시작 위치, 재등장(리스폰), 게임 제작 중 테스트 위치 설정에 대해 알아보겠습니다. # 플레이어 아바타의 기본 위치 플레이어 아바타의 기본 위치는 화면 중간입니다. X, Y 좌표상 X값 0, Y값 0인 위치입니다. 기본적으로 게임 시작과 리스폰 위치가 이 설정을 따릅니다. 플레이어 아바타의 기본 위치는 **DefaultPlayer의 TransformComponent**에서 확인할 수 있습니다. # SpawnLocation을 이용한 시작
[task] | single_turn [pass] | ⏳ 미판정 [title] | 배경음악 변경하기 [question] | 맵에 배경음악이 설정되었음에도 불구하고 테스트 시 음악이 재생되지 않는다면 어디를 먼저 확인해야 하나요? [answer] | 맵에 배경음악이 설정되었음에도 테스트 시 음악이 재생되지 않는다면, 맵의 **Property** 탭에 **[SoundComponent]**가 실제로 추가되었는지 먼저 확인해야 합니다. 배경음악을 Preset List - BGM에서 선택한 후, 해당 프로퍼티가 정상적으로 반영되었는지를 검증하는 것이 핵심입니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 게임에 어울리는 배경음악을 간편하게 넣어봅시다. # 배경음악 넣기 1. **Preset List - BGM**을 선택합니다. 2. 원하는 배경음악을 클릭합니다. 3. map의 **Property**에 [**SoundComponent**](/apiReference/Components/SoundComponent)가 추가된 것을 확인할 수 있습니다. 제어할 수 있는 프로퍼티에 대한 자세한 내용은 [**SoundComponent**](/apiReference/Com
[task] | code [pass] | ⏳ 미판정 [title] | 엔티티의 위치, 크기, 회전 조정 [question] | OnBeginPlay()에서 self.Entity.TransformComponent:Rotate(90)을 호출하여 엔티티를 반시계 방향으로 90도 회전시키고 log("Rotated 90")을 출력하는 스크립트를 작성해줘. [answer] | 요청하신 동작을 수행하는 mLua 스크립트는 다음과 같습니다. ```lua void OnBeginPlay() { self.Entity.TransformComponent:Rotate(90) log("Rotated 90") } ``` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | **Scale**의 **X, Y**값에 **4**를 입력하면 기존 대비 비례하게 4배 커집니다. # 회전 **WorldZRotation**과 **ZRotaion**은 값을 상호 교환합니다. #### 방법 1 **TransformComponent**의 **ZRotation** 값을 **45**로 변경합니다. 엔티티가 반시계 방향으로 45도 회전된 것을 확인합니다. #### 방법 2 1. **Scene**에서 엔티티를 선택, 핸들러를 활성화합니다. 2. 핸들러 박스의 모서리 쪽으로 마우스를 움직입니다. 3. 커서가 모양으로
[task] | instruction_following [pass] | ⏳ 미판정 [title] | 배경음악 변경하기 [question] | Preset List에서 BGM을 선택하여 맵에 배경음악을 적용하는 절차를 단계별 번호 목록으로 작성하세요. [answer] | Preset List에서 BGM을 선택하여 맵에 배경음악을 적용하는 절차는 다음과 같습니다. 1. **Preset List - BGM**을 선택합니다. 2. 원하는 배경음악을 클릭합니다. 3. map의 **Property**에 **SoundComponent**가 추가된 것을 확인합니다. 4. 게임을 시작하여 맵에서 배경음악이 재생되는지 테스트합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 게임에 어울리는 배경음악을 간편하게 넣어봅시다. # 배경음악 넣기 1. **Preset List - BGM**을 선택합니다. 2. 원하는 배경음악을 클릭합니다. 3. map의 **Property**에 [**SoundComponent**](/apiReference/Components/SoundComponent)가 추가된 것을 확인할 수 있습니다. 제어할 수 있는 프로퍼티에 대한 자세한 내용은 [**SoundComponent**](/apiReference/Com
[task] | code [pass] | ⏳ 미판정 [title] | 다른 위치로 이동하는 포탈 만들기 [question] | BoxCollider 의 BoxSize 와 BoxOffset 을 조절하여 포탈 인식 범위를 스프라이트보다 크게 설정하는 스크립트를 작성해줘 [answer] | 포탈의 인식 범위(BoxSize)와 위치(BoxOffset)를 스크립트로 조절하려면 `PortalComponent`에 접근하여 해당 프로퍼티를 설정해야 합니다. 참고 문서에 따르면 `BoxSize`와 `BoxOffset`은 연동되어 있으며, 이 값들을 변경함으로써 스프라이트보다 넓은 영역에서 포탈이 작동하도록 만들 수 있습니다. 아래는 엔티티의 `PortalComponent`를 찾아 인식 범위를 스프라이트보다 크게 설정하는 예제 스크립트입니다. ```lua Property: [None] Vector2 CustomBoxSize = [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 월드나 하나의 맵 안에서 이동하는 포탈을 만들어 간단하게 플레이어 아바타가 맵을 이동하게 만들 수 있습니다. [PortalComponent](/apiReference/Components/PortalComponent) 사용 방법을 알아보겠습니다. # 포탈 만들기 [PortalComponent](/apiReference/Components/PortalComponent)는 동일한 포탈 컴포넌트를 가진 엔티티를 목적지로 설정하고, 플레이어 아바타가 포탈 영역에서 특정 동작을 수행하면(키 입력) 목적지로 이동할 수
[task] | code [pass] | ⏳ 미판정 [title] | NPC 대화창 만들기 [question] | UIGroup의 DefaultShow 프로퍼티를 true로 설정한 후, TalkPanel의 SpriteGUIRendererComponent Color를 RGB(0,0,0) Alpha 60으로, Portrait의 Color를 RGB(255,255,255) Alpha 255로 초기화하는 스크립트를 작성해줘 [answer] | 요청하신 UI 엔티티의 색상 초기화 스크립트를 작성했습니다. 참고 문서에 따르면, UI 편집기에서 `TalkPanel`과 `Portrait`라는 이름의 이미지 엔티티를 생성하고, `Portrait`를 `TalkPanel`의 자식으로 설정한 후, 해당 엔티티에 접근하여 `SpriteGUIRendererComponent`의 `Color` 프로퍼티를 수정하는 방식으로 구현할 수 있습니다. 색상은 `Color` 타입을 사용하여 지정하며, `Color(r, g, b, a)` 형식을 따릅니다. 여기서 값은 0에서 1 사이의 실수(부동소수점 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 이번 과정에서는 NPC들의 대화를 표현하기 위한 대화창을 제작해볼 것입니다. UI 편집기를 이용해 대화창을 구성하고 데이터 테이블에 데이터를 세팅 후 스크립트를 이용해 호출할 것입니다. 과정의 진행 순서는 다음과 같습니다. 1. UI 디자인 2. 데이터 테이블 추가 3. 스크립트 제작 제작 예시는 다음과 같습니다. # UI 디자인 1. UI 편집기 버튼을 클릭합니다. 2. UI 디자인을 진행할 새로운 **UIGroup**을 추가합니다. UIGroup을 추가한 적이 없다면 UIGroup이 추가됩
[task] | single_turn [pass] | ⏳ 미판정 [title] | 배경음악 변경하기 [question] | 배경음악을 맵에 적용하는 가장 기본적인 단계는 무엇인가요? [answer] | 배경음악을 맵에 적용하는 가장 기본적인 단계는 다음과 같습니다. 1. **Preset List - BGM** 항목을 선택합니다. 2. 원하는 배경음악을 클릭합니다. 3. 맵의 **Property** 패널에 **SoundComponent**가 추가되었는지 확인합니다. 4. 게임을 실행하여 맵에서 배경음악이 정상적으로 재생되는지 테스트합니다. 이 과정은 에디터의 프리셋 기능을 통해 직접 스크립트를 작성하지 않고도 배경음악을 설정할 수 있게 해줍니다. SoundComponent의 세부 제어 프로퍼티에 대해서는 해당 컴포넌트의 API [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 게임에 어울리는 배경음악을 간편하게 넣어봅시다. # 배경음악 넣기 1. **Preset List - BGM**을 선택합니다. 2. 원하는 배경음악을 클릭합니다. 3. map의 **Property**에 [**SoundComponent**](/apiReference/Components/SoundComponent)가 추가된 것을 확인할 수 있습니다. 제어할 수 있는 프로퍼티에 대한 자세한 내용은 [**SoundComponent**](/apiReference/Com
[task] | code [pass] | ⏳ 미판정 [title] | 엔티티의 위치, 크기, 회전 조정 [question] | OnBeginPlay()에서 self.Entity.TransformComponent.ZRotation = 45를 설정하여 엔티티의 Z축 회전을 45도로 고정하고 log("Set ZRotation")을 출력하는 스크립트를 작성해줘. [answer] | 요청하신 내용을 바탕으로, `OnBeginPlay()`에서 엔티티의 Z축 회전을 45도로 설정하고 로그를 출력하는 스크립트는 다음과 같습니다. ```lua void OnBeginPlay() { self.Entity.TransformComponent.ZRotation = 45 log("Set ZRotation") } ``` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | **Scale**의 **X, Y**값에 **4**를 입력하면 기존 대비 비례하게 4배 커집니다. # 회전 **WorldZRotation**과 **ZRotaion**은 값을 상호 교환합니다. #### 방법 1 **TransformComponent**의 **ZRotation** 값을 **45**로 변경합니다. 엔티티가 반시계 방향으로 45도 회전된 것을 확인합니다. #### 방법 2 1. **Scene**에서 엔티티를 선택, 핸들러를 활성화합니다. 2. 핸들러 박스의 모서리 쪽으로 마우스를 움직입니다. 3. 커서가 모양으로
[task] | single_turn [pass] | ⏳ 미판정 [title] | 다른 위치로 이동하는 포탈 만들기 [question] | 다른 맵으로 이동하는 포탈을 만들 때, 같은 맵 내 이동과 설정 방식에 차이가 있는지 궁금합니다. [answer] | 같은 맵 내 이동과 다른 맵으로 이동하는 포탈을 만들 때, **설정 방식(프로퍼티 편집)에는 차이가 없습니다.** 두 경우 모두 `PortalComponent`의 `PortalEntityRef` 프로퍼티를 통해 목적지 포탈 엔티티를 선택하는 동일한 방법을 사용합니다. 차이점은 다음과 같습니다. 1. **포탈 배치 위치**: * **같은 맵 내 이동**: 시작과 목적지 포탈을 모두 동일한 맵(Scene) 안에 배치합니다. * **다른 맵으로 이동**: 시작 포탈은 현재 맵에, 목적지 포탈은 이동하고자 하는 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 월드나 하나의 맵 안에서 이동하는 포탈을 만들어 간단하게 플레이어 아바타가 맵을 이동하게 만들 수 있습니다. [PortalComponent](/apiReference/Components/PortalComponent) 사용 방법을 알아보겠습니다. # 포탈 만들기 [PortalComponent](/apiReference/Components/PortalComponent)는 동일한 포탈 컴포넌트를 가진 엔티티를 목적지로 설정하고, 플레이어 아바타가 포탈 영역에서 특정 동작을 수행하면(키 입력) 목적지로 이동할 수
[task] | two_turn [pass] | ⏳ 미판정 [title] | 엔티티의 위치, 크기, 회전 조정 [question] | WorldZRotation과 ZRotation이 값을 상호 교환한다는 점과 핸들러를 통한 수동 회전 방법은 무엇인가요? [answer] | **WorldZRotation과 ZRotation의 관계** `WorldZRotation`과 `ZRotation`은 값을 상호 교환합니다. 즉, 두 값은 서로 연결되어 있어 한쪽을 변경하면 다른 쪽도 그에 따라 변경되는 성질을 가집니다. **핸들러를 통한 수동 회전 방법** 1. **Scene** 뷰에서 회전시킬 엔티티를 선택합니다. 2. 엔티티에 표시되는 핸들러(핸들)를 활성화합니다. 3. 마우스 포인터를 핸들러 박스의 모서리 쪽으로 이동시킵니다. 4. 커서가 회전 가능한 모양으로 바뀌면, 원하는 방향으로 마우스를 드래그하여 엔 [followup] | ZRotation 값을 45로 설정할 때 반시계 방향 회전인지 시계 방향 회전인지 확인하는 구체적인 방법은 무엇인가요? [followup_answer] | `TransformComponent`의 `ZRotation` 값을 45로 변경하면 엔티티가 **반시계 방향으로 45도** 회전됩니다. 구체적인 확인 방법은 다음과 같습니다. 1. 엔티티에 스크립트를 추가하여 `OnBeginPlay` 시점에 `ZRotation`을 45로 설정합니다. 2. 게임을 실행합니다. 3. 엔티티가 반시계 방향으로 45도 회전되었는지 시각적으로 확인합니다. ```lua void OnBeginPlay() { self.Entity.TransformComponent.ZRotation = 45 lo [scores] | [judge_reason] | [source_doc] | **Scale**의 **X, Y**값에 **4**를 입력하면 기존 대비 비례하게 4배 커집니다. # 회전 **WorldZRotation**과 **ZRotaion**은 값을 상호 교환합니다. #### 방법 1 **TransformComponent**의 **ZRotation** 값을 **45**로 변경합니다. 엔티티가 반시계 방향으로 45도 회전된 것을 확인합니다. #### 방법 2 1. **Scene**에서 엔티티를 선택, 핸들러를 활성화합니다. 2. 핸들러 박스의 모서리 쪽으로 마우스를 움직입니다. 3. 커서가 모양으로
[task] | instruction_following [pass] | ⏳ 미판정 [title] | 스프라이트 색상 조정 [question] | SpriteRendererComponent와 WebSpriteComponent의 Color 프로퍼티로 조정 가능한 4가지 항목을 4단 표로 정리하세요. [answer] | SpriteRendererComponent와 WebSpriteComponent의 Color 프로퍼티로 조정 가능한 4가지 항목은 다음과 같습니다. | 항목 | 설명 | | :--- | :--- | | 색(Color) | 이미지의 기본 색상을 변경합니다. HSV, RGB, Lab 색 공간 값이나 헥스코드(HexCode)를 이용해 원하는 색을 지정할 수 있습니다. | | 명도(Brightness) | 이미지의 밝기를 조정합니다. 어둠에 묻힌 세계와 같은 분위기를 만들 때 명도를 낮추어 어두컴컴한 느낌을 줄 수 있습니다. | | 채도( [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 스프라이트를 간단하게 여러 색상으로 변경할 수 있습니다. 스프라이트와 웹스프라이트의 차이점과 스프라이트 색상 변경 방법을 알아보겠습니다. # 스프라이트 2D 이미지를 스프라이트(Sprite)라 칭합니다. 스프라이트는 위치, 크기, 회전 등을 변경할 수 있습니다. 스프라이트마다 고유한 RUID 값을 갖고 있습니다. RUID 값을 이용해 간편하게 빈 모델에 스프라이트를 넣거나, 변경할 수 있습니다. 크리에이터가 직접 제작한 이미지 파일을 메이커에 업로드하면 RUID 또한 자동으로 발급됩니다. > Tip. >
[task] | instruction_following [pass] | ⏳ 미판정 [title] | 게임 시작 위치 설정 [question] | 테스트 시작 위치 설정 시 '여기서 시작' 버튼 사용 후 캐릭터가 의도한 위치에 나타나지 않는 원인과 해결 방법을 3단계 번호 목록으로 정리하세요. [answer] | 테스트 시작 위치를 설정한 뒤 캐릭터가 의도한 위치에 나타나지 않는 원인과 해결 방법은 다음과 같습니다. 1. **발판 또는 타일 위에 배치되지 않음** 맵에 캐릭터가 설 수 있는 발판이나 타일이 없는 빈 공간에 '여기서 시작' 위치를 지정하면, 테스트 시작 시 캐릭터가 의도한 곳 대신 화면 중앙에 임의로 배치됩니다. *해결 방법:* 캐릭터가 실제로 설 수 있는 발판 또는 타일 영역 위에 '여기서 시작' 위치를 정확히 배치해야 합니다. 2. **배치 후 테스트를 다시 시작하지 않음** '여기서 시작' 버튼을 선택 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 **플레이어 아바타**의 등장 위치 설정 방법을 소개합니다. 게임 시작 위치, 재등장(리스폰), 게임 제작 중 테스트 위치 설정에 대해 알아보겠습니다. # 플레이어 아바타의 기본 위치 플레이어 아바타의 기본 위치는 화면 중간입니다. X, Y 좌표상 X값 0, Y값 0인 위치입니다. 기본적으로 게임 시작과 리스폰 위치가 이 설정을 따릅니다. 플레이어 아바타의 기본 위치는 **DefaultPlayer의 TransformComponent**에서 확인할 수 있습니다. # SpawnLocation을 이용한 시작
[task] | code [pass] | ⏳ 미판정 [title] | 엔티티의 위치, 크기, 회전 조정 [question] | OnBeginPlay()에서 self.Entity.TransformComponent:Translate(10, 0)을 호출하여 엔티티를 X 방향으로 10만큼 이동시키고 log("Moved X")을 출력하는 스크립트를 작성해줘. [answer] | OnBeginPlay()에서 self.Entity.TransformComponent:Translate(10, 0)을 호출하여 엔티티를 X 방향으로 10만큼 이동시키고 log("Moved X")을 출력하는 스크립트는 다음과 같습니다. ```lua void OnBeginPlay() { self.Entity.TransformComponent:Translate(10, 0) -- 배치된 엔티티 위치를 기준으로 X 좌표를 10만큼 이동합니다. log("Moved X") -- 이동이 되면 콘솔 창에 Moved X를 출력합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | **Scale**의 **X, Y**값에 **4**를 입력하면 기존 대비 비례하게 4배 커집니다. # 회전 **WorldZRotation**과 **ZRotaion**은 값을 상호 교환합니다. #### 방법 1 **TransformComponent**의 **ZRotation** 값을 **45**로 변경합니다. 엔티티가 반시계 방향으로 45도 회전된 것을 확인합니다. #### 방법 2 1. **Scene**에서 엔티티를 선택, 핸들러를 활성화합니다. 2. 핸들러 박스의 모서리 쪽으로 마우스를 움직입니다. 3. 커서가 모양으로