← 목록

mLua · Nemotron-CC 리프레이즈 (CPT)

총 8,200개 · 페이지 189/274
🔀 랜덤
불러오는 중…

[task] | extract_knowledge [title] | SideViewRectTileMap에서 캐릭터 이동 제어 [category] | Guides [rephrased] | # SideViewRectTileMap에서 캐릭터 이동 제어 (SideviewbodyComponent) ## 1. 개념 설명 `SideviewbodyComponent`는 `SideViewRectTile` 모드로 제작된 맵에서 횡스크롤 방식의 캐릭터 이동을 제어하기 위해 사용되는 컴포넌트입니다. `DefaultPlayer` 엔티티에는 `RigidbodyComponent`, `KinematicbodyComponent`, `SideviewbodyComponent`가 모두 포함되어 있습니다. 맵이 제작된 모드에 따라 이동 제어의 주체 [original] | # 학습 과정 소개 DefaultPlayer에는 RigidbodyComponent, KinematicbodyComponent, SideviewbodyComponent가 모두 포함되어 있기 때문에 맵이 제작된 모드에 따라 자동으로 이동 제어의 주체가 달라집니다. 그중 SideViewRectTile 모드로 제작된 맵에서는 SideviewbodyComponent로 캐릭터의 이동을 제어합니다. 이번 시간에는 SideviewbodyComponent에 대해 알아보고 간단한 예제를 통해 활용법을 살펴봅시다. ##### 참고 API Refe [chunk_id] | Guides:759:0

[task] | distill [title] | SideViewRectTileMap에서 캐릭터 이동 제어 [category] | Guides [rephrased] | **SideViewRectTileMap 캐릭터 이동 제어 (계속)** `OnUpdate` 루프 내에서 동작, 애니메이션, 시선 제어를 수행하고, 점프 관련 물리 속성을 설정합니다. ### 1. 애니메이션 상태 제어 `SideviewbodyComponent`의 지상 여부 및 입력 방향에 따라 `StateComponent` 상태를 변경합니다. ```lua void UpdateAnimationState() { local body = self.Entity.SideviewbodyComponent local state = [original] | 11. 캐릭터의 애니메이션을 제어하는 `UpdateAnimationState` 함수도 추가합니다. ```lua void UpdateAnimationState() { local body = self.Entity.SideviewbodyComponent local state = self.Entity.StateComponent if body:IsOnGround() then if self.InputDirection.x ~= 0 then [chunk_id] | Guides:759:5

[task] | distill [title] | SideViewRectTileMap에서 캐릭터 이동 제어 [category] | Guides [rephrased] | **SideViewRectTileMap 이동 제어: 가속/감속 및 동작 제어** `PlayerControllerComponent`를 비활성화한 후, `SideviewbodyComponent`를 직접 조작하여 부드러운 이동(가속/감속)과 점프/엎드리기 동작을 제어하는 로직입니다. ### 1. 속도 제어 로직 (`UpdateVelocity`) 키 입력 유무에 따라 가속 또는 감속을 적용합니다. `SignOf` 유틸리티 함수를 포함합니다. ```lua number SignOf(number value) { if value >= [original] | 7. 유저의 키 입력이 없을 때는 감속하고 키 입력이 있을 때는 가속하도록 설정해봅시다. 아래와 같이 `UpdateVelocity` 함수와 `SignOf` 함수를 추가합니다. ```lua number SignOf(number value) { if value >= 0 then return 1 else return -1 end } void UpdateVelocity(number delta) [chunk_id] | Guides:759:4

[task] | wikipedia [title] | SideViewRectTileMap에서 캐릭터 이동 제어 [category] | Guides [rephrased] | **이동 SideViewRectTileMap에서 캐릭터 이동 제어: 가속도와 마찰력 적용** 이 섹션에서는 캐릭터의 이동 로직을 가속도와 마찰력 기반 물리 계산 방식으로 구현하는 과정을 다룹니다. 이를 통해 지면과 공중에서의 반응 차이를 설정하여 조작감을 개선할 수 있습니다. 먼저, 입력 처리 로직의 일부인 방향키 및 점프키 처리 코드를 확인합니다. 아래 코드에서 `KeyboardKey.DownArrow` 입력 시 `InputDirection.y` 값이 1 증가하고 `IsCrouchKeyPressed` 플래그가 `false`로 [original] | row then self.InputDirection.y = self.InputDirection.y - 1 end if key == KeyboardKey.DownArrow then self.InputDirection.y = self.InputDirection.y + 1 self.IsCrouchKeyPressed = false end if key == KeyboardKey.LeftAlt or key == Keyboa [chunk_id] | Guides:759:3

