<!--
{
  "availability" : [
    "iOS: -",
    "iPadOS: -",
    "visionOS: 26.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "RealityKit",
  "identifier" : "/documentation/RealityKit/ManipulationComponent",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "RealityKit"
    ],
    "preciseIdentifier" : "s:17RealityFoundation21ManipulationComponentV"
  },
  "title" : "ManipulationComponent"
}
-->

# ManipulationComponent

A component that adds fluid and immersive interactive behaviors and effects.

```
struct ManipulationComponent
```

## Overview

`ManipulationComponent` enables rich interaction on entities in 3D space,
including gesture-based movement, and audio feedback.
When you apply this to an entity, the system enables intuitive manipulation
using hands or input devices like a trackpad.

### Interaction Features

- **Gestures**:
  - Single-hand or trackpad gestures allow translation of the entity.
  - Rotating the hand changes the orientation of the object.
  - Two-hand gestures allow intuitive scaling and rotation.
  - The system supports handoff between hands for seamless manipulation.
- **Audio Feedback**:
  - The system plays audio cues at key interaction moments (e.g., pinch, handoff, release).
  - To disable system audio or use custom sounds, set [`audioConfiguration`](/documentation/RealityKit/ManipulationComponent/audioConfiguration-swift.property) to `.none`, and use component events
    to trigger your own audio responses.
- **Component Events**:
  - `ManipulationComponent` publishes events through the entity’s `Scene` to notify you of key stages in the interaction lifecycle.
  - See [`ManipulationEvents`](/documentation/RealityKit/ManipulationEvents) for details on available events.

When you add this component to an entity, the system modifies the entity’s transform directly.
If you need to apply your own transforms, consider applying them to a **subentity** instead,
or listening to component events and responding accordingly.

### Interaction Lifecycle

During a typical interaction, the system transitions through several stages, each stage has a specific event in [`ManipulationEvents`](/documentation/RealityKit/ManipulationEvents).
You can subscribe to these events to implement custom behaviors, audio feedback, analytics, or visual responses:

1. **Interaction Will Begin**: [`ManipulationEvents.WillBegin`](/documentation/RealityKit/ManipulationEvents/WillBegin)  
   You can use this to add additional feedback, which lets someone know they have begun manipulating the entity.
2. **Object Handed Off**: [`ManipulationEvents.DidHandOff`](/documentation/RealityKit/ManipulationEvents/DidHandOff)  
   You can use this to provide visual or auditory confirmation of transfer.
3. **Transform Updated**: [`ManipulationEvents.DidUpdateTransform`](/documentation/RealityKit/ManipulationEvents/DidUpdateTransform)  
   You can use this to drive effects like trails, dynamic shadows, or visual feedback.
4. **Interaction Will Release**: [`ManipulationEvents.WillRelease`](/documentation/RealityKit/ManipulationEvents/WillRelease)  
   You can use this to run a final visual cue that the person’s manipulation of the entity is about to end.
5. **Interaction Will End**: [`ManipulationEvents.WillEnd`](/documentation/RealityKit/ManipulationEvents/WillEnd)  
   You can use this event to remove visual cues to show that neither the person nor the app
   are actively manipulating the entity’s transform anymore.

## Topics

### Creating a manipulation component

[`init()`](/documentation/RealityKit/ManipulationComponent/init())

Creates a manipulation component.

### Configuring the manipulation

[`configureEntity(_:hoverEffect:allowedInputTypes:collisionShapes:)`](/documentation/RealityKit/ManipulationComponent/configureEntity(_:hoverEffect:allowedInputTypes:collisionShapes:))

Apply a default configuration to an entity to enable to it for use with manipulation component.

[`audioConfiguration`](/documentation/RealityKit/ManipulationComponent/audioConfiguration-swift.property)

The audio configuration to apply to the object over the course
of the interaction.

[`dynamics`](/documentation/RealityKit/ManipulationComponent/dynamics-swift.property)

The dynamics controlling the object’s movement and behaviors during
the interaction.

[`releaseBehavior`](/documentation/RealityKit/ManipulationComponent/releaseBehavior-swift.property)

The behavior to apply to the object’s transform when someone releases it.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)