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
Camera Location Curves Manager
Camera Rotation Curves Manager
Collision Feeler
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 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 set the default camera configuration, set ECA_FirstPerson
for the Camera Target Offset of the Motion Camera Component.
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)
Movement Sound Component (enables footsteps)
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.