[task] | diverse_qa [title] | SideViewRectTileMap에서 캐릭터 이동 제어 [category] | Guides [rephrased] | 질문: 문서에 제시된 코드를 통해 `KeyboardKey.DownArrow` 키가 눌렸을 때 `self.InputDirection.y` 값은 어떻게 변하며, 어떤 추가적인 상태 변경이 일어나나요? 답변: `self.InputDirection.y` 값에 1이 더해지고, 동시에 `self.IsCrouchKeyPressed` 변수가 `false`로 설정됩니다. 질문: `KeyboardKey.LeftAlt` 또는 `KeyboardKey.Space` 키가 눌렸을 때 어떤 상태 변수가 초기화되나요? 답변: `self.IsJumpKeyPres [original] | row then self.InputDirection.y = self.InputDirection.y - 1 end if key == KeyboardKey.DownArrow then self.InputDirection.y = self.InputDirection.y + 1 self.IsCrouchKeyPressed = false end if key == KeyboardKey.LeftAlt or key == Keyboa [chunk_id] | Guides:759:3

[task] | diverse_qa [title] | SideViewRectTileMap에서 캐릭터 이동 제어 [category] | Guides [rephrased] | 질문: `SignOf` 함수는 어떤 역할을 하는가요? 답변: `SignOf` 함수는 전달받은 숫자 값이 0 이상이면 1을, 그 미만이면 -1을 반환하여 부호를 결정하는 역할을 합니다. 질문: `UpdateVelocity` 함수에서 유저의 키 입력이 없을 때(`self.InputDirection.x == 0`) 어떤 처리가 이루어지나요? 답변: 유저의 키 입력이 없을 때는 `GetDrag()` 메서드로 구한 감속량(drag)을 현재 속도(`vel.x`)에 적용하여 감속 처리를 수행하며, 속도 방향이 바뀌거나 0이 되면 속도를 0으로 [original] | 7. 유저의 키 입력이 없을 때는 감속하고 키 입력이 있을 때는 가속하도록 설정해봅시다. 아래와 같이 `UpdateVelocity` 함수와 `SignOf` 함수를 추가합니다. ```lua number SignOf(number value) { if value >= 0 then return 1 else return -1 end } void UpdateVelocity(number delta) [chunk_id] | Guides:759:4

[task] | knowledge_list [title] | SideViewRectTileMap에서 캐릭터 이동 제어 [category] | Guides [rephrased] | 제시된 문서의 내용을 바탕으로 핵심 사실을 추출하여 정리한 목록입니다. ```lua 1. `UpdateAnimationState` 함수는 `self.Entity.SideviewbodyComponent`의 `IsOnGround()` 메서드와 `self.Entity.StateComponent`의 `ChangeState` 메서드를 사용하여 캐릭터의 상태를 제어합니다. 2. `UpdateAnimationState` 함수에서 `body:IsOnGround()`가 참일 때, `self.InputDirection.x`가 0이 아니면 `stat [original] | 11. 캐릭터의 애니메이션을 제어하는 `UpdateAnimationState` 함수도 추가합니다. ```lua void UpdateAnimationState() { local body = self.Entity.SideviewbodyComponent local state = self.Entity.StateComponent if body:IsOnGround() then if self.InputDirection.x ~= 0 then [chunk_id] | Guides:759:5

[task] | distill [title] | 다양한 물리 joint 활용하기 [category] | Guides [rephrased] | # JointComponent 활용 가이드 **Joint**는 물리 법칙이 적용된 맵에서 특정 엔티티끼리 연결하여 서로 영향을 주고받게 하는 컴포넌트입니다. ## 핵심 개념 * **연결 구조**: `Entity A`(JointComponent 보유)와 `Entity B`(`TargetEntityRef` 지정)를 연결합니다. * **Anchor (LocalAnchor A/B)**: Joint 동작의 기준점입니다. 각 엔티티의 `PhysicsColliderComponent.ColliderOffset`을 원점으로 삼아 위치를 [original] | # 학습 과정 소개 물리를 사용하는 맵에서 특정 엔티티끼리의 운동 방식을 설정하는 방법을 알아봅시다. 다양한 JointComponent를 활용해 다양한 운동을 하는 엔티티를 만들어 월드 제작에 활용할 수 있습니다. # Joint Joint란 물리 법칙을 적용한 맵에서 특정 엔티티끼리만 연결해 서로 영향을 주고받을 수 있게 만드는 특정 연결부를 의미합니다. 아래의 그림과 같이 Entity A와 Entity B가 서로 영향을 주고받을 수 있도록 하는 연결부가 바로 Joint입니다. 기준 엔티티인 Entity A에 Joint 연결 [chunk_id] | Guides:760:0

[task] | distill [title] | SideViewRectTileMap에서 캐릭터 이동 제어 [category] | Guides [rephrased] | # IceTileChecker: 얼음 타일 마찰력 제어 `SideViewRectTileMap`에서 `GetUnderfootTile()`을 활용해 캐릭터의 밟고 있는 타일 이름을 확인하고, `CustomPlayerController.Drag` 값을 동적으로 변경하여 미끄러짐 정도를 조절합니다. ## 1. 컴포넌트 구성 `DefaultPlayer` 엔티티에 `IceTileChecker` 스크립트 컴포넌트를 추가합니다. ```lua Property: [None] number IceDrag = 2 [None] number Defaul [original] | ## 더 미끄러운 타일 만들기 `GetUnderfootTile` 함수를 사용하면 캐릭터가 현재 밟고 있는 타일이 무엇인지 알 수 있습니다. 이를 이용해서 얼음 타일을 밟으면 마찰력이 감소해 더 많이 미끄러지는 기능을 만들어 보겠습니다. 1. MyDesk 아래에 새 스크립트 컴포넌트 IceTileChecker를 만든 뒤, DefaultPlayer에 추가합니다. 2. IceTileChecker를 연 뒤, 아래와 같이 프로퍼티를 추가합니다. ```lua Property : [None] numbe [chunk_id] | Guides:759:6

