Skip to content

MotionBreathingComponent

MotionBreathingComponent adds subtle idle camera motion when the character is not walking. It automatically starts and stops based on movement state.

Requirements

  • Character with MotionCameraComponent
  • Optional ASC access for the breathing active GameplayEffect
  • Gameplay Ability System initialized when the tag effect is used
  • GE_Motion_BreathingActive GameplayEffect
  • Motion.Camera.BreathingActive GameplayTag

For setup steps, see How to add Motion to a character.

Behavior

The component checks whether the character is walking. When movement stops, it starts the breathing camera curve and applies the breathing active tag. When movement resumes, it stops the curve and removes the tag effect.

Activation and deactivation are immediate. The component does not add delay or transition timing beyond the camera curve itself.

API

Events

  • OnBreathingStarted(): called when breathing starts.
  • OnBreathingStopped(): called when breathing stops.

Functions

  • IsBreathingActive() -> bool: returns whether breathing is active.
  • StartBreathing() -> void: starts the breathing effect.
  • StopBreathing() -> void: stops the breathing effect.
  • InitializeBreathingComponent() -> void: initializes cached references.
  • IsCharacterWalking() -> bool: checks walking state.
  • GenerateCurveIdentifier() -> FName: generates a unique curve identifier.
  • PrintDebugInformation() -> void: prints debug output when enabled.

Configuration

Configuration lives on the assigned MotionBreathingProfile. The current Motion default is /MotionCore/Motion/Profiles/v2_0_0/DA_MotionBreathingProfile_Default_v2_0_0.

  • CameraBreathingCurve: FMotionCurve used for breathing camera motion. The curve can include subtle translation and rotation, playback rhythm, duration, and intensity.
  • BreathingActiveTagEffect: GameplayEffect that grants the breathing active tag.

The component's editable setup surface is the Profile reference. Active curve playback state, effect handles, and diagnostics remain component-owned.

Read-Only State

  • BreathingCurveIdentifier: unique identifier for the breathing curve.
  • bHasActiveCurve: whether the breathing curve is currently active.

State Access

Use IsBreathingActive() to check whether breathing is active for gameplay or presentation logic.

Motion - Advanced First Person Character Controller