Create your own Motion Character
Last updated
Last updated
In case you want to create your own Motion character or want a better understanding of the requirements and assumption Motion has and makes, you can follow this setup path instead!
Those steps are for creating a character from scratch. Motion ships with a completely configured one to get you started faster. If you want to do so, follow "Clone the pre-configured Motion Character" instead.
The following steps assume that you have at least a basic understanding of the following:
Blueprints
Skeletal Meshes
Animation Blueprints
Component Tags
In a folder of your liking, create a new Blueprint Class and select MotionCharacter
as parent class.
Do NOT select B_MotionCharacter
! I'll name mine B_MyGameCharacterFromScratch
.
By default the Motion Character will only have the following components:
Capsule Component
Arrow Component
Skeletal Mesh
Ability System Component
Character Movement Component
The reason why I did not add the meshes we are about to add by default, is that you may have a different setup you would like to use that requires less meshes / components than we'll have at the end of this setup, but also want to keep MotionCharacter
as parent class.
Motion typically uses 2 skeletal meshes in its setup:
The main mesh which usually references a "headless" version of the character you are going to use, which also runs on your main animation blueprint.
A secondary mesh that the player's camera won't be able to see, but is used to show a full-body shadow. The animation blueprint for this mesh typically just copies the pose from it's parent skeletal mesh.
We'll begin by setting up the primary mesh. I'll assign it the default ones that ship with Motion which are ABP_Mannequin_Base
for the animation blueprint and SKM_Manny_Headless
for the Skeletal Mesh Asset.
Then create a new skeletal mesh and make it a child component of the inherited skeletal mesh component. Assign it a full-body version of your character and an animation blueprint that copies the parents pose. Here are the defaults I use:
You are free to use any animation blueprint you would like to Motion. In order to get the information about a character's state (i.e. if the character is crouching, sprinting or jumping) your animation blueprint should either:
inherit from MotionAnimInstance
. (you should be able to safely re-parent any existing animation blueprint you have)
implement InitializeWithAbilitySystem
.
Your blueprint should look like this now:
You will also need to make sure that visibility is set up correctly for both meshes, otherwise you'll see a headless shadow!
Default Mesh: Cast Shadow = false; Owner No See = false
Fullbody: Cast Shadow = true; Owner No See = true; Hidden Shadow = true
Next you will want to re-position the main mesh so the character fits into the character capsule and faces in the right direction. To do so, follow these steps:
Set the Mesh
Location Z to -90.
Set the Mesh
Rotation Z to 270.
Then your viewport should look like this:
To make the capsule component fit our character more nicely, I recommend the following values:
Capsule Half Height: 90
Capsule Radius: 60
I recommend a larger radius to avoid camera clipping into walls. Motion implements a custom camera component which does try to move the camera in a way that it should not clip into the wall, but under certain conditions it may move the camera down, which can be undesired.
If you would like to use the Motion Camera Component, which implements camera offsets via curves and collision prevention, add it via the "Add Component" button to the blueprint.
You do not have to position the camera so it matches the position it should have in-game. Use the Camera Target Offset
instead.
In order for any of the camera offsets generated by the Motion components to function, two curve managers should be added to the character blueprint. One for locations and one for rotations.
To do so, add two B_BaseCurveManager
components and give each of them one of the component tags:
CameraLocationCurvesManager
CameraRotationCurvesManager
The tags are needed so the core component knows which one is which.
As of Motion 1.5, Motion still requires the use of a Core Component which is responsible for the calculation of the current walk speed.
In a future version of Motion, this need will be dropped.
For now, please add a B_MotionCoreComponent
to your character blueprint.
Our character is now mostly set up, but is unable to do anything! To fix that, add any components that ship with Motion that you'd like. The following are available:
Walking Component (required, as the character is unable to move otherwise)
Jumping Component (highly recommended to enable the character to jump)
Crouching Component (highly recommended to enable the character to crouch)
Sprinting Component (enables sprinting for the character)
Breathing Component (makes the camera move slightly when the character is not moving)
Please check each component's documentation page for more information about modifying their respective behaviour.
Motion ships with default controls for all abilities it ships with. You are free to use them in your character, or make a copy of them to modify them to your needs.
You can find the configuration in the Class Defaults under the category "Motion".
In order for Motion to work in your project, the following changes in your Project Settings should be made:
Under, Engine -> Input: Change the "Default Input Component Class" to "MotionInputComponent
".
Under, Project -> Maps & Modes: Change the Default GameMode to a one that uses your new character and uses MotionPlayerController
as Player Controller.
Once you have completed all the steps, starting a new PIE session should result in your newly created Motion Character being used!
I highly recommend re-parenting to MotionAnimInstance
as the MotionAbilitySystemComponent
assumes that the character's animation blueprint is inheriting from it.
Then, you can use the Gameplay Tag Property Map
to assign the Tags to variables in your animation blueprint.