Appearance
Feature Overview
Motion is a component-based first-person character controller for Unreal Engine. You can add only the movement, camera, animation, sound, and GAS parts that are necessary for your character.
The plugin is organized around a few core ideas:
- Motion works with each
ACharactersubclass. A custom character inheritance chain is not necessary. - Versioned component profiles hold Motion-owned defaults, while components own runtime state.
- GameplayEffects, GameplayTags, and replicated attributes represent movement state.
- Camera, sound, and animation systems consume movement state or component events instead of owning movement rules.
- Components expose Blueprint APIs and C++ extension points.
- Networked movement lets the server own movement state while clients predict where responsive input matters.
For the first setup, start with Quick start. Then, select one method. Use How to add Motion to a character for a project ACharacter. Or, duplicate the supplied B_MotionCharacter for a starter character.
Component Profiles
Walk, sprint, crouch, jump, breathing, movement sound, and camera components read their authored defaults from profile DataAssets. Duplicate a Motion-owned profile into project content before you change shared movement, camera curves, sound tables, or GameplayEffect references.
Reference: Component profiles
Movement
Motion separates movement behavior into components. Thus, a character can use walking and jumping without sprint, crouch, breathing, or sound behavior.
Walking
MotionWalkComponent tracks basic walking state and directional movement. Most other movement features react to this component.
It handles velocity-based walking detection, directional helpers such as forward/back/strafe checks, GAS-backed speed changes, walking camera events, and walking-state delegates.
Reference: MotionWalkComponent
Sprinting
MotionSprintingComponent adds sprint speed, optional stamina, camera feedback, and client-predicted sprint intent.
Use it when sprinting is more than a single speed toggle. It can drain and regenerate stamina. It can also use different start and stop sprint thresholds, support hold or toggle input, and report sprint state changes through delegates.
Reference: MotionSprintingComponent
Crouching
MotionCrouchingComponent coordinates crouch input, GAS state, camera height events, and collision-aware uncrouching.
It wraps the native Unreal crouch behavior and does not replace the capsule logic of the movement component. Motion adds the state, event, and camera coordination that first-person characters usually use.
Reference: MotionCrouchingComponent
Jumping
MotionJumpComponent extends jumping with responsiveness features such as coyote time, jump buffering, and optional multi-jump behavior.
The component also coordinates jump and landing camera curves. It can start the landing sound without a separate request and keep server validation. Projects can call its separate jump-sound API when necessary.
Reference: MotionJumpComponent
Breathing and Movement Sounds
MotionBreathingComponent adds subtle idle camera motion when the character is not walking. MotionMovementSoundComponent connects animation notifiers to surface-aware movement sounds.
These systems are separate from the core movement components. You can use them for presentation improvements without a connection to movement rules.
References:
Camera
The Motion movement components send camera feedback directly to MotionCameraComponent when the character has this component.
MotionCameraComponent controls first-person camera height, procedural curve effects, static offsets, ceiling checks, and view-angle limits. You can add, pause, continue, or remove effects by identifier. Thus, you can use the same camera feedback for different movement states.
References:
Animation
MotionAnimInstance is the primary Motion animation class. It exposes movement and GAS state to Animation Blueprints. Thus, each animation graph does not find the character, movement component, or AbilitySystemComponent again.
MotionAnimInstance maps GameplayTags to Blueprint variables. It also updates cached ground-distance state during animation updates. During PlayerState initialization, it can try AbilitySystemComponent binding again. It can cache active gameplay tags and expose the active first-person item config.
References:
First-Person Item Presentation
Motion includes a runtime and PIE-tuning workflow for local first-person item visuals. The system separates item configuration, basic upper-body held pose overlays, optional linked animation layers, paired first-person/world item presentations, and UE native first-person primitive roles.
The purpose is to keep item-specific animation and presentation out of the shared character controller. A native item config can contain a fallback held pose animation and gameplay-tag-specific held pose entries. For full control, it can contain a custom overlay graph. Linked layers remain available for larger pose-set changes.
This system handles first-person and world item visuals. Your project owns equip state, inventory rules, and muzzle logic.
References:
- First-person item configs
- How linked animation layers work in Motion
- How to create a first-person item config
- How to create and link an animation layer
GAS Integration
Motion uses the Gameplay Ability System as the shared state layer for movement. Components apply GameplayEffects, read replicated attributes, and react to GameplayTags.
MotionAttributeSet gives the usual movement attributes. These attributes include walk speed, jump velocity, stamina, maximum stamina, stamina regeneration, and stamina drain. Motion creates this set on authority when it is absent. A GameplayEffect modifier to walk speed represents sprint speed. Components can also find attributes with the same names in project AttributeSets. To use these values, retarget the GameplayEffects and synchronize the values with CharacterMovementComponent.
The Motion tag taxonomy includes walk, sprint, crouch, jump, stamina, held-item, and camera state. Motion declares Motion.State.MovementHalted for project use. The Motion components in this release do not set this tag.
References:
Debugging and Networking
Motion has log categories for individual systems. It also has a Gameplay Debugger category for live movement state and networking diagnostics for multiplayer validation.
References:
Utilities
Motion includes helper libraries for the usual Blueprint and C++ integration points.
MotionAbilitySystemHelper contains functions for AbilitySystemComponent lookup and actor-info initialization. It also contains tag, effect, attribute, and platform-relative velocity functions.
References:
Next steps
Use the overview as a map. Then, move to the page for your task.