# 캐릭터 이동 파라미터

## 개요

OVERDARE에서는 기본 Humanoid 속성 외에도 **캐릭터의 조작감과 움직임을 정밀하게 제어**할 수 있는 확장 프로퍼티들을 제공합니다.

이 기능들은 크리에이터가 캐릭터의 이동, 점프, 낙하, 마찰 등을 세밀하게 조정하여 게임 장르와 콘셉트에 맞는 조작감을 구현할 수 있도록 설계되었습니다.

## 기능 구성

캐릭터 고급 제어 속성은 **StarterPlayer** 또는 **Humanoid 인스턴스**에서 설정할 수 있으며, 설정된 값은 해당 Humanoid가 포함된 모든 캐릭터에 즉시 반영됩니다.

일부 속성은 0으로 지정할 경우 동작을 제한할 수 있으며, 이는 게임 디자인에 따라 점프 불가, 이동 제한, 중력 변화 등 다양한 효과를 줄 수 있습니다.

<div align="left" data-full-width="false"><figure><img src="https://2697870212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhRPi87oM9ttlk5nyu7L7%2Fuploads%2Fgit-blob-d5861844e083e9328b72f9bfc6d434f8ce854897%2FStarterPlayer.png?alt=media" alt=""><figcaption><p>StarterPlayer에서 확인 가능한 Humanoid 관련 프로퍼티</p></figcaption></figure></div>

<figure><img src="https://2697870212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhRPi87oM9ttlk5nyu7L7%2Fuploads%2Fgit-blob-86e46ecb87d675f54432c476ebc8c9f46a23ef87%2Fhumano.png?alt=media" alt=""><figcaption><p>Humanoid에서 확인 가능한 이동 파라미터</p></figcaption></figure>

## 카테고리별 확장 기능

### 이동

캐릭터의 기본 이동 속도와 방향 전환·감속, 경사로 이동 가능 범위를 제어합니다.

<table><thead><tr><th width="187.166748046875">속성</th><th>설명</th></tr></thead><tbody><tr><td><strong>MaxAcceleration</strong></td><td>캐릭터가 목표 속도까지 도달할 수 있는 최대 가속도</td></tr><tr><td><strong>MaxWalkSpeed</strong></td><td>캐릭터가 이동할 수 있는 최대 속도</td></tr><tr><td><strong>MaxSlopeAngle</strong></td><td>캐릭터가 오를 수 있는 최대 경사각</td></tr><tr><td><strong>GroundFriction</strong></td><td>이동 중 방향 전환·감속 시 적용되는 지면 마찰</td></tr><tr><td><strong>RotationSpeed</strong></td><td>캐릭터가 회전하는 속도</td></tr><tr><td><strong>WalkingDeceleration</strong></td><td>걷기/달리기 상태에서 멈출 때 감속량</td></tr></tbody></table>

#### 세부 동작 내용

* **MaxAcceleration**
  * 값이 크면 캐릭터가 가볍게 튀어나가는 느낌으로 즉각적인 반응을 보입니다.
  * 값이 작으면 가속이 천천히 붙어, 무거운 로봇이나 탱크 같은 움직임을 연출할 수 있습니다.
  * 레이싱이나 액션 게임처럼 즉각적인 반응성이 중요한 경우는 높은 값이, RPG나 시뮬레이션처럼 무게감 있는 움직임을 원할 때는 낮은 값이 적합합니다.
* **WalkingDeceleration**
  * 값이 크면 제동력이 커서 입력을 놓자마자 거의 즉시 멈춥니다.
  * 값이 작으면 관성에 의해 캐릭터가 서서히 멈추며, 스케이트나 슬라이딩 같은 표현이 가능합니다.
  * 이 값과 GroundFriction을 함께 조절하면 "제동이 강하지만 커브는 미끄러운" 복합적인 조작감도 구현할 수 있습니다.
* **MaxSlopeAngle**
  * 값을 낮추면 조금만 경사가 있어도 오르지 못해 특정 지형 접근을 제한하는 기믹을 만들 수 있습니다.
  * 값을 높이면 거의 수직에 가까운 벽도 오를 수 있어 비현실적이지만 독특한 움직임을 연출할 수 있습니다.
