> For the complete documentation index, see [llms.txt](https://renownedgames.gitbook.io/aurora-engine/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://renownedgames.gitbook.io/aurora-engine/artificial-intelligence/inverse-kinematics/foot-ik.md).

# Foot IK

Inverse kinematics of the legs

To configure the inverse kinematics for the legs, we need the **Foot IK** component:

![](https://4102492771-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MbGcEmnwAxQ5XmsXrVA%2F-MdN21eZE-LbKvPF6vfZ%2F-MdN58IEWPRKhke0luso%2Fimage.png?alt=media\&token=8d83d455-68df-40ea-af1b-1d79b28e890a)

{% hint style="info" %}
Here are two parameters that should be described in the animation controller.
{% endhint %}

![](https://4102492771-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MbGcEmnwAxQ5XmsXrVA%2F-MdN21eZE-LbKvPF6vfZ%2F-MdN6bsdTjZW8QqnR2Sx%2Fimage%20\(62\).jpg?alt=media\&token=8fff515b-2016-4b39-b1c3-a61d32bcbd3a)

| Name                 | Description                  |
| -------------------- | ---------------------------- |
| Left Foot IK Weight  | The weight of the left leg.  |
| Right Foot IK Weight | The weight of the right leg. |

{% hint style="info" %}
**Weight - how much we will redefine the position, relative to the animation.**

**The higher this value is, the stronger we bind the position of the bone to some other position.**
{% endhint %}

Next, we need to go to the animation we need and open the **Curves** item and create two curves for our variables there :

![](https://4102492771-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MbGcEmnwAxQ5XmsXrVA%2F-MdN21eZE-LbKvPF6vfZ%2F-MdN7c1I3Tjk-OOB_T-C%2Fimage.png?alt=media\&token=529d58dd-a1a8-4de3-8970-f7365eb92e9f)

{% hint style="info" %}
**The values of each variable range from 0 to 1.**

**0 - the position depends entirely on the animation.** \
**1 - it will depend on the surface under the foot.**
{% endhint %}

![The value is equal to 1](https://4102492771-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MbGcEmnwAxQ5XmsXrVA%2F-MdN21eZE-LbKvPF6vfZ%2F-MdN8KPaH5ktrwG6GWs1%2Fimage.png?alt=media\&token=184d5cb2-2579-4521-b000-67d9989caaba)

![The value is equal to 0](https://4102492771-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MbGcEmnwAxQ5XmsXrVA%2F-MdN21eZE-LbKvPF6vfZ%2F-MdN8viPCgVkZE4IcfP-%2Fimage.png?alt=media\&token=a95db618-55bf-4fb4-ba9a-f69b02fdbf5d)

{% hint style="info" %}
The surface is checked by throwing the beam from the patch down.
{% endhint %}

## Example

Let's consider the curves of inverse kinematics on the example of walking:

![](https://4102492771-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MbGcEmnwAxQ5XmsXrVA%2F-MdN21eZE-LbKvPF6vfZ%2F-MdNAQWnr2B89mP-v3N8%2Fimage.png?alt=media\&token=0e3b9528-c294-441c-afd2-f28cfd385963)

At the moment when the foot leaves the floor, the curve gradually changes to the value 0, and when it begins to descend to the surface, it gradually changes to the value 1.

![](https://4102492771-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MbGcEmnwAxQ5XmsXrVA%2F-MdN21eZE-LbKvPF6vfZ%2F-MdNAnHvrSs3VV_NIAPA%2Fimage.png?alt=media\&token=b23390e5-ce4a-47ea-a691-d534e0defdb1)

{% hint style="warning" %}
**The values should not be left statically equal to 1**, because of this, it may turn out that your character will start, as it were, sliding on the surface, and not walking on it.
{% endhint %}
