<!--
{
  "availability" : [
    "iOS: 18.0.0 -",
    "iPadOS: 18.0.0 -",
    "macCatalyst: 18.0.0 -",
    "macOS: 15.0.0 -",
    "tvOS: 26.0.0 -",
    "visionOS: 2.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "RealityKit",
  "identifier" : "/documentation/RealityKit/ForceEffectComponent",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "RealityKit"
    ],
    "preciseIdentifier" : "s:17RealityFoundation20ForceEffectComponentV"
  },
  "title" : "ForceEffectComponent"
}
-->

# ForceEffectComponent

A component that defines the forces that affect an entity, including custom forces that you define.

```
struct ForceEffectComponent
```

## Overview

After you assign a `ForceEffectComponent` to an entity, the force effects in the component apply each physics update for as long as the component and force effects exist.
Each [`ForceEffect`](/documentation/RealityKit/ForceEffect) updates sequentially while the physics system accumulates its forces.
The center frame of each [`ForceEffect`](/documentation/RealityKit/ForceEffect) coincides with and moves alongside the entity’s position and orientation.
To offset this center frame, set the position and orientation.

> Note: You can set the ``doc://com.apple.RealityKit/documentation/RealityKit/ForceEffectComponent/simulationState-swift.property`` parameter to ``doc://com.apple.RealityKit/documentation/RealityKit/ForceEffectComponent/SimulationState-swift.enum/pause`` if you want to apply forces later.

### Create forces

Use [`ConstantForceEffect`](/documentation/RealityKit/ConstantForceEffect) to apply a constant force in a direction:

```swift
let constantForceEffect = ForceEffect(effect: ConstantForceEffect(strength: 1, direction: [1, 0, 0]))
```

RealityKit provides a set of useful forces you can use with `ForceEffectComponent`:

- [`ConstantForceEffect`](/documentation/RealityKit/ConstantForceEffect)
- [`ConstantRadialForceEffect`](/documentation/RealityKit/ConstantRadialForceEffect)
- [`DragForceEffect`](/documentation/RealityKit/DragForceEffect)
- [`RadialForceEffect`](/documentation/RealityKit/RadialForceEffect)
- [`TurbulenceForceEffect`](/documentation/RealityKit/TurbulenceForceEffect)
- [`VortexForceEffect`](/documentation/RealityKit/VortexForceEffect)

### Create custom forces

To create a custom force effect, define a structure that implements [`ForceEffectProtocol`](/documentation/RealityKit/ForceEffectProtocol), then create an instance of [`ForceEffectBase`](/documentation/RealityKit/ForceEffectBase) with your custom `ForceEffectProtocol` implementation:

```swift
// CustomForce implements ForceEffectProtocol, and has a custom parameter, thrustersActive, that determines how the system applies your force to a physics body.
let thrusterForce = CustomForce(thrustersActive: true)
// Create an instance of ForceEffectBase using your custom force.
let thursterForceEffect = ForceEffect(effect: thrusterForce)
```

> Note: To apply force to a physics body with a custom `ForceEffectProtocol`, you must implement and apply forces in ``doc://com.apple.RealityKit/documentation/RealityKit/ForceEffectProtocol/update(parameters:)``.

### Apply forces

You can apply multiple forces to your entity at once by including them in `ForceEffectComponent`:

```swift
let forceEffectComponent = ForceEffectComponent(effects: [constantForceEffect, thrusterForceEffect])
entity.components.set(forceEffectComponent)
```

---

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)