[task] | code [pass] | ✅ 통과 [title] | RigidbodyComponent [question] | RigidbodyComponent의 Gravity와 FallSpeedMaxX, FallSpeedMaxY 프로퍼티를 커스텀 값으로 설정하여 공중 낙하 속도를 제한하는 스크립트를 작성해줘. [answer] | `RigidbodyComponent`의 `Gravity`, `FallSpeedMaxX`, `FallSpeedMaxY` 프로퍼티를 직접 접근하여 값을 설정하는 방식으로 공중 낙하 속도를 제한하는 스크립트를 작성할 수 있습니다. 참고로 `FallSpeedMaxX`와 `FallSpeedMaxY`는 각각 공중에서의 X축, Y축 최대 속도 제한값을 보정하는 프로퍼티이며, `Gravity`는 중력값을 설정하는 프로퍼티입니다. 아래는 `OnBeginPlay()` 생명주기 메서드에서 해당 값들을 커스텀 값으로 초기화하는 스크립트입니다. `` [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | RigidbodyComponent 프로퍼티 접근 문법 및 문서상 정의된 API를 정확히 사용하여 요청된 기능을 구현했으며, 설명도 명확하고 적절합니다. [source_doc] | 메이플스토리 움직임을 적용합니다. 중력 및 가·감속 영향을 받습니다. # Properties - **float AirAccelerationX** 공중에서의 속도를 보정합니다. 값이 증가할 수록 공중에서의 이동 속도가 빨라집니다. - **float AirDecelerationX** 공중에서의 입력이 없을 경우 X축의 이동 속도가 얼마나 빠르게 멈추는지를 보정합니다. - **boolean ApplyClimbableRotation [Sync]** true인 경우 회전하거나 기울어진 사다리를 탄 캐릭터는 사다리의 모습을 따릅
[task] | code [pass] | ✅ 통과 [title] | ClimbableSpriteRendererComponent [question] | EntityService 를 이용해 "/maps/map01/obj" 경로에 있는 엔티티를 조회한 후 HandleTriggerEnterEvent 에서 충돌한 엔티티 이름이 "Player" 일 때 해당 엔티티의 ClimbableSpriteRendererComponent.TiledSize 를 Vector2(1, 3) 으로 설정하고 ResetColliderBox() 를 호출하는 스크립트를 작성해줘 [answer] | EntityService를 사용하여 지정된 경로에 있는 엔티티를 조회하고, `HandleTriggerEnterEvent` 이벤트에서 충돌한 엔티티의 이름이 "Player"인지 확인합니다. 조건이 충족되면 해당 엔티티의 `ClimbableSpriteRendererComponent.TiledSize`를 `Vector2(1, 3)`으로 설정하고 `ResetColliderBox()`를 호출하는 스크립트입니다. ```lua Method: [server] void ResizeRenderer (Vector2 tiledSize) { lo [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 질문에서 요구한 경로, 조건, API 호출을 참고 문서와 mLua 규칙에 정확히 준수하여 구현했으며, 설명이 간결하고 명확합니다. [source_doc] | - **OrderInLayerChangedEvent** Component의 OrderInLayer가 변경되었을 때 발생하는 이벤트입니다. - **SortingLayerChangedEvent** 컴포넌트의 SortingLayer가 변경되었을 때 발생하는 이벤트입니다. - **SpriteAnimPlayerChangeFrameEvent** 스프라이트 애니메이션의 프레임이 바뀔 때 발생하는 이벤트입니다. - **SpriteAnimPlayerEndEvent** 스프라이트 애니메이션 재생이 끝날 때 발생하는 이벤트입니다. - *
[task] | instruction_following [pass] | ✅ 통과 [title] | TileMapComponent [question] | TileMapComponent의 색상 변경 원리 및 충돌 범위 이탈 시 동작 방식을 3문장 이내로 요약해서 설명해 주세요. [answer] | 캐릭터가 엔티티의 충돌 범위에 진입하면 TileMapComponent의 색상이 설정된 값으로 변경됩니다. 이후 캐릭터가 충돌 범위에서 벗어나면 타일 맵은 본래 색상으로 되돌아옵니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=1 [judge_reason] | 참고 문서의 내용을 2문장 이내로 정확하고 간결하게 요약하여 질문에 충실히 답했습니다. [source_doc] | 캐릭터가 엔티티에 출동하면 타일 맵의 색상이 변경됩니다. 충돌 범위를 벗어나면 본래 색상으로 돌아오게 됩니다. ```lua Method: void SetColor (Color color) { local tileMap = _EntityService:GetEntityByPath("/maps/map01/TileMap") tileMap.TileMapComponent.Color = color } Event Handler: [self] HandleTriggerEnterEvent (TriggerEnterEvent event) { --
[task] | code [pass] | ✅ 통과 [title] | RigidbodyComponent [question] | RigidbodyClimbableAttachStartEvent가 발생하면 사다리 타기 시작을 로그로 남기고, RigidbodyClimbableDetachEndEvent 발생 시 종료 로그를 출력하는 스크립트를 작성해줘 [answer] | `RigidbodyClimbableAttachStartEvent`와 `RigidbodyClimbableDetachEndEvent`는 `RigidbodyComponent`에서 발생하는 이벤트입니다. 이 이벤트들은 각각 Avatar가 사다리나 로프를 타기 직전과 떨어진 직후에 트리거됩니다. 요구사항에 따라 두 이벤트 핸들러를 추가하고, 각각 시작과 종료 시점을 `log()` 함수를 통해 출력하는 스크립트는 다음과 같습니다. ```lua Event Handler: [self] HandleRigidbodyClimbableAttachSt [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서 정의에 따라 이벤트 핸들러를 정확히 구현하여 질문을 완벽하게 해결했습니다. [source_doc] | - **FootholdCollisionEvent** RigidBodyComponent가 발판에 충돌했을 때 발생하는 이벤트입니다. - **FootholdEnterEvent** 엔티티가 발판에 붙었을 때 발생하는 이벤트입니다. - **FootholdLeaveEvent** 엔티티가 발판에서 떨어졌을 때 발생하는 이벤트입니다. - **RigidbodyAttachEvent** 엔티티가 RigidbodyComponent:AttachTo(string, Vector3)를 통해 특정 엔티티에 붙었을 때 발생하는 이벤트입니다. 플레이
[task] | code [pass] | ✅ 통과 [title] | RigidbodyComponent [question] | 오른쪽 방향으로 10 단위 거리까지 발판이 이어져 있는지 확인하고 결과에 따라 힘의 방향을 반전시키는 스크립트를 작성해줘. [answer] | `RigidbodyComponent`의 `PredictFootholdEnd` 메서드를 사용하여 오른쪽 방향(`isForward: true`)으로 10 단위 거리까지 발판이 이어져 있는지 확인합니다. * **발판이 10 단위 이상 이어져 있다면 (`true`)**: 현재 힘의 X 방향을 유지하거나, 특정 방향으로 힘을 가합니다. (질문의 "반전"이라는 표현은 보통 벽이나 끝단에서 방향을 바꾸는 로직을 의미하므로, 여기서는 **끝단이 가까우면(`false`) 방향을 반전**시키고, **이어져 있으면(`true`) 현재 방향을 유지 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 PredictFootholdEnd 및 SetForce API 명세를 정확히 적용하여 요구된 로직을 구현했으며, mLua 문법도 올바르다. [source_doc] | # Methods - **void AddForce(Vector2 forcePower)** 엔티티에 가해지는 힘을 더합니다. 엔티티는 기존 힘에 추가로 더해진 힘의 방향으로 가·감속 운동을 하게 됩니다. - **void AttachTo(string entityId, Vector3 offset)** 이 엔티티를 entityId에 해당하는 엔티티에게 붙힙니다. 이로서 이 엔티티는 물리 동작을 하지 않고 붙혀진 엔티티의 이동에 종속되게 됩니다. - **void Detach()** RigidbodyComponent:AttachT
[task] | code [pass] | ✅ 통과 [title] | YoutubePlayerWorldComponent [question] | `YoutubePlayerWorldComponent`를 참조하도록 `OnBeginPlay()`에서 설정하고, `InputService`의 `HandleKeyDownEvent`에서 `KeyboardKey.Alpha3` 키를 누르면 `Jump(10)` 메서드를 호출하여 영상이 10초 지점으로 점프하도록 하는 스크립트를 작성해줘. [answer] | `YoutubePlayerWorldComponent`를 초기화하고, `KeyboardKey.Alpha3` 키 입력 시 영상이 10초 지점으로 이동하도록 하는 스크립트는 다음과 같습니다. ```lua Property: [None] YoutubePlayerWorldComponent youtubePlayer = nil Method: [client only] void OnBeginPlay () { self.youtubePlayer = self.Entity.YoutubePlayerWorldComponent self.youtubePla [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 질문에서 요구한 Jump(10) 호출과 OnBeginPlay 초기화를 참고 문서의 API 규격에 맞게 정확히 구현했습니다. [source_doc] | 재생하고 싶은 영상 Youtube 영상의 url을 입력하고, 특정 키를 눌러 영상 재생, 정지를 제어하는 예제입니다. ```lua Property: [None] YoutubePlayerWorldComponent youtubePlayer = nil Method: [client only] void OnBeginPlay () { self.youtubePlayer = self.Entity.YoutubePlayerWorldComponent self.youtubePlayer.Urls = {"Http://WebUrl"} } Event
[task] | single_turn [pass] | ✅ 통과 [title] | RigidbodyComponent [question] | WalkDrag 값이 커지면 미끄러지지 않고 빠르게 멈춘다고 하는데, 이 값이 최종 적용될 때 맵이나 지형 속성에 따라 0.5~2 사이로 제한된다는 게 정확히 어떤 의미인가요? [answer] | WalkDrag 값이 커지면 지형 위에서 미끄러지는 현상을 줄이고 빠르게 정지하는 효과를 줍니다. 질문하신 "0.5부터 2 사이의 범위" 제한은 스크립트에서 직접 설정한 WalkDrag 프로퍼티 값이 그대로 적용되는 것이 아니라, **맵, 지형, 캐릭터의 속성을 계산하여 최종적으로 적용되는 값이 0.5 이상 2 이하로 제한된다**는 의미입니다. 즉, 스크립트에서 WalkDrag를 10으로 설정하더라도, 실제 물리 엔진에 적용되는 미끄러짐 저항력은 맵과 지형의 특성(예: 얼음, 눈, 일반 지형 등)에 따라 계산되어 0.5~2 범위로 [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=3 coherence=4 complexity=3 verbosity=2 [judge_reason] | WalkDrag의 최종 적용 범위(0.5~2)라는 핵심 정보를 문서와 일치하게 설명했으나, 스크립트에서 직접 값을 설정할 수 있는지 여부에 대한 확인이 부족하며, 예시 코드에서 프로퍼티를 [Sync]로 선언한 것은 원문 문서의 WalkDrag가 Sync 속성이 아님을 고려할 때 정확성이 다소 떨어집니다. [source_doc] | 메이플스토리 움직임을 적용합니다. 중력 및 가·감속 영향을 받습니다. # Properties - **float AirAccelerationX** 공중에서의 속도를 보정합니다. 값이 증가할 수록 공중에서의 이동 속도가 빨라집니다. - **float AirDecelerationX** 공중에서의 입력이 없을 경우 X축의 이동 속도가 얼마나 빠르게 멈추는지를 보정합니다. - **boolean ApplyClimbableRotation [Sync]** true인 경우 회전하거나 기울어진 사다리를 탄 캐릭터는 사다리의 모습을 따릅
[task] | code [pass] | ❌ 탈락 [title] | RigidbodyComponent [question] | KinematicMove가 활성화된 상태에서 점프 또는 착지 시 RigidbodyKinematicMoveJumpEvent를 감지하여 해당 이벤트를 처리하는 핸들러를 작성해줘 [answer] | `KinematicMove` 프로퍼티가 `true`인 상태에서 점프하거나 착지하면 `RigidbodyKinematicMoveJumpEvent`가 발생합니다. 해당 이벤트를 감지하고 처리하는 핸들러는 아래 코드와 같이 작성할 수 있습니다. ```lua Event Handler: [self] HandleRigidbodyKinematicMoveJumpEvent (RigidbodyKinematicMoveJumpEvent event) { -- 이벤트 처리 로직 log("KinematicMove 점프 또는 착지 이벤트 발생") [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=4 complexity=2 verbosity=2 [judge_reason] | 이벤트 이름과 발생 조건은 정확하나, 참고 문서에 명시된 'RigidbodyClimbableAttachStartEvent'와 'RigidbodyClimbableDetachEndEvent'를 제외한 나머지 이벤트(Attach, Detach 등)가 '플레이어는 클라이언트, 그 외는 서버'로 공간이 달라지는 특징이 있음에도 불구하고, 해당 이벤트의 공간이 명시되지 않았음에도 무조건 '[self]'로 작성하여 잠재적 오류를 유발할 수 있으며, 이벤트 객체의 실제 프로퍼티(예: 방향 등)가 무엇인지 문서에 없어 추측할 수 없는 상황에서 일반 [source_doc] | - **FootholdCollisionEvent** RigidBodyComponent가 발판에 충돌했을 때 발생하는 이벤트입니다. - **FootholdEnterEvent** 엔티티가 발판에 붙었을 때 발생하는 이벤트입니다. - **FootholdLeaveEvent** 엔티티가 발판에서 떨어졌을 때 발생하는 이벤트입니다. - **RigidbodyAttachEvent** 엔티티가 RigidbodyComponent:AttachTo(string, Vector3)를 통해 특정 엔티티에 붙었을 때 발생하는 이벤트입니다. 플레이
[task] | code [pass] | ✅ 통과 [title] | RigidbodyComponent [question] | 발판에 붙어있는 상태에서 PredictFootholdEnd로 발판 끝까지의 거리가 10보다 가까우면 특정 엔티티의 Enable을 true로 변경하는 스크립트를 작성해줘 [answer] | 발판에 붙어 있는 상태에서 `RigidbodyComponent:PredictFootholdEnd` 메서드를 사용하여 발판 끝까지의 거리가 10보다 가까우면(즉, 메서드가 `true`를 반환하면) 특정 엔티티의 `Enable` 속성을 `true`로 변경하는 스크립트입니다. 참고 문서의 `PredictFootholdEnd` 예제와 mLua 문법을 기반으로 작성되었습니다. ```lua Method: [client only] void OnUpdate (number delta) { -- 특정 엔티티 경로 (실제 엔티티 경로로 교체 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 예제와 규칙을 정확히 따져 질문 의도에 맞는 코드를 제시했으며, 지어낸 API 없이 명확하게 설명했습니다. [source_doc] | - **FootholdCollisionEvent** RigidBodyComponent가 발판에 충돌했을 때 발생하는 이벤트입니다. - **FootholdEnterEvent** 엔티티가 발판에 붙었을 때 발생하는 이벤트입니다. - **FootholdLeaveEvent** 엔티티가 발판에서 떨어졌을 때 발생하는 이벤트입니다. - **RigidbodyAttachEvent** 엔티티가 RigidbodyComponent:AttachTo(string, Vector3)를 통해 특정 엔티티에 붙었을 때 발생하는 이벤트입니다. 플레이
[task] | single_turn [pass] | ❌ 탈락 [title] | ClimbableSpriteRendererComponent [question] | HandleTriggerEnterEvent 핸들러에서 이벤트 수신 공간이 [server only]로 지정되어 있는데, 클라이언트에서도 트리거 진입을 감지하고 싶다면 어떻게 수정해야 하나요? [answer] | 제공된 참고 문서에서 `HandleTriggerEnterEvent` 핸들러의 예제 코드를 보면, 이벤트 수신 공간이 `[server only]`로 지정되어 있습니다. 문서에 따르면 `TriggerEnterEvent`는 `TriggerComponent`에서 발생하며, 이 컴포넌트의 이벤트 발생 공간(Space)은 **Server, Client** 양쪽 모두입니다. 즉, 트리거 진입 감지 자체는 클라이언트에서도 가능합니다. 따라서 클라이언트에서도 트리거 진입을 감지하려면, `HandleTriggerEnterEvent` 핸들러의 어트 [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=4 complexity=3 verbosity=3 [judge_reason] | 문서의 'Space: Server, Client'를 근거로 클라이언트 처리 가능함을 지적한 점은 정확하나, '[server] [client]'와 같이 다중 태그를 동시에 사용하는 문법이 존재하지 않으며, 'RigidbodyComponent'와 'AttachTo' API를 지어내어 정확도가 낮습니다. [source_doc] | - **OrderInLayerChangedEvent** Component의 OrderInLayer가 변경되었을 때 발생하는 이벤트입니다. - **SortingLayerChangedEvent** 컴포넌트의 SortingLayer가 변경되었을 때 발생하는 이벤트입니다. - **SpriteAnimPlayerChangeFrameEvent** 스프라이트 애니메이션의 프레임이 바뀔 때 발생하는 이벤트입니다. - **SpriteAnimPlayerEndEvent** 스프라이트 애니메이션 재생이 끝날 때 발생하는 이벤트입니다. - *
[task] | code [pass] | ✅ 통과 [title] | YoutubePlayerWorldComponent [question] | `YoutubePlayerWorldComponent`를 초기화하고, `InputService`의 `HandleKeyDownEvent`에서 `KeyboardKey.Alpha4` 키 입력 시 `PlayPause()` 메서드를 호출하여 영상의 재생/정지 상태를 토글하도록 하는 스크립트를 작성해줘. [answer] | `YoutubePlayerWorldComponent`를 초기화하고, `InputService`의 `HandleKeyDownEvent`를 통해 `KeyboardKey.Alpha4` 키 입력 시 `PlayPause()` 메서드를 호출하는 스크립트는 다음과 같습니다. ```lua Property: [None] YoutubePlayerWorldComponent youtubePlayer = nil Method: [client only] void OnBeginPlay () { self.youtubePlayer = self.Entity.Y [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 예제 코드를 정확히 인용하여 질문에 필요한 Alpha4 키 처리 부분만 추려내어 제시했으며, API 사용법과 문법이 모두 올바릅니다. [source_doc] | 재생하고 싶은 영상 Youtube 영상의 url을 입력하고, 특정 키를 눌러 영상 재생, 정지를 제어하는 예제입니다. ```lua Property: [None] YoutubePlayerWorldComponent youtubePlayer = nil Method: [client only] void OnBeginPlay () { self.youtubePlayer = self.Entity.YoutubePlayerWorldComponent self.youtubePlayer.Urls = {"Http://WebUrl"} } Event
[task] | instruction_following [pass] | ✅ 통과 [title] | TileMapComponent [question] | 문서에 제시된 코드에서 HandleTriggerEnterEvent 와 HandleTriggerLeaveEvent 가 각각 어떤 조건과 색상으로 타일 맵을 제어하는지 표로 정리해서 보여 주세요. [answer] | 제시된 코드를 바탕으로 `HandleTriggerEnterEvent`와 `HandleTriggerLeaveEvent`의 동작 조건과 색상 변경 사항을 정리하면 다음과 같습니다. | 이벤트 핸들러 | 발동 조건 | 변경 색상 | 비고 | | :--- | :--- | :--- | :--- | | `HandleTriggerEnterEvent` | `event.TriggerBodyEntity.Name`이 `"Name"`인 경우에만 | `Color.red` | 조건이 충족되지 않으면 색상 변경이 일어나지 않습니다. | | `HandleTr [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 문서에 제시된 코드의 조건과 색상 변경 사항을 정확하고 명확하게 표로 정리하여 질문에 완벽히 부응했습니다. [source_doc] | 캐릭터가 엔티티에 출동하면 타일 맵의 색상이 변경됩니다. 충돌 범위를 벗어나면 본래 색상으로 돌아오게 됩니다. ```lua Method: void SetColor (Color color) { local tileMap = _EntityService:GetEntityByPath("/maps/map01/TileMap") tileMap.TileMapComponent.Color = color } Event Handler: [self] HandleTriggerEnterEvent (TriggerEnterEvent event) { --
[task] | instruction_following [pass] | ✅ 통과 [title] | TileMapComponent [question] | 캐릭터 이름이 "Name" 일 때만 붉은색으로 변경되고, 그 외의 경우나 이탈 시에는 흰색으로 돌아가도록 하는 로직이 포함된 HandleTriggerEnterEvent 코드만 출력하고 설명은 주석으로만 작성해 주세요. [answer] | ```lua Event Handler: [self] HandleTriggerEnterEvent (TriggerEnterEvent event) { -- Parameters local TriggerBodyEntity = event.TriggerBodyEntity -------------------------------------------------------- -- 캐릭터 이름이 "Name" 인지 확인하여 조건부 색상 변경 수행 if TriggerBodyEntity.Name == "Name" then local tileM [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 질문에서 요구한 HandleTriggerEnterEvent 로직과 주석 설명을 정확히 반영했으며, 문서의 API 사용법과 일치합니다. [source_doc] | 캐릭터가 엔티티에 출동하면 타일 맵의 색상이 변경됩니다. 충돌 범위를 벗어나면 본래 색상으로 돌아오게 됩니다. ```lua Method: void SetColor (Color color) { local tileMap = _EntityService:GetEntityByPath("/maps/map01/TileMap") tileMap.TileMapComponent.Color = color } Event Handler: [self] HandleTriggerEnterEvent (TriggerEnterEvent event) { --
[task] | code [pass] | ❌ 탈락 [title] | RigidbodyComponent [question] | 다른 엔티티에 붙어 있는 동안에는 물리 동작을 하지 않고, 특정 조건에서 Detach 호출 후 즉시 힘을 가하는 스크립트를 작성해줘. [answer] | 사용자가 요청한 "다른 엔티티에 붙어 있는 동안 물리 동작을 하지 않고, 특정 조건에서 `Detach` 호출 후 즉시 힘을 가하는" 동작은 `RigidbodyComponent`의 `AttachTo`, `Detach`, `SetForce` 메서드를 조합하여 구현할 수 있습니다. 참고 문서에 따르면 `AttachTo`를 사용하면 엔티티는 물리 동작을 하지 않고 붙여진 엔티티의 이동에 종속됩니다. `Detach`로 분리한 후 `SetForce`를 호출하면 설정한 힘의 방향으로 가·감속 운동이 시작됩니다. 아래 코드는 트리거 영역에 다 [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서에 없는 TriggerEnterEvent와 event.TriggerBodyEntity, Vector3.zero를 지어냈으며, 물리 동작이 주로 서버에서 처리되는데 [client only]로 OnUpdate를 작성한 점이 문서 및 규칙과 어긋납니다. [source_doc] | # Methods - **void AddForce(Vector2 forcePower)** 엔티티에 가해지는 힘을 더합니다. 엔티티는 기존 힘에 추가로 더해진 힘의 방향으로 가·감속 운동을 하게 됩니다. - **void AttachTo(string entityId, Vector3 offset)** 이 엔티티를 entityId에 해당하는 엔티티에게 붙힙니다. 이로서 이 엔티티는 물리 동작을 하지 않고 붙혀진 엔티티의 이동에 종속되게 됩니다. - **void Detach()** RigidbodyComponent:AttachT
[task] | code [pass] | ✅ 통과 [title] | RigidbodyComponent [question] | 트리거 영역에 진입하면 RigidbodyComponent:AttachTo를 호출하여 3초 후 Detach하는 로직을 구현해줘 [answer] | 트리거 영역에 진입 시 해당 엔티티에 `AttachTo`를 호출하고, 3초가 지나면 `Detach`를 실행하는 로직입니다. 참고 문서의 예제에 기반하여, 트리거 진입 이벤트를 수신하고 타이머를 통해 분리 시간을 관리하는 방식으로 구현했습니다. ```lua Property: [Sync] number time = 0 [Sync] boolean isAttached = false Method: [client] void AttachTo (string entityId) { self.Entity.RigidbodyComponent:Atta [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 예제를 정확히 재현하여 요청한 로직을 구현했으며, API 및 구문이 모두 문서와 일치합니다. [source_doc] | - **FootholdCollisionEvent** RigidBodyComponent가 발판에 충돌했을 때 발생하는 이벤트입니다. - **FootholdEnterEvent** 엔티티가 발판에 붙었을 때 발생하는 이벤트입니다. - **FootholdLeaveEvent** 엔티티가 발판에서 떨어졌을 때 발생하는 이벤트입니다. - **RigidbodyAttachEvent** 엔티티가 RigidbodyComponent:AttachTo(string, Vector3)를 통해 특정 엔티티에 붙었을 때 발생하는 이벤트입니다. 플레이
[task] | single_turn [pass] | ✅ 통과 [title] | RigidbodyComponent [question] | RealMoveVelocity는 LocalPlayer일 때만 Client에서 값을 가진다고 하는데, 서버에서 이 값을 읽으려고 하면 null이나 0으로 나오는 건 정상적인 동작인가요? [answer] | 네, 정상적인 동작입니다. `RealMoveVelocity` 프로퍼티의 설명에 따르면, 이 값은 이동 주체에 따라 유효한 실행 공간이 구분되어 있습니다. 구체적으로 **LocalPlayer**의 경우 **Client**에서 값을 가지며, **그 외의 주체**(NPC, 다른 플레이어 등)의 경우 **Server**에서 값을 가집니다. 따라서 질문하신 대로 **LocalPlayer**의 `RealMoveVelocity` 값을 **서버**에서 읽으려고 하면, 서버 측에서는 해당 값을 관리하지 않으므로 `null`이나 `0` (또는 초 [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=3 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 실행 공간 제약 설명은 정확하나, 예시 코드에 존재하지 않는 API(_EntityService:GetLocalPlayer)를 지어내어 감점함. [source_doc] | 메이플스토리 움직임을 적용합니다. 중력 및 가·감속 영향을 받습니다. # Properties - **float AirAccelerationX** 공중에서의 속도를 보정합니다. 값이 증가할 수록 공중에서의 이동 속도가 빨라집니다. - **float AirDecelerationX** 공중에서의 입력이 없을 경우 X축의 이동 속도가 얼마나 빠르게 멈추는지를 보정합니다. - **boolean ApplyClimbableRotation [Sync]** true인 경우 회전하거나 기울어진 사다리를 탄 캐릭터는 사다리의 모습을 따릅
[task] | instruction_following [pass] | ✅ 통과 [title] | RigidbodyComponent [question] | AttachTo 예제 코드에서 클라이언트와 서버 공간에서 발생하는 이벤트의 차이를 설명하고, 관련 코드만 출력하되 설명은 주석으로 작성하세요. [answer] | 제시된 참고 문서에는 `RigidbodyAttachEvent`와 `RigidbodyDetachEvent`에 대해 "플레이어는 클라이언트에서 발생하고, 그 외의 엔티티는 서버 공간에서 발생합니다"라는 설명이 포함되어 있습니다. 하지만 `AttachTo` 예제 코드 블록 내부에 이벤트 핸들러(`Event Handler:`)는 `HandleTriggerEnterEvent`만 포함되어 있으며, `RigidbodyAttachEvent`나 `RigidbodyDetachEvent`를 직접 처리하는 코드나 주석은 문서에 존재하지 않습니다. 또한 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 질문에서 요구한 '클라이언트와 서버 공간에서 발생하는 이벤트의 차이'가 실제 예제 코드에 구현되어 있지 않음을 정확히 지적하고, 문서의 정보만 활용해 주석으로 설명한 응답이 정확하고 일관되며 적절합니다. [source_doc] | - **FootholdCollisionEvent** RigidBodyComponent가 발판에 충돌했을 때 발생하는 이벤트입니다. - **FootholdEnterEvent** 엔티티가 발판에 붙었을 때 발생하는 이벤트입니다. - **FootholdLeaveEvent** 엔티티가 발판에서 떨어졌을 때 발생하는 이벤트입니다. - **RigidbodyAttachEvent** 엔티티가 RigidbodyComponent:AttachTo(string, Vector3)를 통해 특정 엔티티에 붙었을 때 발생하는 이벤트입니다. 플레이
[task] | single_turn [pass] | ✅ 통과 [title] | TileMapComponent [question] | 타일 맵 엔티티를 찾을 때 _EntityService:GetEntityByPath에 사용할 경로 형식이 어떻게 되나요? [answer] | 참고 문서에 제시된 예제에서 `_EntityService:GetEntityByPath`에 사용된 경로 형식은 `/maps/map01/TileMap` 입니다. 이는 `/maps/[맵 이름]/[엔티티 이름]`과 같은 구조를 따르며, 문서에는 이 특정 경로 외에 다른 경로 형식이나 규칙에 대한 설명은 제공되지 않습니다. [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 문서 예시의 경로를 정확히 인용하고 일반화 가능성을 적절히 제한하여 질문에 충실히 답했습니다. [source_doc] | 캐릭터가 엔티티에 출동하면 타일 맵의 색상이 변경됩니다. 충돌 범위를 벗어나면 본래 색상으로 돌아오게 됩니다. ```lua Method: void SetColor (Color color) { local tileMap = _EntityService:GetEntityByPath("/maps/map01/TileMap") tileMap.TileMapComponent.Color = color } Event Handler: [self] HandleTriggerEnterEvent (TriggerEnterEvent event) { --
[task] | single_turn [pass] | ✅ 통과 [title] | TileMapComponent [question] | 타일 맵 컴포넌트의 색상을 특정 값으로 바꾸려면 어떤 프로퍼티에 접근해야 하나요? [answer] | 타일 맵 컴포넌트의 색상을 변경하려면 `TileMapComponent`의 `Color` 프로퍼티에 접근해야 합니다. 타일 맵 엔티티를 경로로 가져온 후 해당 엔티티의 `TileMapComponent.Color` 값을 원하는 `Color` 타입으로 설정하면 됩니다. 아래는 색상을 빨간색으로 변경하는 mLua 코드 예시입니다. ```lua Method: void SetColor (Color color) { local tileMap = _EntityService:GetEntityByPath("/maps/map01/TileMap") [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 질문에 정확히 답하며 참고 문서의 코드 예시를 그대로 인용하여 오류 없이 설명했습니다. [source_doc] | 캐릭터가 엔티티에 출동하면 타일 맵의 색상이 변경됩니다. 충돌 범위를 벗어나면 본래 색상으로 돌아오게 됩니다. ```lua Method: void SetColor (Color color) { local tileMap = _EntityService:GetEntityByPath("/maps/map01/TileMap") tileMap.TileMapComponent.Color = color } Event Handler: [self] HandleTriggerEnterEvent (TriggerEnterEvent event) { --
[task] | code [pass] | ✅ 통과 [title] | ClimbableSpriteRendererComponent [question] | ClimbableSpriteRendererComponent 의 SpriteAnimPlayerStartFrameEvent 와 SpriteAnimPlayerEndFrameEvent 를 처리하여 첫 프레임과 마지막 프레임 재생 시 log 로 "Start Frame" 과 "End Frame" 을 각각 출력하는 스크립트를 작성해줘 [answer] | 참고 문서에 `SpriteAnimPlayerStartFrameEvent`와 `SpriteAnimPlayerEndFrameEvent`는 `ClimbableSpriteRendererComponent`에서 발생하는 이벤트로 정의되어 있지만, 해당 이벤트 핸들러의 파라미터 구조(예: `event` 객체에 어떤 필드가 포함되는지)나 정확한 핸들러 함수 시그니처에 대한 명시적 문서가 제공되지 않았습니다. 따라서 기존 `HandleTriggerEnterEvent`와 같은 이벤트 핸들러 패턴을 따르되, 이벤트 이름만 해당 이벤트로 교체하고, 파 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서에 정의된 이벤트 이름을 정확히 사용하며, 문서에 없는 필드나 API를 지어내지 않고 질문의 요구사항을 충족하는 최소한의 코드를 제공했습니다. [source_doc] | - **OrderInLayerChangedEvent** Component의 OrderInLayer가 변경되었을 때 발생하는 이벤트입니다. - **SortingLayerChangedEvent** 컴포넌트의 SortingLayer가 변경되었을 때 발생하는 이벤트입니다. - **SpriteAnimPlayerChangeFrameEvent** 스프라이트 애니메이션의 프레임이 바뀔 때 발생하는 이벤트입니다. - **SpriteAnimPlayerEndEvent** 스프라이트 애니메이션 재생이 끝날 때 발생하는 이벤트입니다. - *
[task] | code [pass] | ✅ 통과 [title] | YoutubePlayerWorldComponent [question] | `YoutubePlayerWorldComponent`의 `Urls`에 유효한 YouTube URL을 할당하고, `InputService`의 `HandleKeyDownEvent`에서 `KeyboardKey.Alpha1`을 누르면 `Play()`, `KeyboardKey.Alpha2`를 누르면 `Pause()`를 실행하는 로직을 구현하여 키보드 입력에 따른 영상 재생 상태를 관리하는 스크립트를 작성해줘. [answer] | `YoutubePlayerWorldComponent`의 `Urls` 프로퍼티에 YouTube 영상 URL을 배열로 할당하고, `InputService`의 `KeyDownEvent`를 통해 키보드 입력을 감지하는 방식으로 구현할 수 있습니다. `OnBeginPlay` 메서드에서 컴포넌트 참조를 설정하고 URL을 초기화하며, `HandleKeyDownEvent` 이벤트 핸들러에서 `KeyboardKey.Alpha1` 입력 시 `Play()`, `KeyboardKey.Alpha2` 입력 시 `Pause()` 메서드를 호출하여 재생 상태 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 API 및 문법을 정확히 준수하며, 질문의 요구사항인 Alpha1/Alpha2 키 입력 처리 로직을 간결하고 명확하게 구현하였습니다. [source_doc] | 재생하고 싶은 영상 Youtube 영상의 url을 입력하고, 특정 키를 눌러 영상 재생, 정지를 제어하는 예제입니다. ```lua Property: [None] YoutubePlayerWorldComponent youtubePlayer = nil Method: [client only] void OnBeginPlay () { self.youtubePlayer = self.Entity.YoutubePlayerWorldComponent self.youtubePlayer.Urls = {"Http://WebUrl"} } Event
[task] | code [pass] | ✅ 통과 [title] | RigidbodyComponent [question] | RigidbodyComponent의 IsBlockVerticalLine을 true로 설정하고, WalkSlant 값을 조정하여 급경사 이동 능력을 변경하는 스크립트를 작성해줘. [answer] | 사용자 질문에 대한 답변 RigidbodyComponent의 `IsBlockVerticalLine`과 `WalkSlant` 프로퍼티는 문서에 명시된 대로 다음과 같은 역할을 합니다. 1. **`IsBlockVerticalLine`**: `true`로 설정하면 세로 지형(벽 등)이 무조건 이동 경로를 막습니다. 벽을 통과할 수 없도록 강제하는 용도로 사용합니다. 2. **`WalkSlant`**: 지형 이동 시 경사를 얼마나 잘 넘을 수 있는지와 연관된 값입니다. 값이 클수록 급경사를 넘어갈 수 있으며, 0부터 1 사이의 값을 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 API 명세와 시스템 규칙에 부합하는 정확한 코드와 설명을 제공함. [source_doc] | 메이플스토리 움직임을 적용합니다. 중력 및 가·감속 영향을 받습니다. # Properties - **float AirAccelerationX** 공중에서의 속도를 보정합니다. 값이 증가할 수록 공중에서의 이동 속도가 빨라집니다. - **float AirDecelerationX** 공중에서의 입력이 없을 경우 X축의 이동 속도가 얼마나 빠르게 멈추는지를 보정합니다. - **boolean ApplyClimbableRotation [Sync]** true인 경우 회전하거나 기울어진 사다리를 탄 캐릭터는 사다리의 모습을 따릅
[task] | single_turn [pass] | ✅ 통과 [title] | TileMapComponent [question] | 트리거 영역에 캐릭터가 들어올 때만 색상이 바뀌도록 하려면 어떤 이벤트 핸들러를 구현해야 하나요? [answer] | 트리거 영역에 캐릭터가 들어올 때만 색상이 변경되도록 하려면 `HandleTriggerEnterEvent` 이벤트 핸들러를 구현해야 합니다. 참고 문서의 예제에 따르면, 캐릭터 이름(`Name`)을 확인하여 특정 엔티티가 트리거에 진입할 때만 `SetColor` 메서드를 호출하는 방식으로 구현할 수 있습니다. ```lua Method: void SetColor (Color color) { local tileMap = _EntityService:GetEntityByPath("/maps/map01/TileMap") tileMap [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 질문에 대한 정확한 답변과 참고 문서의 코드를 충실히 인용하여 제시하여 매우 유용하고 정확합니다. [source_doc] | 캐릭터가 엔티티에 출동하면 타일 맵의 색상이 변경됩니다. 충돌 범위를 벗어나면 본래 색상으로 돌아오게 됩니다. ```lua Method: void SetColor (Color color) { local tileMap = _EntityService:GetEntityByPath("/maps/map01/TileMap") tileMap.TileMapComponent.Color = color } Event Handler: [self] HandleTriggerEnterEvent (TriggerEnterEvent event) { --
[task] | code [pass] | ✅ 통과 [title] | YoutubePlayerWorldComponent [question] | `YoutubePlayerWorldComponent`의 `Urls` 프로퍼티에 지정된 URL을 초기화하고, `InputService`의 `HandleKeyDownEvent`에서 `KeyboardKey.Alpha1`과 `KeyboardKey.Alpha2` 키 입력 시 각각 `Play()`와 `Pause()` 메서드를 호출하여 영상 재생과 정지를 제어하는 클라이언트 전용 스크립트를 작성해줘. [answer] | 요청하신 `YoutubePlayerWorldComponent`를 사용하여 영상 URL을 초기화하고, 키 입력에 따라 재생 및 정지를 제어하는 클라이언트 전용 스크립트는 다음과 같습니다. ```lua Property: [None] YoutubePlayerWorldComponent youtubePlayer = nil Method: [client only] void OnBeginPlay () { self.youtubePlayer = self.Entity.YoutubePlayerWorldComponent self.youtubePla [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 예제 코드를 정확히 추출하고 설명하여 질문에 완벽하게 부합하며, API 사용법과 문법도 모두 정확합니다. [source_doc] | 재생하고 싶은 영상 Youtube 영상의 url을 입력하고, 특정 키를 눌러 영상 재생, 정지를 제어하는 예제입니다. ```lua Property: [None] YoutubePlayerWorldComponent youtubePlayer = nil Method: [client only] void OnBeginPlay () { self.youtubePlayer = self.Entity.YoutubePlayerWorldComponent self.youtubePlayer.Urls = {"Http://WebUrl"} } Event
[task] | single_turn [pass] | ✅ 통과 [title] | RigidbodyComponent [question] | SetUseCustomMove 메서드가 Deprecated 처리되어 있다고 하는데, 이 기능을 대체하기 위해 RigidbodyComponent의 Enable 프로퍼티를 어떻게 설정해야 하는지 알려주실 수 있나요? [answer] | 참고 문서에 따르면 `SetUseCustomMove(boolean isUse)` 메서드는 더 이상 사용하지 않는(Deprecated) 함수이며, 이를 대체하기 위해 `RigidbodyComponent`의 `Enable` 프로퍼티를 사용하라고 안내하고 있습니다. 하지만 제공된 문서에는 **`Enable` 프로퍼티의 정확한 사용법(예: `true`/`false` 값을 설정했을 때의 구체적인 동작 차이, 기존 `SetUseCustomMove`의 `isUse` 파라미터와 `Enable` 값의 대응 관계 등)** 에 대한 설명이 포함되어 [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서에 없는 Enable 프로퍼티 상세 동작을 지어내지 않고, 문서에 명시된 Deprecated 사실과 대체 수단만 정확히 서술하여 질문의 한계를 적절히 관리했습니다. [source_doc] | # Methods - **void AddForce(Vector2 forcePower)** 엔티티에 가해지는 힘을 더합니다. 엔티티는 기존 힘에 추가로 더해진 힘의 방향으로 가·감속 운동을 하게 됩니다. - **void AttachTo(string entityId, Vector3 offset)** 이 엔티티를 entityId에 해당하는 엔티티에게 붙힙니다. 이로서 이 엔티티는 물리 동작을 하지 않고 붙혀진 엔티티의 이동에 종속되게 됩니다. - **void Detach()** RigidbodyComponent:AttachT
[task] | single_turn [pass] | ✅ 통과 [title] | TileMapComponent [question] | HandleTriggerEnterEvent에서 event.TriggerBodyEntity.Name을 비교할 때 주의해야 할 점은 무엇인가요? [answer] | `HandleTriggerEnterEvent`에서 `event.TriggerBodyEntity.Name`을 비교할 때 주의해야 할 점은 다음과 같습니다. 1. **정확한 이름 매칭**: 엔티티의 `Name` 속성은 대소문자를 구분하며, 공백이나 특수문자가 포함될 수 있으므로 비교할 때 정확한 문자열을 사용해야 합니다. 2. **존재 여부 확인**: `event.TriggerBodyEntity`가 `nil`인 경우(예: 이벤트 발생 시점에 이미 삭제된 엔티티 등) `Name`에 접근하면 오류가 발생할 수 있으므로, 필요시 `nil` [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 예제와 일치하는 코드와 함께, 엔티티 이름 비교 시 주의해야 할 일반적인 프로그래밍 원칙(대소문자, nil 체크, 고유성)을 명확하고 정확하게 설명했습니다. [source_doc] | 캐릭터가 엔티티에 출동하면 타일 맵의 색상이 변경됩니다. 충돌 범위를 벗어나면 본래 색상으로 돌아오게 됩니다. ```lua Method: void SetColor (Color color) { local tileMap = _EntityService:GetEntityByPath("/maps/map01/TileMap") tileMap.TileMapComponent.Color = color } Event Handler: [self] HandleTriggerEnterEvent (TriggerEnterEvent event) { --
[task] | two_turn [pass] | ✅ 통과 [title] | RigidbodyComponent [question] | RigidbodyComponent에서 엔티티의 물리 동작을 제어할 때 위치와 힘 설정에 어떤 차이가 있나요? [answer] | RigidbodyComponent에서 위치와 힘 설정은 엔티티의 물리 시뮬레이션에 반영되는 방식이 근본적으로 다릅니다. **1. 위치 설정 (Position)** 위치 관련 메서드는 엔티티의 좌표를 즉시 변경합니다. * **`SetPosition(Vector2 position)`**: 로컬 좌표 기준으로 엔티티의 위치를 설정합니다. * **`SetWorldPosition(Vector2 position)`**: 월드 좌표 기준으로 엔티티의 위치를 설정합니다. 이 메서드들은 물리 엔진이 계산하는 가속도나 관성 등을 거치지 않 [followup] | SetPosition과 SetWorldPosition의 좌표 기준 차이, 그리고 AddForce와 SetForce의 동작 방식 차이가 코드 예시와 함께 설명되나요? [followup_answer] | RigidbodyComponent의 위치와 힘 관련 메서드는 좌표 기준과 힘 적용 방식에서 다음과 같은 차이가 있습니다. ### 1. 위치 설정: 좌표 기준 차이 * **`SetPosition(Vector2 position)`**: **로컬 좌표**를 기준으로 엔티티의 위치를 설정합니다. * **`SetWorldPosition(Vector2 position)`**: **월드 좌표**를 기준으로 엔티티의 위치를 설정합니다. 로컬 좌표는 부모 엔티티나 특정 기준점에 상대적으로 위치를 지정하는 반면, 월드 좌표는 맵 전체의 [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 API 정의와 동작 방식을 정확히 비교 설명하고, mLua 문법에 맞는 예제를 제공하여 질문에 완벽히 부응합니다. [source_doc] | # Methods - **void AddForce(Vector2 forcePower)** 엔티티에 가해지는 힘을 더합니다. 엔티티는 기존 힘에 추가로 더해진 힘의 방향으로 가·감속 운동을 하게 됩니다. - **void AttachTo(string entityId, Vector3 offset)** 이 엔티티를 entityId에 해당하는 엔티티에게 붙힙니다. 이로서 이 엔티티는 물리 동작을 하지 않고 붙혀진 엔티티의 이동에 종속되게 됩니다. - **void Detach()** RigidbodyComponent:AttachT
[task] | single_turn [pass] | ✅ 통과 [title] | TileMapComponent [question] | CreateFoothold를 false로 설정했는데도 발판이 생성되는 것 같은데, IncludeFinishFoothold 설정이 발판 생성 자체에 영향을 주는 건가요? [answer] | `IncludeFinishFoothold` 설정은 발판 생성 자체에는 영향을 주지 않습니다. `CreateFoothold`가 `false`로 설정되면 발판은 생성되지 않습니다. `IncludeFinishFoothold`는 발판을 생성할 때(`CreateFoothold`가 `true`일 때) 발판의 굽은 끝 부분(마무리 부분)을 포함할지 여부를 결정하는 옵션일 뿐, 발판 생성의 유무를 결정하지는 않습니다. 따라서 `CreateFoothold`가 `false`인데도 발판이 생성되는 것처럼 보인다면, 이는 `IncludeFinishF [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 속성 설명과 일치하여 IncludeFinishFoothold가 발판 생성 유무가 아닌 형태 옵션임을 정확히 설명하고, CreateFoothold가 false일 때 생성되지 않는다는 사실을 명확히 안내했습니다. [source_doc] | 메이플스토리 지형 기능을 제공합니다. 맵 레이어당 하나만 존재할 수 있습니다. # Properties - **Color Color [Sync]** 타일맵의 색상을 지정합니다. - **boolean CreateFoothold [MakerOnly]** 발판의 생성 여부를 결정합니다. false일 시 발판은 생성되지 않습니다. - **float FootholdDrag [ReadOnly]** RigidbodyComponent가 포함된 엔티티가 발판 위에 있을 때 적용되는 마찰력입니다. 값이 클수록 빠르게 감속합니다. - **
[task] | instruction_following [pass] | ✅ 통과 [title] | TweenFloatingComponent [question] | TweenFloatingComponent가 제공하는 속성 이름 3개를 쉼표로 구분하여 한 줄로 나열하세요. [answer] | Amplitude, OneCycleTime, TweenType [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서에 명시된 TweenFloatingComponent의 속성 이름 3개를 정확하고 간결하게 나열했습니다. [source_doc] | Entity가 부유하는 듯한 효과를 주는 예제입니다. ```lua local tween = self.Entity.TweenFloatingComponent -- 이동 거리 0.1 tween.Amplitude = 0.1 -- 주기 1초 tween.OneCycleTime = 1 -- 서서히 느려지다가 다시 빨라지는 효과 tween.TweenType = EaseType.QuadEaseInOut ``` # SeeAlso * EaseType
[task] | single_turn [pass] | ✅ 통과 [title] | TileMapComponent [question] | RigidbodyComponent가 없는 엔티티가 IsBlockVerticalLine이 true인 타일맵의 세로 발판에 막히는 현상이 발생했는데, 이는 버그인가요? [answer] | 아니요, 이는 버그가 아니라 정상 동작입니다. `IsBlockVerticalLine` 프로퍼티의 설명에 따라, 해당 타일맵의 세로 발판에 막히는 대상은 **RigidbodyComponent를 가진 엔티티만** 해당합니다. 따라서 RigidbodyComponent가 없는 엔티티는 `IsBlockVerticalLine` 값과 무관하게 세로 발판에 의해 물리적으로 막히지 않습니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서의 IsBlockVerticalLine 프로퍼티 설명(RigidbodyComponent를 가진 엔티티만 해당)을 정확히 인용하여 질문자의 오해를 바로잡고 정상 동작임을 명확히 설명했습니다. [source_doc] | 메이플스토리 지형 기능을 제공합니다. 맵 레이어당 하나만 존재할 수 있습니다. # Properties - **Color Color [Sync]** 타일맵의 색상을 지정합니다. - **boolean CreateFoothold [MakerOnly]** 발판의 생성 여부를 결정합니다. false일 시 발판은 생성되지 않습니다. - **float FootholdDrag [ReadOnly]** RigidbodyComponent가 포함된 엔티티가 발판 위에 있을 때 적용되는 마찰력입니다. 값이 클수록 빠르게 감속합니다. - **