<!-- Page: https://rustic-game-engine.pages.dev/docs/api/movement -->

# Movement

Move, turn, follow and orbit objects with finite engine-scheduled actions.

[Feature status and language/platform compatibility](https://rustic-game-engine.pages.dev/markdown/reference/compatibility.md)

Choose an API to see its signature, parameters, examples and behavior.

## APIs

- [Movement.move()](https://rustic-game-engine.pages.dev/markdown/api/movement/move.md)
- [Movement.moveTo()](https://rustic-game-engine.pages.dev/markdown/api/movement/move-to.md)
- [Movement.rotateTo()](https://rustic-game-engine.pages.dev/markdown/api/movement/rotate-to.md)
- [Movement.lookAt()](https://rustic-game-engine.pages.dev/markdown/api/movement/look-at.md)
- [Movement.follow()](https://rustic-game-engine.pages.dev/markdown/api/movement/follow.md)
- [Movement.orbit()](https://rustic-game-engine.pages.dev/markdown/api/movement/orbit.md)

## Module guide

## Setup and language support

These engine-owned services work in Lua 5.4, Luau, JavaScript, Python, C, C++, C#, Java, PHP, and HTML inline JavaScript. Follow [Use gameplay actions](https://rustic-game-engine.pages.dev/markdown/guides/gameplay-actions.md) to create and attach a script, install external toolchains, and choose the correct language binding. PHP and HTML scripts belong under `ui/`; CSS alone runs no gameplay code.

The Calls section uses JavaScript signatures. The function examples below include native syntax for all ten script types, including SDK-specific alternatives and limitations. Attach a JavaScript Object Component script to the specified target and press **Play**. Globals are supplied by the engine. Schedule actions from `Start` or a callback, rather than at script top level. Native languages use typed options and their own builder conventions; see the guide's language bindings.

## Parameters

Entities are stable IDs or scene paths. Position, offset and center are three-component local vectors. Rotation is a nonzero quaternion [x, y, z, w]. Move/moveTo/rotateTo accept seconds or duration/speed options; follow and orbit take finite durations. Follow offset defaults to [0, 0, 0].

## Return and timing

Each helper returns an operation handle. Move adds an offset to the captured start; moveTo selects an absolute local destination.

## Behavior and limitations

- An anchored Part moves five units along local X, then turns toward the origin.
- Follow re-reads the target each frame during its catch-up duration; it does not install a permanent follower.
- LookAt samples orientation when starting. Reissue from a controller when the target changes.
- Orbit circles in local XZ; turns controls revolution count. Physics and simultaneous property writes can compete with motion.
- Check script attachment, enabled state and the Console when an operation fails. Asynchronous errors also appear in operation state. Callback exceptions disable the owner and clean up its actions.
- Owner destruction, disable, successful reload or Stop cleans up owned actions and subscriptions. Failed reload retains the previous behavior's operations. See [Operation handles](https://rustic-game-engine.pages.dev/markdown/api/operation-handles.md) for controls and lifetime details.
