Third Person Character Control Extensions

Hello there,

I really enjoyed the official tutorial of setting up the 3rd person template from you guys, even though programming is not my forte the blueprint structure made it really easy to understand. What took me 5-6 months pulling my hairs to figure out took only 2 hours with you guys.
After playing with the template from scratch I want to extend the powers of this template but I don’t know where to look or how to go about doing it.

One of the things I wish to accomplish is right at the moment when the character is idle and before it starts moving, I want the character to lean into the direction its moving in to create a fluid continuity. I’ve tried this with various states but the trade off is as you said in the videos, that they don’t blend well.

Another is when the character is in motion, let’s say walking and then comes to a halt, they enter a state of follow through with the momentum and another one for coming to a halt from running.

The best example of what I’m after is in the recent assassins creed unity single player gameplay trailer, where the main character is standing still and everytime before he moves, he performs a slight lean into his direction instead of just jumping straight to walking and when he comes to a halt from running or walking, he performs a follow through animation and then goes to idle.Assassin's Creed Unity Official E3 2014 Single Player Commented Demo [SCAN] - YouTube
I’m stuck, stalled…stuck really because I can’t think my way through the problem.
Any help would be appreciated.

I’ve made a couple of animation sequences which I hope got me started on the right track

_Idle
_Walk
_Jog
_Sprint

_Lean_TurnRight
_Lean_TurnLeft

_Rest_FromWalk
_Rest_FromRun

Thank you,
pdcsky

Do you have the animations and BlendSpace 1D setup?

NOTE: Please do not post same question multiple times on different sections. I closed the your other thread.

Thanks, yea I realized i posted it in the wrong section so I deleted it there and posted in the appropriate place

I’ve tried using blendspace 1D and it caused a couple of problems, but I found some clues while thinking and appears to be working well! The animations just need refining, hopefully it’ll work and I’ll happily show you

I do have another question, lets say you move the camera to face the front side of the character, and then we press forward, this makes the character turn around and move forward as normal. The thing is depending on the angle of the camera will determine whether the character turns left or right to move forward. (clockwise or anti-clockwise)

My question is : Is there a way to find out the value of this directional turning and to harness it in BP?

I think there is a node does calculate lookat rotation from a vector(say forward vector), then you can apply output to a lerp to rotate that should usually be the shortest rotation.

Thanks for the reply. I’ll look into forward vectors and see where that takes me.

Here’s a short clip!
So far in the earliest of development the experiment is a success.
I’m able to get leaning animations in before the character fully walks and a resting animation when the character stops.
I do admit the animations are lackluster, but they’re not important at this point in time. :slight_smile:

https://www.youtube.com/watch?v=O0gLbKemodU

The next step is try to smooth out the turn arounds or swap them with a custom turning around animation of my own which is why I need to figure out how to harness the vector of character and camera in the animation blueprint.
Or it could be something else entirely that I’m overlooking.

Any help or directions would be appreciated :slight_smile:

I’ve taken a look into the forward vector nodes and they do seem to show promise.

I feel like I am close to what I’m after.
The idea I’m trying to reach for is this

I have a vector tracking the forward direction of the 3P Character and also a vector tracking for the forward direction of the camera following the 3P character.

When the
character moves forward x = 1, y=0
character moves backward x = -1, y=0
character moves right x = 0, y = 1
character moves left x = 0, y = -1

22fbac908aae619fa56e48d7411613b32da03e53.jpeg

this is all with the camera not moving at all
however when I turn the camera around into a different direction, the x and y values are off track. I think the vector values are locked to the world and are not local to the character or camera…at least I think so
so I’m missing something crucial here

the idea is trying to get the values all constant no matter which direction im looking at

also, I’m trying to get the vectors to change only when the camera moves left and right, not including up and down since i am only measuring the horizontal angles

Id love to have help ^^

I realise my solution was far too over complicated, a bad habit of mine.
Trying to think much more simpler and the effect I was after was achieved.

https://youtube.com/watch?v=EgrrCAj4PS4

There’s a couple more things to do and to expand with this control system.
I’ll keep posting here as progress goes

Progress is going really well!
I feel like this is going in a good direction.
The idea was to replicate the control system of watchdogs where moving the joystick in any direction had a supportive animation for the respective direction pressed.
The main problem at first getting hold of the direction in a numerical form so that we can see our direction in respect to the mesh.

https://www.youtube.com/watch?v=wMMKL5Qz9ug

This was getting the camera figuring out what angle it was in relation to the mesh. (This was the toughest problem)
Now that is taken care of, planning had to be taken into account as for how many different directions I would cater to. After experimenting with Watchdogs, I figured out 12 directions would be enough.


The main problem is now getting the controls, animations and degrees to talk to each other.
For the walking animations, I plan to use animation montages, where I have 14 elements

  1. Front (Left Foot)

  2. Front Left

  3. Front Left 2

  4. Left

  5. Left Back

  6. Back (Left Foot)

  7. Back (Right Foot)

  8. Right Back

  9. Right

  10. Front Right 2

  11. Front Right

  12. Front (Right Foot)

  13. Walk_Left Foot

  14. Walk_Right Foot

I’m going to add jogging and running later, but walking is the concern for now.
The question I have now is this…

Lets say the degrees is at -0 - -20 which is Front(Left Foot)
If I were to press W (which is walk forward) I want the character to play the montage section as:
(1) [14][13]] Loop
[Front (Left Foot)][Walk_Right Foot][Walk_Left Foot]Loop]

But if I turn the camera to lets say (-110) - (-80) and I press W (Walk Forward)
I know now the animation montage played need to be “Left” now, so it changes depending on which direction the camera is facing. This also counts not just for the moving forward key, but also the walk backwards, walk left and right [W A S D] (though im not sure how to incorporate diagonals into this)

So basically saying, the WASD keys will play different sections of animation montages depending on where the camera is facing.

I know what needs to be done, I can think it in my head, but I don’t know how to turn those thoughts into visual code BP.
I feel this is very complex.

I will need help on this one.
Thanks