* **GroundFriction**
  * 값이 크면 캐릭터가 회전이나 정지할 때 더 빨리 속도를 줄이며, 커브를 돌 때도 제자리에 가깝게 방향을 틀 수 있습니다.
  * 값이 작으면 캐릭터가 정지할 때는 오래 미끄러지고, 커브를 돌 때도 원심력에 의해 크게 밀려 나가면서 넓은 회전 반경을 가집니다.
* **RotationSpeed**
  * 값이 크면 입력 방향으로 즉시 회전해 빠른 대응이 가능하지만 다소 기계적인 느낌이 날 수 있습니다.
  * 값이 작으면 방향 전환이 느려져, 무게감 있는 전환이나 부드러운 연출에 적합합니다.
  * 커브 도는 체감은 GroundFriction과 함께 결정되므로, 두 값을 조합해 원하는 핸들링을 설계할 수 있습니다.

#### 실제 동작 예시

**\[GroundFriction]**

<div align="left"><figure><img src="https://2697870212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhRPi87oM9ttlk5nyu7L7%2Fuploads%2Fgit-blob-0db6530c94415704da56a0d66b0d7b822697edfa%2FGroundFriction.gif?alt=media" alt="" width="375"><figcaption><p>GroundFriction = 16 (기본값)</p></figcaption></figure></div>

<div align="left"><figure><img src="https://2697870212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhRPi87oM9ttlk5nyu7L7%2Fuploads%2Fgit-blob-321b3db0279e39c1f96b11afeac7bd630ba65b57%2FGroundFriction2.gif?alt=media" alt="" width="375"><figcaption><p>GroundFriction = 1</p></figcaption></figure></div>

**\[RotationSpeed]**

<div align="left"><figure><img src="https://2697870212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhRPi87oM9ttlk5nyu7L7%2Fuploads%2Fgit-blob-b75fcda65b41e5ede9104343edd01cc7324ff74b%2FAnimation.gif?alt=media" alt="" width="375"><figcaption><p>RotationSpeed = 3,000 (기본값)</p></figcaption></figure></div>

<div align="left"><figure><img src="https://2697870212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhRPi87oM9ttlk5nyu7L7%2Fuploads%2Fgit-blob-c65ba76223f6647b3f949e2d35403bbf5dfbd850%2FRotationSpeed2.gif?alt=media" alt="" width="375"><figcaption><p>RotationSpeed = 300</p></figcaption></figure></div>

### 점프

기본 점프와 변형 동작(연속 점프, 밟기 반동 등)을 제어합니다.

<table><thead><tr><th width="187.166748046875">속성</th><th>설명</th></tr></thead><tbody><tr><td><strong>MaxJumpCount</strong></td><td>캐릭터가 연속해서 점프할 수 있는 최대 횟수</td></tr><tr><td><strong>StompJumpMultiplier</strong></td><td>다른 캐릭터를 밟았을 때, 기본 점프 높이에 곱해져 적용되는 자동 반동 비율</td></tr></tbody></table>

#### 세부 동작 내용

* **MaxJumpCount**
  * 1이면 단일 점프, 2 이상이면 더블 점프, 트리플 점프를 구현할 수 있습니다.
  * 이를 활용하면 파쿠르, 퍼즐 등 특정 구간에서만 접근 가능한 플랫폼 디자인이 가능합니다.
* **StompJumpMultiplier**
  * 1이면 기본 점프력과 같고, 2이면 두 배 높이 점프합니다.
  * 마리오식 “밟기 반동”이나 공중 콤보 액션 같은 연출을 할 때 유용합니다.

#### 실제 동작 예시

**\[MaxJumpCount]**

<div align="left"><figure><img src="https://2697870212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhRPi87oM9ttlk5nyu7L7%2Fuploads%2Fgit-blob-a653ed95d5770516ddad81f6473cf502dafe828a%2FMaxJumpCount1.gif?alt=media" alt="" width="375"><figcaption><p>MaxJumpCount = 1 (기본값)</p></figcaption></figure></div>

<div align="left"><figure><img src="https://2697870212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhRPi87oM9ttlk5nyu7L7%2Fuploads%2Fgit-blob-a40192c451fc90b6c13caa2dbb1bffc33620621e%2FMaxJumpCount3.gif?alt=media" alt="" width="375"><figcaption><p>MaxJumpCount = 3</p></figcaption></figure></div>

