← 목록

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

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

[task] | code [pass] | ⏳ 미판정 [title] | 웹 브라우저 활용하기 [question] | WebViewComponent의 SortingLayer와 OrderInLayer 프로퍼티를 설정하여 다른 Entity와의 겹침 우선순위를 제어하는 스크립트를 작성해줘 [answer] | 참고 문서에는 `WebViewComponent`의 `SortingLayer`와 `OrderInLayer` 프로퍼티의 존재와 역할은 설명되어 있지만, 이 프로퍼티를 **스크립트(mLua)를 통해 실행 시점에 설정하는 구체적인 API(메서드 또는 이벤트)에 대한 정보는 없습니다.** 따라서 제공된 문서를 근거로 스크립트를 작성하여 런타임에 우선순위를 제어하는 코드를 생성하는 것은 불가능합니다. 대신, 문서에 명시된 **에디터(프로퍼티 에디터)에서의 설정 방법**만 안내해 드릴 수 있습니다. ### WebViewComponent 겹 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 **WebViewComponent**를 활용하면 웹 브라우저를 월드에 배치하고 탐색할 수 있습니다. 간단한 예제를 통해 월드에서 웹 브라우저를 활용하는 방법을 알아봅시다. ##### 참고 API Reference [WebViewComponent](/apiReference/Components/WebViewComponent) # WebViewComponent 소개 엔티티에 **WebViewComponent**를 추가하면 월드에 웹 브라우저를 배치할 수 있습니다. 먼저 **WebViewComponent**의 프

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 파티클 활용하기 [question] | 캐릭터와 파티클 엔티티의 거리를 계산하기 위해 사용하는 `Vector2` 관련 함수와 변수 선언을 표로 정리하세요. [answer] | 제공된 문서에 포함된 코드 예제를 기준으로, 캐릭터와 파티클 엔티티 간의 거리를 계산하는 데 사용된 `Vector2` 관련 함수와 변수 선언은 다음과 같습니다. | 구분 | 이름 | 설명 (문서 코드 기반) | | :--- | :--- | :--- | | **변수 선언** | `positionA` | 파티클 엔티티의 2D 좌표를 저장하는 `Vector2` 변수. <br>`Vector2(self.Entity.TransformComponent.Position.x, self.Entity.TransformComponent.Position [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 [파티클 사용하기](/docs/?postId=1036) 가이드에서 파티클 컴포넌트의 개념 및 종류에 대해 알아보았습니다. 이번 시간에는 스크립트를 사용해 파티클을 활용하는 예제를 살펴보겠습니다. # 파티클 스크립트 ## 파티클 프로퍼티 제어 캐릭터와의 거리에 따라 파티클의 재생 속도가 바뀌는 예제를 통해 파티클 프로퍼티를 제어하는 방법을 살펴봅시다. 1. 파티클이 잘 보이도록 어두운 배경을 설정하고 지형을 배치한 뒤 원하는 파티클을 배치합니다. 본 예제에서는 Background로 **back-16**을 설

[task] | single_turn [pass] | ⏳ 미판정 [title] | 웹 브라우저 활용하기 [question] | 웹 뷰에서 마우스 휠 스크롤이 너무 빨라 불편할 때 ScrollSensitivity 프로퍼티를 어떻게 조정해야 하는지, 그리고 PixelPerUnit 값이 크면 콘텐츠 가시성에 어떤 영향이 미칩니까? [answer] | `WebViewComponent`의 `ScrollSensitivity` 프로퍼티는 마우스 휠로 페이지를 스크롤할 때 이동하는 양을 결정합니다. 마우스 휠 스크롤이 너무 빨라 불편하다면 이 값을 낮추어 조정해야 합니다. `PixelPerUnit` 프로퍼티는 1 Unit 당 표시될 픽셀의 수를 나타내며, 100 ~ 500 사이의 값을 사용합니다. 이 값이 크면 더 많은 콘텐츠를 보여줄 수 있지만, 웹 요소들이 작게 보이는 영향이 있습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 **WebViewComponent**를 활용하면 웹 브라우저를 월드에 배치하고 탐색할 수 있습니다. 간단한 예제를 통해 월드에서 웹 브라우저를 활용하는 방법을 알아봅시다. ##### 참고 API Reference [WebViewComponent](/apiReference/Components/WebViewComponent) # WebViewComponent 소개 엔티티에 **WebViewComponent**를 추가하면 월드에 웹 브라우저를 배치할 수 있습니다. 먼저 **WebViewComponent**의 프

[task] | two_turn [pass] | ⏳ 미판정 [title] | 루아 프로파일러를 활용하여 최적화하기 [question] | 루아 프로파일러의 옵션(Options)에서 Active Module을 설정할 때 Execution Time, Memory, Network 지표 각각이 측정하는 구체적인 내용과, 기본값인 1,000프레임 기록 제한이 약 16초에 해당하는 근거를 설명해 주세요. [answer] | 루아 프로파일러의 옵션(Options)에서 Active Module을 설정할 때 각 지표가 측정하는 구체적인 내용은 다음과 같습니다. * **Execution Time**: 함수 혹은 Scope의 실행 시간을 측정합니다. 게임 성능 지표에서 가장 중요한 부분으로, 반드시 측정해야 합니다. * **Memory**: 함수 혹은 Scope가 실행되는 동안 발생한 Lua Memory Allocation Size(메모리 할당 크기)를 측정합니다. * **Network**: 함수 혹은 Scope가 실행되는 동안 발생한 Networ [followup] | Record Max Frames 옵션을 변경하여 더 긴 시간 동안 데이터를 기록하게 설정할 때, 이전 데이터를 버리는 처리 로직이 어떻게 적용되는지 추가적으로 설명해 주세요. [followup_answer] | Record Max Frames 옵션을 변경하여 더 긴 시간 동안 데이터를 기록하게 설정할 때, 이전 데이터를 버리는 처리 로직은 다음과 같이 적용됩니다. 프로파일러는 기록된 데이터가 지정한 프레임 수(Record Max Frames)를 초과하면 **이전 데이터를 버리는 방식**으로 처리합니다. 즉, 새로 수집된 데이터가 누적되어 설정된 프레임 한도를 넘기면, 가장 오래된(이전의) 데이터부터 삭제되어 항상 최신 상태의 데이터만 제한된 프레임 수 범위 내에서 유지되도록 동작합니다. 이러한 처리는 프로파일러에 기록이 많이 쌓이는 것 [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 제작한 게임을 플레이하다 보면 다양한 상황에서 느려지는 것을 경험할 수 있습니다. 이처럼 게임의 처리 속도에서 부하가 걸리는 병목 지점(Bottleneck)을 찾아 수정하는 것을 최적화라고 합니다. 일부 병목 지점만 해결해도 게임의 전체적인 성능 향상을 기대할 수 있기 때문에 최적화는 상당히 중요한 작업입니다. 루아 프로파일러는 이러한 스크립트 최적화 작업을 더욱 손쉽게 진행할 수 있도록 도와줍니다. 이번 시간에는 **루아 프로파일러**가 무엇인지 알아보고 활용법을 살펴보도록 합시다. **더 알아보기** >

[task] | two_turn [pass] | ⏳ 미판정 [title] | 엔티티에 물리 적용하기 [question] | 다양한 탄성력(Restitution)과 질량(Mass)을 가진 Dynamic 타입 물리 엔티티끼리 의도적으로 충돌하거나 무시하게 설정하려면 충돌 그룹(CollisionGroup)을 어떻게 구성해야 하나요 [answer] | 충돌 그룹(CollisionGroup)을 구성하여 물리 엔티티끼리의 충돌 여부를 설정하는 방법은 다음과 같습니다. **1. 충돌 그룹 설정 원리** `PhysicsColliderComponent`의 `CollisionGroup` 프로퍼티를 통해 엔티티가 속할 충돌 그룹을 지정합니다. 이후 해당 그룹끼리 충돌할지, 무시할지를 설정함으로써 크리에이터의 의도에 따라 물리 법칙 적용 엔티티 간의 충돌 여부를 제어할 수 있습니다. **2. 설정 절차** 1. **엔티티 준비**: `PhysicsRigidbodyComponent`와 `P [followup] | 특정 두 그룹의 엔티티끼리만 충돌하고, 나머지 그룹과는 충돌하지 않도록 CollisionGroup 설정을 구체적으로 어떻게 해야 하나요? [followup_answer] | 제공된 참고 문서에는 `PhysicsColliderComponent`의 `CollisionGroup` 프로퍼티를 지정하고 그룹끼리의 충돌 여부를 선택할 수 있다는 사실만 설명되어 있습니다. 그러나 **특정 두 그룹끼리만 충돌하고 나머지 그룹과는 충돌하지 않도록 하는 구체적인 매핑 설정 방법**(예: 그룹 ID 간의 충돌/무시 매트릭스 설정, 에디터 UI操作步骤, 또는 스크립트를 통한 설정 코드 등)은 해당 문서에 포함되어 있지 않습니다. 문서는 구체적인 설정 방법을 위해 **"충돌 그룹 만들기"**라는 별도의 문서를 참조하도록 [scores] | [judge_reason] | [source_doc] | **PhysicsRigidbodyComponent**의 대부분의 Property와 Function은 **PhysicsColliderComponent**의 ClientOnly 프로퍼티의 값에 따라 사용, 접근 가능한 실행 공간이 나뉘게 됩니다. ClientOnly에 따라 각각의 물리 World에서 연산되며, 이에 따라 서로 충돌하거나 영향을 주지 않습니다. * **ClientOnly가 True일 때**: 해당 Entity의 물리 강체는 Client에서만 생성되고 물리 연산은 각각의 Client에서 계산됩니다. 다른 Client와 결

