> For the complete documentation index, see [llms.txt](https://docs.incari.com/incari-studio/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.incari.com/incari-studio/toolbox/actions/rotatetoaction.md).

# RotateTo Action

This **Node** has different versions for [**Scenes**](/incari-studio/objects-and-types/project-objects/scene.md) and [**Scene2Ds**](/incari-studio/objects-and-types/project-objects/scene2d.md). Find in the tabs below the documentation for both versions.

{% tabs %}
{% tab title="Scene" %}
**Overview**

![The RotateTo Action Node.](/files/nw6PXgUTUKNpzLnCkOtA)

The **RotateTo Action Node** continuously rotates a [**Scene Object**](/incari-studio/objects-and-types/scene-objects.md) to the *Euler angles* specified in `To` for a given period of time, thus creating an **Animation**.

Furthermore, visit the [**Actions Nodes**](/incari-studio/toolbox/actions.md) page for a general introduction to these **Nodes**, and [**Rotation**](/incari-studio/objects-and-types/attributes/common-attributes/transformation.md#rotation) for more detail about the `Rotation` **Attribute**.

[**Scope**](/incari-studio/toolbox/overview.md#scopes): **Scene**, **Function**, **Prefab**.

**Attributes**

![The RotateTo Action Node Attributes.](/files/OkNESq78bXBGMXSIMV3U)

| Attribute        | Type          | Description                                                                                                                                                                                                                                                                                                                                     |
| ---------------- | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `To`             | **Vector3**   | The *Euler angles* along the X, Y, and Z axes to rotate to, if none are received in the `To` **Input Socket**.                                                                                                                                                                                                                                  |
| `Duration (sec)` | **Float**     | The total time of the **Action**, if none is received in the `Duration` **Input Socket**.                                                                                                                                                                                                                                                       |
| `Interpolation`  | **Drop-down** | The `Interpolation` method to use for calculating the intermediate values of the *Euler Angles*. It can be [*Linear*](https://en.wikipedia.org/wiki/Linear_interpolation), [*Sine Ease In*](https://easings.net/#easeInSine), [*Sine Ease In Out*](https://easings.net/#easeInOutSine), or [*Sine Ease Out*](https://easings.net/#easeOutSine). |

**Inputs**

| Input         | Type           | Description                                                                                                                                                                 |
| ------------- | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Instance ID` | **InstanceID** | The assigned [**Instance ID**](/incari-studio/toolbox/actions.md#instance-id) of the **Action**. If nothing is received, it automatically assigns 0 as the **Instance ID**. |
| (►) `Start`   | **Pulse**      | A standard **Input Pulse**, to trigger the execution of the **Node**.                                                                                                       |
| `Object ID`   | **ObjectID**   | The ID of the target **Object**.                                                                                                                                            |
| `Duration`    | **Float**      | The total time (in seconds).                                                                                                                                                |
| `To`          | **Vector3**    | The *Euler angles* along the X, Y, and Z axes to rotate to.                                                                                                                 |

**Outputs**

| Output        | Type           | Description                                                                                      |
| ------------- | -------------- | ------------------------------------------------------------------------------------------------ |
| `Instance ID` | **InstanceID** | The assigned [**Instance ID**](/incari-studio/toolbox/actions.md#instance-id) of the **Action**. |
| `OnStart` (►) | **Pulse**      | Flows to the next **Node** following **RotateTo Action** when the **Action** starts.             |
| `OnEnd` (►)   | **Pulse**      | Flows to the next **Node** following **RotateTo Action** when the **Action** stops.              |
| {% endtab %}  |                |                                                                                                  |

{% tab title="Scene2D" %}
**Overview**

![The RotateTo Action Node.](/files/HelntuaB7Vhs79xqyXsz)

The **RotateTo Action Node** continuously rotates a [**Scene2D Object**](/incari-studio/objects-and-types/scene2d-objects.md) to the value specified in `To` for a given period of time, thus creating an **Animation**.

Furthermore, visit the [**Actions Nodes**](/incari-studio/toolbox/actions.md) page for a general introduction to these **Nodes**, and [**Rotation**](/incari-studio/objects-and-types/attributes/common-attributes/transformation.md#rotation) for more detail about the `Rotation` **Attribute**.

[**Scope**](/incari-studio/toolbox/overview.md#scopes): **Scene**, **Function**, **Prefab**.

**Attributes**

![The RotateTo Action Node Attributes.](/files/DOII7y4ggRkfEWfEor0B)

| Attribute        | Type          | Description                                                                                                                                                                                                                                                                                                                                     |
| ---------------- | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `To`             | **Float**     | The value to rotate to, if none are received in the `To` **Input Socket**.                                                                                                                                                                                                                                                                      |
| `Duration (sec)` | **Float**     | The total time of the **Action**, if none is received in the `Duration` **Input Socket**.                                                                                                                                                                                                                                                       |
| `Interpolation`  | **Drop-down** | The `Interpolation` method to use for calculating the intermediate values of the *Euler Angles*. It can be [*Linear*](https://en.wikipedia.org/wiki/Linear_interpolation), [*Sine Ease In*](https://easings.net/#easeInSine), [*Sine Ease In Out*](https://easings.net/#easeInOutSine), or [*Sine Ease Out*](https://easings.net/#easeOutSine). |

**Inputs**

| Input         | Type           | Description                                                                                                                                                                 |
| ------------- | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Instance ID` | **InstanceID** | The assigned [**Instance ID**](/incari-studio/toolbox/actions.md#instance-id) of the **Action**. If nothing is received, it automatically assigns 0 as the **Instance ID**. |
| (►) `Start`   | **Pulse**      | A standard **Input Pulse**, to trigger the execution of the **Node**.                                                                                                       |
| `Object ID`   | **ObjectID**   | The ID of the target **Object**.                                                                                                                                            |
| `Duration`    | **Float**      | The total time (in seconds).                                                                                                                                                |
| `To`          | **Float**      | The value to rotate to.                                                                                                                                                     |

**Outputs**

| Output        | Type           | Description                                                                                      |
| ------------- | -------------- | ------------------------------------------------------------------------------------------------ |
| `Instance ID` | **InstanceID** | The assigned [**Instance ID**](/incari-studio/toolbox/actions.md#instance-id) of the **Action**. |
| `OnStart` (►) | **Pulse**      | Flows to the next **Node** following **RotateTo Action** when the **Action** starts.             |
| `OnEnd` (►)   | **Pulse**      | Flows to the next **Node** following **RotateTo Action** when the **Action** stops.              |
| {% endtab %}  |                |                                                                                                  |
| {% endtabs %} |                |                                                                                                  |

## Example

This section shows a simple example of how to use the **RotateTo Action** **Node** and the effect it has on a **Scene Object**. This concept can be applied as well to a **Scene2D Object**.

We start by [configuring the **Scene**](#scene-configuration), then [build the **Logic**](#logic), and finally show the [result](#final-result).

### Scene Configuration

We consider a [**Scene**](/incari-studio/objects-and-types/project-objects/scene.md) with two [**Objects**](/incari-studio/objects-and-types/scene-objects.md): a red [**Torus**](/incari-studio/objects-and-types/scene-objects/primitives.md#torus) and a [**Directional Light**](/incari-studio/objects-and-types/scene-objects/lights.md), both of which can be easily created in the [**Scene Outliner**](/incari-studio/modules/scene-outliner.md). Then, we set the `Scale` **Attribute** of the **Torus** to $$(2, 2, 2)$$ and the `Position` of the **Light** to $$(0, 200, 0)$$. See this configuration in the following image:

![Scene configuration.](/files/73MaFjBxC0pCXP4uh2QC)

### Logic

We then need to configure the **Logic**. This is done in the [**Logic Editor**](/incari-studio/modules/logic-editor.md).

We will use two **RotateTo Action** **Nodes** in order to first perform a *rotation* and then reverse it. For the first one, we set the following **Attributes**:

* `To`: $$(90, 90, 0)$$
* `Duration (sec)`: $$2$$
* `Interpolation`: `Linear`

And for the second **Node**:

* `To`: $$(0, 0, 0)$$
* `Duration (sec)`: $$2$$
* `Interpolation`: `Linear`

Then, we connect to both **Nodes** the [**Object Node**](/incari-studio/objects-and-types/scene-objects.md#objects-in-the-logic) of the red **Torus**, a **Pulse** to the `Start` **Input Socket** of the first **RotateTo Action** and the **Output** `OnEnd` to the `Start` **Input** of the second **RotateTo Action** **Node**. Thus, having the following **Logic** configuration:

![Logic configuration.](/files/PDNm2KM34w6wJi4jxLmp)

### Final result

Finally, the effect of the **RotateTo Action** **Node** when triggered is the following:

![Final result.](/files/i8zyK7xrweiN360aI0lV)

## See Also

* [**RotateBy Action**](/incari-studio/toolbox/actions/rotatebyaction.md)
* [**RotateFromTo Action**](/incari-studio/toolbox/actions/rotatefromtoaction.md)

## External Links

* [*Rotation*](https://en.wikipedia.org/wiki/Rotation) on Wikipedia
* [*Euler angles*](https://en.wikipedia.org/wiki/Euler_angles) on Wikipedia