**\[StompJumpMultiplier]**

<div align="left"><figure><img src="https://2697870212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhRPi87oM9ttlk5nyu7L7%2Fuploads%2Fgit-blob-37296b7e13a93c9fa7c73eb804294c48bb4c1b21%2FStompJump0.gif?alt=media" alt="" width="375"><figcaption><p>StompJumpMultiplier = 0 (기본값)</p></figcaption></figure></div>

<div align="left"><figure><img src="https://2697870212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhRPi87oM9ttlk5nyu7L7%2Fuploads%2Fgit-blob-26cd852060d05d13e077ea2859efb74b0352c5da%2FStompJump0.5.gif?alt=media" alt="" width="375"><figcaption><p>StompJumpMultiplier = 0.5</p></figcaption></figure></div>

### 낙하

캐릭터의 공중 움직임과 중력 적용 방식을 제어합니다.

<table><thead><tr><th width="210.5001220703125">속성</th><th>설명</th></tr></thead><tbody><tr><td><strong>AirControl</strong></td><td>공중에서 이동 입력이 반영되는 정도</td></tr><tr><td><strong>FallingDeceleration</strong></td><td>낙하 상태에서 이동 입력을 멈췄을 때 적용되는 감속량</td></tr><tr><td><strong>FallingLateralFriction</strong></td><td>공중에서 캐릭터의 수평 움직임에 대한 마찰력</td></tr><tr><td><strong>GravityScale</strong></td><td>캐릭터에게 적용되는 중력의 비율</td></tr></tbody></table>

**세부 동작 내용**

* **AirControl**
  * 0이면 점프 후 방향 전환이 불가능하고, 1이면 지상과 동일하게 자유롭게 방향 전환이 가능합니다.
  * 플랫폼 액션에서는 높은 값을, 현실적인 낙하를 원하면 낮은 값을 활용합니다.
* **FallingDeceleration**
  * 값이 크면 빠르게 멈추며 공중 제어가 쉬워집니다.
  * 값이 작으면 관성이 커져, 계속 미끄러지듯 움직입니다.
* **FallingLateralFriction**
  * 값이 크면 방향 전환이 더 빠르고 안정적으로 됩니다.
  * 값이 작으면 방향을 틀어도 기존 움직임이 이어지며 미끄럽게 느껴집니다.
* **GravityScale**
  * 클수록 무겁게 떨어져 더 빠르게 낙하합니다.
  * 음수일 경우, 캐릭터가 위쪽(+Z) 방향으로 끌려가며 역중력 효과를 낼 수 있습니다.

#### 실제 동작 예시

**\[FallingDeceleration]**

<div align="left"><figure><img src="https://2697870212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhRPi87oM9ttlk5nyu7L7%2Fuploads%2Fgit-blob-38ab9ec5c724c5222c35c9ab935eb2927e4d6875%2FFallingDecel.gif?alt=media" alt="" width="375"><figcaption><p>FallingDeceleration = 2,500 (기본값)</p></figcaption></figure></div>

<div align="left"><figure><img src="https://2697870212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhRPi87oM9ttlk5nyu7L7%2Fuploads%2Fgit-blob-acf405fc90b467b1c86b65074f3586e52145791a%2FFallingDecel250.gif?alt=media" alt="" width="375"><figcaption><p>FallingDeceleration = 250</p></figcaption></figure></div>

**\[FallingLateralFriction]**

<div align="left"><figure><img src="https://2697870212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhRPi87oM9ttlk5nyu7L7%2Fuploads%2Fgit-blob-1f97b7bf8fc49b32ce1132df9fafd3cf21495fa3%2FFallingLateral0.gif?alt=media" alt="" width="375"><figcaption><p>FallingLateralFriction = 16 (기본값)</p></figcaption></figure></div>

<div align="left"><figure><img src="https://2697870212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhRPi87oM9ttlk5nyu7L7%2Fuploads%2Fgit-blob-7fb82d62b1ce42c10a652bd9a38e0f6b02deea77%2FFallingLateral0.2.gif?alt=media" alt="" width="375"><figcaption><p>FallingLateralFriction = 8</p></figcaption></figure></div>

### 캐릭터 충돌 및 메시 보정

