← 목록

mLua · Nemotron SDG 질문-응답 (SFT)

총 21,567개 · 페이지 360/719
🔀 랜덤
불러오는 중…

[task] | single_turn [pass] | ⏳ 미판정 [title] | CameraService를 활용한 카메라 제어 [question] | SwitchCameraTo()를 호출하기 전에 TransitionBlendType을 설정하지 않으면 카메라 전환 시 어떤 움직임이 적용되나요? [answer] | `SwitchCameraTo()` 호출 전에 `TransitionBlendType`을 별도로 설정하지 않으면, 카메라 전환 시 **EaseInOut** 움직임이 자동으로 적용됩니다. **EaseInOut**은 S모양 커브처럼 전환 시작과 끝을 부드럽게 처리하는 블렌드 타입으로, `CameraBlendType`의 기본값입니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | **TranstionBlendType**은 피사체(타깃)로 전환 시 카메라의 움직임을 제어할 수 있는 프로퍼티입니다. `SwitchCameraTo()` 호출 전에 **TranstionBlendType**에 CameraBlendType의 enum 값을 할당해 타깃 전환 시 블렌드 타입을 변경할 수 있습니다. 아래는 위 예제에서 **TranstionBlendType**에 CameraBlendType.Linear를 할당하는 코드를 추가하여, 카메라의 움직임을 조금 딱딱하게 변경해보도록 하겠습니다. ```lua [self] HandleT

[task] | single_turn [pass] | ⏳ 미판정 [title] | CameraService를 활용한 카메라 제어 [question] | TransitionBlendType을 Cut으로 지정했을 때 TransitionBlendTime 값을 변경해도 카메라 전환 속도에 영향을 주나요? [answer] | 아니요, 영향을 주지 않습니다. **TransitionBlendType**을 **Cut**으로 지정하면 카메라가 즉시 해당 위치로 전환되므로, **TransitionBlendTime**의 값은 무의미합니다. 즉, 전환 시간을 아무리 변경해도 카메라는 순간 이동하듯 즉시 위치를 바꿉니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | **TranstionBlendType**은 피사체(타깃)로 전환 시 카메라의 움직임을 제어할 수 있는 프로퍼티입니다. `SwitchCameraTo()` 호출 전에 **TranstionBlendType**에 CameraBlendType의 enum 값을 할당해 타깃 전환 시 블렌드 타입을 변경할 수 있습니다. 아래는 위 예제에서 **TranstionBlendType**에 CameraBlendType.Linear를 할당하는 코드를 추가하여, 카메라의 움직임을 조금 딱딱하게 변경해보도록 하겠습니다. ```lua [self] HandleT

