> For the complete documentation index, see [llms.txt](https://lightbug14.gitbook.io/ccp/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://lightbug14.gitbook.io/ccp/fundamentals/untitled/character-actor/stable-movement-features.md).

# Stable movement features

These features from the CharacterActor component (as seen in the previous section) **will be applied only if the character is stable**.

## Movement

### Velocy projection

Internally, when the character is stable, the CharacterActor component will project the input velocity (Linear Velocity) onto the current ground surface (Projected Velocity).

![](/files/-LytE27B2MuyQdEi8JA_)

This process will always maintain the initial velocity magnitude, regardless of the slope angle.

### Collide and Slide

This algorithm is responsible for determining obstacles along the way. If the encountered surface is allowed the character will walk onto it (maintaining always the displacement magnitude). if not, the slope will be considered as an invisible wall.

&#x20;![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-LvxVSjyzvP6F7c9h_Hu%2F-Lyt9souh6_VeUiYsTZu%2F-LytFnIU3mJv2SpAT3_q%2FSlopes_3D.png?alt=media\&token=4b2637cd-a160-4c7f-b9b0-f44c8c9d06fc) ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-LvxVSjyzvP6F7c9h_Hu%2F-Lyt9souh6_VeUiYsTZu%2F-LytFrrCQmHQOtJv-a52%2FSlopes_3D_allowed.png?alt=media\&token=5102a348-1c78-47a4-9ded-db24192f7dad)

## Grounding

### Step up/down

This feature is responsible for putting the character on the ground (if there is one). There are two important values to consider:

* **Step up distance:** Any stable surface below this height will be walkable by the character.
* **Step down distance:** When losing contact with the ground, if the distance between the character and the ground is less or equal to this value, then the character will be automatically *grounded* (sticking to the ground)*.* If there is no ground at all, then the character will be *not grounded*.

![Step up.](/files/-MHrAsfVhyWTYDeF0Izt)

![Step down.](/files/-MHrAsfWP9DcxjQYJNaP)

### Edge Compensation

Normally, when a character is standing **on an edge** it collision shape will make contact with it. What edge compensation does is to lift up the capsule, simulating a cylinder shape.&#x20;

<img src="/files/-LytOSQrFpnp3IgRxMpM" alt="" data-size="original">    <img src="/files/-LytOtCAOJgou3OH9UtC" alt="" data-size="original">&#x20;

This feature only works on edges, for slopes you will get the same results as before (with edge compensation disabled).

### Dynamic Ground

If the current ground the character is standing on moves/rotates, then the character will move and/or rotate with it (only yaw rotation allowed).

![](/files/-LytPhwfi7DKWBBB9ceD)

A valid dynamic ground **must be updated during the physics simulation**. Here are some valid examples:

* **Kinematic rigidbody** that moves/rotates using **MovePosition**/**MoveRotation**.
* **Kinematic/Dynamic rigidbody** that moves/rotates based on an **animation clip**. The update mode must be *AnimatePhysics* (*Animator* component)**.**
* **Dynamic rigidbody** that moves/rotates using linear **velocity, angular velocity, forces, torque,** etc.

## Rigidbody interactions

### Weight

If the character is standing on top of a dynamic rigidbody, it will automatically apply a force downwards at the contact point, proportional to the rigidbody mass.

![](/files/06bv0ZUWi3SgGiihXNzz)

### Push

The character can push other dynamic rigidbodies by colliding with them. It is also possible to ignore some rigidbodies by using a dedicated layermask:

![](/files/-MPWmundmmJnLvzFx7ao)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://lightbug14.gitbook.io/ccp/fundamentals/untitled/character-actor/stable-movement-features.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