[task] | diverse_qa [title] | SideViewRectTileMap에서 캐릭터 이동 제어 [category] | Guides [rephrased] | 질문: `UpdateAnimationState` 함수에서 캐릭터가 지면에 있을 때(`IsOnGround()`가 true) 그리고 `InputDirection.x`가 0이 아닌 경우, 어떤 상태로 변경되나요? 답변: `state:ChangeState("MOVE")`를 호출하여 걷는 애니메이션 상태로 변경됩니다. 질문: `UpdateAnimationState` 함수에서 캐릭터가 지면에 있지 않을 때(`IsOnGround()`가 false) 설정되는 애니메이션 상태는 무엇인가요? 답변: `state:ChangeState("FALL")` [original] | 11. 캐릭터의 애니메이션을 제어하는 `UpdateAnimationState` 함수도 추가합니다. ```lua void UpdateAnimationState() { local body = self.Entity.SideviewbodyComponent local state = self.Entity.StateComponent if body:IsOnGround() then if self.InputDirection.x ~= 0 then [chunk_id] | Guides:759:5

[task] | knowledge_list [title] | SideViewRectTileMap에서 캐릭터 이동 제어 [category] | Guides [rephrased] | 제공된 문서의 내용을 바탕으로 핵심 사실을 추출하여 정리한 목록입니다. 1. `GetUnderfootTile` 함수는 캐릭터가 현재 밟고 있는 타일 정보를 반환하여, 특정 타일(예: 얼음)에 기반한 이동 물리 효과(마찰력 감소 등)를 구현하는 데 사용됩니다. 2. 얼음 타일에서의 이동 제어 기능을 구현하기 위해 `IceTileChecker` 스크립트 컴포넌트를 생성하고, 이를 `DefaultPlayer` 엔티티에 추가해야 합니다. 3. `IceTileChecker` 컴포넌트에는 얼음 타일일 때 적용할 드래그 값을 저장하기 위해 ` [original] | ## 더 미끄러운 타일 만들기 `GetUnderfootTile` 함수를 사용하면 캐릭터가 현재 밟고 있는 타일이 무엇인지 알 수 있습니다. 이를 이용해서 얼음 타일을 밟으면 마찰력이 감소해 더 많이 미끄러지는 기능을 만들어 보겠습니다. 1. MyDesk 아래에 새 스크립트 컴포넌트 IceTileChecker를 만든 뒤, DefaultPlayer에 추가합니다. 2. IceTileChecker를 연 뒤, 아래와 같이 프로퍼티를 추가합니다. ```lua Property : [None] numbe [chunk_id] | Guides:759:6

[task] | knowledge_list [title] | 다양한 물리 joint 활용하기 [category] | Guides [rephrased] | ```lua -- 문서에 명시된 핵심 사실 목록 ``` 1. `Joint`는 물리 법칙이 적용된 맵에서 특정 엔티티끼리만 연결하여 서로 영향을 주고받을 수 있게 만드는 연결부를 의미합니다. 2. `Joint` 연결을 위해 기준 엔티티(Entity A)에는 `JointComponent`를 추가하고, 연결 대상 엔티티(Entity B)는 Entity A의 `JointComponent`에서 `TargetEntityRef`로 지정해야 합니다. 3. `LocalAnchorA`와 `LocalAnchorB`는 각각 Entity A와 Entit [original] | # 학습 과정 소개 물리를 사용하는 맵에서 특정 엔티티끼리의 운동 방식을 설정하는 방법을 알아봅시다. 다양한 JointComponent를 활용해 다양한 운동을 하는 엔티티를 만들어 월드 제작에 활용할 수 있습니다. # Joint Joint란 물리 법칙을 적용한 맵에서 특정 엔티티끼리만 연결해 서로 영향을 주고받을 수 있게 만드는 특정 연결부를 의미합니다. 아래의 그림과 같이 Entity A와 Entity B가 서로 영향을 주고받을 수 있도록 하는 연결부가 바로 Joint입니다. 기준 엔티티인 Entity A에 Joint 연결 [chunk_id] | Guides:760:0

