← 목록

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

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

[task] | single_turn [pass] | ⏳ 미판정 [title] | WheelJointComponent [question] | 엔진 구동을 완전히 끄기 위해 SetMotorEnable을 false로 설정해야 하나요, 아니면 속도만 0으로 맞추면 되나요? [answer] | 참고 문서에 제시된 예제를 보면, 엔진 구동을 완전히 끄기 위해서는 `SetMotorEnable`을 `false`로 설정해야 합니다. 문서의 `EngineOff()` 메서드에서 이를 확인할 수 있습니다. ```lua [server] void EngineOff() { self.Entity.WheelJointComponent:SetMotorEnable(1, false) } ``` 속도만 0으로 맞추는 방법은 문서의 예제에 나타나지 않으며, 문서에서는 엔진을 끄는 동작으로 `SetMotorEnable`을 `false`로 설정하는 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | W, S 키를 눌러 엔티티를 움직이는 예제입니다. ```lua Method: [server] void Accelerate() { self.Entity.WheelJointComponent:SetMotorEnable(1, true) self.Entity.WheelJointComponent:SetMotorSpeed(1, -10) } [server] void Deaccelerate() { self.Entity.WheelJointComponent:SetMotorEnable(1, true) self.Entity.WheelJoint

[task] | single_turn [pass] | ⏳ 미판정 [title] | WebViewComponent [question] | webviewGroup 엔티티를 생성할 때 _EntityService:GetEntityByPath로 먼저 확인한 후 없으면 _SpawnService:SpawnByModelId로 생성하는 로직의 목적은 무엇이며, 이 순서를 바꾸면 어떤 문제가 발생할 수 있나요? [answer] | `WebViewGroup` 엔티티 생성 시 `_EntityService:GetEntityByPath`로 먼저 존재 여부를 확인한 뒤, 없다면 `_SpawnService:SpawnByModelId`로 생성하는 로직의 목적은 **중복 객체 생성 방지**입니다. 메이플스토리 월드에서 `OnBeginPlay`가 실행되는 시점에 이미 해당 경로(`/ui/WebViewGroup`)에 엔티티가 존재할 수 있습니다(예: 이전에 생성되었거나, 에디터에서 미리 배치된 경우). 만약 존재 확인 없이 무조건 `_SpawnService:SpawnByMo [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | `+`, `-`키로 웹뷰 화면을 확대/축소하는 예제입니다. 화면 우측에 주소 입력 UI와 앞으로 가기, 뒤로 가기 버튼이 생성됩니다. WebViewComponent가 있는 엔티티에 새로운 컴포넌트를 만들어 추가하고, 아래 코드를 작성합니다. ```lua Method: [client only] void OnBeginPlay () { local webview = self.Entity.WebViewComponent if webview == nil then log_error("Entity doesn't have WebView

[task] | single_turn [pass] | ⏳ 미판정 [title] | WheelJointComponent [question] | SetMotorSpeed 메서드의 두 번째 인자가 음수일 때와 양수일 때 엔티티의 움직임 방향은 어떻게 달라지나요? [answer] | 제시된 참고 문서에는 `SetMotorSpeed` 메서드의 두 번째 인자(속도 값)가 음수(-10)와 양수(10)일 때 엔티티가 구체적으로 어느 방향(예: 전진, 후진, 좌측, 우측 등)으로 움직이는지에 대한 명시적인 설명이 없습니다. 문서에는 `Accelerate` 메서드에서 `SetMotorSpeed(1, -10)`을, `Deaccelerate` 메서드에서 `SetMotorSpeed(1, 10)`을 호출하는 코드 예시만 제공되며, 두 메서드의 이름(가속, 감속)으로부터 방향성을 추측할 수는 있지만, 문서 본문에 음수와 양수의 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | W, S 키를 눌러 엔티티를 움직이는 예제입니다. ```lua Method: [server] void Accelerate() { self.Entity.WheelJointComponent:SetMotorEnable(1, true) self.Entity.WheelJointComponent:SetMotorSpeed(1, -10) } [server] void Deaccelerate() { self.Entity.WheelJointComponent:SetMotorEnable(1, true) self.Entity.WheelJoint

[task] | code [pass] | ⏳ 미판정 [title] | WebViewComponent [question] | WebViewComponent 의 GoBack() 과 GoForward() 메서드를 ButtonClickEvent 로 연결하여 뒤로/앞으로 이동 기능을 구현하는 스크립트를 작성해줘. [answer] | WebViewComponent의 `GoBack()`과 `GoForward()` 메서드를 버튼 클릭 이벤트에 연결하여 웹 페이지 뒤로/앞으로 이동 기능을 구현하는 스크립트입니다. 참고 문서에 따르면, WebViewComponent는 `Url` 프로퍼티와 `GoBack()`, `GoForward()` 메서드를 가지며, 버튼 엔티티의 `ButtonClickEvent`를 연결하여 이 메서드를 호출할 수 있습니다. 또한 웹 로드 완료 시 `WebLoadCompleteEvent`를 통해 현재 URL을 UI에 갱신할 수 있습니다. ```lu [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | Truncate urlInputField.TextComponent.Padding = RectOffset(15, 15, 15, 15) urlInputField.TextComponent.FontColor = Color.white urlInputField.TextComponent.Text = webview.Url urlInputField.TextInputComponent.Text = webview.Url -- 각 UI엔티티들에 이벤트 연결 urlInputField:ConnectEvent(TextInputEndEditEve

[task] | two_turn [pass] | ⏳ 미판정 [title] | ParticleLoopEvent [question] | ParticleLoopEvent가 발생하는 조건과 지원되는 파티클 컴포넌트 종류가 궁금합니다. [answer] | `ParticleLoopEvent`는 파티클 컴포넌트의 **Loop** 프로퍼티가 활성화된 상태에서, 파티클의 방출 주기가 돌아와서 방출이 반복될 때 발생하는 이벤트입니다. 이 이벤트가 발생하는 파티클 컴포넌트 종류와 각각의 실행 공간은 다음과 같습니다. **서버 및 클라이언트에서 발생:** * `AreaParticleComponent` * `BasicParticleComponent` * `SpriteParticleComponent` **클라이언트에서만 발생:** * `UIAreaParticleComponent` [followup] | ParticleLoopEvent 핸들러를 사용하여 Loop가 활성화된 BasicParticleComponent와 UIAreaParticleComponent의 이벤트 발생 공간(Server/Client) 차이 및 코드 예시를 보여주세요. [followup_answer] | `BasicParticleComponent`와 `UIAreaParticleComponent`는 이벤트 발생 공간이 다릅니다. 1. **BasicParticleComponent**: **Server**와 **Client** 양쪽 모두에서 `ParticleLoopEvent`가 발생합니다. 2. **UIAreaParticleComponent**: **Client**에서만 `ParticleLoopEvent`가 발생합니다. 따라서 UI 파티클의 루프 이벤트는 클라이언트 로직에서만 처리되며, 일반 파티클은 서버와 클라이언트 모두에서 처 [scores] | [judge_reason] | [source_doc] | Loop 프로퍼티가 활성화 된 경우, 파티클의 방출 주기가 돌아와서 방출을 반복할 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * AreaParticleComponent <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> * BasicParticleComponent <img

[task] | two_turn [pass] | ⏳ 미판정 [title] | WebViewComponent [question] | WebViewComponent 를 사용하여 URL 입력 필드와 브라우저 컨트롤(백/전진, 줌)을 어떻게 연결하나요? [answer] | WebViewComponent를 사용하여 URL 입력 필드와 브라우저 컨트롤(백/전진, 줌)을 연결하려면, UI 엔티티의 이벤트에 핸들러를 등록하고 키 입력 이벤트에 따라 줌 기능을 제어하는 방식으로 구현합니다. 아래는 URL 입력 필드 수정 시 웹뷰 주소를 변경하고, 백/전진 버튼을 클릭할 때 해당 동작을 수행하며, 웹 로드 완료 시 주소 표시를 갱신하고, 키보드 입력으로 줌을 제어하는 mLua 스크립트 예시입니다. ```lua Property: [None] Entity urlInputField = nil [None] Enti [followup] | `TextInputEndEditEvent` 와 `WebLoadCompleteEvent` 를 통해 URL 텍스트를 동기화할 때, 이벤트 핸들러 내부에서 `urlInputField` 와 `webview` 객체에 접근하는 구체적인 코드 구조는 어떻게 되나요? [followup_answer] | `TextInputEndEditEvent`와 `WebLoadCompleteEvent`를 통해 URL 텍스트를 동기화할 때, 이벤트 핸들러 내부에서 `urlInputField`와 `webview` 객체에 접근하는 구체적인 코드 구조는 다음과 같습니다. 참고 문서에 따르면, `webview`는 `self.Entity.WebViewComponent`를 참조한 로컬 변수로 사용되며, `urlInputField`는 UI 엔티티 참조를 의미합니다. 이벤트 핸들러는 클로저(function) 형태로 `ConnectEvent` 메서드에 전달되어 [scores] | [judge_reason] | [source_doc] | Truncate urlInputField.TextComponent.Padding = RectOffset(15, 15, 15, 15) urlInputField.TextComponent.FontColor = Color.white urlInputField.TextComponent.Text = webview.Url urlInputField.TextInputComponent.Text = webview.Url -- 각 UI엔티티들에 이벤트 연결 urlInputField:ConnectEvent(TextInputEndEditEve

[task] | single_turn [pass] | ⏳ 미판정 [title] | WebViewComponent [question] | WebViewComponent 관련 스크립트를 작성할 때 [client only] 속성을 붙여야 하는 이유와, 만약 [server only]로 작성했을 때 발생할 수 있는 현상은 무엇인가요? [answer] | WebViewComponent 관련 스크립트, 특히 화면 확대/축소(`+`, `-` 키 입력)나 주소 입력 UI 생성 및 조작 로직을 작성할 때 **[client only]** 속성을 붙여야 하는 이유는 다음과 같습니다. 1. **클라이언트 전용 렌더링 및 입력 처리**: WebViewComponent는 사용자의 화면에 웹 콘텐츠를 표시하는 UI 요소입니다. UI의 위치(`UITransformComponent`), 색상, 크기, 그리고 키보드 입력(`+`, `-` 키)은 모두 클라이언트(사용자 기기)에서 처리되어야 합니다. 서버 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | `+`, `-`키로 웹뷰 화면을 확대/축소하는 예제입니다. 화면 우측에 주소 입력 UI와 앞으로 가기, 뒤로 가기 버튼이 생성됩니다. WebViewComponent가 있는 엔티티에 새로운 컴포넌트를 만들어 추가하고, 아래 코드를 작성합니다. ```lua Method: [client only] void OnBeginPlay () { local webview = self.Entity.WebViewComponent if webview == nil then log_error("Entity doesn't have WebView

[task] | code [pass] | ⏳ 미판정 [title] | WebViewComponent [question] | WebViewComponent의 OrderInLayerChangedEvent와 SortingLayerChangedEvent를 감지하여 레이어 변경 시점에 다른 UI 컴포넌트의 가시성을 동기화하는 스크립트를 작성해줘 [answer] | 참고 문서에 `OrderInLayerChangedEvent`와 `SortingLayerChangedEvent`가 존재하는 것은 확인됩니다. 하지만 이 두 이벤트의 **매개변수(인자) 구조**나 이벤트 핸들러의 정확한 시그니처가 문서에 명시되어 있지 않아, 이벤트 객체에서 어떤 값을 가져올 수 있는지(예: 변경된 레이어 값 등) 알 수 없습니다. 또한, 다른 UI 컴포넌트의 가시성을 제어하기 위한 구체적인 API(예: `SetVisible` 등)가 제공된 문서에 포함되어 있지 않습니다. 따라서 문서에 근거하여 이 두 이벤트를 감지하 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | - **OrderInLayerChangedEvent** Component의 OrderInLayer가 변경되었을 때 발생하는 이벤트입니다. - **SortingLayerChangedEvent** 컴포넌트의 SortingLayer가 변경되었을 때 발생하는 이벤트입니다. - **WebLoadCompleteEvent** 웹 페이지 로드 완료 시 발생하는 이벤트입니다. - **WebLoadFailEvent** 웹 페이지 로드 실패 시 발생하는 이벤트입니다. - **WebViewClickedEvent** 웹뷰에 클릭을 입력했

[task] | single_turn [pass] | ⏳ 미판정 [title] | WheelJointComponent [question] | W, S 키 입력에 따른 Accelerate와 Deaccelerate 함수 호출 시, 두 메서드 모두 [server] 실행 공간으로 지정된 이유는 무엇인가요? [answer] | W, S 키 입력에 따른 `Accelerate`와 `Deaccelerate` 함수가 `[server]` 실행 공간으로 지정된 이유는 물리 시뮬레이션의 정확성과 네트워크 동기화 때문입니다. 메이플스토리 월드에서 물리 연산(엔진 구동, 속도 설정 등)은 서버에서 수행되어야 합니다. 클라이언트에서 물리 상태를 변경하면 네트워크 지연이나 클라이언트 간 차이로 인해 물리 상태가 동기화되지 않거나, 물리 엔진이 충돌이나 관성 등을 올바르게 계산하지 못할 수 있습니다. 참고 문서의 예제에서 볼 수 있듯이, `InputService`의 `Ha [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | W, S 키를 눌러 엔티티를 움직이는 예제입니다. ```lua Method: [server] void Accelerate() { self.Entity.WheelJointComponent:SetMotorEnable(1, true) self.Entity.WheelJointComponent:SetMotorSpeed(1, -10) } [server] void Deaccelerate() { self.Entity.WheelJointComponent:SetMotorEnable(1, true) self.Entity.WheelJoint

[task] | single_turn [pass] | ⏳ 미판정 [title] | WheelJointComponent [question] | WheelJointComponent를 통해 모터를 제어할 때 SetMotorEnable과 SetMotorSpeed를 어떤 순서로 호출해야 의도한 물리 효과가 정상적으로 나타나는지 궁금합니다. [answer] | 참고 문서에 제시된 예제 코드를 보면, `WheelJointComponent`의 모터를 활성화하고 속도를 설정할 때 `SetMotorEnable`을 먼저 호출한 뒤, `SetMotorSpeed`을 호출하는 순서를 따르고 있습니다. 구체적으로 `Accelerate`와 `Deaccelerate` 메서드에서 다음과 같이 순서가 결정되어 있습니다. ```lua Method: [server] void Accelerate() { self.Entity.WheelJointComponent:SetMotorEnable(1, true) self [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | W, S 키를 눌러 엔티티를 움직이는 예제입니다. ```lua Method: [server] void Accelerate() { self.Entity.WheelJointComponent:SetMotorEnable(1, true) self.Entity.WheelJointComponent:SetMotorSpeed(1, -10) } [server] void Deaccelerate() { self.Entity.WheelJointComponent:SetMotorEnable(1, true) self.Entity.WheelJoint

[task] | two_turn [pass] | ⏳ 미판정 [title] | WebViewComponent [question] | Reload 메서드가 [Client] 실행 공간으로만 제한되어 있는 이유와, 서버에서 클라이언트의 웹뷰를 강제로 갱신해야 하는 상황에서 어떤 대안적인 API나 이벤트 핸들러를 사용할 수 있는지 설명해 주세요. [answer] | `Reload` 메서드가 `[Client]` 실행 공간으로만 제한되는 이유는 웹뷰(WebView)가 기본적으로 클라이언트 사이드에서 렌더링되고 상호작용되는 UI 요소이기 때문입니다. 서버는 웹 페이지의 실제 DOM(문서 객체 모델) 상태나 브라우저 엔진의 내부 상태를 직접 제어할 수 없으며, 이러한 로컬 렌더링 및 상태 관리는 클라이언트의 책임 범위입니다. 따라서 페이지를 다시 로드하는 행위는 클라이언트에서 실행되어야 합니다. 참고 문서에는 서버에서 클라이언트의 웹뷰를 "강제로 갱신"하기 위해 **서버 전용**으로 설계된 `Rel [followup] | 서버에서 클라이언트의 WebViewComponent를 갱신하기 위해 Event Handler를 통해 명령을 전송하는 구조를 가진 mLua 스크립트 예제를 작성해 주세요. [followup_answer] | 참고 문서에 따르면, 서버에서 클라이언트의 `WebViewComponent`를 갱신하기 위해 **서버에서 클라이언트로 직접 명령을 전송하는 전용 이벤트 핸들러나 API는 존재하지 않습니다.** 문서에 명시된 `Reload` 메서드는 `[Client]` 실행 공간으로만 제한되어 있으며, 서버에서 클라이언트로 웹뷰 갱신 명령을 보내는 이벤트 핸들러는 정의되어 있지 않습니다. 또한, `Url` 프로퍼티는 `[Sync]` 속성을 가지고 있어 서버에서 값을 변경하면 클라이언트로 동기화되지만, 이를 "이벤트 핸들러를 통해 명령을 전송하는 구 [scores] | [judge_reason] | [source_doc] | UI와 월드에 웹뷰(WebView)를 배치합니다. 웹 페이지의 조작 가능 여부, 탐색 방법 등을 설정할 수 있습니다. # Properties - **boolean ClickingEnabled [Sync]** 웹뷰에서 클릭을 가능하게 할지 여부입니다. - **DragMode DragMode** 웹뷰 내에서 드래그했을 때 어떻게 동작할지 설정합니다. - **float DragThreshold** 드래그 시 클릭으로 인식하지 않게 만들기 위한 임곗값입니다. 수치가 매우 높으면 드래그가 클릭으로 인식될 수 있습니다. - **

[task] | code [pass] | ⏳ 미판정 [title] | WeldJointComponent [question] | OnBeginPlay 시점에 WeldJointComponent 의 첫 번째 Joint(index 0) 의 LocalAnchorA 를 Vector2(1, 1) 로, LocalAnchorB 를 Vector2(-1, -1) 로 변경하는 스크립트를 작성해줘 [answer] | `OnBeginPlay`에서 `WeldJointComponent`의 `SetLocalAnchorA`와 `SetLocalAnchorB` 메서드를 사용하여 첫 번째 Joint(index 0)의 앵커를 변경할 수 있습니다. ```lua Method: [server] void OnBeginPlay() { self.Entity.WeldJointComponent:SetLocalAnchorA(0, Vector2(1, 1)) self.Entity.WeldJointComponent:SetLocalAnchorB(0, Vector2(- [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | WeldJoint를 생성, 삭제합니다. 연결된 강체들이 하나의 물체인 것처럼 고정됩니다. # Properties - **SyncList<WeldJoint> Joints [Sync] [ReadOnly]** Joint 정보를 설정합니다. ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가

[task] | code [pass] | ⏳ 미판정 [title] | WeldJointComponent [question] | PhysicsContactBeginEvent 를 수신하여 이름이 "SnowBody" 인 엔티티와 연결되고, 이미 연결된 Joint 가 없으면 WeldJointComponent 의 AddJoint 메서드를 호출하여 두 개체를 Vector2(0, -1) 과 Vector2.zero 앵커로 고정하는 스크립트를 작성해줘 [answer] | 요청하신 동작을 수행하는 mLua 스크립트는 다음과 같습니다. ```lua Method: [server] void Connect (Entity target) { self.Entity.WeldJointComponent:AddJoint(target, Vector2(0, -1), Vector2.zero) } Event Handler: [self] HandlePhysicsContactBeginEvent (PhysicsContactBeginEvent event) { --------------- Native Event Sender In [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | WeldJoint를 생성, 삭제합니다. 연결된 강체들이 하나의 물체인 것처럼 고정됩니다. # Properties - **SyncList<WeldJoint> Joints [Sync] [ReadOnly]** Joint 정보를 설정합니다. ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가

[task] | single_turn [pass] | ⏳ 미판정 [title] | WeldJointComponent [question] | WeldJointComponent가 활성화되어 있는지 단순히 Enable 속성만 확인하면 되는지, 아니면 계층 구조 상태를 고려해서 EnableInHierarchy 속성을 사용해야 하는지 차이점이 궁금합니다. [answer] | `WeldJointComponent`의 활성화 상태를 확인하기 위해 `Enable`과 `EnableInHierarchy` 속성을 사용할 때, 두 속성은 확인하는 대상이 다르므로 목적에 맞게 선택해야 합니다. **1. `Enable` 속성** * **의미:** 해당 컴포넌트 자체의 활성화 여부를 나타냅니다. * **특징:** `[Sync]` 속성이 있으므로 서버와 클라이언트 간에 동기화됩니다. * **주의점:** 이 값이 `true`라고 해서 컴포넌트가 실제로 작동하는 것은 아닙니다. 컴포넌트가 붙어 있는 **엔티티(En [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | WeldJoint를 생성, 삭제합니다. 연결된 강체들이 하나의 물체인 것처럼 고정됩니다. # Properties - **SyncList<WeldJoint> Joints [Sync] [ReadOnly]** Joint 정보를 설정합니다. ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가

[task] | instruction_following [pass] | ⏳ 미판정 [title] | PhysicsContactBeginEvent [question] | PhysicsContactBeginEvent 발생 시점에 접근할 수 있는 프로퍼티 이름과 그 타입을 표로 정리해서 [answer] | `PhysicsContactBeginEvent` 발생 시점에 접근할 수 있는 프로퍼티는 다음과 같습니다. | 프로퍼티 이름 | 타입 | 설명 | | :--- | :--- | :--- | | `ContactedBodyEntity` | `Entity` | 충돌한 Physics Rigidbody 엔티티입니다. | 이 이벤트 핸들러에서 해당 프로퍼티에 접근하는 방법은 `event.ContactedBodyEntity` 입니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 두 물리 강체가 충돌을 시작할 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * PhysicsColliderComponent <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **Entity ContactedBodyEntity** 충돌한 P

[task] | instruction_following [pass] | ⏳ 미판정 [title] | PhysicsContactBeginEvent [question] | 이 이벤트가 발생하는 컴포넌트와 실행 공간(Server/Client)을 단계별 번호 목록으로 [answer] | 1. **발생 컴포넌트**: `PhysicsColliderComponent` 2. **실행 공간**: `Server, Client` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 두 물리 강체가 충돌을 시작할 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * PhysicsColliderComponent <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **Entity ContactedBodyEntity** 충돌한 P

[task] | two_turn [pass] | ⏳ 미판정 [title] | PhysicsContactBeginEvent [question] | PhysicsContactBeginEvent가 발생하는 조건과 주요 프로퍼티에 대해 설명해 주세요 [answer] | `PhysicsContactBeginEvent`는 두 물리 강체(Rigidbody)가 서로 충돌을 시작하는 순간에 발생합니다. 이 이벤트는 `PhysicsColliderComponent`를 통해 트리거되며, 서버(Server)와 클라이언트(Client) 양쪽 공간에서 모두 발생합니다. 이벤트에서 사용할 수 있는 주요 프로퍼티는 다음과 같습니다. * **ContactedBodyEntity**: 충돌한 상대방의 `Physics Rigidbody` 엔티티를 참조하는 프로퍼티입니다. 다음은 `PhysicsContactBeginEv [followup] | Event Handler에서 ContactedBodyEntity를 이용해 충돌한 상대의 이름을 로그로 출력하는 코드 예시를 작성해 주세요 [followup_answer] | 충돌한 상대의 이름을 로그로 출력하는 mLua 코드 예시는 다음과 같습니다. ```lua Event Handler: [self] HandlePhysicsContactBeginEvent (PhysicsContactBeginEvent event) { --------------- Native Event Sender Info ---------------- -- Sender: PhysicsColliderComponent -- Space: Server, Client -------------------------------------- [scores] | [judge_reason] | [source_doc] | 두 물리 강체가 충돌을 시작할 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * PhysicsColliderComponent <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **Entity ContactedBodyEntity** 충돌한 P

[task] | instruction_following [pass] | ⏳ 미판정 [title] | PhysicsContactBeginEvent [question] | PhysicsContactBeginEvent 생성자의 시그니처와 기본 인자값을 코드 블록으로만 출력하고 설명은 주석으로 [answer] | ```lua -- PhysicsContactBeginEvent 생성자 시그니처 -- 인자: Entity contactedBodyEntity (기본값: nil) -- 설명: 지정한 값으로 PhysicsContactBeginEvent를 초기화합니다. PhysicsContactBeginEvent(Entity contactedBodyEntity = nil) ``` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 두 물리 강체가 충돌을 시작할 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * PhysicsColliderComponent <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **Entity ContactedBodyEntity** 충돌한 P

[task] | single_turn [pass] | ⏳ 미판정 [title] | ParticleLoopEvent [question] | ParticleLoopEvent의 기본 생성자를 직접 호출하여 이벤트 객체를 생성할 수 있나요? [answer] | 네, 가능합니다. `ParticleLoopEvent`는 기본 생성자 `ParticleLoopEvent()`를 제공하며, 이를 통해 이벤트 객체를 직접 초기화할 수 있습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | Loop 프로퍼티가 활성화 된 경우, 파티클의 방출 주기가 돌아와서 방출을 반복할 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * AreaParticleComponent <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> * BasicParticleComponent <img

[task] | instruction_following [pass] | ⏳ 미판정 [title] | ParticleLoopEvent [question] | ParticleLoopEvent 의 기본 생성자 호출 문법만 ```lua 코드 블록으로 출력하고, 설명은 주석으로만 작성하세요. [answer] | ```lua -- ParticleLoopEvent의 기본 생성자는 ParticleLoopEvent() 로 호출합니다. local event = ParticleLoopEvent() ``` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | Loop 프로퍼티가 활성화 된 경우, 파티클의 방출 주기가 돌아와서 방출을 반복할 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * AreaParticleComponent <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> * BasicParticleComponent <img

[task] | instruction_following [pass] | ⏳ 미판정 [title] | ParticleLoopEvent [question] | ParticleLoopEvent 의 ParticleEntity 프로퍼티가 가지는 접근 권한과 의미를 1문장으로 서술하세요. [answer] | ParticleEntity 프로퍼티는 읽기 전용(ReadOnly) 접근 권한을 가지며, 해당 파티클 루프 이벤트가 발생한 엔티티를 나타냅니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | Loop 프로퍼티가 활성화 된 경우, 파티클의 방출 주기가 돌아와서 방출을 반복할 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * AreaParticleComponent <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> * BasicParticleComponent <img

[task] | code [pass] | ⏳ 미판정 [title] | WeldJointComponent [question] | WeldJointComponent 에 추가된 Joint 의 수를 실시간으로 확인하여, Joint 가 3개 이상 존재하면 가장 마지막에 추가된 Joint 를 DestroyJoint 메서드를 사용하여 제거하는 스크립트를 작성해줘 [answer] | WeldJointComponent의 `GetJointsCount()` 메서드를 사용하여 현재 연결된 Joint의 수를 확인하고, 3개 이상일 경우 가장 마지막에 추가된 Joint의 인덱스(`GetJointsCount() - 1`)를 계산하여 `DestroyJoint(index)` 메서드로 제거하는 로직을 구현했습니다. 물리 연산은 서버에서 처리되므로 메서드에 `[server]` 속성을 적용했습니다. ```lua Method: [server] void CheckAndRemoveLastJoint() { local jointC [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | WeldJoint를 생성, 삭제합니다. 연결된 강체들이 하나의 물체인 것처럼 고정됩니다. # Properties - **SyncList<WeldJoint> Joints [Sync] [ReadOnly]** Joint 정보를 설정합니다. ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가

[task] | single_turn [pass] | ⏳ 미판정 [title] | ParticleLoopEvent [question] | BasicParticleComponent와 SpriteParticleComponent에서 발생하는 ParticleLoopEvent는 실행 공간에서 어떤 차이가 있나요? [answer] | BasicParticleComponent와 SpriteParticleComponent에서 발생하는 `ParticleLoopEvent`는 실행 공간에서 차이가 없습니다. 두 컴포넌트 모두 Server와 Client 양쪽에서 이벤트가 발생합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | Loop 프로퍼티가 활성화 된 경우, 파티클의 방출 주기가 돌아와서 방출을 반복할 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * AreaParticleComponent <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> * BasicParticleComponent <img

[task] | code [pass] | ⏳ 미판정 [title] | WeldJointComponent [question] | WeldJointComponent 에 존재하는 모든 Joint 를 순회하며 GetJointsCount 메서드로 개수를 확인한 후, 각 Joint 의 CollideConnected 값을 false 로 설정하여 연결된 강체끼리 충돌하지 않도록 하는 스크립트를 작성해줘 [answer] | WeldJointComponent에 등록된 모든 Joint를 순회하여 `CollideConnected` 값을 `false`로 설정하는 스크립트는 다음과 같습니다. `GetJointsCount()` 메서드를 통해 현재 등록된 Joint의 총 개수를 확인하고, `for` 루프를 사용하여 0부터 해당 개수-1까지의 인덱스를 순회합니다. 각 인덱스에 해당하는 Joint의 `CollideConnected` 값을 `false`로 변경하기 위해 `SetCollideConnected(index, false)` 메서드를 호출합니다. 물리 연산은 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | WeldJoint를 생성, 삭제합니다. 연결된 강체들이 하나의 물체인 것처럼 고정됩니다. # Properties - **SyncList<WeldJoint> Joints [Sync] [ReadOnly]** Joint 정보를 설정합니다. ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가

[task] | instruction_following [pass] | ⏳ 미판정 [title] | ParticleLoopEvent [question] | ParticleLoopEvent 를 발생시키는 6개의 파티클 컴포넌트와 해당 컴포넌트가 동작하는 실행 공간(Server, Client)을 2열 6행의 표로 정리하세요. [answer] | | 파티클 컴포넌트 | 실행 공간 | | :--- | :--- | | AreaParticleComponent | Server, Client | | BasicParticleComponent | Server, Client | | SpriteParticleComponent | Server, Client | | UIAreaParticleComponent | Client | | UIBasicParticleComponent | Client | | UISpriteParticleComponent | Client | [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | Loop 프로퍼티가 활성화 된 경우, 파티클의 방출 주기가 돌아와서 방출을 반복할 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * AreaParticleComponent <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> * BasicParticleComponent <img

[task] | single_turn [pass] | ⏳ 미판정 [title] | ParticleLoopEvent [question] | Loop 프로퍼티를 활성화했는데 ParticleLoopEvent가 한 번만 발생하고 멈추는 이유는 무엇인가요? [answer] | 제공된 문서에는 `ParticleLoopEvent`가 발생하는 조건(Loop 프로퍼티 활성화, 방출 주기 반복)과 이 이벤트를 발생시키는 컴포넌트 목록, 그리고 이벤트 객체의 프로퍼티(`ParticleEntity`)만 설명되어 있습니다. 문서에는 `ParticleLoopEvent`가 한 번만 발생하고 멈추는 원인에 대한 구체적인 설명이나, 관련 API(예: 파티클 재생 상태 제어, 루프 설정 변경 등)에 대한 정보가 포함되어 있지 않습니다. 따라서 제공된 문서만으로는 이 현상의 원인을 설명할 수 없습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | Loop 프로퍼티가 활성화 된 경우, 파티클의 방출 주기가 돌아와서 방출을 반복할 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * AreaParticleComponent <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> * BasicParticleComponent <img

[task] | code [pass] | ⏳ 미판정 [title] | WebViewComponent [question] | WebViewComponent가 있는 엔티티에 OnBeginPlay에서 _EntityService로 /ui/WebViewGroup을 확인하고 없으면 _SpawnService:SpawnByModelId로 생성한 뒤, SpriteGUIRendererComponent와 UITransformComponent를 이용해 화면 우측 상단에 URL 입력 필드와 이전/다음 버튼 UI를 배치하는 스크립트를 작성해줘 [answer] | 제공된 참고 문서에 포함된 WebViewComponent 예제 코드를 기반으로, WebViewComponent가 있는 엔티티에 OnBeginPlay에서 UI를 생성하고 배치하는 스크립트를 작성했습니다. 참고 문서의 예제에서 `/ui/WebViewGroup` 경로 확인 및 생성, `model://uigroup`, `model://uibutton`, `model://uitext` 모델 ID 사용, `UITransformComponent`와 `SpriteGUIRendererComponent`를 통한 우측 상단 배치가 명시되어 있습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | `+`, `-`키로 웹뷰 화면을 확대/축소하는 예제입니다. 화면 우측에 주소 입력 UI와 앞으로 가기, 뒤로 가기 버튼이 생성됩니다. WebViewComponent가 있는 엔티티에 새로운 컴포넌트를 만들어 추가하고, 아래 코드를 작성합니다. ```lua Method: [client only] void OnBeginPlay () { local webview = self.Entity.WebViewComponent if webview == nil then log_error("Entity doesn't have WebView

[task] | two_turn [pass] | ⏳ 미판정 [title] | WheelJointComponent [question] | WheelJointComponent에서 MotorEnable, MotorSpeed, MaxMotorTorque 프로퍼티를 설정하는 메서드들은 어떤 순서로 호출해야 하는가요? [answer] | 제공된 문서에는 `SetMotorEnable`, `SetMotorSpeed`, `SetMaxMotorTorque` 메서드들을 호출해야 하는 **특정 순서**나 **의존 관계**에 대한 명시적인 지침이 없습니다. 문서에는 각 메서드가 순번(index)에 해당하는 Joint의 해당 값을 설정한다는 설명만 있을 뿐, "A를 먼저 호출해야 B가 동작한다"거나 "B를 호출하기 전에 A를 호출해야 한다"는 내용이 포함되어 있지 않습니다. 따라서, 문서상으로는 **호출 순서에 제한이 없으며, 각 메서드를 독립적으로 호출하여 값을 설정할 수 [followup] | 서버에서만 실행되도록 [server only] 속성을 붙여, 바퀴의 모터를 활성화하고 속도를 제어하는 OnUpdate 함수 내부 코드를 작성해 주세요. [followup_answer] | `WheelJointComponent`의 `SetMotorEnable`과 `SetMotorSpeed` 메서드를 사용하여 바퀴의 모터를 활성화하고 속도를 제어하는 `OnUpdate` 함수를 작성했습니다. 참고로, `AddJoint` 메서드의 시그니처는 `int32 AddJoint(Entity targetEntity, Vector2 localAnchorA, Vector2 localAnchorB)`로 3개의 인자를 받지만, 문서의 예제 코드에서는 4개의 인자(거리 포함)를 전달하는 것으로 보입니다. 이는 문서 내 예제가 `Distanc [scores] | [judge_reason] | [source_doc] | WheelJoint를 생성, 삭제합니다. 연결된 강체가 바퀴처럼 동작합니다. # Properties - **SyncList<WheelJoint> Joints [Sync] [ReadOnly]** Joint 정보를 설정합니다. ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가 Enabl

[task] | single_turn [pass] | ⏳ 미판정 [title] | ParticleLoopEvent [question] | UIAreaParticleComponent에서 발생한 ParticleLoopEvent를 서버 스크립트에서 처리할 수 있나요? [answer] | 아니요, `UIAreaParticleComponent`에서 발생하는 `ParticleLoopEvent`는 서버 스크립트에서 처리할 수 없습니다. `UIAreaParticleComponent`는 **Client** 공간에서만 이벤트를 발생시키도록 설계되어 있습니다. 따라서 서버 측 스크립트에서는 이 이벤트를 수신하거나 핸들러를 등록할 수 없습니다. 참고로, `AreaParticleComponent`, `BasicParticleComponent`, `SpriteParticleComponent`와 같은 일반 파티클 컴포넌트는 Serv [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | Loop 프로퍼티가 활성화 된 경우, 파티클의 방출 주기가 돌아와서 방출을 반복할 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * AreaParticleComponent <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> * BasicParticleComponent <img

[task] | single_turn [pass] | ⏳ 미판정 [title] | WheelJointComponent [question] | SetCollideConnected를 false로 설정하면 연결된 두 강체끼리 충돌이 완전히 무시되는 건지, 아니면 바퀴가 회전할 때만 충돌이 비활성화되는 건지 차이를 알고 싶습니다. [answer] | 참고 문서에 `SetCollideConnected` 메서드에 대한 설명은 "순번이 index에 해당하는 Joint의 CollideConnected 값을 설정합니다."라는 내용뿐입니다. 문서에는 이 값이 `false`로 설정되었을 때 충돌이 "완전히 무시되는지" 아니면 "바퀴 회전 시에만 비활성화되는지"에 대한 구체적인 동작 원리나 차이에 대한 정보가 포함되어 있지 않습니다. 따라서 주어진 문서만으로는 두 경우의 차이를 설명할 수 없습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | WheelJoint를 생성, 삭제합니다. 연결된 강체가 바퀴처럼 동작합니다. # Properties - **SyncList<WheelJoint> Joints [Sync] [ReadOnly]** Joint 정보를 설정합니다. ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가 Enabl

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