캐릭터 충돌체 크기와 메시 위치를 보정하여 정확한 판정을 보장합니다.

<table><thead><tr><th width="187.166748046875">속성</th><th>설명</th></tr></thead><tbody><tr><td><strong>CapsuleHeight</strong></td><td>캐릭터 충돌체 캡슐의 세로 높이</td></tr><tr><td><strong>CapsuleRadius</strong></td><td>캐릭터 충돌체 캡슐의 가로 반지름</td></tr><tr><td><strong>CharacterMeshPos</strong></td><td>캐릭터 메쉬와 캡슐 충돌체 간의 상대 위치 보간</td></tr></tbody></table>

**세부 동작 내용**

* **CapsuleHeight**
  * 값이 크면 키가 큰 캐릭터처럼 판정되고, 작으면 난쟁이 캐릭터처럼 작게 판정됩니다.
* **CapsuleRadius**
  * 좁게 설정하면 좁은 통로나 문틈도 통과할 수 있고, 넓게 설정하면 쉽게 충돌해 몸집이 커진 것처럼 보입니다.
* **CharacterMeshPos**
  * 주로발이 떠 있거나 땅에 박히는 문제를 해결하는 데 사용됩니다.
  * 커스텀 아바타나 스킨 적용 시 필수적으로 조정할 수 있는 옵션입니다.

#### 실제 동작 예시

**\[CharacterHeight & CharacterMeshPos]**

<div align="left"><figure><img src="https://2697870212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhRPi87oM9ttlk5nyu7L7%2Fuploads%2Fgit-blob-fb64a40d71a56c4211fa9f1367007f178e816040%2FCharacterCollision.gif?alt=media" alt="" width="375"><figcaption><p>CapsuleHeight = 164, CharacterMeshPos = Vector3.new(0,-85, 0)</p></figcaption></figure></div>

<div align="left"><figure><img src="https://2697870212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhRPi87oM9ttlk5nyu7L7%2Fuploads%2Fgit-blob-eee846974ef3a90753daf068d5a1393b2cdb8963%2FCharacterCollision2.gif?alt=media" alt="" width="375"><figcaption><p>CapsuleHeight = 82, CharacterMeshPos = Vector3.new(0, -42.5, 0)</p></figcaption></figure></div>

### 환경 상호작용

캐릭터가 플랫폼이나 이동 오브젝트와 상호작용하는 방식을 제어합니다.

<table><thead><tr><th width="187.166748046875">속성</th><th>설명</th></tr></thead><tbody><tr><td><strong>IgnoreBaseRotation</strong></td><td>플랫폼 회전에 캐릭터가 영향을 받을지 설정</td></tr></tbody></table>

**세부 동작 내용**

* **IgnoreBaseRotation**
  * 캐릭터가 움직이는 플랫폼 위에 있을 때, 해당 플랫폼의 회전을 따라갈지 여부를 결정합니다.
    * True : 플랫폼 위에 있어도 캐릭터는 회전하지 않고 제자리에 고정됩니다. 이 경우 캐릭터는 발판 회전의 영향을 받지 않으므로 안정적으로 서 있는 연출을 할 수 있습니다.
    * False :플랫폼이 회전하면 캐릭터도 함께 회전하고 이와 더불어 카메라 시점도 같이 회전합니다.

#### 실제 동작 예시

**\[IgnoreBaseRotation]**

<div align="left"><figure><img src="https://2697870212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhRPi87oM9ttlk5nyu7L7%2Fuploads%2Fgit-blob-2f7179763514cd01d4ab03469d93740d41b2e312%2FIgnorebase.gif?alt=media" alt="" width="375"><figcaption><p>IgnoreBaseRotation = true (기본값)</p></figcaption></figure></div>

<div align="left"><figure><img src="https://2697870212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhRPi87oM9ttlk5nyu7L7%2Fuploads%2Fgit-blob-f4573b3f50f57ca9d19d39f89b2bc93c303f51b0%2FIgnorebasen.gif?alt=media" alt="" width="375"><figcaption><p>IgnoreBaseRotation = false</p></figcaption></figure></div>

### 카메라 조작

카메라의 회전·추적 움직임을 보간하여 부드럽게 표현합니다.