[task] | code [pass] | ⏳ 미판정 [title] | 게임 시작 위치 설정 [question] | self.Entity.TransformComponent.Position과 _EntityService:GetEntityByPath로 찾은 SpawnLocation 엔티티의 TransformComponent.Position 사이의 거리를 계산하여, 5.0보다 작으면 "체크포인트 도달" 메시지를 log(...)로 출력하는 스크립트를 작성해줘 [answer] | 메이플스토리 월드(mLua)에서 두 좌표 사이의 거리를 계산할 때 사용할 수 있는 `Vector3.Distance` 또는 유사한 벡터 연산 API가 제공된다는 내용이 주어진 참고 문서에 포함되어 있지 않습니다. 따라서 **주어진 문서의 정보만 사용하여** "거리 계산"을 수행하는 코드를 작성하는 것은 불가능합니다. 문서에는 `SpawnLocation`의 사용 방법(체크포인트 역할), `DefaultPlayer`의 기본 위치, 그리고 `_EntityService:GetEntityByPath`로 엔티티를 찾고 `TransformCom [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 **플레이어 아바타**의 등장 위치 설정 방법을 소개합니다. 게임 시작 위치, 재등장(리스폰), 게임 제작 중 테스트 위치 설정에 대해 알아보겠습니다. # 플레이어 아바타의 기본 위치 플레이어 아바타의 기본 위치는 화면 중간입니다. X, Y 좌표상 X값 0, Y값 0인 위치입니다. 기본적으로 게임 시작과 리스폰 위치가 이 설정을 따릅니다. 플레이어 아바타의 기본 위치는 **DefaultPlayer의 TransformComponent**에서 확인할 수 있습니다. # SpawnLocation을 이용한 시작

[task] | instruction_following [pass] | ⏳ 미판정 [title] | CameraService를 활용한 카메라 제어 [question] | CameraService의 ZoomTo 함수 매개변수인 Percent와 Duration이 각각 어떤 역할을 하는지 2문장 이내로 설명하세요. [answer] | Percent는 화면을 확대하거나 축소할 목표 줌 값(퍼센트)을 나타내며, Duration은 현재 줌 값에서 해당 목표 값까지 도달하는 데 걸리는 시간(초)을 의미합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 게임 플레이 중에 카메라 줌 인과 줌 아웃을 제어하는 방법에 대해 알아보겠습니다. 위에서 작성한 코드는 필요하지 않기 때문에 모두 지우고, 아래와 같은 상태에서 시작합니다. ```lua [self] HandleTriggerEnterEvent (TriggerEnterEvent event) { --------------- Native Event Sender Info ---------------- -- Sender: TriggerComponent -- Space: Server, Client ----------

[task] | code [pass] | ⏳ 미판정 [title] | 스프라이트 색상 조정 [question] | SpriteRendererComponent 의 Color 프로퍼티를 조작하여 스크립트 실행 시 스프라이트 색상을 특정 헥스 코드 값으로 변경하는 스크립트를 작성해줘 [answer] | SpriteRendererComponent의 Color 프로퍼티를 통해 스프라이트 색상을 변경할 수 있습니다. 헥스 코드(HexCode)는 문서에서 색상 추출 및 저장 기능으로 언급되었으나, mLua 스크립트에서 직접 헥스 코드 문자열을 Color 객체로 변환하는 API가 제공된다는 명시적 내용은 참고 문서에 없습니다. 따라서 mLua 스크립트에서는 Color(r, g, b, a) 생성자를 사용해야 하며, 각 값은 0.0에서 1.0 사이의 실수입니다. 특정 헥스 코드 값(예: `ff53a1`)을 적용하려면, 해당 헥스 코드를 0~ [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 스프라이트를 간단하게 여러 색상으로 변경할 수 있습니다. 스프라이트와 웹스프라이트의 차이점과 스프라이트 색상 변경 방법을 알아보겠습니다. # 스프라이트 2D 이미지를 스프라이트(Sprite)라 칭합니다. 스프라이트는 위치, 크기, 회전 등을 변경할 수 있습니다. 스프라이트마다 고유한 RUID 값을 갖고 있습니다. RUID 값을 이용해 간편하게 빈 모델에 스프라이트를 넣거나, 변경할 수 있습니다. 크리에이터가 직접 제작한 이미지 파일을 메이커에 업로드하면 RUID 또한 자동으로 발급됩니다. > Tip. >

[task] | single_turn [pass] | ⏳ 미판정 [title] | CameraService를 활용한 카메라 제어 [question] | TransitionBlendType에 Linear를 할당하면 카메라가 왜 딱딱하고 기계적인 느낌을 주는 걸까요? [answer] | `TransitionBlendType`에 `Linear`를 할당하면 카메라가 타깃으로 전환될 때 일정한 속도로 움직이기 때문에 딱딱하고 기계적인 느낌이 듭니다. 카메라 전환 시 움직임이 어떻게 달라지는지 다른 타입과 비교하면 이해가 쉽습니다. * **EaseInOut (기본값):** S자형 커브처럼 전환의 시작과 끝을 부드럽게 처리합니다. * **Linear:** 가속이나 감속 없이 처음부터 끝까지 같은 속도로 이동합니다. 이러한 선형적(linear) 움직임은 자연스러운 가속·감속 효과가 없으므로, 화면 전환이 부드럽게 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | **TranstionBlendType**은 피사체(타깃)로 전환 시 카메라의 움직임을 제어할 수 있는 프로퍼티입니다. `SwitchCameraTo()` 호출 전에 **TranstionBlendType**에 CameraBlendType의 enum 값을 할당해 타깃 전환 시 블렌드 타입을 변경할 수 있습니다. 아래는 위 예제에서 **TranstionBlendType**에 CameraBlendType.Linear를 할당하는 코드를 추가하여, 카메라의 움직임을 조금 딱딱하게 변경해보도록 하겠습니다. ```lua [self] HandleT

[task] | single_turn [pass] | ⏳ 미판정 [title] | CameraService를 활용한 카메라 제어 [question] | EaseInOut과 EaseIn은 카메라 전환 시작과 끝의 움직임에서 어떤 차이가 있나요? [answer] | EaseInOut과 EaseIn은 카메라 전환 시 시작과 끝의 움직임 처리 방식이 다릅니다. * **EaseInOut**: 전환의 시작과 끝을 모두 부드럽게 처리합니다. S모양 커브처럼 움직이므로, 카메라가 천천히 출발했다가 중간에 빠르게 움직이고 다시 천천히 멈추는 형태입니다. 이는 `TransitionBlendType`의 기본값입니다. * **EaseIn**: 전환의 시작 시에는 선형적으로(일정한 속도로) 움직이지만, 끝에는 부드럽게 전환합니다. 즉, 카메라가 일정한 속도로 출발했다가 마지막에 부드럽게 감속하며 멈추는 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | **TranstionBlendType**은 피사체(타깃)로 전환 시 카메라의 움직임을 제어할 수 있는 프로퍼티입니다. `SwitchCameraTo()` 호출 전에 **TranstionBlendType**에 CameraBlendType의 enum 값을 할당해 타깃 전환 시 블렌드 타입을 변경할 수 있습니다. 아래는 위 예제에서 **TranstionBlendType**에 CameraBlendType.Linear를 할당하는 코드를 추가하여, 카메라의 움직임을 조금 딱딱하게 변경해보도록 하겠습니다. ```lua [self] HandleT

[task] | single_turn [pass] | ⏳ 미판정 [title] | CameraService를 활용한 카메라 제어 [question] | 캐릭터가 트리거에 닿는 순간 카메라가 즉시 넘어가지 않고 부드럽게 전환되도록 Blend 효과를 설정하는 구체적인 코드는 어떻게 작성하나요? [answer] | `_CameraService`의 `TransitionBlendTime` 프로퍼티를 설정하여 카메라 타깃 전환 시 부드럽게 블렌딩되도록 할 수 있습니다. 이 값을 설정한 후 `SwitchCameraTo` 메서드를 호출하면, 지정된 시간 동안 카메라가 자연스럽게 새로운 타깃으로 이동합니다. 아래 코드는 캐릭터가 트리거에 닿는 순간(`HandleTriggerEnterEvent`) NPC 엔티티를 찾아내고, 전환 블렌드 시간을 1초로 설정한 뒤 카메라를 해당 NPC의 `CameraComponent`로 전환하는 예시입니다. ```lua [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 게임을 만들다 보면 카메라가 비추는 대상을 변경하거나 확대, 축소를 이용해 연출해야 할 때가 있습니다. 이번 과정에서는 [CameraService](/apiReference/Services/CameraService)를 통해 타깃 카메라를 제어하는 방법과 카메라 연출 효과에 대해 알아보도록 합니다. ##### 참고 가이드 [엔티티와 컴포넌트 참조](docs?postId=164%7B%22target%22:%22\_self%22%7D) [엔티티의 충돌을 감지하는 TriggerComponent](/docs?post

[task] | two_turn [pass] | ⏳ 미판정 [title] | 다른 위치로 이동하는 포탈 만들기 [question] | 두 개의 포탈을 서로 연결하여 맵 내 또는 다른 맵 간 양방향 이동을 구현하는 구체적인 설정 절차는 어떻게 되나요? [answer] | 두 개의 포탈을 서로 연결하여 양방향 이동을 구현하려면, 두 포탈 엔티티 각각의 `PortalComponent`에서 `PortalEntityRef`를 상대방 포탈을 가리키도록 설정하면 됩니다. 이 설정은 맵 내 이동과 다른 맵 간 이동 모두에 동일하게 적용됩니다. 구체적인 설정 절차는 다음과 같습니다. ### 1. 맵 내 양방향 포탈 설정 1. **포탈 배치**: 이동하고 싶은 두 위치에 포탈 엔티티(예: Preset List의 Portal 또는 직접 만든 스프라이트 엔티티)를 배치합니다. 2. **컴포넌트 확인**: 두 포탈 [followup] | 양방향 포탈에서 한쪽 포탈의 PortalEntityRef가 다른 쪽 포탈을 가리키도록 설정할 때, 두 포탈이 동일한 World에 배치되어 있는지 다른 맵에 배치되어 있는지에 따른 차이점이 있나요? [followup_answer] | 네, 두 포탈이 동일한 World(맵)에 배치되어 있는지 다른 맵에 배치되어 있는지에 따라 **포탈을 배치하는 위치와 연결 대상 선택 시의 차이**가 있습니다. ### 1. 동일한 World(맵) 내 양방향 포탈 * **배치**: 같은 맵의 서로 다른 두 위치에 포탈을 배치합니다. * **설정**: 각각의 포탈 `PortalComponent`에서 `PortalEntityRef`를 선택하여, 상대방 포탈을 목적지로 지정합니다. * **특징**: 모든 설정이 단일 맵 내에서 이루어지며, 맵 전환 없이 같은 공간 내 위치 이동이 가능합 [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 월드나 하나의 맵 안에서 이동하는 포탈을 만들어 간단하게 플레이어 아바타가 맵을 이동하게 만들 수 있습니다. [PortalComponent](/apiReference/Components/PortalComponent) 사용 방법을 알아보겠습니다. # 포탈 만들기 [PortalComponent](/apiReference/Components/PortalComponent)는 동일한 포탈 컴포넌트를 가진 엔티티를 목적지로 설정하고, 플레이어 아바타가 포탈 영역에서 특정 동작을 수행하면(키 입력) 목적지로 이동할 수

[task] | instruction_following [pass] | ⏳ 미판정 [title] | CameraService를 활용한 카메라 제어 [question] | 문서 예시 코드를 그대로 출력하되, 설명은 주석으로만 작성하세요. [answer] | ```lua [self] HandleTriggerEnterEvent (TriggerEnterEvent event) { --------------- Native Event Sender Info ---------------- -- Sender: TriggerComponent -- Space: Server, Client --------------------------------------------------------- -- Parameters local TriggerBodyEntit [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | `ZoomReset()`는 변경된 줌 값을 초깃값으로 되돌리는 함수입니다. `ZoomReset()`을 사용하면 `ZoomTo()`를 이용해 줌 값을 변경하더라도, 다시 초깃값으로(100%) 맞출 수 있습니다. `ZoomTo()` 예시에 이어 `ZoomReset()`을 사용해 5초 뒤 줌 값을 100%로 변경하는 예시 코드입니다. 이해를 돕기 위해 **TimerService**를 활용했습니다. [TimerService](/docs?postId=47%7B%22target%22:%22\_self%22%7D) 가이드를 참고하세요. ``

[task] | instruction_following [pass] | ⏳ 미판정 [title] | CameraService를 활용한 카메라 제어 [question] | ZoomTo 함수의 Percent 값이 현재 줌 값보다 크고 작을 때의 동작 차이를 표로 정리해서 출력하세요. [answer] | `ZoomTo()` 함수에서 **Percent** 값은 현재 줌 값과 비교하여 카메라의 확대(줌 인) 또는 축소(줌 아웃) 동작을 결정합니다. | Percent 값과 현재 줌 값 비교 | 동작 | 설명 | | :--- | :--- | :--- | | **Percent > 현재 줌 값** | 확대 (줌 인) | 화면을 확대하여 타깃을 더 크게 보입니다. | | **Percent < 현재 줌 값** | 축소 (줌 아웃) | 화면을 축소하여 시야를 넓게 보입니다. | [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 게임 플레이 중에 카메라 줌 인과 줌 아웃을 제어하는 방법에 대해 알아보겠습니다. 위에서 작성한 코드는 필요하지 않기 때문에 모두 지우고, 아래와 같은 상태에서 시작합니다. ```lua [self] HandleTriggerEnterEvent (TriggerEnterEvent event) { --------------- Native Event Sender Info ---------------- -- Sender: TriggerComponent -- Space: Server, Client ----------

[task] | instruction_following [pass] | ⏳ 미판정 [title] | CameraService를 활용한 카메라 제어 [question] | 5초 동안 150%로 줌인하는 HandleTriggerEnterEvent 코드를 코드만 출력하고 설명은 주석으로 작성하세요. [answer] | ```lua Event Handler: [self] HandleTriggerEnterEvent (TriggerEnterEvent event) { --------------- Native Event Sender Info ---------------- -- Sender: TriggerComponent -- Space: Server, Client --------------------------------------------------------- -- Parameters local T [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 게임 플레이 중에 카메라 줌 인과 줌 아웃을 제어하는 방법에 대해 알아보겠습니다. 위에서 작성한 코드는 필요하지 않기 때문에 모두 지우고, 아래와 같은 상태에서 시작합니다. ```lua [self] HandleTriggerEnterEvent (TriggerEnterEvent event) { --------------- Native Event Sender Info ---------------- -- Sender: TriggerComponent -- Space: Server, Client ----------

[task] | code [pass] | ⏳ 미판정 [title] | 게임 시작 위치 설정 [question] | _EntityService:GetEntityByPath("/maps/map01/obj")와 같은 방식으로 SpawnLocation 엔티티를 조회하여 해당 위치의 TransformComponent.Position을 읽어온 후, _SpawnService:SpawnByModelId를 호출해 특정 모델 ID의 객체를 그 위치에 스폰하는 스크립트를 작성해줘 [answer] | `SpawnLocation`은 `Preset List`에서 `Special Model`로 배치하는 특수 모델이며, 일반 오브젝트처럼 `_EntityService:GetEntityByPath`로 경로를 지정하여 조회하는 API가 문서에 명시되어 있지 않습니다. 따라서 `SpawnLocation` 엔티티를 직접 경로로 조회하여 위치를 읽어오는 코드를 작성하는 것은 불가능합니다. `SpawnLocation`은 게임 엔진이 내부적으로 관리하며, 플레이어 아바타의 시작 위치나 리스폰 위치로 자동 활용됩니다. 스크립트에서 특정 모델 객체를 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 **플레이어 아바타**의 등장 위치 설정 방법을 소개합니다. 게임 시작 위치, 재등장(리스폰), 게임 제작 중 테스트 위치 설정에 대해 알아보겠습니다. # 플레이어 아바타의 기본 위치 플레이어 아바타의 기본 위치는 화면 중간입니다. X, Y 좌표상 X값 0, Y값 0인 위치입니다. 기본적으로 게임 시작과 리스폰 위치가 이 설정을 따릅니다. 플레이어 아바타의 기본 위치는 **DefaultPlayer의 TransformComponent**에서 확인할 수 있습니다. # SpawnLocation을 이용한 시작

[task] | code [pass] | ⏳ 미판정 [title] | 게임 시작 위치 설정 [question] | DefaultPlayer의 TransformComponent를 이용하여 플레이어 아바타의 현재 X, Y 좌표값을 로그에 출력하는 스크립트를 작성해줘 [answer] | 메이플스토리 월드에서 플레이어 아바타의 현재 위치를 얻기 위해서는 `DefaultPlayer` 엔티티의 `TransformComponent`를 참조해야 합니다. 제공된 문서에 따르면 플레이어 아바타의 기본 위치는 `DefaultPlayer`의 `TransformComponent`에서 확인할 수 있으며, 좌표는 X, Y 값으로 표현됩니다. 아래 스크립트는 `OnBeginPlay()` 생명주기 메서드에서 `DefaultPlayer` 엔티티를 가져와 그 위치 정보(`Position`)를 로그로 출력하도록 작성되었습니다. ```lua [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 **플레이어 아바타**의 등장 위치 설정 방법을 소개합니다. 게임 시작 위치, 재등장(리스폰), 게임 제작 중 테스트 위치 설정에 대해 알아보겠습니다. # 플레이어 아바타의 기본 위치 플레이어 아바타의 기본 위치는 화면 중간입니다. X, Y 좌표상 X값 0, Y값 0인 위치입니다. 기본적으로 게임 시작과 리스폰 위치가 이 설정을 따릅니다. 플레이어 아바타의 기본 위치는 **DefaultPlayer의 TransformComponent**에서 확인할 수 있습니다. # SpawnLocation을 이용한 시작

[task] | single_turn [pass] | ⏳ 미판정 [title] | CameraService를 활용한 카메라 제어 [question] | SwitchCameraTo의 매개변수로 NPC 엔티티 자체를 넘겨주지 않고 CameraComponent를 넘겨줘야 하는 이유는 무엇인가요? [answer] | `SwitchCameraTo`의 매개변수로 NPC 엔티티 자체(`Entity`)가 아니라 해당 엔티티에 포함된 `CameraComponent`를 넘겨줘야 하는 이유는, 카메라 서비스가 카메라를 제어하기 위해 필요한 구체적인 정보(카메라 위치, 시점, 줌 등)가 **CameraComponent**에 포함되어 있기 때문입니다. 엔티티(`Entity`)는 게임 오브젝트를 나타내는 상위 개념이며, 카메라 동작에 직접 필요한 데이터는 엔티티의 프로퍼티가 아닌, 그 안에 들어있는 특정 컴포넌트(`CameraComponent`)에 저장되어 있 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | **TranstionBlendType**은 피사체(타깃)로 전환 시 카메라의 움직임을 제어할 수 있는 프로퍼티입니다. `SwitchCameraTo()` 호출 전에 **TranstionBlendType**에 CameraBlendType의 enum 값을 할당해 타깃 전환 시 블렌드 타입을 변경할 수 있습니다. 아래는 위 예제에서 **TranstionBlendType**에 CameraBlendType.Linear를 할당하는 코드를 추가하여, 카메라의 움직임을 조금 딱딱하게 변경해보도록 하겠습니다. ```lua [self] HandleT

[task] | two_turn [pass] | ⏳ 미판정 [title] | CameraService를 활용한 카메라 제어 [question] | CameraService를 이용해 카메라 타깃을 변경하는 기본 원리와 SwitchCameraTo 함수의 활용 방법은 무엇인가요? [answer] | 메이플스토리 월드에서 게임 플레이 중 카메라는 기본적으로 플레이어를 따라다니도록 설정되어 있습니다. 하지만 특정 연출이나 게임 진행 상황(예: NPC와의 대화, 특수 이벤트 발생 등)에 따라 카메라의 피사체(타깃)를 다른 엔티티로 변경해야 할 필요가 있습니다. 이 때 `CameraService`의 `SwitchCameraTo()` 함수를 활용합니다. `SwitchCameraTo()` 함수의 핵심 원리와 활용 방법은 다음과 같습니다. 1. **목표 엔티티의 CameraComponent 접근**: 카메라를 옮기고자 하는 엔티티(예 [followup] | TriggerEnterEvent에서 NPC 엔티티의 CameraComponent를 참조하여 카메라를 전환하는 구체적인 코드 예제를 보여주세요. [followup_answer] | `TriggerEnterEvent`에서 NPC 엔티티의 `CameraComponent`를 참조하여 카메라 타깃을 전환하는 구체적인 코드 예제는 다음과 같습니다. ```lua [self] HandleTriggerEnterEvent (TriggerEnterEvent event) { --------------- Native Event Sender Info ---------------- -- Sender: TriggerComponent -- Space: Server, Client ---------------- [scores] | [judge_reason] | [source_doc] | 사전 설정을 마쳤으니 본격적으로 **CameraService**의 기능에 대해 알아보겠습니다. 먼저 카메라의 타깃 설정 방법을 알아봅시다. ##### void SwitchCameraTo(CameraComponent cameraToSwitch) 게임을 플레이하면 카메라는 기본적으로 플레이어를 피사체(타깃)로 삼아 계속 플레이어를 따라다니며 화면에 비춥니다.그러나 게임 장르 특성 때문에 혹은 게임의 특별한 연출을 위해서 카메라의 피사체(타깃)를 변경하고 싶을 때 CameraService의 `SwitchCameraTo()` 함수를 활

[task] | single_turn [pass] | ⏳ 미판정 [title] | CameraService를 활용한 카메라 제어 [question] | _EEntityService:GetEntityByPath 메서드로 엔티티를 가져오는 경로 문자열이 잘못되었을 경우 스크립트가 어떻게 동작하며 에러 메시지는 어떻게 확인해야 하나요? [answer] | 제공된 참고 문서에는 `_EntityService:GetEntityByPath` 메서드의 경로 문자열이 잘못되었을 경우의 동작 방식이나 에러 메시지 확인 방법에 대한 정보가 포함되어 있지 않습니다. 문서에는 해당 메서드를 사용하여 엔티티를 가져오는 올바른 예제 코드(예: `local NPCEntity = _EntityService:GetEntityByPath("/maps/map01/npc-13")`)만 제시되어 있으며, 예외 처리나 오류 발생 시나리오에 대한 설명은 없습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 사전 설정을 마쳤으니 본격적으로 **CameraService**의 기능에 대해 알아보겠습니다. 먼저 카메라의 타깃 설정 방법을 알아봅시다. ##### void SwitchCameraTo(CameraComponent cameraToSwitch) 게임을 플레이하면 카메라는 기본적으로 플레이어를 피사체(타깃)로 삼아 계속 플레이어를 따라다니며 화면에 비춥니다.그러나 게임 장르 특성 때문에 혹은 게임의 특별한 연출을 위해서 카메라의 피사체(타깃)를 변경하고 싶을 때 CameraService의 `SwitchCameraTo()` 함수를 활

[task] | code [pass] | ⏳ 미판정 [title] | CameraService를 활용한 카메라 제어 [question] | TriggerEnterEvent를 수신하여 CameraService의 줌 레벨을 변경하고 1초 후 원래 값으로 되돌리는 스크립트를 작성해줘 [answer] | 주어진 참고 문서에는 `CameraService`의 `SwitchCameraTo`와 `TransitionBlendTime`에 대한 정보가 포함되어 있지만, **줌 레벨(Zoom Level)을 변경하는 메서드나 프로퍼티에 대한 정보가 없습니다.** 따라서 요청하신 "줌 레벨을 변경하고 1초 후 원래 값으로 되돌리는" 기능에 대한 정확한 API를 참고 문서에서 확인 할 수 없습니다. 참고 문서에 근거하여, TriggerEnterEvent를 수신하여 **카메라 타깃을 NPC로 전환**하는 것까지는 구현할 수 있습니다. (주의: 실제 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 게임을 만들다 보면 카메라가 비추는 대상을 변경하거나 확대, 축소를 이용해 연출해야 할 때가 있습니다. 이번 과정에서는 [CameraService](/apiReference/Services/CameraService)를 통해 타깃 카메라를 제어하는 방법과 카메라 연출 효과에 대해 알아보도록 합니다. ##### 참고 가이드 [엔티티와 컴포넌트 참조](docs?postId=164%7B%22target%22:%22\_self%22%7D) [엔티티의 충돌을 감지하는 TriggerComponent](/docs?post

[task] | code [pass] | ⏳ 미판정 [title] | CameraService를 활용한 카메라 제어 [question] | TriggerComponent의 HandleTriggerEnterEvent에서 _EntityService로 NPC를 조회한 뒤 _CameraService:SwitchCameraTo()를 호출하여 카메라 타깃을 해당 NPC의 CameraComponent로 변경하는 스크립트를 작성해줘 [answer] | TriggerComponent가 부착된 엔티티에 `HandleTriggerEnterEvent` 이벤트 핸들러를 추가하여, 트리거에 진입한 시점에 `_EntityService`를 통해 목표 NPC 엔티티를 조회하고, 해당 NPC의 `CameraComponent`를 매개변수로 `_CameraService:SwitchCameraTo()`를 호출하는 스크립트입니다. ```lua Event Handler: [self] HandleTriggerEnterEvent(TriggerEnterEvent event) { -- 트리거에 진입한 엔 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 사전 설정을 마쳤으니 본격적으로 **CameraService**의 기능에 대해 알아보겠습니다. 먼저 카메라의 타깃 설정 방법을 알아봅시다. ##### void SwitchCameraTo(CameraComponent cameraToSwitch) 게임을 플레이하면 카메라는 기본적으로 플레이어를 피사체(타깃)로 삼아 계속 플레이어를 따라다니며 화면에 비춥니다.그러나 게임 장르 특성 때문에 혹은 게임의 특별한 연출을 위해서 카메라의 피사체(타깃)를 변경하고 싶을 때 CameraService의 `SwitchCameraTo()` 함수를 활

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 말풍선 만들기 [question] | 활용 예시 테이블에 제시된 값 중 Boolean 타입인 프로퍼티의 이름과 값을 2열 표로 정리하세요. [answer] | 활용 예시 테이블에 제시된 값 중 Boolean 타입인 프로퍼티는 다음과 같습니다. | 프로퍼티 명 | 값 | | --- | --- | | ArrowChatEnabled | true | | AutoShowEnabled | true | | ChatModeEnabled | false | [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 엔티티와 플레이어 아바타에 말풍선을 간단하게 붙일 수 있습니다. ChatBalloonComponent 사용 방법과 활용 예시를 소개합니다. # 말풍선 붙이기 1. 말풍선을 붙일 엔티티를 선택하고 **ChatBalloonComponent**를 추가합니다. 2. 프로퍼티 값을 변경해 원하는 말풍선을 만듭니다. 주요 프로퍼티 값은 다음과 같습니다. | 프로퍼티 명 | 설명 | | --- | --- | | ChatBalloonRUID | 다양한 말풍선 스프라이트를 이용할 수 있습니다. | | BalloonSca

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 말풍선 만들기 [question] | ChatBalloonComponent의 주요 프로퍼티 중 말풍선 표시 시간과 관련된 두 가지 프로퍼티의 동작 방식을 3문장 이내로 설명하세요. [answer] | `ShowDuration`은 말풍선이 화면에 보이는 시간을 초 단위로 설정하며, 1 이상의 값을 입력해야만 말풍선이 표시됩니다. `HideDuration`은 말풍선이 화면에 보이지 않는 시간을 초 단위로 설정하며, 값이 0이면 항상 화면에 유지됩니다. `AutoShowEnabled`가 true일 경우 이 두 값에 따라 표시와 숨김 동작이 반복됩니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 엔티티와 플레이어 아바타에 말풍선을 간단하게 붙일 수 있습니다. ChatBalloonComponent 사용 방법과 활용 예시를 소개합니다. # 말풍선 붙이기 1. 말풍선을 붙일 엔티티를 선택하고 **ChatBalloonComponent**를 추가합니다. 2. 프로퍼티 값을 변경해 원하는 말풍선을 만듭니다. 주요 프로퍼티 값은 다음과 같습니다. | 프로퍼티 명 | 설명 | | --- | --- | | ChatBalloonRUID | 다양한 말풍선 스프라이트를 이용할 수 있습니다. | | BalloonSca

[task] | code [pass] | ⏳ 미판정 [title] | CameraService를 활용한 카메라 제어 [question] | HandleTouchEvent에서 _CameraService:SwitchCameraTo()를 호출하여 현재 플레이어가 아닌 다른 엔티티의 CameraComponent를 타깃으로 설정하는 스크립트를 작성해줘 [answer] | 사용자가 요청한 `HandleTouchEvent`에서 `_CameraService:SwitchCameraTo()`를 호출하여 다른 엔티티의 `CameraComponent`를 카메라 타깃으로 설정하는 스크립트는 다음과 같습니다. ```lua Event Handler: [self] HandleTouchEvent(TouchEvent event) { -- 카메라의 타깃이 될 엔티티를 받아옵니다. -- 실제 배치한 엔티티의 경로로 수정해야 합니다. local TargetEntity = _EntityService:Ge [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 사전 설정을 마쳤으니 본격적으로 **CameraService**의 기능에 대해 알아보겠습니다. 먼저 카메라의 타깃 설정 방법을 알아봅시다. ##### void SwitchCameraTo(CameraComponent cameraToSwitch) 게임을 플레이하면 카메라는 기본적으로 플레이어를 피사체(타깃)로 삼아 계속 플레이어를 따라다니며 화면에 비춥니다.그러나 게임 장르 특성 때문에 혹은 게임의 특별한 연출을 위해서 카메라의 피사체(타깃)를 변경하고 싶을 때 CameraService의 `SwitchCameraTo()` 함수를 활

[task] | code [pass] | ⏳ 미판정 [title] | 게임 시작 위치 설정 [question] | OnUpdate에서 매 프레임마다 플레이어의 위치가 특정 SpawnLocation 엔티티의 TransformComponent.Position과 1.0 이내로 가까워지면 _TimerService:SetTimerOnce를 통해 1초 후 해당 위치로 텔레포트(위치 변경)하도록 처리하는 스크립트를 작성해줘 [answer] | 요청하신 기능은 **SpawnLocation** 엔티티가 이미 씬(Scene)에 배치되어 있어야 하며, 해당 엔티티의 경로를 통해 `_EntityService:GetEntityByPath()`로 가져와야 합니다. 참고 문서와 mLua 규칙에 따라 작성한 스크립트입니다. ```lua Property: [None] string SpawnLocationPath = "/maps/map01/SpawnLocation" -- 배치한 SpawnLocation의 실제 경로로 수정해야 합니다. Method: [server only] void O [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 **플레이어 아바타**의 등장 위치 설정 방법을 소개합니다. 게임 시작 위치, 재등장(리스폰), 게임 제작 중 테스트 위치 설정에 대해 알아보겠습니다. # 플레이어 아바타의 기본 위치 플레이어 아바타의 기본 위치는 화면 중간입니다. X, Y 좌표상 X값 0, Y값 0인 위치입니다. 기본적으로 게임 시작과 리스폰 위치가 이 설정을 따릅니다. 플레이어 아바타의 기본 위치는 **DefaultPlayer의 TransformComponent**에서 확인할 수 있습니다. # SpawnLocation을 이용한 시작

[task] | code [pass] | ⏳ 미판정 [title] | CameraService를 활용한 카메라 제어 [question] | CameraService를 활용해 오브젝트에 닿으면 NPC로 카메라 타깃을 변경하고 2초 후 다시 캐릭터로 복귀하는 스크립트를 작성해줘 [answer] | CameraService를 사용하여 오브젝트에 닿으면 NPC로 카메라 타깃을 전환하고, 2초 후 다시 캐릭터(플레이어)로 복귀하는 스크립트는 다음과 같이 작성할 수 있습니다. 이 스크립트는 **Object** 엔티티에 추가한 **TriggerComponent**와 **Script Component**에 적용합니다. **주의사항:** * NPC 엔티티와 DefaultPlayer 엔티티 모두 **CameraComponent**가 반드시 장착되어 있어야 합니다. * `_EntityService:GetEntityByPath`에 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 게임을 만들다 보면 카메라가 비추는 대상을 변경하거나 확대, 축소를 이용해 연출해야 할 때가 있습니다. 이번 과정에서는 [CameraService](/apiReference/Services/CameraService)를 통해 타깃 카메라를 제어하는 방법과 카메라 연출 효과에 대해 알아보도록 합니다. ##### 참고 가이드 [엔티티와 컴포넌트 참조](docs?postId=164%7B%22target%22:%22\_self%22%7D) [엔티티의 충돌을 감지하는 TriggerComponent](/docs?post

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 말풍선 만들기 [question] | 물개 엔티티 예제에서 AutoShowEnabled가 true일 때 발생하는 반복 동작의 순서를 단계별 번호 목록으로 작성하세요. [answer] | 물개 엔티티 예제에서 `AutoShowEnabled`가 `true`일 때 발생하는 반복 동작의 순서는 다음과 같습니다. 1. `ShowDuration`(5초) 동안 말풍선이 화면에 표시됩니다. 2. `HideDuration`(5초) 동안 말풍선이 화면에서 사라집니다. 3. 1단계와 2단계를 반복합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 엔티티와 플레이어 아바타에 말풍선을 간단하게 붙일 수 있습니다. ChatBalloonComponent 사용 방법과 활용 예시를 소개합니다. # 말풍선 붙이기 1. 말풍선을 붙일 엔티티를 선택하고 **ChatBalloonComponent**를 추가합니다. 2. 프로퍼티 값을 변경해 원하는 말풍선을 만듭니다. 주요 프로퍼티 값은 다음과 같습니다. | 프로퍼티 명 | 설명 | | --- | --- | | ChatBalloonRUID | 다양한 말풍선 스프라이트를 이용할 수 있습니다. | | BalloonSca

[task] | code [pass] | ⏳ 미판정 [title] | CameraService를 활용한 카메라 제어 [question] | CameraService의 TransitionBlendTime을 2.0으로 설정한 뒤 _CameraService:SwitchCameraTo()를 호출하여 부드러운 전환과 함께 카메라 타깃을 특정 엔티티의 CameraComponent로 변경하는 스크립트를 작성해줘 [answer] | 요청하신 조건을 충족하는 스크립트 컴포넌트입니다. `TransitionBlendTime`을 2.0으로 설정한 후, `SwitchCameraTo()`를 호출하여 카메라 타깃을 변경합니다. ```lua Event Handler: [self] HandleTriggerEnterEvent (TriggerEnterEvent event) { --------------- Native Event Sender Info ---------------- -- Sender: TriggerComponent -- Space: Server [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 사전 설정을 마쳤으니 본격적으로 **CameraService**의 기능에 대해 알아보겠습니다. 먼저 카메라의 타깃 설정 방법을 알아봅시다. ##### void SwitchCameraTo(CameraComponent cameraToSwitch) 게임을 플레이하면 카메라는 기본적으로 플레이어를 피사체(타깃)로 삼아 계속 플레이어를 따라다니며 화면에 비춥니다.그러나 게임 장르 특성 때문에 혹은 게임의 특별한 연출을 위해서 카메라의 피사체(타깃)를 변경하고 싶을 때 CameraService의 `SwitchCameraTo()` 함수를 활

[task] | code [pass] | ⏳ 미판정 [title] | 스킬 이펙트를 뿌려보자! [question] | EffectService의 PlayEffect 함수를 사용하여 Q, W, E, R 키 입력 시 각각 지정된 이펙트 ID("f396262ddb6e4d5581360496bb4e9f86", "aae828e6daa342a996320e32dc5c2ab6", "0da34c3dd7ba4c2890107d743b8c7a97", "5f67e1efe0b84d9c9111a21ecfedc937")를 엔티티의 현재 TransformComponent 위치에서 재생하도록 하는 NewSkill 컴포넌트 스크립트를 작성해줘 [answer] | Q, W, E, R 키 입력 시 지정된 이펙트 ID를 엔티티의 현재 위치에서 재생하도록 하는 `NewSkill` 컴포넌트 스크립트는 다음과 같습니다. ```lua Event Handler: [service: InputService] HandleKeyDownEvent(KeyDownEvent event) { -- Parameters local key = event.key -------------------------------------------------------- local transform = s [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 위에 이어서 이번에는 각 키를 입력할 때마다 다음의 스킬 이펙트가 호출되도록 만들어보겠습니다. 우선 **_EffectService**의 함수 중 `PlayEffect` 함수를 이용해 스크립트를 작성해보겠습니다. 1. **NewSkill** 컴포넌트의 **HandleKeyDownEvent**를 다음과 같이 수정해줍니다. ```lua [service: InputService] HandleKeyDownEvent(KeyDownEvent event) { -- Parameters

[task] | code [pass] | ⏳ 미판정 [title] | 스프라이트 색상 조정 [question] | Entity 의 SpriteRendererComponent 를 접근하여 현재 적용된 색상 값과 비교하여 특정 조건이 충족될 때만 색상을 변경하는 로직을 포함하는 스크립트를 작성해줘 [answer] | `SpriteRendererComponent`의 `Color` 프로퍼티는 `Color` 타입을 가지며, `Color(r, g, b, a)` 함수로 생성됩니다. 이때 각 값은 0.0부터 1.0 사이의 실수입니다. 현재 적용된 색상과 비교하여 특정 조건(예: 현재 색상이 특정 값과 다르면)이 충족될 때만 색상을 변경하는 로직을 구현하기 위해 `OnUpdate` 또는 이벤트 핸들러에서 현재 `Color` 값을 읽고 비교할 수 있습니다. 아래 예제는 버튼 클릭 이벤트(`HandleButtonClickEvent`)가 발생할 때, 현재 스 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 스프라이트를 간단하게 여러 색상으로 변경할 수 있습니다. 스프라이트와 웹스프라이트의 차이점과 스프라이트 색상 변경 방법을 알아보겠습니다. # 스프라이트 2D 이미지를 스프라이트(Sprite)라 칭합니다. 스프라이트는 위치, 크기, 회전 등을 변경할 수 있습니다. 스프라이트마다 고유한 RUID 값을 갖고 있습니다. RUID 값을 이용해 간편하게 빈 모델에 스프라이트를 넣거나, 변경할 수 있습니다. 크리에이터가 직접 제작한 이미지 파일을 메이커에 업로드하면 RUID 또한 자동으로 발급됩니다. > Tip. >

[task] | code [pass] | ⏳ 미판정 [title] | 스킬 이펙트를 뿌려보자! [question] | EffectService의 PlayEffect 함수를 사용하여 Q, W, E, R 키 입력 시 각각 지정된 이펙트 ID("f396262ddb6e4d5581360496bb4e9f86", "aae828e6daa342a996320e32dc5c2ab6", "0da34c3dd7ba4c2890107d743b8c7a97", "5f67e1efe0b84d9c9111a21ecfedc937")를 엔티티의 현재 TransformComponent 위치에서 재생하도록 하는 NewSkill 컴포넌트 스크립트를 작성해줘 [answer] | 요청하신 `NewSkill` 컴포넌트 스크립트는 `InputService`의 `KeyDownEvent`를 처리하여 Q, W, E, R 키에 따라 `_EffectService:PlayEffect`를 호출하도록 작성됩니다. ```lua Event Handler: [service: InputService] HandleKeyDownEvent(KeyDownEvent event) { -- Parameters local key = event.key ----------------------------------------- [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 위에 이어서 이번에는 각 키를 입력할 때마다 다음의 스킬 이펙트가 호출되도록 만들어보겠습니다. 우선 **_EffectService**의 함수 중 `PlayEffect` 함수를 이용해 스크립트를 작성해보겠습니다. 1. **NewSkill** 컴포넌트의 **HandleKeyDownEvent**를 다음과 같이 수정해줍니다. ```lua [service: InputService] HandleKeyDownEvent(KeyDownEvent event) { -- Parameters

[task] | code [pass] | ⏳ 미판정 [title] | 스킬 이펙트를 뿌려보자! [question] | EffectService의 PlayEffect 함수를 사용하여 Q, W, E, R 키 입력 시 각각 지정된 이펙트 ID("f396262ddb6e4d5581360496bb4e9f86", "aae828e6daa342a996320e32dc5c2ab6", "0da34c3dd7ba4c2890107d743b8c7a97", "5f67e1efe0b84d9c9111a21ecfedc937")를 엔티티의 현재 TransformComponent 위치에서 재생하도록 하는 NewSkill 컴포넌트 스크립트를 작성해줘 [answer] | Q, W, E, R 키를 눌렀을 때 각각 지정된 이펙트 ID가 엔티티의 현재 위치에서 재생되도록 `NewSkill` 컴포넌트 스크립트는 다음과 같이 작성할 수 있습니다. ```lua Event Handler: [service: InputService] HandleKeyDownEvent(KeyDownEvent event) { -- Parameters local key = event.key local transform = self.Entity.TransformComponent local x = t [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 위에 이어서 이번에는 각 키를 입력할 때마다 다음의 스킬 이펙트가 호출되도록 만들어보겠습니다. 우선 **_EffectService**의 함수 중 `PlayEffect` 함수를 이용해 스크립트를 작성해보겠습니다. 1. **NewSkill** 컴포넌트의 **HandleKeyDownEvent**를 다음과 같이 수정해줍니다. ```lua [service: InputService] HandleKeyDownEvent(KeyDownEvent event) { -- Parameters

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