[task] | wikipedia [title] | SideViewRectTileMap에서 캐릭터 이동 제어 [category] | Guides [rephrased] | 이 문서는 `SideViewRectTileMap` 환경에서 캐릭터의 이동 제어 로직을 구현하는 과정을 설명합니다. 핵심은 키 입력 상태에 따라 가속과 감속을 적용하여 부드러운 움직임을 만드는 것입니다. 먼저, 유저의 키 입력이 없을 때는 감속하고, 입력이 있을 때는 가속하도록 `UpdateVelocity` 함수와 부호를 반환하는 `SignOf` 함수를 추가해야 합니다. `SignOf` 함수는 전달된 숫자 값이 0 이상이면 1, 미만이면 -1을 반환합니다. `UpdateVelocity` 함수는 매 프레임마다 호출되며, `self.E [original] | 7. 유저의 키 입력이 없을 때는 감속하고 키 입력이 있을 때는 가속하도록 설정해봅시다. 아래와 같이 `UpdateVelocity` 함수와 `SignOf` 함수를 추가합니다. ```lua number SignOf(number value) { if value >= 0 then return 1 else return -1 end } void UpdateVelocity(number delta) [chunk_id] | Guides:759:4

[task] | extract_knowledge [title] | SideViewRectTileMap에서 캐릭터 이동 제어 [category] | Guides [rephrased] | # SideViewRectTileMap에서의 캐릭터 이동 제어: 가속도와 마찰력 적용 ## 1. 개념 설명 메이플스토리 월드의 사이드뷰(SideView) 환경에서 캐릭터의 자연스러운 이동을 구현하기 위해 단순한 속도 지정이 아닌 물리 기반의 가속(Acceleration)과 마찰(Drag)을 적용합니다. 특히 지면 상태와 공중 상태에 따라 조작감의 차이가 발생하므로, 두 상태별로 가속도와 마찰력 값을 분리하여 적용하는 것이 핵심입니다. ## 2. API 사용법 ### 2.1 필수 프로퍼티 정의 이동 계산에 사용되는 물리 파라미 [original] | row then self.InputDirection.y = self.InputDirection.y - 1 end if key == KeyboardKey.DownArrow then self.InputDirection.y = self.InputDirection.y + 1 self.IsCrouchKeyPressed = false end if key == KeyboardKey.LeftAlt or key == Keyboa [chunk_id] | Guides:759:3

[task] | wikipedia [title] | SideViewRectTileMap에서 캐릭터 이동 제어 [category] | Guides [rephrased] | **SideViewRectTileMap에서 캐릭터 이동 제어: 더 미끄러운 타일 만들기** `GetUnderfootTile` 함수는 캐릭터가 현재 발밑에 밟고 있는 타일 정보를 반환하는 API입니다. 이를 활용하여 특정 타일(예: 얼음)을 밟을 때 마찰력을 조정해 캐릭터가 더 미끄러지도록 이동 물리를 변경하는 방법을 설명합니다. 해당 기능을 구현하기 위해 먼저 `MyDesk` 객체 아래에 `IceTileChecker`라는 이름의 새 스크립트 컴포넌트를 생성한 뒤, 기본 플레이어 캐릭터(`DefaultPlayer`)에 이 컴포넌트 [original] | ## 더 미끄러운 타일 만들기 `GetUnderfootTile` 함수를 사용하면 캐릭터가 현재 밟고 있는 타일이 무엇인지 알 수 있습니다. 이를 이용해서 얼음 타일을 밟으면 마찰력이 감소해 더 많이 미끄러지는 기능을 만들어 보겠습니다. 1. MyDesk 아래에 새 스크립트 컴포넌트 IceTileChecker를 만든 뒤, DefaultPlayer에 추가합니다. 2. IceTileChecker를 연 뒤, 아래와 같이 프로퍼티를 추가합니다. ```lua Property : [None] numbe [chunk_id] | Guides:759:6

[task] | diverse_qa [title] | SideViewRectTileMap에서 캐릭터 이동 제어 [category] | Guides [rephrased] | 질문: `GetUnderfootTile` 함수의 주요 용도는 무엇인가요? 답변: `GetUnderfootTile` 함수는 캐릭터가 현재 밟고 있는 타일이 무엇인지 알려주는 데 사용됩니다. 질문: 얼음 타일에서 캐릭터가 더 미끄러지도록 만드는 기능을 구현할 때 추가해야 하는 스크립트 컴포넌트의 이름은 무엇인가요? 답변: IceTileChecker 질문: `IceTileChecker` 컴포넌트를 생성한 후, 이 컴포넌트를 어디에 추가해야 하는가요? 답변: DefaultPlayer에 추가해야 합니다. 질문: 아래 프로퍼티 정의 코드 [original] | ## 더 미끄러운 타일 만들기 `GetUnderfootTile` 함수를 사용하면 캐릭터가 현재 밟고 있는 타일이 무엇인지 알 수 있습니다. 이를 이용해서 얼음 타일을 밟으면 마찰력이 감소해 더 많이 미끄러지는 기능을 만들어 보겠습니다. 1. MyDesk 아래에 새 스크립트 컴포넌트 IceTileChecker를 만든 뒤, DefaultPlayer에 추가합니다. 2. IceTileChecker를 연 뒤, 아래와 같이 프로퍼티를 추가합니다. ```lua Property : [None] numbe [chunk_id] | Guides:759:6

