Appearance
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_BreathingActiveGameplayEffectMotion.Camera.BreathingActiveGameplayTag
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:FMotionCurveused 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.