← 목록

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

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

[task] | instruction_following [pass] | ⏳ 미판정 [title] | PrismaticJointComponent [question] | PrismaticJointComponent의 GoUp()과 GoDown() 메서드에서 SetMotorSpeed 호출 시 사용하는 두 번째 인자 값과 그 의미(상승/하강 방향)를 2문장 이내로 설명하세요. [answer] | `GoUp()`에서는 두 번째 인자로 `3`을, `GoDown()`에서는 `-3`을 전달합니다. 이는 각각 양수 값이 상승 방향, 음수 값이 하강 방향을 의미함을 나타냅니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | ```lua Method: [server] void GoUp () { self.Entity.PrismaticJointComponent:SetMotorSpeed(1, 3) } [server] void GoDown () { self.Entity.PrismaticJointComponent:SetMotorSpeed(1, -3) } Event Handler: [service: InputService] HandleKeyDownEvent (KeyDownEvent event) { --------------- Native Event Sen

[task] | instruction_following [pass] | ⏳ 미판정 [title] | PrismaticJointComponent [question] | InputService의 HandleKeyDownEvent에서 W키와 S키를 제외한 다른 키 입력 시 발생하는 동작 또는 생략되는 처리 과정을 1문장으로 답변하세요. [answer] | W키와 S키가 아닌 다른 키가 입력되면 `if`-`elseif` 조건을 모두 통과하지 못하여 추가적인 동작 없이 해당 이벤트 처리가 생략됩니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | ```lua Method: [server] void GoUp () { self.Entity.PrismaticJointComponent:SetMotorSpeed(1, 3) } [server] void GoDown () { self.Entity.PrismaticJointComponent:SetMotorSpeed(1, -3) } Event Handler: [service: InputService] HandleKeyDownEvent (KeyDownEvent event) { --------------- Native Event Sen

[task] | code [pass] | ⏳ 미판정 [title] | PhysicsColliderComponent [question] | 물리 강체가 충돌을 시작할 때 PhysicsContactBeginEvent 를 처리하여 충돌 상대의 이름을 로그로 출력하는 스크립트를 작성해줘 [answer] | PhysicsColliderComponent의 `OnContactBegin` 메서드를 오버라이드하여 `PhysicsContactBeginEvent`를 처리할 수 있습니다. 이벤트 객체를 통해 충돌 상대에 대한 정보를 얻을 수 있으며, 해당 엔티티의 이름을 로그로 출력하는 스크립트는 다음과 같습니다. 참고: `PhysicsContactBeginEvent` 객체의 정확한 프로퍼티 구조(예: `OtherEntity` 또는 `OtherCollider` 등)는 제공된 문서에 명시되어 있지 않으므로, 일반적으로 충돌 이벤트에서 상대 엔티티를 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | - **PhysicsRigidbodyComponent GetAttachedPhysicsRigidbody()** 연결된 PhysicsRigidbodyComponent를 반환합니다. - **void OnContactBegin(PhysicsContactBeginEvent beginEvent) [ScriptOverridable]** 두 물리 강체가 충돌을 시작할 때 호출됩니다. - **void OnContactEnd(PhysicsContactEndEvent endEvent) [ScriptOverridable]** 두 물리 강체의

[task] | code [pass] | ⏳ 미판정 [title] | PhysicsRigidbodyComponent [question] | PhysicsRigidbodyComponent의 ApplyLinearImpulse와 SetLinearVelocity 메서드를 활용해 터치 입력 시 상방향으로 점프하는 스크립트를 작성해줘 [answer] | PhysicsRigidbodyComponent의 `ApplyLinearImpulse`와 `SetLinearVelocity` 메서드를 비교하여, 터치 입력 시 상방향으로 점프하는 기능을 구현했습니다. 일반적으로 점프 동작은 순간적인 힘(충격량)을 적용하는 `ApplyLinearImpulse`가 물리적으로 더 자연스럽고, 질량에 영향을 받아 다양한 강체에 적용하기 용이합니다. 반면 `SetLinearVelocity`는 강체의 현재 속도를 즉시 지정값으로 덮어쓰는 방식으로, 질량에 영향을 받지 않습니다. 아래 예제는 `HandleTo [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | - **void ApplyAngularImpulse(float impulse)** 강체에 반시계 방향으로(CCW) 각 충격량을 적용합니다. - **void ApplyForce(Vector2 force)** 강체의 무게 중심에 특정 방향으로 힘을 가합니다. - **void ApplyForce(Vector2 force, Vector2 worldPoint)** 강체에 월드 상 특정 위치에서 특정 방향으로 힘을 가합니다. - **void ApplyLinearImpulse(Vector2 impulse)** 강체의 무게 중심에

[task] | single_turn [pass] | ⏳ 미판정 [title] | PrismaticJointComponent [question] | MotorSpeed를 변경했을 때 실제 이동 속도가 즉시 반영되지 않고 지연되는 현상이 발생하는 원인과 해결 방법을 알고 싶습니다. [answer] | 제공된 참고 문서에는 `PrismaticJointComponent`의 프로퍼티, 메서드, 예제 코드만 포함되어 있습니다. 물리 엔진의 내부 동작 원리, 프레임 업데이트 주기, 또는 `MotorSpeed` 변경 시 지연이 발생하는 구체적인 원인이나 해결 방법이 문서에 명시되어 있지 않습니다. 따라서 문서에 근거하여 지연 현상의 원인과 해결 방법을 설명할 수 없습니다. 다만, 문서에 포함된 `PrismaticJointComponent`의 `MotorSpeed` 관련 메서드 사용법은 다음과 같습니다. ```lua Method: [s [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | PrismaticJoint를 생성, 삭제할 수 있습니다. 연결된 강체가 특정 축 방향으로만 상대적 이동하도록 제한할 수 있습니다. # Properties - **SyncList<PrismaticJoint> Joints [Sync] [ReadOnly]** Joint의 정보를 설정합니다. ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromIn

[task] | two_turn [pass] | ⏳ 미판정 [title] | RevoluteJointComponent [question] | SetMotorSpeed의 두 번째 인자(속도)를 음수(-10)로 지정했을 때 회전 방향이 어떻게 결정되는지 알려주세요. [answer] | 참고 문서에는 `SetMotorSpeed` 메서드의 두 번째 인자로 음수(예: `-10`)를 전달했을 때의 구체적인 회전 방향(시계 방향 또는 반시계 방향)에 대한 설명이 없습니다. 문서에는 W 키를 누르면 `10`을, S 키를 누르면 `-10`을 전달하는 코드 예제만 제시되어 있을 뿐, 이 값들이 물리적으로 어떤 방향의 회전을 의미하는지에 대한 정의는 포함되어 있지 않습니다. 따라서 해당 인자의 부호에 따른 정확한 회전 방향은 문서 기준으로 판단할 수 없습니다. [followup] | 만약 TargetEntityRef가 지정되지 않은 상태에서 SetMotorSpeed를 호출하면 에러가 발생하거나 특정 동작을 하는지 확인하고 싶어요. [followup_answer] | 제공된 참고 문서에는 `TargetEntityRef`가 지정되지 않은 상태에서 `SetMotorSpeed`를 호출했을 때 발생하는 에러나 특정 동작에 대한 정보가 없습니다. 문서에는 `TargetEntityRef`로 지정된 Entity를 회전시키는 예제 코드와 `SetMotorSpeed` 메서드의 사용 예시(속도 값 10, -10, 0)만 포함되어 있을 뿐, 해당 레퍼런스가 비어 있거나 유효하지 않을 때의 예외 처리나 동작 방식에 대한 설명은 포함되어 있지 않습니다. [scores] | [judge_reason] | [source_doc] | W, S를 누르면 TargetEntityRef로 지정한 Entity를 회전시키는 예제입니다. ```lua Method: [server] void GoUp ( ) { self.Entity.RevoluteJointComponent:SetMotorSpeed(1, 10) } [server] void GoDown ( ) { self.Entity.RevoluteJointComponent:SetMotorSpeed(1, -10) } [server] void Stop ( ) { self.Entity.RevoluteJointComponen

[task] | two_turn [pass] | ⏳ 미판정 [title] | PhysicsSimulatorComponent [question] | SetPositionIteration과 SetVelocityIteration 메서드의 사용 예시를 보여주세요 [answer] | `SetPositionIteration`과 `SetVelocityIteration`은 물리 연산의 정밀도를 조절하는 메서드로, 클라이언트 측에서 적용됩니다. 서버에서는 이 메서드가 적용되지 않습니다. * `SetPositionIteration(count)`: 위치 연산 반복 횟수 설정 (최소 1, 최대 300) * `SetVelocityIteration(count)`: 속도 연산 반복 횟수 설정 (최소 1, 최대 30) 아래는 엔티티가 트리거 영역에 진입할 때 물리 시뮬레이터의 연산 정밀도를 변경하는 예제입니다. ``` [followup] | 서버 환경에서 SetPositionIteration 메서드를 호출했을 때 어떤 결과가 나오며, 클라이언트와 서버의 연산 횟수 차이를 고려한 최적의 코드 작성 방법은 무엇인가요 [followup_answer] | `SetPositionIteration` 메서드는 **서버에서는 적용되지 않습니다**. 참고 문서에 따르면 `SetPositionIteration`과 `SetVelocityIteration` 메서드 모두 "서버는 적용되지 않습니다"라고 명시되어 있습니다. 따라서 서버 환경에서 이 메서드를 호출해도 물리 엔진의 위치 연산 반복 횟수는 변경되지 않습니다. ### 최적의 코드 작성 방법 서버와 클라이언트에서 다른 동작을 수행해야 하는 경우, `IsClient()` 또는 `IsServer()` 메서드를 사용하여 실행 환경을 확인한 후 [scores] | [judge_reason] | [source_doc] | 맵에 물리 법칙을 적용합니다. 물리 연산과 관련된 설정을 조절할 수 있습니다. # Properties - **Vector2 Gravity [Sync]** 물리 연산의 중력 값을 설정합니다. - **boolean Paused [Sync]** 물리 연산의 일시정지 여부를 설정합니다. - **Vector2 WorldBounds [Sync] [ReadOnly]** 물리 연산 범위를 설정합니다. 엔티티가 범위를 벗어나면 물리 연산을 하지 않습니다. 예를 들어, 값을 (100, 100)으로 설정하면 원점(0, 0)을 중심으로 가

[task] | single_turn [pass] | ⏳ 미판정 [title] | PhysicsSimulatorComponent [question] | PhysicsSimulatorComponent의 WorldBounds 값을 (100, 100)으로 설정하면 실제 물리 연산이 적용되는 사각형 영역의 크기는 얼마이며, 중심점은 어디인가요? [answer] | `PhysicsSimulatorComponent`의 `WorldBounds` 값을 `(100, 100)`으로 설정하면, 물리 연산이 적용되는 사각형 영역의 크기는 가로 200, 세로 200입니다. 이 영역의 중심점은 원점 `(0, 0)`입니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 맵에 물리 법칙을 적용합니다. 물리 연산과 관련된 설정을 조절할 수 있습니다. # Properties - **Vector2 Gravity [Sync]** 물리 연산의 중력 값을 설정합니다. - **boolean Paused [Sync]** 물리 연산의 일시정지 여부를 설정합니다. - **Vector2 WorldBounds [Sync] [ReadOnly]** 물리 연산 범위를 설정합니다. 엔티티가 범위를 벗어나면 물리 연산을 하지 않습니다. 예를 들어, 값을 (100, 100)으로 설정하면 원점(0, 0)을 중심으로 가

[task] | instruction_following [pass] | ⏳ 미판정 [title] | PrismaticJointComponent [question] | HandleKeyDownEvent 이벤트 핸들러에서 W키와 S키 입력에 따라 실행되는 메서드 호출 로직을 코드 블록으로만 출력하고, 설명은 주석으로만 작성하세요. [answer] | ```lua Event Handler: [service: InputService] HandleKeyDownEvent(KeyDownEvent event) { --------------- Native Event Sender Info ---------------- -- Sender: InputService -- Space: Client --------------------------------------------------------- -- Parameters local key = event.key ----------- [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | ```lua Method: [server] void GoUp () { self.Entity.PrismaticJointComponent:SetMotorSpeed(1, 3) } [server] void GoDown () { self.Entity.PrismaticJointComponent:SetMotorSpeed(1, -3) } Event Handler: [service: InputService] HandleKeyDownEvent (KeyDownEvent event) { --------------- Native Event Sen

[task] | single_turn [pass] | ⏳ 미판정 [title] | PhysicsSimulatorComponent [question] | SetPositionIteration 메서드를 300으로 설정해도 서버에서는 물리 연산 결과가 정교해지지 않는 이유는 무엇인가요? [answer] | `SetPositionIteration` 메서드의 설명에 "서버는 적용되지 않습니다"라고 명시되어 있습니다. 따라서 클라이언트에서 300으로 설정해도 서버에서는 해당 설정이 무시되며, 물리 연산 결과가 정교해지지 않습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 맵에 물리 법칙을 적용합니다. 물리 연산과 관련된 설정을 조절할 수 있습니다. # Properties - **Vector2 Gravity [Sync]** 물리 연산의 중력 값을 설정합니다. - **boolean Paused [Sync]** 물리 연산의 일시정지 여부를 설정합니다. - **Vector2 WorldBounds [Sync] [ReadOnly]** 물리 연산 범위를 설정합니다. 엔티티가 범위를 벗어나면 물리 연산을 하지 않습니다. 예를 들어, 값을 (100, 100)으로 설정하면 원점(0, 0)을 중심으로 가

[task] | code [pass] | ⏳ 미판정 [title] | PhysicsRigidbodyComponent [question] | PhysicsRigidbodyComponent의 Sleep과 Wake 메서드를 활용해 3초 간격으로 강체의 수면 상태를 전환하는 스크립트를 작성해줘 [answer] | `PhysicsRigidbodyComponent`의 `Sleep()`와 `Wake()` 메서드를 사용하여 3초마다 강체의 수면 상태를 번갈아 전환하는 스크립트입니다. ```lua Property: [None] boolean IsAsleep = false Method: [server] void OnBeginPlay() { -- 초기 상태를 깨어 있는 상태로 설정 self.Entity.PhysicsRigidbodyComponent:Wake() self.IsAsleep = false -- 3초 간 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | - **void ApplyAngularImpulse(float impulse)** 강체에 반시계 방향으로(CCW) 각 충격량을 적용합니다. - **void ApplyForce(Vector2 force)** 강체의 무게 중심에 특정 방향으로 힘을 가합니다. - **void ApplyForce(Vector2 force, Vector2 worldPoint)** 강체에 월드 상 특정 위치에서 특정 방향으로 힘을 가합니다. - **void ApplyLinearImpulse(Vector2 impulse)** 강체의 무게 중심에

[task] | single_turn [pass] | ⏳ 미판정 [title] | PulleyJointComponent [question] | AddJoint 호출 시 실패하여 -1이 반환되는 원인은 무엇인가요? [answer] | 참고 문서에는 `AddJoint` 메서드가 성공 시 index, 실패 시 -1을 반환한다고만 명시되어 있으며, 구체적으로 어떤 조건에서 실패하여 -1이 반환되는지에 대한 원인은 설명되어 있지 않습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | PulleyJoint를 생성, 삭제합니다. 연결된 두 강체가 도르래처럼 이동합니다. # Properties - **SyncList<PulleyJoint> Joints [Sync] [ReadOnly]** Joint 정보를 설정합니다. ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가

[task] | single_turn [pass] | ⏳ 미판정 [title] | PhysicsRigidbodyComponent [question] | PhysicsContactBeginEvent 핸들러 안에서 ContactedBodyEntity에 접근할 때 PhysicsRigidbodyComponent가 null이 나와서 에러가 나는 원인이 무엇인가요? [answer] | PhysicsContactBeginEvent 핸들러에서 `ContactedBodyEntity.PhysicsRigidbodyComponent`가 null(또는 접근 불가)로 나타나는 주된 원인은 **접촉한 대상 엔티티(`ContactedBodyEntity`)에 `PhysicsRigidbodyComponent`가 부착되어 있지 않기 때문**입니다. 물리 접촉 이벤트(`PhysicsContactBeginEvent`)는 `PhysicsColliderComponent`가 있는 두 개 이상의 엔티티가 접촉할 때 발생하지만, 이 접촉에 관여한 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | ```lua Event Handler: [self] HandlePhysicsContactBeginEvent (PhysicsContactBeginEvent event) { --------------- Native Event Sender Info ---------------- -- Sender: PhysicsColliderComponent -- Space: Server, Client --------------------------------------------------------- -- Parameters local

[task] | single_turn [pass] | ⏳ 미판정 [title] | PhysicsColliderComponent [question] | 물리 충돌이 시작될 때만 특정 액션을 수행하려면 OnContactBegin 이벤트에서 어떤 조건을 확인해야 하며, PhysicsContactBeginEvent 객체에서 접근할 수 있는 주요 프로퍼티는 무엇인가요? [answer] | PhysicsColliderComponent에서 `OnContactBegin`은 두 물리 강체가 충돌을 **시작할 때** 정확히 한 번만 호출되는 이벤트 핸들러입니다. 따라서 "충돌이 시작될 때만" 특정 액션을 수행하려면 이 핸들러 내부에서 조건을 확인하고 액션을 실행하면 됩니다. 참고 문서에 따르면 `PhysicsContactBeginEvent` 객체 자체에서 접근할 수 있는 구체적인 프로퍼티 목록(예: `OtherEntity`, `ContactPoint` 등)은 명시되어 있지 않습니다. 문서에는 `PhysicsContactBe [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | - **PhysicsRigidbodyComponent GetAttachedPhysicsRigidbody()** 연결된 PhysicsRigidbodyComponent를 반환합니다. - **void OnContactBegin(PhysicsContactBeginEvent beginEvent) [ScriptOverridable]** 두 물리 강체가 충돌을 시작할 때 호출됩니다. - **void OnContactEnd(PhysicsContactEndEvent endEvent) [ScriptOverridable]** 두 물리 강체의

[task] | code [pass] | ⏳ 미판정 [title] | PhysicsRigidbodyComponent [question] | PhysicsRigidbodyComponent의 GetLinearVelocity와 SetAngularVelocity 메서드를 활용해 현재 선형속도의 크기에 비례하여 각속도를 조절하는 스크립트를 작성해줘 [answer] | `PhysicsRigidbodyComponent`의 `GetLinearVelocity()`와 `SetAngularVelocity()` 메서드를 사용하여, 현재 선형속도의 크기에 비례하여 각속도를 조절하는 스크립트를 작성합니다. 선형속도의 크기는 `Vector2`의 X, Y 성분을 이용해 피타고라스 정리로 계산할 수 있습니다. (참고 문서에 `Magnitude` 같은 메서드가 명시되어 있지 않으므로, X, Y 성분을 직접 사용하여 크기를 계산하는 것이 안전합니다.) ```lua Property: [None] number Angul [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | - **void ApplyAngularImpulse(float impulse)** 강체에 반시계 방향으로(CCW) 각 충격량을 적용합니다. - **void ApplyForce(Vector2 force)** 강체의 무게 중심에 특정 방향으로 힘을 가합니다. - **void ApplyForce(Vector2 force, Vector2 worldPoint)** 강체에 월드 상 특정 위치에서 특정 방향으로 힘을 가합니다. - **void ApplyLinearImpulse(Vector2 impulse)** 강체의 무게 중심에

[task] | instruction_following [pass] | ⏳ 미판정 [title] | RevoluteJointComponent [question] | Joint의 각도 제한을 활성화하고 상하한 각도를 설정하는 mLua 코드를 주석으로만 설명을 붙여서 출력하세요. [answer] | ```lua Method: [server] void SetAngleLimits() { -- Joint의 각도 제한(UseLimits)을 활성화합니다. -- 첫 번째 인자 0은 추가한 Joint의 인덱스(index)입니다. self.Entity.RevoluteJointComponent:SetUseLimits(0, true) -- Joint의 하한 각도(LowerAngle)를 설정합니다. self.Entity.RevoluteJointComponent:SetLowerAngle(0, -45.0) [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | RevoluteJoint를 생성, 삭제합니다. 연결된 강체끼리의 상대적 회전을 제어합니다. # Properties - **SyncList<RevoluteJoint> Joints [Sync] [ReadOnly]** Joint 정보를 설정합니다. ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이

[task] | two_turn [pass] | ⏳ 미판정 [title] | PhysicsRigidbodyComponent [question] | Restitution와 Friction 프로퍼티의 값 범위와 물리적 의미에 대해 자세히 설명해 주세요. [answer] | PhysicsRigidbodyComponent의 `Restitution`과 `Friction` 프로퍼티는 물리 엔진에서 충돌과 마찰을 제어하는 핵심 값입니다. 두 프로퍼티 모두 0 이상의 값만 설정할 수 있으며, `[Sync]` 속성을 가지고 있어 서버와 클라이언트 간에 동기화됩니다. **Restitution (반발 계수)** * **값 범위:** 0 이상 (일반적으로 0~1 사이에서 사용) * **물리적 의미:** 충돌 후 물체가 튀어 오르는 정도를 결정합니다. * **0:** 완전 비탄성 충돌에 가깝습니다. [followup] | Restitution이 0과 1 사이의 값을 가질 때 반발력의 변화는 어떻게 되며, Friction이 0일 때 미끄러짐 현상을 방지하기 위해 LinearDamping이나 AngularDamping을 어떻게 조합하여 조정하는지 코드 예시를 요청합니다. [followup_answer] | **Restitution의 반발력 변화** `Restitution`은 0과 1 사이의 값을 가질 때 충돌 후 튀어 오르는 정도를 결정합니다. * **0에 가까울수록:** 완전 비탄성 충돌에 가까워지며, 충돌 후 거의 튀어 오르지 않고 에너지를 흡수하는 형태입니다. * **1에 가까울수록:** 완전 탄성 충돌에 가까워지며, 충돌 에너지를 거의 손실 없이 반사시켜 강하게 튀어 오릅니다. * 따라서 0과 1 사이의 값(예: 0.5)은 두 극단 사이의 중간 정도의 반발력을 가지며, 값이 커질수록 반발력이 강해집니다. **Fri [scores] | [judge_reason] | [source_doc] | 엔티티가 물리 엔진에 의해 제어됩니다. 물리 연산에 영향을 주는 값을 설정할 수 있습니다. # Properties - **float AngularDamping [Sync]** 각속도의 변화에 대한 저항 계수를 설정합니다. 값이 클수록 각속도 변화에 더 많은 힘이 필요합니다. 0 이상의 값만 설정할 수 있습니다. - **BodyType BodyType [Sync]** 강체 타입을 설정합니다. - **PhysicsCollisionDetectionMode CollisionDetectionMode [Sync]** 물리 충돌의

[task] | instruction_following [pass] | ⏳ 미판정 [title] | PulleyJointComponent [question] | PulleyJointComponent의 AddJoint 메서드 시그니처를 정확히 복기하되, 매개변수 6개와 기본값이 포함된 함수 선언 문장 하나만 출력하세요. [answer] | `int32 AddJoint(Entity targetEntity, Vector2 localAnchorA, Vector2 localAnchorB, Vector2 groundAnchorA, Vector2 groundAnchorB, float ratio = 1)` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | PulleyJoint를 생성, 삭제합니다. 연결된 두 강체가 도르래처럼 이동합니다. # Properties - **SyncList<PulleyJoint> Joints [Sync] [ReadOnly]** Joint 정보를 설정합니다. ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가

[task] | single_turn [pass] | ⏳ 미판정 [title] | PrismaticJointComponent [question] | PrismaticJointComponent의 SetMotorSpeed 메서드에서 첫 번째 인자 1 은 무엇을 의미하며, 이 값을 변경하면 동작에 어떤 차이가 발생하나요? [answer] | 제시된 참고 문서에는 `PrismaticJointComponent:SetMotorSpeed` 메서드의 첫 번째 인자 `1`이 구체적으로 무엇을 의미하는지(예: 모터 인덱스, 축 번호 등)에 대한 설명이 포함되어 있지 않습니다. 또한, 이 값을 변경했을 때 발생하는 동작 차이나 다른 인자 값에 대한 정보도 문서에 명시되어 있지 않습니다. 따라서 문서에 근거하여 첫 번째 인자의 정확한 의미나 값 변경 시의 차이를 설명할 수 없습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | ```lua Method: [server] void GoUp () { self.Entity.PrismaticJointComponent:SetMotorSpeed(1, 3) } [server] void GoDown () { self.Entity.PrismaticJointComponent:SetMotorSpeed(1, -3) } Event Handler: [service: InputService] HandleKeyDownEvent (KeyDownEvent event) { --------------- Native Event Sen

[task] | two_turn [pass] | ⏳ 미판정 [title] | PhysicsRigidbodyComponent [question] | PhysicsRigidbodyComponent의 주요 프로퍼티와 역할이 무엇인지 설명해 주세요. [answer] | PhysicsRigidbodyComponent는 엔티티를 물리 엔진의 제어下に 두어, 중력, 마찰, 탄성 등 물리적 움직임에 영향을 주는 값을 설정하는 컴포넌트입니다. 주요 프로퍼티와 그 역할은 다음과 같습니다. * **BodyType**: 강체 타입을 설정합니다. * **Mass**: 질량 값을 설정합니다. Collider의 넓이와 질량을 이용해 밀도를 계산하는 데 사용됩니다. * **GravityScale**: 중력에 영향을 받는 정도를 설정합니다. 값이 `0`이면 중력의 영향을 받지 않으며, `1`이면 표준 중력의 [followup] | FixedRotation과 UseDensity를 함께 true로 설정했을 때 질량 계산과 회전 제어에 어떤 구체적인 차이가 발생하는지, 그리고 GravityScale이 0인 상태에서의 예외 동작을 코드로 어떻게 확인해야 하는지 알려주세요. [followup_answer] | 제공된 참고 문서를 바탕으로 `FixedRotation`과 `UseDensity`의 설정 시나리오 및 `GravityScale`의 동작을 설명합니다. ### 1. FixedRotation과 UseDensity를 함께 true로 설정했을 때의 차이 **회전 제어 (FixedRotation = true)** * `FixedRotation`이 `true`로 설정되면 물체가 물리 상호작용에 의한 회전을 하지 않습니다. 즉, 충돌이나 힘의 작용으로 인해 엔티티가 회전하는 현상이 물리 엔진 레벨에서 차단됩니다. **질량 계산 (Use [scores] | [judge_reason] | [source_doc] | 엔티티가 물리 엔진에 의해 제어됩니다. 물리 연산에 영향을 주는 값을 설정할 수 있습니다. # Properties - **float AngularDamping [Sync]** 각속도의 변화에 대한 저항 계수를 설정합니다. 값이 클수록 각속도 변화에 더 많은 힘이 필요합니다. 0 이상의 값만 설정할 수 있습니다. - **BodyType BodyType [Sync]** 강체 타입을 설정합니다. - **PhysicsCollisionDetectionMode CollisionDetectionMode [Sync]** 물리 충돌의

[task] | single_turn [pass] | ⏳ 미판정 [title] | PrismaticJointComponent [question] | 서버 측에서 SetMotorSpeed 를 호출했는데 엔티티가 움직이지 않을 때, 물리 엔진이 활성화되지 않았거나 다른 제약 조건 때문에 생기는 오류의 원인은 무엇일까요? [answer] | 제공된 참고 문서에는 `PrismaticJointComponent`의 `SetMotorSpeed` 메서드 사용 예시만 포함되어 있으며, 물리 엔진이 비활성화되었거나 다른 제약 조건으로 인해 엔티티가 움직이지 않는 구체적인 원인이나 진단 방법은 문서에 명시되어 있지 않습니다. 따라서 제공된 정보 범위 내에서는 이 오류의 원인을 정확히 설명할 수 없습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | ```lua Method: [server] void GoUp () { self.Entity.PrismaticJointComponent:SetMotorSpeed(1, 3) } [server] void GoDown () { self.Entity.PrismaticJointComponent:SetMotorSpeed(1, -3) } Event Handler: [service: InputService] HandleKeyDownEvent (KeyDownEvent event) { --------------- Native Event Sen

[task] | single_turn [pass] | ⏳ 미판정 [title] | PulleyJointComponent [question] | AddJoint에서 groundAnchorA와 groundAnchorB는 로컬 좌표계와 지면 좌표계 중 어디에 해당하는 값인가요? [answer] | `AddJoint` 메서드의 파라미터 이름과 메서드 설명을 보면, `groundAnchorA`와 `groundAnchorB`는 **지면 좌표계(세계 좌표계)**에 해당하는 값입니다. 반대로, `localAnchorA`와 `localAnchorB`는 이름에서 알 수 있듯이 로컬 좌표계에 해당하는 값입니다. 따라서 `AddJoint` 호출 시: * `localAnchorA`, `localAnchorB`: 연결될 엔티티의 로컬 좌표계 기준 앵커 위치 * `groundAnchorA`, `groundAnchorB`: 지면(세계) [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | PulleyJoint를 생성, 삭제합니다. 연결된 두 강체가 도르래처럼 이동합니다. # Properties - **SyncList<PulleyJoint> Joints [Sync] [ReadOnly]** Joint 정보를 설정합니다. ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가

[task] | single_turn [pass] | ⏳ 미판정 [title] | PrismaticJointComponent [question] | UpperTranslation과 LowerTranslation을 설정할 때 SetUseLimits를 반드시 true로 해야 하는지, 아니면 따로 설정해야 하는지 차이를 설명해 주실 수 있나요? [answer] | 제공된 문서에 따르면, `UpperTranslation`과 `LowerTranslation` 값이 실제로 적용되도록 하기 위해서는 `SetUseLimits`를 `true`로 설정해야 합니다. 문서에는 각 메서드의 정확한 동작 원리나 의존 관계에 대한 명시적인 설명은 없지만, 물리 엔진의 일반적 원리와 메서드 이름(`UseLimits`)을 고려할 때, 한계 값(Limits)을 사용할지 여부(`UseLimits`)를 `true`로 지정해야 `LowerTranslation`(최소 이동 거리)과 `UpperTranslation`(최대 이 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | PrismaticJoint를 생성, 삭제할 수 있습니다. 연결된 강체가 특정 축 방향으로만 상대적 이동하도록 제한할 수 있습니다. # Properties - **SyncList<PrismaticJoint> Joints [Sync] [ReadOnly]** Joint의 정보를 설정합니다. ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromIn

[task] | single_turn [pass] | ⏳ 미판정 [title] | PhysicsRigidbodyComponent [question] | ApplyForce와 ApplyLinearImpulse의 차이는 무엇이며, 언제 각각을 사용해야 하나요? [answer] | `ApplyForce`와 `ApplyLinearImpulse`는 모두 물리 강체(Rigidbody)에 힘을 가하는 함수이지만, 물리적으로 **힘(Force)**과 **충격량(Impulse)**의 차이로 인해 동작 방식과 사용 시기가 다릅니다. ### 1. 핵심 차이 | 구분 | `ApplyForce` | `ApplyLinearImpulse` | | :--- | :--- | :--- | | **물리적 개념** | **힘 (Force)**: 시간에 걸쳐 지속적으로 작용합니다. | **충격량 (Impulse)**: 순간적으로 큰 힘을 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | - **void ApplyAngularImpulse(float impulse)** 강체에 반시계 방향으로(CCW) 각 충격량을 적용합니다. - **void ApplyForce(Vector2 force)** 강체의 무게 중심에 특정 방향으로 힘을 가합니다. - **void ApplyForce(Vector2 force, Vector2 worldPoint)** 강체에 월드 상 특정 위치에서 특정 방향으로 힘을 가합니다. - **void ApplyLinearImpulse(Vector2 impulse)** 강체의 무게 중심에

[task] | instruction_following [pass] | ⏳ 미판정 [title] | PulleyJointComponent [question] | Joints 속성과 AddJoint 메서드의 반환 값을 비교하여, 성공 시 각각 어떤 데이터 타입과 값을 반환하는지 2행 표로 정리하세요. [answer] | | 구분 | 성공 시 데이터 타입 및 값 | | :--- | :--- | | `Joints` 속성 | `SyncList<PulleyJoint>` 타입의 리스트이며, 추가된 Joint 정보가 포함됩니다. | | `AddJoint` 메서드 | `int32` 타입이며, 성공 시 추가된 Joint의 인덱스(index)를 반환합니다. | [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | PulleyJoint를 생성, 삭제합니다. 연결된 두 강체가 도르래처럼 이동합니다. # Properties - **SyncList<PulleyJoint> Joints [Sync] [ReadOnly]** Joint 정보를 설정합니다. ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가

[task] | instruction_following [pass] | ⏳ 미판정 [title] | RevoluteJointComponent [question] | AddJoint 메서드의 파라미터와 반환값을 표로 정리해서 설명하세요. [answer] | RevoluteJointComponent의 `AddJoint` 메서드는 두 강체(Rigidbody) 사이에 회전 관절(Joint)을 생성하고 연결하는 역할을 합니다. 해당 메서드의 파라미터와 반환값은 다음과 같습니다. | 구분 | 이름 | 타입 | 설명 | | :--- | :--- | :--- | :--- | | **파라미터** | `targetEntity` | `Entity` | 연결될 대상 엔티티입니다. | | **파라미터** | `localAnchorA` | `Vector2` | 자기 엔티티(현재 컴포넌트가 붙어 있는 엔티티 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | RevoluteJoint를 생성, 삭제합니다. 연결된 강체끼리의 상대적 회전을 제어합니다. # Properties - **SyncList<RevoluteJoint> Joints [Sync] [ReadOnly]** Joint 정보를 설정합니다. ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이

[task] | instruction_following [pass] | ⏳ 미판정 [title] | RevoluteJointComponent [question] | RevoluteJointComponent에서 Joint를 추가하고 모터 속도를 설정하는 과정을 단계별 번호 목록으로 정리하세요. [answer] | RevoluteJointComponent에서 Joint를 추가하고 모터 속도를 설정하는 과정은 다음과 같습니다. 1. `AddJoint` 메서드를 호출하여 Joint를 추가합니다. * 이 메서드는 대상 엔티티(`targetEntity`)와 로컬 앵커 위치(`localAnchorA`, `localAnchorB`)를 인자로 받습니다. * 성공 시 생성된 Joint의 인덱스(`index`)를 반환하며, 실패 시 -1을 반환합니다. 2. 반환된 인덱스를 사용하여 `SetMotorSpeed` 메서드를 호출합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | RevoluteJoint를 생성, 삭제합니다. 연결된 강체끼리의 상대적 회전을 제어합니다. # Properties - **SyncList<RevoluteJoint> Joints [Sync] [ReadOnly]** Joint 정보를 설정합니다. ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이

[task] | instruction_following [pass] | ⏳ 미판정 [title] | PulleyJointComponent [question] | 특정 joint의 Ratio와 LocalAnchorA를 동시에 수정하는 mLua 코드 블록만 출력하고, 해당 메서드 호출 순서와 인자 의미는 주석으로 설명하세요. [answer] | ```lua Method: [server] void UpdateJoint(int32 index, float newRatio, Vector2 newLocalAnchorA) { -- 1. 해당 순번(index)의 Joint의 Ratio 값을 설정합니다. -- 인자: index (수정할 Joint의 순번), newRatio (새로운 Ratio 값) self.Entity.PulleyJointComponent:SetRatio(index, newRatio) -- 2. 해당 순번(index)의 Joint의 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | PulleyJoint를 생성, 삭제합니다. 연결된 두 강체가 도르래처럼 이동합니다. # Properties - **SyncList<PulleyJoint> Joints [Sync] [ReadOnly]** Joint 정보를 설정합니다. ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가

[task] | single_turn [pass] | ⏳ 미판정 [title] | PhysicsSimulatorComponent [question] | 엔티티의 Enable 상태는 true인데 PhysicsSimulatorComponent가 비활성화된 것처럼 동작하는 현상을 해결하려면 EnableInHierarchy 속성을 어떻게 확인해야 하나요? [answer] | `EnableInHierarchy` 속성은 해당 컴포넌트 자체가 `Enable` 상태이더라도, 상위 엔티티나 부모 계층 구조 중 하나라도 비활성화(`false`)되어 있으면 `false`를 반환하도록 설계되어 있습니다. 따라서 엔티티의 `Enable`은 `true`인데도 물리 시뮬레이션이 작동하지 않는 현상은 부모 엔티티의 활성화 상태 때문일 가능성이 높습니다. 해결을 위해 현재 컴포넌트의 계층 구조상 활성화 상태를 확인하려면 `self.Entity.PhysicsSimulatorComponent.EnableInHierarchy` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 맵에 물리 법칙을 적용합니다. 물리 연산과 관련된 설정을 조절할 수 있습니다. # Properties - **Vector2 Gravity [Sync]** 물리 연산의 중력 값을 설정합니다. - **boolean Paused [Sync]** 물리 연산의 일시정지 여부를 설정합니다. - **Vector2 WorldBounds [Sync] [ReadOnly]** 물리 연산 범위를 설정합니다. 엔티티가 범위를 벗어나면 물리 연산을 하지 않습니다. 예를 들어, 값을 (100, 100)으로 설정하면 원점(0, 0)을 중심으로 가

[task] | code [pass] | ⏳ 미판정 [title] | PhysicsSimulatorComponent [question] | 키 입력 이벤트에서 키 G를 누르면 PhysicsSimulatorComponent의 Gravity를 Vector2(0, -9.8)로 변경하고, 키 R을 누르면 Vector2(0, 0)으로 초기화하는 스크립트를 작성해줘. [answer] | 키 G를 누르면 중력을 `Vector2(0, -9.8)`으로, 키 R을 누르면 `Vector2(0, 0)`으로 설정하는 스크립트입니다. ```lua Event Handler: [server only] [self] HandleTriggerEnterEvent (TriggerEnterEvent event) { --------------- Native Event Sender Info ---------------- -- Sender: InputService -- Space: Client ------------------------- [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 맵에 물리 법칙을 적용합니다. 물리 연산과 관련된 설정을 조절할 수 있습니다. # Properties - **Vector2 Gravity [Sync]** 물리 연산의 중력 값을 설정합니다. - **boolean Paused [Sync]** 물리 연산의 일시정지 여부를 설정합니다. - **Vector2 WorldBounds [Sync] [ReadOnly]** 물리 연산 범위를 설정합니다. 엔티티가 범위를 벗어나면 물리 연산을 하지 않습니다. 예를 들어, 값을 (100, 100)으로 설정하면 원점(0, 0)을 중심으로 가

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