[task] | diverse_qa [title] | 다양한 물리 joint 활용하기 [category] | Guides [rephrased] | 질문: Joint의 정의는 무엇인가요? 답변: Joint란 물리 법칙을 적용한 맵에서 특정 엔티티끼리만 연결해 서로 영향을 주고받을 수 있게 만드는 특정 연결부를 의미합니다. 질문: Entity A와 Entity B가 Joint로 연결되려면 어떤 설정이 필요한가요? 답변: 기준 엔티티인 Entity A에 Joint 연결 위치(LocalAnchor A)를 설정하고 연결할 엔티티(TargetEntityRef)인 Entity B에도 Joint 연결 위치(LocalAnchor B)를 설정하면 연결됩니다. 질문: LocalAnchor의 [original] | # 학습 과정 소개 물리를 사용하는 맵에서 특정 엔티티끼리의 운동 방식을 설정하는 방법을 알아봅시다. 다양한 JointComponent를 활용해 다양한 운동을 하는 엔티티를 만들어 월드 제작에 활용할 수 있습니다. # Joint Joint란 물리 법칙을 적용한 맵에서 특정 엔티티끼리만 연결해 서로 영향을 주고받을 수 있게 만드는 특정 연결부를 의미합니다. 아래의 그림과 같이 Entity A와 Entity B가 서로 영향을 주고받을 수 있도록 하는 연결부가 바로 Joint입니다. 기준 엔티티인 Entity A에 Joint 연결 [chunk_id] | Guides:760:0

[task] | wikipedia [title] | SideViewRectTileMap에서 캐릭터 이동 제어 [category] | Guides [rephrased] | # SideViewRectTileMap에서 캐릭터 이동 제어 이 섹션은 `SideViewRectTileMap` 환경에서 캐릭터의 이동, 동작, 애니메이션 및 시선 제어를 구현하는 방법을 다룹니다. 기본 이동 로직(`UpdateVelocity`)이 이미 구현된 상태에서, 캐릭터의 세부 동작과 시각적 피드백을 추가하기 위해 `UpdateAnimationState`, `UpdateLookDirection` 함수를 정의하고 `OnUpdate` 루프에서 이를 호출하도록 수정하는 과정을 설명합니다. ## 애니메이션 상태 제어 캐릭터의 현 [original] | 11. 캐릭터의 애니메이션을 제어하는 `UpdateAnimationState` 함수도 추가합니다. ```lua void UpdateAnimationState() { local body = self.Entity.SideviewbodyComponent local state = self.Entity.StateComponent if body:IsOnGround() then if self.InputDirection.x ~= 0 then [chunk_id] | Guides:759:5

[task] | distill [title] | 다양한 물리 joint 활용하기 [category] | Guides [rephrased] | # 물리 Joint 활용 가이드 ## RevoluteJoint 엔티티의 **회전 제한** 및 **회전력(Motor)** 적용. `LocalAnchorA`와 `B`가 만나는 지점을 공통 Anchor로 사용하며, Motor는 이 Anchor 기준으로 힘을 가합니다. | 프로퍼티 | 설명 | | :--- | :--- | | **UseLimits** | 상대적 각도 제한 활성화 여부 | | **LowerAngle** | 최소 상대 각도 (Entity Local `Vector2(1, 0)` 기준) | | **UpperAngle** | 최 [original] | RevoluteJoint는 엔티티의 회전과 관련된 제한을 설정합니다. UseLimits를 활성화한 후, LowerAngle, UpperAngle를 활용해 회전 각도를 제한할 수 있습니다. 엔티티가 회전할 때는 LocalAnchorA와 B가 만나는 지점을 공통의 Anchor로 사용합니다. 또한 Motor를 사용하면 Anchor를 기준으로 회전하는 힘을 받을 수 있습니다. | 주요 프로퍼티 | 설명 | | --- | --- | |**UseLimits** | 상대적 각도에 제한을 설정할지 여부를 결정합니다. | |**LowerAn [chunk_id] | Guides:760:1