[task] | code [pass] | ⏳ 미판정 [title] | 루아 프로파일러를 활용하여 최적화하기 [question] | profiler.beginscope("MonsterController_OnUpdate_Loop") 와 profiler.endscope() 를 사용하여 10,000회 반복되는 self.Entity 접근 로직의 성능을 측정하는 스크립트를 작성해줘 [answer] | `profiler.beginscope`와 `profiler.endscope`를 사용하여 10,000회 반복되는 `self.Entity` 접근 로직의 성능을 측정하는 스크립트는 다음과 같습니다. ```lua Property: [None] number Speed = 10 Method: [server only] void OnBeginPlay() { -- 프로파일링 대상 함수를 호출하는 시점은 필요에 따라 OnUpdate 또는 이벤트 핸들러 등으로 수정할 수 있습니다. -- 여기서는 예시 함수를 정의합니다. } [ser [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 샘플 데이터를 보면 Frame의 Total Self Time이 전체의 62% 이상을 차지하는 것을 알 수 있습니다. Frame에서의 Self Time은 스크립트 실행을 제외하고 Native에서 소요된 시간이므로 Native Scope의 세부 분석이 필요한 상황입니다. 루아 프로파일러의 **File - Option**에서 **Native Scope**에 체크한 후 다시 프로파일링해봅시다. 다시 수집한 데이터의 카테고리를 살펴보면 Native Scope 세부 분석이 이루어졌음을 알 수 있습니다. Frame의 Total Self T

[task] | single_turn [pass] | ⏳ 미판정 [title] | 웹 브라우저 활용하기 [question] | EmptyEntity에 WebViewComponent를 추가했는데 웹 페이지가 안 뜨는데, Url 프로퍼티 입력 시 주의해야 할 유효성 조건이나 빈 문자열 입력 시 발생하는 문제는 무엇인가요? [answer] | WebViewComponent의 Url 프로퍼티에 대해 주의해야 할 유효성 조건과 빈 문자열 입력 시 발생하는 문제는 다음과 같습니다. 1. **유효성 조건**: Url 프로퍼티에는 반드시 유효한 형태의 웹 페이지 주소를 입력해야 합니다. 2. **빈 문자열 또는 유효하지 않은 주소 입력 시**: 빈 문자열을 입력하거나 유효하지 않은 형태의 주소를 입력하면 웹 브라우저가 **작동하지 않습니다**. 따라서 웹 페이지가 안 뜨는 현상은 Url 프로퍼티에 유효한 URL이 정확히 입력되었는지 확인하여 해결할 수 있습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 **WebViewComponent**를 활용하면 웹 브라우저를 월드에 배치하고 탐색할 수 있습니다. 간단한 예제를 통해 월드에서 웹 브라우저를 활용하는 방법을 알아봅시다. ##### 참고 API Reference [WebViewComponent](/apiReference/Components/WebViewComponent) # WebViewComponent 소개 엔티티에 **WebViewComponent**를 추가하면 월드에 웹 브라우저를 배치할 수 있습니다. 먼저 **WebViewComponent**의 프

[task] | single_turn [pass] | ⏳ 미판정 [title] | 웹 브라우저 활용하기 [question] | WebViewClickedEvent 핸들러 코드에서 self 또는 다른 서비스 접근 없이 순수하게 이벤트 인자만 사용했을 때 어떤 오류가 발생할 수 있나요? [answer] | 제공된 참고 문서에는 `WebViewClickedEvent` 핸들러 내에서 `self` 또는 다른 서비스 접근 없이 이벤트 인자만 사용했을 때 발생할 수 있는 **오류 정보나 제약 사항이 명시되어 있지 않습니다.** 문서에는 다음과 같이 `WebViewClickedEvent` 핸들러의 작성 예제만 제시되어 있습니다. ```lua Event Handler: [self] HandleWebViewClickedEvent(WebViewClickedEvent event) { --------------- Native Event Sen [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 웹 브라우저에서 클릭한 지점의 좌표를 로그로 남겨봅시다. **WebViewClickedEvent**를 활용하면 클릭한 지점의 **normalizedPosition**을 확인할 수 있습니다. **normalizedPosition**이란 웹 뷰를 하나의 평면 좌표계라고 했을 때 왼쪽 상단을 (0,0), 오른쪽 하단을 (1,1)로 표현한 위치를 말합니다. 화면의 정중앙 좌표는 (0.5,0.5) 입니다. 1. **WebViewTest** 스크립트에 **WebViewClickedEvent**를 추가하고 다음과 같이 작성합니다. `

[task] | two_turn [pass] | ⏳ 미판정 [title] | 웹 브라우저 활용하기 [question] | WebViewComponent를 월드에 배치하여 웹 브라우저를 활용하는 기본 방법은 무엇인가요? [answer] | WebViewComponent를 월드에 배치하여 웹 브라우저를 활용하는 기본 방법은 다음과 같습니다. 1. **Hierarchy** 탭에서 원하는 맵을 선택한 뒤 콘텍스트 메뉴를 엽니다. **Create Entity - Create Empty**를 선택해 **EmptyEntity**를 생성합니다. 2. 프로퍼티 에디터에서 생성된 **EmptyEntity**에 **TransformComponent**를 추가합니다. 3. 프로퍼티 에디터에서 **EmptyEntity**에 **WebViewComponent**를 추가하고, 표시할 웹 페 [followup] | WebViewComponent의 ClickingEnabled, HoveringEnabled, ScrollingEnabled 프로퍼티를 통해 웹 요소와의 상호작용을 어떻게 제어할 수 있나요? [followup_answer] | WebViewComponent의 해당 프로퍼티들을 통해 웹 요소와의 상호작용을 다음과 같이 제어할 수 있습니다. * **ClickingEnabled**: 웹 뷰에서 클릭을 가능하게 할지 여부를 설정합니다. * **HoveringEnabled**: 마우스를 웹 뷰 위에 올려놓았을 때 웹 요소와 상호작용할 수 있는지 여부를 설정합니다. * **ScrollingEnabled**: 웹 뷰에서 스크롤을 가능하게 할지 여부를 설정합니다. [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 **WebViewComponent**를 활용하면 웹 브라우저를 월드에 배치하고 탐색할 수 있습니다. 간단한 예제를 통해 월드에서 웹 브라우저를 활용하는 방법을 알아봅시다. ##### 참고 API Reference [WebViewComponent](/apiReference/Components/WebViewComponent) # WebViewComponent 소개 엔티티에 **WebViewComponent**를 추가하면 월드에 웹 브라우저를 배치할 수 있습니다. 먼저 **WebViewComponent**의 프

[task] | single_turn [pass] | ⏳ 미판정 [title] | 웹 브라우저 활용하기 [question] | WebViewComponent의 DragMode에서 DragToScroll과 DragWithinPage의 동작 차이가 무엇이며, 데스크톱 환경처럼 스크롤바를 직접 조종하고 싶다면 어떤 값을 사용해야 하나요? [answer] | WebViewComponent의 `DragMode` 프로퍼티는 웹 뷰에서 드래그 입력이 어떻게 처리되는지를 결정합니다. * **DragToScroll**: 드래그 시 스크롤로 동작합니다. 스크롤바를 드래그하더라도 스크롤바를 직접 조종하는 방식이 아니라, 페이지 위에서 드래그를 시작하듯 동작하여 페이지 스크롤이 일어납니다. * **DragWithinPage**: 페이지 내에서 드래그하면 일반적인 웹페이지에서 마우스로 드래그하듯이 작동합니다. 데스크톱 환경처럼 스크롤바를 드래그하여 직접 조종하고 싶다면 `DragMode`에 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 **WebViewComponent**를 활용하면 웹 브라우저를 월드에 배치하고 탐색할 수 있습니다. 간단한 예제를 통해 월드에서 웹 브라우저를 활용하는 방법을 알아봅시다. ##### 참고 API Reference [WebViewComponent](/apiReference/Components/WebViewComponent) # WebViewComponent 소개 엔티티에 **WebViewComponent**를 추가하면 월드에 웹 브라우저를 배치할 수 있습니다. 먼저 **WebViewComponent**의 프

[task] | code [pass] | ⏳ 미판정 [title] | 파티클 활용하기 [question] | 캐릭터와 파티클 엔티티의 거리를 계산하여 BasicParticleComponent의 PlaySpeed 프로퍼티를 실시간으로 변경하는 스크립트를 작성해줘 [answer] | 캐릭터와 파티클 엔티티 사이의 2D 거리를 계산하여 `BasicParticleComponent`의 `PlaySpeed`를 실시간으로 변경하는 스크립트입니다. 이 스크립트는 파티클이 배치된 엔티티에 추가하여 사용하며, 클라이언트 공간(`[client only]`)에서 매 프레임 갱신됩니다. ```lua Method: [client only] void OnUpdate(number delta) { -- 파티클 엔티티의 현재 2D 위치 가져오기 local particlePos = Vector2(self.Entity.Tra [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 [파티클 사용하기](/docs/?postId=1036) 가이드에서 파티클 컴포넌트의 개념 및 종류에 대해 알아보았습니다. 이번 시간에는 스크립트를 사용해 파티클을 활용하는 예제를 살펴보겠습니다. # 파티클 스크립트 ## 파티클 프로퍼티 제어 캐릭터와의 거리에 따라 파티클의 재생 속도가 바뀌는 예제를 통해 파티클 프로퍼티를 제어하는 방법을 살펴봅시다. 1. 파티클이 잘 보이도록 어두운 배경을 설정하고 지형을 배치한 뒤 원하는 파티클을 배치합니다. 본 예제에서는 Background로 **back-16**을 설

[task] | single_turn [pass] | ⏳ 미판정 [title] | 웹 브라우저 활용하기 [question] | 여러 Entity가 겹쳐 있을 때 웹 브라우저의 표시 우선순위를 결정하는 SortingLayer와 OrderInLayer의 역할은 각각 무엇이며, Map Layer 이름을 지정했을 때 IgnoreMapLayerCheck의 기능은 무엇인가요? [answer] | 여러 Entity가 겹쳐 있을 때 웹 브라우저의 표시 우선순위는 `SortingLayer`와 `OrderInLayer` 프로퍼티에 의해 결정됩니다. 1. **SortingLayer**: 다른 Entity들이 겹쳤을 때 어떤 레이어에 속하는지에 따라 보이는 우선순위가 결정됩니다. 2. **OrderInLayer**: 동일한 SortingLayer 내부에서 우선순위를 결정합니다. 이 값이 클수록 화면 앞에 표시됩니다. `IgnoreMapLayerCheck` 프로퍼티는 `SortingLayer`에 Map Layer 이름을 지정했을 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 **WebViewComponent**를 활용하면 웹 브라우저를 월드에 배치하고 탐색할 수 있습니다. 간단한 예제를 통해 월드에서 웹 브라우저를 활용하는 방법을 알아봅시다. ##### 참고 API Reference [WebViewComponent](/apiReference/Components/WebViewComponent) # WebViewComponent 소개 엔티티에 **WebViewComponent**를 추가하면 월드에 웹 브라우저를 배치할 수 있습니다. 먼저 **WebViewComponent**의 프

[task] | code [pass] | ⏳ 미판정 [title] | 엔티티에 물리 적용하기 [question] | PhysicsRigidbodyComponent 의 ClientOnly 가 False 일 때 Server 에서만 물리 연산 및 프로퍼티 변경이 가능하도록, Server 실행 공간에서 물리 강체의 위치를 동기화 관리하는 스크립트를 작성해줘 [answer] | `PhysicsColliderComponent`의 `ClientOnly`가 `False`인 경우, 물리 연산과 프로퍼티 변경은 Server 실행 공간에서만 허용됩니다. 따라서 물리 강체(`PhysicsRigidbodyComponent`)의 상태를 관리하거나 수정하는 메서드에는 `[server only]` 또는 `[server]` 실행 공간 태그를 붙여야 합니다. 참고 문서에 따르면, `ClientOnly`가 `False`일 때 Server와 Client에서 물리 강체가 생성되며, 물리 연산 결과에 따른 위치가 Server 및 모든 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | **PhysicsRigidbodyComponent**의 대부분의 Property와 Function은 **PhysicsColliderComponent**의 ClientOnly 프로퍼티의 값에 따라 사용, 접근 가능한 실행 공간이 나뉘게 됩니다. ClientOnly에 따라 각각의 물리 World에서 연산되며, 이에 따라 서로 충돌하거나 영향을 주지 않습니다. * **ClientOnly가 True일 때**: 해당 Entity의 물리 강체는 Client에서만 생성되고 물리 연산은 각각의 Client에서 계산됩니다. 다른 Client와 결

[task] | two_turn [pass] | ⏳ 미판정 [title] | 웹 브라우저 활용하기 [question] | WebViewComponent에서 DragMode를 DragToScroll과 DragWithinPage로 설정할 때 동작 방식의 차이점은 무엇인가요? [answer] | WebViewComponent의 `DragMode` 프로퍼티는 웹 뷰에서 드래그 동작이 어떻게 처리될지를 결정하며, `DragToScroll`과 `DragWithinPage`는 다음과 같이 동작 방식이 다릅니다. **1. DragToScroll** * 드래그를 시작하면 해당 동작이 **페이지 스크롤**로 처리됩니다. * 스크롤바를 직접 잡고 드래그하더라도 스크롤바를 조종하는 것이 아니라, 일반적인 웹 페이지에서 마우스로 페이지를 드래그하듯 페이지가 스크롤되는 방식으로 동작합니다. **2. DragWithinPage** * [followup] | DragThreshold 값이 매우 높을 경우 드래그 입력이 클릭으로 인식되는 문제를 어떻게 해결해야 하나요? [followup_answer] | `DragThreshold`는 드래그 입력이 클릭으로 잘못 인식되는 것을 방지하기 위한 임계값입니다. 값이 매우 높게 설정되어 있으면 드래그 동작이 클릭으로 판단될 수 있으므로, 이를 해결하기 위해서는 **`DragThreshold` 값을 낮추어 조정**해야 합니다. 적절한 `DragThreshold` 값으로 설정하면 드래그와 클릭 입력이 올바르게 구분되어 정상적인 드래그 상호작용이 가능합니다. [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 **WebViewComponent**를 활용하면 웹 브라우저를 월드에 배치하고 탐색할 수 있습니다. 간단한 예제를 통해 월드에서 웹 브라우저를 활용하는 방법을 알아봅시다. ##### 참고 API Reference [WebViewComponent](/apiReference/Components/WebViewComponent) # WebViewComponent 소개 엔티티에 **WebViewComponent**를 추가하면 월드에 웹 브라우저를 배치할 수 있습니다. 먼저 **WebViewComponent**의 프

[task] | single_turn [pass] | ⏳ 미판정 [title] | 웹 브라우저 활용하기 [question] | WebViewClickedEvent 핸들러에서 event.NormalizedPosition 값을 로그로 출력하려면 어떤 문자열 연결 방식을 사용해야 하나요? [answer] | `WebViewClickedEvent` 핸들러에서 `event.NormalizedPosition`의 값을 로그로 출력하려면, mLua의 문자열 연결 연산자인 `..`를 사용해야 합니다. `NormalizedPosition`은 `x`와 `y` 성분을 가진 객체이므로, 각 성분을 개별적으로 접근하여 문자열로 변환한 후 연결합니다. 아래는 클릭한 지점의 좌표를 로그로 출력하는 정확한 코드 예시입니다. ```lua Event Handler: [self] HandleWebViewClickedEvent(WebViewClickedEvent [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 웹 브라우저에서 클릭한 지점의 좌표를 로그로 남겨봅시다. **WebViewClickedEvent**를 활용하면 클릭한 지점의 **normalizedPosition**을 확인할 수 있습니다. **normalizedPosition**이란 웹 뷰를 하나의 평면 좌표계라고 했을 때 왼쪽 상단을 (0,0), 오른쪽 하단을 (1,1)로 표현한 위치를 말합니다. 화면의 정중앙 좌표는 (0.5,0.5) 입니다. 1. **WebViewTest** 스크립트에 **WebViewClickedEvent**를 추가하고 다음과 같이 작성합니다. `

[task] | two_turn [pass] | ⏳ 미판정 [title] | 엔티티에 물리 적용하기 [question] | J 키 입력 시 바닥에 있는 물체를 공중으로 던지는 예제에서, 입력 처리와 물리 힘 적용 로직이 어떻게 구성되어야 하는지 코드와 함께 알려주세요 [answer] | J 키 입력 시 바닥에 있는 물체를 공중으로 던지는 로직은 **클라이언트**에서 키 입력을 감지하고, 감지된 즉시 해당 엔티티의 `PhysicsRigidbodyComponent`에 선형 임펄스(`ApplyLinearImpulse`)를 적용하는 방식으로 구성됩니다. `PhysicsRigidbodyComponent`의 동작 공간은 `PhysicsColliderComponent`의 `ClientOnly` 프로퍼티 값에 따라 결정됩니다. * **ClientOnly가 True인 경우**: 물리 연산이 클라이언트에서만 수행되며, 키 입력 [followup] | 예제 코드에서 HandleKeyDownEvent의 실행 공간이 Client인 경우, self:Jump()를 통해 호출된 물리 함수가 정상적으로 동작하려면 PhysicsColliderComponent의 ClientOnly 설정은 어떻게 되어야 하나요? [followup_answer] | `HandleKeyDownEvent`의 실행 공간이 **Client**인 경우, `self:Jump()`를 통해 호출된 `PhysicsRigidbodyComponent:ApplyLinearImpulse`가 정상적으로 동작하려면 `PhysicsColliderComponent`의 `ClientOnly` 프로퍼티는 **True**여야 합니다. 이유는 다음과 같습니다: 1. **ClientOnly가 True일 때**: 물리 강체는 클라이언트에서만 생성되고 물리 연산이 클라이언트에서 수행됩니다. 따라서 클라이언트 공간에서 실행되는 스크 [scores] | [judge_reason] | [source_doc] | **PhysicsRigidbodyComponent**의 대부분의 Property와 Function은 **PhysicsColliderComponent**의 ClientOnly 프로퍼티의 값에 따라 사용, 접근 가능한 실행 공간이 나뉘게 됩니다. ClientOnly에 따라 각각의 물리 World에서 연산되며, 이에 따라 서로 충돌하거나 영향을 주지 않습니다. * **ClientOnly가 True일 때**: 해당 Entity의 물리 강체는 Client에서만 생성되고 물리 연산은 각각의 Client에서 계산됩니다. 다른 Client와 결

[task] | code [pass] | ⏳ 미판정 [title] | 루아 프로파일러를 활용하여 최적화하기 [question] | profiler.beginscope("FirstLoop") 과 profiler.beginscope("SecondLoop") 을 사용하여 동일한 코드(10,000회 self.Entity 접근) 두 번 실행 시의 성능 차이를 비교 분석하기 위한 스크립트를 작성해줘 [answer] | `profiler.beginscope`와 `profiler.endscope`를 사용하여 동일한 코드를 두 번 실행하고, 각각의 실행 시간을 프로파일러에서 분리하여 확인하는 스크립트입니다. 제시된 문서에 따르면, 이 방식으로 프로파일링 데이터를 수집하면 "FirstLoop"와 "SecondLoop"라는 이름으로 표본이 추출되어 각 구간의 성능 차이를 비교할 수 있습니다. ```lua Method: [server only] void ComparePerformance() { profiler.beginscope("FirstLoo [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 샘플 데이터를 보면 Frame의 Total Self Time이 전체의 62% 이상을 차지하는 것을 알 수 있습니다. Frame에서의 Self Time은 스크립트 실행을 제외하고 Native에서 소요된 시간이므로 Native Scope의 세부 분석이 필요한 상황입니다. 루아 프로파일러의 **File - Option**에서 **Native Scope**에 체크한 후 다시 프로파일링해봅시다. 다시 수집한 데이터의 카테고리를 살펴보면 Native Scope 세부 분석이 이루어졌음을 알 수 있습니다. Frame의 Total Self T

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 파티클 활용하기 [question] | 스크립트 컴포넌트 생성부터 파티클 재생까지의 실행 순서를 단계별 번호 목록으로 7단계 이상으로 정리하세요. [answer] | 메이플스토리 월드에서 스크립트 컴포넌트를 생성하여 파티클을 재생하기까지의 실행 순서는 다음과 같습니다. 1. 파티클이 잘 보이도록 어두운 배경을 설정하고 지형을 배치합니다. 예제에서는 Preset List에서 Background - **back-51**을 설정하고 Object - **object-174**를 배치합니다. 2. Workspace - MyDesk에 새 스크립트 컴포넌트 `ParticleServiceTest`를 생성합니다. 3. 배치한 엔티티(object-174)의 Property에 생성한 `ParticleService [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 1. 파티클이 잘 보이도록 어두운 배경을 설정하고 지형을 배치한 뒤 원하는 엔티티를 배치합니다. 본 예제에서는 Preset List에서 Background - **back-51**을 설정하고 Object - **object-174**를 배치했습니다. 2. Workspace - MyDesk에 새 스크립트 컴포넌트 ParticleServiceTest를 생성합니다. 3. 배치한 엔티티(object-174)의 Property에 ParticleServiceTest를 추가합니다. 4. 여기에 TweenCircula

[task] | single_turn [pass] | ⏳ 미판정 [title] | 웹 브라우저 활용하기 [question] | UIEmpty를 생성해서 웹 브라우저를 배치했는데, 다른 UI 요소들이 웹 브라우저 위에 겹쳐 보이거나 반대로 가려지는 경우 z-order를 어떻게 조정해야 하나요? [answer] | 제공된 참고 문서에는 `WebViewComponent`를 `UIEmpty`에 배치하는 방법과 키 입력을 통한 웹 브라우저 제어(`GoBack`, `GoForward`, `Reload`, `ZoomIn`, `ZoomOut`, `Scroll`) 예제만 포함되어 있습니다. UI 요소 간의 겹침 문제를 해결하기 위한 **z-order(표시 순서) 조정 방법**, 관련 프로퍼티 이름, 또는 mLua 스크립트를 통해 렌더링 순서를 변경하는 API에 대한 정보는 문서에 존재하지 않습니다. 따라서 해당 질문에 대한 답변을 드릴 수 없습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | UI로 웹 브라우저를 배치하면 화면의 특정 위치에 항상 웹 브라우저가 보이도록 할 수 있습니다. 1. **Hierarchy - ui** 아래에서 원하는 UI 그룹의 콘텍스트 메뉴를 엽니다. **Create Entity - Create UIEmpty**를 선택해 **UIEmpty**를 생성합니다. 2. 프로퍼티 에디터에서 **UIEmpty**에 **WebViewComponent**를 추가하고 원하는 Url을 입력합니다. 3. 엔티티의 크기를 적절하게 조절한 후 **[시작]** 버튼을 눌러 테스트해 봅시다. 화면의 특정 위치에

[task] | two_turn [pass] | ⏳ 미판정 [title] | 웹 브라우저 활용하기 [question] | WebViewComponent의 Url 프로퍼티를 변경하면 웹 페이지가 로드되는데, 유효하지 않은 주소 입력 시 발생하는 현상과 SortingLayer, OrderInLayer를 활용한 겹친 엔티티의 우선순위 설정 방법은 무엇인가요? [answer] | **1. 유효하지 않은 주소 입력 시 발생하는 현상** `WebViewComponent`의 `Url` 프로퍼티에 빈 문자열이나 유효하지 않은 형태의 주소를 입력하면 웹 브라우저가 **작동하지 않습니다**. 유효한 주소를 입력해야만 해당 웹 페이지가 로드됩니다. **2. 겹친 엔티티의 우선순위 설정 방법** 2개 이상의 Entity가 겹쳤을 때 보이는 우선순위는 `SortingLayer`와 `OrderInLayer` 프로퍼티를 조합하여 결정합니다. * **SortingLayer**: 다른 Layer와 겹쳤을 때의 우선순위를 결 [followup] | 1 Unit당 표시될 픽셀 수를 결정하는 PixelPerUnit 값을 100~500 범위에서 조정할 때 콘텐츠 가독성에 미치는 영향은 어떻게 되나요? [followup_answer] | `PixelPerUnit` 프로퍼티는 1 Unit 당 표시될 픽셀의 수를 결정하며, 이 값을 조정할 때 콘텐츠 가독성에 미치는 영향은 다음과 같습니다. * **수치가 클수록**: 더 많은 콘텐츠를 보여줄 수 있지만, 웹 요소들이 **작게 보입니다**. 즉, 화면에 들어가는 정보량은 증가하지만 개별 요소의 크기는 축소되어 가독성이 낮아질 수 있습니다. * **수치가 작을수록**: 반대로 웹 요소들이 더 크게 보이게 되어 가독성은 높아지지만, 한 번에 볼 수 있는 콘텐츠 범위는 줄어듭니다. 따라서 가독성과 표시 영역을 고려하 [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 **WebViewComponent**를 활용하면 웹 브라우저를 월드에 배치하고 탐색할 수 있습니다. 간단한 예제를 통해 월드에서 웹 브라우저를 활용하는 방법을 알아봅시다. ##### 참고 API Reference [WebViewComponent](/apiReference/Components/WebViewComponent) # WebViewComponent 소개 엔티티에 **WebViewComponent**를 추가하면 월드에 웹 브라우저를 배치할 수 있습니다. 먼저 **WebViewComponent**의 프

[task] | single_turn [pass] | ⏳ 미판정 [title] | 웹 브라우저 활용하기 [question] | 월드 내 특정 위치에 웹 브라우저를 배치하기 위해 Hierarchy 탭에서부터 시작하는 Entity 생성 및 WebViewComponent 추가, 그리고 SortingLayer 설정까지의 순서와 필요한 프로퍼티 에디터 작업 단계는 어떻게 되나요? [answer] | 월드 내 특정 위치에 웹 브라우저를 배치하려면 다음 순서로 작업합니다. 1. **Hierarchy** 탭에서 원하는 맵을 선택합니다. 2. 콘텍스트 메뉴를 열고 **Create Entity - Create Empty**를 선택하여 **EmptyEntity**를 생성합니다. 3. 프로퍼티 에디터에서 생성된 **EmptyEntity**에 **TransformComponent**를 추가합니다. 4. 프로퍼티 에디터에서 **EmptyEntity**에 **WebViewComponent**를 추가합니다. 5. **WebViewComponen [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 **WebViewComponent**를 활용하면 웹 브라우저를 월드에 배치하고 탐색할 수 있습니다. 간단한 예제를 통해 월드에서 웹 브라우저를 활용하는 방법을 알아봅시다. ##### 참고 API Reference [WebViewComponent](/apiReference/Components/WebViewComponent) # WebViewComponent 소개 엔티티에 **WebViewComponent**를 추가하면 월드에 웹 브라우저를 배치할 수 있습니다. 먼저 **WebViewComponent**의 프

[task] | two_turn [pass] | ⏳ 미판정 [title] | 파티클 활용하기 [question] | 파티클 서비스를 활용해 일회성 파티클을 생성하는 기능이 있는지 궁금하다 [answer] | 참고 문서에 따르면, 파티클 서비스를 활용해 일회성 파티클을 생성하는 기능이 있는지 여부에 대한 구체적인 설명이나 관련 API가 포함되어 있지 않습니다. 문서에는 `BasicParticleComponent`를 직접 참조하여 `Play()`, `Stop()`, `PlaySpeed`, `ParticleCount` 등을 제어하는 방법과, 트리거 이벤트(`TriggerEnterEvent`)나 입력 이벤트(`KeyDownEvent`)에 반응하여 파티클 재생 상태를 변경하는 예제만 제공되고 있습니다. `_ParticleService`와 같은 [followup] | 파티클 서비스 API를 호출하여 런타임에 파티클을 생성하고 제어하는 구체적인 메서드 명과 사용 예제가 있는가? [followup_answer] | 제공된 참고 문서에는 파티클 서비스 API를 호출하여 런타임에 파티클을 생성하는 구체적인 메서드 명이나 사용 예제가 없습니다. 문서의 "파티클 서비스" 섹션에는 "일회성 파티클의 생성"이라는 제목이 있으나, 그 아래에 포함된 실제 코드 예제들은 파티클 서비스 호출이 아닌, 기존 엔티티에 부착된 `BasicParticleComponent`를 직접 참조하여 제어하는 내용입니다. 구체적으로 문서에 포함된 예제들은 다음과 같은 방식으로 파티클을 제어합니다: 1. **컴포넌트 직접 접근**: `self.Entity.BasicParti [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 [파티클 사용하기](/docs/?postId=1036) 가이드에서 파티클 컴포넌트의 개념 및 종류에 대해 알아보았습니다. 이번 시간에는 스크립트를 사용해 파티클을 활용하는 예제를 살펴보겠습니다. # 파티클 스크립트 ## 파티클 프로퍼티 제어 캐릭터와의 거리에 따라 파티클의 재생 속도가 바뀌는 예제를 통해 파티클 프로퍼티를 제어하는 방법을 살펴봅시다. 1. 파티클이 잘 보이도록 어두운 배경을 설정하고 지형을 배치한 뒤 원하는 파티클을 배치합니다. 본 예제에서는 Background로 **back-16**을 설

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 파티클 활용하기 [question] | ExtendAttackComponent에서 OnLightning() 함수 내부에 작성된 코드만 출력하고, 각 줄의 역할은 주석으로 설명하세요. [answer] | ```lua self:Attack(Vector2(2, 2), Vector2.zero, nil) -- 공격 판정을 수행하며, 공격 크기를 (2, 2), 오프셋을 (0, 0)으로 설정하고 추가 정보는 없습니다. ``` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 파티클 이벤트를 활용하여 파티클을 반복 생성할 때마다 대미지를 주거나 연출을 보여줄 수 있습니다. 번개가 칠 때마다 공격 기능이 작동하여 캐릭터에게 대미지를 주는 예제를 통해 파티클 이벤트의 활용 방법을 살펴봅시다. 1. Preset List - **LightningStrikeSharp** 파티클을 배치합니다. 2. AttackComponent를 Extend하여 새 스크립트 컴포넌트 ExtendAttackComponent를 생성합니다. 3. ExtendAttackComponent를 열고 `OnLightni

[task] | single_turn [pass] | ⏳ 미판정 [title] | 웹 브라우저 활용하기 [question] | GoBack이나 GoForward 같은 내비게이션 기능은 웹 페이지 자체의 히스토리를 따르나요, 아니면 스크립트에서 직접 URL을 변경해야 하는지 차이를 알고 싶습니다. [answer] | 제공된 문서에 따르면, `GoBack`과 `GoForward`는 웹 페이지 자체의 히스토리를 따르는 내비게이션 기능입니다. 문서에 명시된 예제 코드에서 특정 키 입력 시 해당 메서드를 호출하는 방식으로 구현되어 있으며, 스크립트에서 직접 URL을 변경하는 로직(예: `LoadUrl` 같은 함수 호출)이 아닌, 브라우저의 기본 뒤로/앞으로 가기 기능을 트리거하는 형태로 동작합니다. * `self.Entity.WebViewComponent:GoBack()`: 웹 브라우저의 히스토리에서 뒤로 이동합니다. * `self.Enti [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | UI로 웹 브라우저를 배치하면 화면의 특정 위치에 항상 웹 브라우저가 보이도록 할 수 있습니다. 1. **Hierarchy - ui** 아래에서 원하는 UI 그룹의 콘텍스트 메뉴를 엽니다. **Create Entity - Create UIEmpty**를 선택해 **UIEmpty**를 생성합니다. 2. 프로퍼티 에디터에서 **UIEmpty**에 **WebViewComponent**를 추가하고 원하는 Url을 입력합니다. 3. 엔티티의 크기를 적절하게 조절한 후 **[시작]** 버튼을 눌러 테스트해 봅시다. 화면의 특정 위치에

[task] | two_turn [pass] | ⏳ 미판정 [title] | 웹 브라우저 활용하기 [question] | UIEmpty 엔티티에 WebViewComponent를 추가하여 화면의 특정 위치에 웹 브라우저를 고정해서 표시하는 기본 절차는 무엇인가요? [answer] | UIEmpty 엔티티에 WebViewComponent를 추가하여 웹 브라우저를 화면의 특정 위치에 고정해서 표시하는 기본 절차는 다음과 같습니다. 1. **UIEmpty 생성** - Hierarchy에서 `ui` 하위 원하는 UI 그룹의 콘텍스트 메뉴를 엽니다. - `Create Entity` - `Create UIEmpty`를 선택하여 `UIEmpty` 엔티티를 생성합니다. 2. **WebViewComponent 추가 및 설정** - 프로퍼티 에디터에서 생성한 `UIEmpty` 엔티티에 `WebViewCompo [followup] | WebViewComponent에 URL을 입력할 때 특정 형식이 필요하거나, 엔티티 크기를 조절하지 않으면 브라우저가 올바르게 표시되지 않는 예외 상황이 있나요? [followup_answer] | 제공된 문서에는 WebViewComponent에 URL을 입력할 때 필요한 특정 형식이나, 엔티티 크기를 조절하지 않을 경우 발생하는 구체적인 예외 상황에 대한 정보가 없습니다. 문서에서는 단순히 "원하는 Url을 입력"하고 "엔티티의 크기를 적절하게 조정"하라고 지시할 뿐, URL 형식 제한 사항이나 크기 미조정 시의 오류 메시지, 표시 불량의 구체적 원인에 대해 언급하지 않습니다. [scores] | [judge_reason] | [source_doc] | UI로 웹 브라우저를 배치하면 화면의 특정 위치에 항상 웹 브라우저가 보이도록 할 수 있습니다. 1. **Hierarchy - ui** 아래에서 원하는 UI 그룹의 콘텍스트 메뉴를 엽니다. **Create Entity - Create UIEmpty**를 선택해 **UIEmpty**를 생성합니다. 2. 프로퍼티 에디터에서 **UIEmpty**에 **WebViewComponent**를 추가하고 원하는 Url을 입력합니다. 3. 엔티티의 크기를 적절하게 조절한 후 **[시작]** 버튼을 눌러 테스트해 봅시다. 화면의 특정 위치에

[task] | single_turn [pass] | ⏳ 미판정 [title] | 웹 브라우저 활용하기 [question] | WebViewClickedEvent를 통해 얻은 normalizedPosition은 실제 픽셀 좌표와 어떻게 다른가요? [answer] | `WebViewClickedEvent`의 `normalizedPosition`은 픽셀 단위의 절대 좌표가 아니라, 웹 뷰 화면 전체를 하나의 정사각형(0~1 범위)으로 규격화(normalize)한 상대 좌표입니다. 구체적인 차이는 다음과 같습니다: 1. **좌표 범위**: * **normalizedPosition**: 왼쪽 상단을 `(0, 0)`, 오른쪽 하단을 `(1, 1)`으로 정의합니다. 따라서 모든 값은 0.0 이상 1.0 이하의 소수 값으로 표현됩니다. * **실제 픽셀 좌표**: 웹 뷰의 해상도 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 웹 브라우저에서 클릭한 지점의 좌표를 로그로 남겨봅시다. **WebViewClickedEvent**를 활용하면 클릭한 지점의 **normalizedPosition**을 확인할 수 있습니다. **normalizedPosition**이란 웹 뷰를 하나의 평면 좌표계라고 했을 때 왼쪽 상단을 (0,0), 오른쪽 하단을 (1,1)로 표현한 위치를 말합니다. 화면의 정중앙 좌표는 (0.5,0.5) 입니다. 1. **WebViewTest** 스크립트에 **WebViewClickedEvent**를 추가하고 다음과 같이 작성합니다. `

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 파티클 활용하기 [question] | 코드만 출력하고 설명은 주석으로 [answer] | ```lua Method: [server only] void OnLightning() { self:Attack(Vector2(2, 2), Vector2.zero, nil) -- Attack() 함수를 통해 공격 판정을 합니다. } Event Handler: HandleParticleEmitStartEvent(ParticleEmitStartEvent event) { -- Parameters local ParticleEntity = event.ParticleEntity ---------------- [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 파티클 이벤트를 활용하여 파티클을 반복 생성할 때마다 대미지를 주거나 연출을 보여줄 수 있습니다. 번개가 칠 때마다 공격 기능이 작동하여 캐릭터에게 대미지를 주는 예제를 통해 파티클 이벤트의 활용 방법을 살펴봅시다. 1. Preset List - **LightningStrikeSharp** 파티클을 배치합니다. 2. AttackComponent를 Extend하여 새 스크립트 컴포넌트 ExtendAttackComponent를 생성합니다. 3. ExtendAttackComponent를 열고 `OnLightni

[task] | two_turn [pass] | ⏳ 미판정 [title] | 웹 브라우저 활용하기 [question] | WebViewComponent의 Scroll 메서드를 사용하여 Home/End 키로 페이지를 이동할 때, Vector2 인자 값이 음수일 때와 양수일 때의 동작 차이는 어떻게 되나요? [answer] | 제공된 문서에는 `WebViewComponent`의 `Scroll` 메서드에서 `Vector2` 인자의 x, y 값이 음수일 때와 양수일 때의 구체적인 동작 차이에 대한 설명이 없습니다. 문서에 있는 예제 코드에서는 다음과 같이 사용되고 있을 뿐입니다: * `KeyboardKey.Home` 키 입력 시: `self.Entity.WebViewComponent:Scroll(Vector2(0, -100))` (주석: 페이지 시작 지점으로 이동) * `KeyboardKey.End` 키 입력 시: `self.Entity.WebVie [followup] | Scroll 메서드 호출 시 원하는 위치로 바로 점프하게 하거나, 스크롤 속도를 조절하기 위해 Vector2 값 외에 추가적인 파라미터나 옵션을 사용할 수 있나요? [followup_answer] | 제공된 문서에는 `WebViewComponent`의 `Scroll` 메서드가 `Vector2` 타입의 인자 하나만 받는 것으로만 기재되어 있습니다. 문서에 따르면 `Scroll` 메서드는 다음과 같이 호출됩니다: * `self.Entity.WebViewComponent:Scroll(Vector2(0, -100))` * `self.Entity.WebViewComponent:Scroll(Vector2(0, 100))` 원하는 위치로 바로 점프하는 옵션, 스크롤 속도를 조절하는 파라미터, 또는 `Vector2` 외에 추가적인 [scores] | [judge_reason] | [source_doc] | UI로 웹 브라우저를 배치하면 화면의 특정 위치에 항상 웹 브라우저가 보이도록 할 수 있습니다. 1. **Hierarchy - ui** 아래에서 원하는 UI 그룹의 콘텍스트 메뉴를 엽니다. **Create Entity - Create UIEmpty**를 선택해 **UIEmpty**를 생성합니다. 2. 프로퍼티 에디터에서 **UIEmpty**에 **WebViewComponent**를 추가하고 원하는 Url을 입력합니다. 3. 엔티티의 크기를 적절하게 조절한 후 **[시작]** 버튼을 눌러 테스트해 봅시다. 화면의 특정 위치에

[task] | two_turn [pass] | ⏳ 미판정 [title] | 엔티티에 물리 적용하기 [question] | `PhysicsColliderComponent`의 `IsSensor` 속성을 `true`로 설정하면 물리적 상호작용은 일어나지 않지만 충돌 이벤트는 발생한다고 하는데, 이 경우 `PhysicsContactBeginEvent` 핸들러에서 어떤 로직을 실행할 수 있는지 예시를 들어 주세요. [answer] | `IsSensor`가 `true`인 경우, 해당 엔티티는 다른 물리 강체와 충돌할 때 물리적 반발이나 밀어내기는 하지 않지만 `PhysicsContactBeginEvent`가 정상적으로 발생합니다. 이를 활용하면 **물리적 상호작용 없이도 특정 영역에 다른 엔티티가 진입했는지를 감지**하는 로직을 구현할 수 있습니다. 예를 들어, 플레이어 또는 NPC가 특정 구역(센서)에 들어왔을 때 해당 엔티티의 이름을 출력하거나, 특정 효과를 트리거하는 등의 로직을 작성할 수 있습니다. 아래는 `IsSensor`가 `true`로 설정된 `P [followup] | `IsSensor`가 `true`인 트리거 영역에 엔티티가 들어오면 해당 엔티티의 `PhysicsRigidbodyComponent`에 `ApplyLinearImpulse()`로 점프력을 주는 `[server]` 이벤트 핸들러 코드를 작성해 주세요. [followup_answer] | `IsSensor`가 `true`인 트리거 영역에 엔티티가 진입할 때, 접촉한 엔티티의 `PhysicsRigidbodyComponent`에 `ApplyLinearImpulse()`를 호출하여 점프력을 부여하는 `[server]` 이벤트 핸들러 코드는 다음과 같습니다. ```lua Event Handler: [self] HandlePhysicsContactBeginEvent (PhysicsContactBeginEvent event) { -- Parameters local ContactedBodyEntity = even [scores] | [judge_reason] | [source_doc] | #### 힘을 가하는 함수 `ApplyForce()`, `ApplyTorque()` 함수는 지속적인 힘을 가할 수 있습니다. 특정 Key를 눌러 지속적으로 특정 방향으로 힘 가하고 싶을 때가 해당됩니다. 매개 변수 force는 힘을 의미합니다. 해당 Entity에 대응하는 물리 강체의 질량 값에 영향을 받습니다. #### 충격량을 적용하는 함수 `ApplyAngularImpulse()`, `ApplyLinearImpulse()` 함수는 일시적으로 짧은 충격을 가할 수 있습니다. 대포 발파, 방망이 휘두르기 같은 짧은 충격을 주

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 파티클 활용하기 [question] | 문서의 예제 코드에서 캐릭터가 목표 엔티티에 닿았을 때 기존 파티클을 제거하기 위해 호출되는 함수명과 해당 함수가 포함된 제어문 블록을 한 줄로 요약해서 작성하세요. [answer] | `for idx, serial in pairs(self.SpawnList) do` 반복문 블록 내에서 `_ParticleService:RemoveParticle(serial)` 함수를 호출합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 반복 재생되는 파티클을 생성하거나 삭제하는 방법을 알아봅시다. 특정 엔티티에 캐릭터가 닿으면 파티클이 생성되다가 캐릭터가 목표 지점에 도착하면 파티클 생성이 멈추는 예제를 만들어보겠습니다. 1. 파티클을 뿜어낼 엔티티와 목표 엔티티를 배치합니다. 본 예제에서는 파티클을 뿜어낼 엔티티로 **object-24**(호리병)을, 목표 엔티티로는 **object-928**(소화기)를 사용했습니다. 2. 배치한 모든 엔티티에 TriggerComponent를 추가합니다. 3. Workspace - MyDesk에 새

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