<table><thead><tr><th width="213.83349609375">속성</th><th>설명</th></tr></thead><tbody><tr><td><strong>EnableSmoothFollow</strong></td><td>카메라가 캐릭터 이동을 부드럽게 따라오도록 활성화</td></tr><tr><td><strong>SmoothFollowSpeed</strong></td><td>카메라가 캐릭터 이동을 따라는 속도</td></tr><tr><td><strong>FollowMaxDistance</strong></td><td>카메라가 캐릭터를 따라올 때 허용되는 최대 지연 거리</td></tr><tr><td><strong>EnableSmoothRotation</strong></td><td>캐릭터 회전을 부드럽게 따라가도록 활성화</td></tr><tr><td><strong>SmoothRotationSpeed</strong></td><td>카메라가 캐릭터의 회전에 반응하는 속도</td></tr></tbody></table>

**세부 동작 내용**

* **EnableSmoothFollow**
  * 카메라가 캐릭터 이동을 즉시 따라가지 않고 부드럽게 추적하도록 설정합니다.
    * True : 카메라가 약간 늦게 따라와 부드럽고 자연스러운 시야 제공합니다.
    * False : 카메라가 항상 캐릭터를 즉시 따라가 빠르지만 기계적인 느낌날 수 있습니다.
* **SmoothFollowSpeed**
  * 값이 크면 가볍고 빠르게 반응해 즉각적인 플레이 감각을 줍니다.
  * 값이 작으면 카메라가 천천히 따라와 시네마틱한 연출이 가능합니다.
* **FollowMaxDistance**
  * 값이 크면 카메라가 멀리까지 뒤쳐질 수 있으나, 설정 값 이상으로는 떨어지지 않습니다.
  * 값이 작으면 카메라가 캐릭터에 꼭 붙어서 따라옵니다.
* **EnableSmoothRotation**
  * 캐릭터가 입력 방향으로 즉시 회전하지 않고 부드럽게 따라가도록 설정합니다.
    * True : 일정 속도로 회전하여 부드럽고 안정적인 움직임을 제공합니다.
    * False : 캐릭터가 입력한 방향으로 즉시 회전하여 빠르지만 딱딱함 느낌을 제공할 수도 있습니다.
* **SmoothRotationSpeed**
  * 값이 크면 빠르게 반응해 즉시 전환에 가깝습니다.
  * 값이 작으면 천천히 따라오며 여유 있는 회전 연출이 가능합니다.

#### 실제 동작 예시

**\[SmoothFollow]**

<div align="left"><figure><img src="https://2697870212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhRPi87oM9ttlk5nyu7L7%2Fuploads%2Fgit-blob-a5c52bd3af55a5536dfe6d69fb4cf4714168339b%2FRundefault.gif?alt=media" alt="" width="375"><figcaption><p>EnableSmoothFollow = true (기본값), WalkSpeed = 1,000<br>SmoothFollowSpeed = 5, FollowMaxDistance = 250</p></figcaption></figure></div>

<div align="left"><figure><img src="https://2697870212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhRPi87oM9ttlk5nyu7L7%2Fuploads%2Fgit-blob-ca3aace5a37e00146f712d9dc32d2f4d2782197d%2FSmootFollow.gif?alt=media" alt="" width="375"><figcaption><p>EnableSmoothFollow = false, WalkSpeed = 1,000</p></figcaption></figure></div>

**\[SmoothRotation]**

<div align="left"><figure><img src="https://2697870212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhRPi87oM9ttlk5nyu7L7%2Fuploads%2Fgit-blob-74415d7f2a964cd8907691902511fb1d68007a7d%2FSmoothRotation00.gif?alt=media" alt="" width="375"><figcaption><p>EnableSmoothRotation = false (기본값)</p></figcaption></figure></div>

<div align="left"><figure><img src="https://2697870212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhRPi87oM9ttlk5nyu7L7%2Fuploads%2Fgit-blob-db8a3aee3bfe1330161a985978beea9223aaaa43%2FSmoothRotation.gif?alt=media" alt="" width="375"><figcaption><p>EnableSmoothRotation = true, SmoothRotationSpeed = 5</p></figcaption></figure></div>

## 주의사항

* 값이 비정상적으로 크거나 작으면 현실적이지 않은 조작감이 발생할 수 있습니다.