[task] | extract_knowledge [title] | SideViewRectTileMap에서 캐릭터 이동 제어 [category] | Guides [rephrased] | # SideViewRectTileMap에서의 캐릭터 이동 제어: 2단 점프 구현 ## 1. 개념 설명 메이플스토리 월드의 `SideViewRectTileMap` 환경에서 캐릭터의 이동은 `MoveVelocity` 속성을 통해 제어됩니다. `MoveVelocity`는 벡터 값으로, 캐릭터의 현재 이동 속도를 나타냅니다. 특히 Y축 값(`vel.y`)을 변경함으로써 캐릭터의 수직 이동, 즉 점프 동작을 구현할 수 있습니다. 본 절에서는 `MoveVelocity`를 활용하여 **2단 점프(Double Jump)** 기능을 구현하는 [original] | 캐릭터의 이동은 `MoveVelocity`를 통해 제어합니다. `MoveVelocity`를 통해 간단한 2단 점프 기능을 만들어봅시다. 1. MyDesk 아래에 새 스크립트 컴포넌트 DoubleJump를 만든 뒤, DefaultPlayer에 추가합니다. 2. 아래와 같이 DoubleJump에 `IsDoubleJumping` 프로퍼티와 `TryDoubleJump` 함수를 추가합니다. ```lua Property: [None] boolean IsDoubleJumping = false [chunk_id] | Guides:759:1

[task] | knowledge_list [title] | 다양한 물리 joint 활용하기 [category] | Guides [rephrased] | ```lua RevoluteJoint는 엔티티의 회전 각도를 제한하며, UseLimits 프로퍼티를 활성화한 후 LowerAngle과 UpperAngle 프로퍼티를 설정하여 Entity의 Local Vector2(1, 0)을 기준으로 한 최소 및 최대 상대 각도를 지정할 수 있습니다. RevoluteJoint는 엔티티가 회전할 때 LocalAnchorA와 LocalAnchorB가 만나는 지점을 공통 Anchor로 사용하며, Motor 기능을 활성화하면 Anchor를 기준으로 회전하는 힘을 받을 수 있습니다. RevoluteJoint [original] | RevoluteJoint는 엔티티의 회전과 관련된 제한을 설정합니다. UseLimits를 활성화한 후, LowerAngle, UpperAngle를 활용해 회전 각도를 제한할 수 있습니다. 엔티티가 회전할 때는 LocalAnchorA와 B가 만나는 지점을 공통의 Anchor로 사용합니다. 또한 Motor를 사용하면 Anchor를 기준으로 회전하는 힘을 받을 수 있습니다. | 주요 프로퍼티 | 설명 | | --- | --- | |**UseLimits** | 상대적 각도에 제한을 설정할지 여부를 결정합니다. | |**LowerAn [chunk_id] | Guides:760:1

[task] | extract_knowledge [title] | 다양한 물리 joint 활용하기 [category] | Guides [rephrased] | # 물리 Joint 활용 ## 1. 개념 설명 물리 법칙이 적용된 맵에서 엔티티 간의 운동을 제어하기 위해 `JointComponent`를 사용합니다. Joint는 두 엔티티(Entity A, Entity B)를 연결하여 서로 영향을 주고받을 수 있게 하는 연결부입니다. * **Anchor (기준점)**: Joint가 동작하는 기준점입니다. 엔티티의 `PhysicsColliderComponent`의 `ColliderOffset` 위치를 원점으로 삼습니다. * `LocalAnchorA`: Entity A(기준 엔티 [original] | # 학습 과정 소개 물리를 사용하는 맵에서 특정 엔티티끼리의 운동 방식을 설정하는 방법을 알아봅시다. 다양한 JointComponent를 활용해 다양한 운동을 하는 엔티티를 만들어 월드 제작에 활용할 수 있습니다. # Joint Joint란 물리 법칙을 적용한 맵에서 특정 엔티티끼리만 연결해 서로 영향을 주고받을 수 있게 만드는 특정 연결부를 의미합니다. 아래의 그림과 같이 Entity A와 Entity B가 서로 영향을 주고받을 수 있도록 하는 연결부가 바로 Joint입니다. 기준 엔티티인 Entity A에 Joint 연결 [chunk_id] | Guides:760:0

[task] | extract_knowledge [title] | SideViewRectTileMap에서 캐릭터 이동 제어 [category] | Guides [rephrased] | # SideViewRectTileMap에서 캐릭터 이동 제어: 타일 기반 마찰력 조절 ## 개념 설명 `SideViewRectTileMap` 환경에서는 캐릭터가 밟고 있는 지형의 물리적 속성(마찰력, 미끄러움 등)을 실시간으로 변경하여 다양한 이동 경험을 구현할 수 있습니다. 이를 위해 `SideviewbodyComponent`의 `GetUnderfootTile` 메서드를 사용하여 캐릭터가 현재 서 있는 타일 정보를 조회하고, 해당 타일의 이름(`Name`)에 따라 `CustomPlayerController`의 `Drag` 값을 [original] | ## 더 미끄러운 타일 만들기 `GetUnderfootTile` 함수를 사용하면 캐릭터가 현재 밟고 있는 타일이 무엇인지 알 수 있습니다. 이를 이용해서 얼음 타일을 밟으면 마찰력이 감소해 더 많이 미끄러지는 기능을 만들어 보겠습니다. 1. MyDesk 아래에 새 스크립트 컴포넌트 IceTileChecker를 만든 뒤, DefaultPlayer에 추가합니다. 2. IceTileChecker를 연 뒤, 아래와 같이 프로퍼티를 추가합니다. ```lua Property : [None] numbe [chunk_id] | Guides:759:6

