1) First things first, create an animation blueprint targeting the skeleton for the prototype character
2) Create an animation blueprint and add the following:
- Create a 1D blendspace using the idle, walk and run animation controlled by the character's speed.
- Create an animation state machine to go from idle/walk/run - jump - falling - end jump - idle/walk/run.
- Create all the transition rules for the different states based sometimes on a external isInAir Boolean and sometimes on the time remaining ratio between the two adjacent animations.
- Add the 1D blendspace as part of the idle/walk/run sate and add the jump start, jump loop, and jump end animations for the jump, falling, end jump states inside the state machine
- Add the state machine to the animation graph and make it drive the final pose
- In the event graph wire the isFalling from the character movement component to the isInAir Boolean that we use to drive state transitions inside the state machine. Similarly, wire the pawn's (the character) velocity to the speed input for driving the 1D blendspace (speed is just the velocity length).
3) Create a Character blueprint and add the Skeleton Mesh for the character, the animation blueprint created above, a collision capsule, a spring arm and a camera as components inside this Character blueprint. Make sure the camera component is parented by the spring arm component and if the camera does not snap into the correct place of the spring arm make sure you reset its Location to default. In the character movement controller make sure 'Orient Orientation to Movement' is selected and that the camera's component 'Use Pawn Control Rotation' is unselected in return.
4) Create some input bindings/mappings for the engine. It is here that I added the spacebar for jump action and the W/D keys for the speed axis.
5) In the character movement controller create an event graph where all the different input axis that got binded/mapped earlier get wired to 'add movement inputs'. This is achieved by extracting forward and right vectors out of the control rotation. We will also want to wire the mouse input axis to the 'add controller yaw input' and 'add controller pitch input' respectively. If you want to be able to freely rotate the camera spring arm around the character make sure to disable 'use controller rotation yaw' on the default settings of the character controller blueprint.
6) Create a Game Mode blueprint and set the default pawn class to that of the character blueprint we just set up in the step above.
7) In the world settings make sure to override the game mode with the one game mode blueprint you just created in the step above.
In order to get Windows 8 to think my PS3 Controller was a Xbox controller I followed the following guide.
In order to wire the Gamepad into the game make sure to A) add the appropriate input mappings/bindings to the engine. The showup as Gamepad Left/Right Y axis and Gamepad Left/Right X axis for example. Finally make sure to add the blueprint connections for such bindings in blueprint and multiply their values by a 'base turn rate' of our own choosing (tweakable) and the time delta between frames (Get World Delta Seconds).