[task] | diverse_qa [title] | 다양한 물리 joint 활용하기 [category] | Guides [rephrased] | 질문: RevoluteJoint에서 엔티티의 회전 각도를 제한하려면 어떤 프로퍼티들을 설정해야 하나요? 답변: UseLimits를 활성화한 후, LowerAngle과 UpperAngle 값을 설정하여 회전 각도를 제한할 수 있습니다. 질문: RevoluteJoint에서 엔티티가 회전할 때 공통의 Anchor로 사용되는 지점은 어디인가요? 답변: LocalAnchorA와 LocalAnchorB가 만나는 지점을 공통의 Anchor로 사용합니다. 질문: RevoluteJoint의 MotorSpeed 프로퍼티가 양수(+)인 경우 엔티티 [original] | RevoluteJoint는 엔티티의 회전과 관련된 제한을 설정합니다. UseLimits를 활성화한 후, LowerAngle, UpperAngle를 활용해 회전 각도를 제한할 수 있습니다. 엔티티가 회전할 때는 LocalAnchorA와 B가 만나는 지점을 공통의 Anchor로 사용합니다. 또한 Motor를 사용하면 Anchor를 기준으로 회전하는 힘을 받을 수 있습니다. | 주요 프로퍼티 | 설명 | | --- | --- | |**UseLimits** | 상대적 각도에 제한을 설정할지 여부를 결정합니다. | |**LowerAn [chunk_id] | Guides:760:1

[task] | wikipedia [title] | 다양한 물리 joint 활용하기 [category] | Guides [rephrased] | # 충돌 다양한 물리 joint 활용하기 물리 시뮬레이션이 적용된 맵 환경에서 특정 엔티티 간의 운동 방식을 제어하기 위해 **Joint(조인트)** 시스템을 사용할 수 있습니다. Joint는 물리 법칙이 적용된 맵 내에서 두 개의 엔티티를 연결하여 서로의 운동에 영향을 주고받을 수 있게 하는 연결부를 의미합니다. 이 문서는 다양한 `JointComponent`를 활용하여 복잡한 물리 운동을 구현하는 방법에 대해 설명합니다. ## Joint의 기본 구조와 원리 Joint는 기준이 되는 엔티티(Entity A)와 연결 대상 엔티 [original] | # 학습 과정 소개 물리를 사용하는 맵에서 특정 엔티티끼리의 운동 방식을 설정하는 방법을 알아봅시다. 다양한 JointComponent를 활용해 다양한 운동을 하는 엔티티를 만들어 월드 제작에 활용할 수 있습니다. # Joint Joint란 물리 법칙을 적용한 맵에서 특정 엔티티끼리만 연결해 서로 영향을 주고받을 수 있게 만드는 특정 연결부를 의미합니다. 아래의 그림과 같이 Entity A와 Entity B가 서로 영향을 주고받을 수 있도록 하는 연결부가 바로 Joint입니다. 기준 엔티티인 Entity A에 Joint 연결 [chunk_id] | Guides:760:0

[task] | distill [title] | 다양한 물리 joint 활용하기 [category] | Guides [rephrased] | # WheelJointComponent 연결된 엔티티를 바퀴처럼 동작하도록 제한하며, `Motor`를 통해 목표 속도를 제어합니다. ## 주요 프로퍼티 | 프로퍼티 | 설명 | | :--- | :--- | | **MaxMotorTorque** | 목표 모터 속도에 도달하기 위해 Joint 모터에 적용할 수 있는 최대 힘 | | **MotorEnable** | Motor 사용 여부. `True`일 경우 연결된 Entity가 LocalAxis 방향의 힘을 받음 | | **MotorSpeed** | Joint의 목표 모터 속도. ` [original] | WheelJoint는 연결된 엔티티가 바퀴처럼 동작하도록 제한을 설정합니다. Motor를 사용한 TargetEntityRef는 MotorSpeed 값을 목표 속도로 사용합니다. | 주요 프로퍼티 | 설명 | | --- | --- | | **MaxMotorTorque** | 목표 모터 속도에 도달하기 위한 Joint의 모터에 적용할 수 있는 최대 힘을 설정합니다. | | **MotorEnable** | Motor를 사용할지 여부를 설정합니다. True일 경우 연결된 Entity가 LocalAxis 방향의 힘을 받습니다. | | * [chunk_id] | Guides:760:2

[task] | distill [title] | 다양한 물리 joint 활용하기 [category] | Guides [rephrased] | # 충돌 다양한 물리 joint 활용하기 ### 1. 엔티티 구성 `LeftEntity`, `LeftBar` 엔티티를 생성하고 `PhysicsRigidbodyComponent`, `PhysicsColliderComponent`를 추가합니다. * **LeftEntity** SpriteRUID: `e75cac80f719471fa482195531ed57cc` * **LeftBar** SpriteRUID: `0308ac89b10843fcab6384aa43f6ae22` 원형 엔티티에 `RevoluteJointComponent`를 [original] | 1. 새로운 **LeftEntity, LeftBar** 오브젝트 엔티티를 만들고, **PhysicsRigidbodyComponent, PhysicsColliderComponent**를 추가합니다. * LeftEntity SpriteRUID: **e75cac80f719471fa482195531ed57cc** * LeftBar SpriteRUID: **0308ac89b10843fcab6384aa43f6ae22** 2. 원형 모양 엔티티에 **RevoluteJointComponent**를 추가하고, **Joint**에 ** [chunk_id] | Guides:760:3

[task] | knowledge_list [title] | 다양한 물리 joint 활용하기 [category] | Guides [rephrased] | WheelJoint는 연결된 엔티티가 바퀴처럼 동작하도록 제한을 설정하는 Joint 컴포넌트입니다. WheelJoint의 Motor를 활성화할 경우, TargetEntityRef는 MotorSpeed 값을 목표 속도로 사용합니다. WheelJoint의 MaxMotorTorque 프로퍼티는 목표 모터 속도에 도달하기 위해 Joint의 모터에 적용할 수 있는 최대 힘을 설정합니다. WheelJoint의 MotorEnable 프로퍼티는 Motor를 사용할지 여부를 설정하며, True일 경우 연결된 Entity가 LocalAxis 방향의 [original] | WheelJoint는 연결된 엔티티가 바퀴처럼 동작하도록 제한을 설정합니다. Motor를 사용한 TargetEntityRef는 MotorSpeed 값을 목표 속도로 사용합니다. | 주요 프로퍼티 | 설명 | | --- | --- | | **MaxMotorTorque** | 목표 모터 속도에 도달하기 위한 Joint의 모터에 적용할 수 있는 최대 힘을 설정합니다. | | **MotorEnable** | Motor를 사용할지 여부를 설정합니다. True일 경우 연결된 Entity가 LocalAxis 방향의 힘을 받습니다. | | * [chunk_id] | Guides:760:2

[task] | wikipedia [title] | 다양한 물리 joint 활용하기 [category] | Guides [rephrased] | # 다양한 물리 Joint 활용하기 WheelJoint는 두 엔티티를 연결하여 한 엔티티가 다른 엔티티에 대해 바퀴처럼 회전하도록 동작 범위를 제한하는 물리 결합(Physics Joint)입니다. Motor 기능이 활성화된 TargetEntityRef의 경우, 설정된 MotorSpeed 값을 목표 각속도로 사용하여 연결된 엔티티를 구동합니다. WheelJoint의 주요 프로퍼티는 다음과 같습니다. MaxMotorTorque는 목표 모터 속도에 도달하기 위해 Joint의 모터에 적용할 수 있는 최대 힘(Torque)을 결정합니다. [original] | WheelJoint는 연결된 엔티티가 바퀴처럼 동작하도록 제한을 설정합니다. Motor를 사용한 TargetEntityRef는 MotorSpeed 값을 목표 속도로 사용합니다. | 주요 프로퍼티 | 설명 | | --- | --- | | **MaxMotorTorque** | 목표 모터 속도에 도달하기 위한 Joint의 모터에 적용할 수 있는 최대 힘을 설정합니다. | | **MotorEnable** | Motor를 사용할지 여부를 설정합니다. True일 경우 연결된 Entity가 LocalAxis 방향의 힘을 받습니다. | | * [chunk_id] | Guides:760:2

[task] | extract_knowledge [title] | SideViewRectTileMap에서 캐릭터 이동 제어 [category] | Guides [rephrased] | # SideViewRectTileMap에서의 캐릭터 이동 및 동작 제어 ## 1. 개념 설명 `SideViewRectTileMap` 환경에서 캐릭터의 자연스러운 이동과 동작을 제어하기 위해, 물리 엔진의 기본 `PlayerControllerComponent` 대신 커스텀 로직을 구현할 수 있습니다. 이 방식에서는 유저의 키 입력 상태에 따라 가속도와 마찰력(감속)을 직접 계산하여 `SideviewbodyComponent`의 `MoveVelocity`를 수정하는 방식을 사용합니다. 이를 통해 미끄러짐이 있는 부드러운 이동감을 구현하 [original] | 7. 유저의 키 입력이 없을 때는 감속하고 키 입력이 있을 때는 가속하도록 설정해봅시다. 아래와 같이 `UpdateVelocity` 함수와 `SignOf` 함수를 추가합니다. ```lua number SignOf(number value) { if value >= 0 then return 1 else return -1 end } void UpdateVelocity(number delta) [chunk_id] | Guides:759:4

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