How to get smooth locomotion animations for RTS characters?

Hi guys,

I’m currently developing an RTS project with Unreal, and so far I have done some good progress considering is my first ever game. However, I have a doubt regarding the character animations.

I have setup a 2D blendspace for my locomotion, but inside my game (using ‘click/move to’ system) it looks like it only recognizes my blendspace as a 1D and it look very choppy as shown in this video:

As you can see in the video above, my characters change direction really abruptly, just snapping onto the new course.

I’m also attaching below my code from the CharacterAnimBP showing my calculations for Speed and Direction.

Also attaching my current blendspace:

My goal is to have the character blend animations when changing directions after clicking a new location on the map, blending direction changes, etc. What would be the best way to achieve this?

Any help would be greatly appreciated.

Anyone that can help with this issue?

I’m not entirely sure, but I have a couple possibilities here:

Have you tried to adjust the interpolation rate for the x axis to something above 0?

In your character movement component, what are your rotation settings?

On the character movement component details panel under rotation settings there is a check box, off by default, to use Controller desired rotation.

There is also orient rotation to movement, which overrides this setting as well as an option to adjust the rotation rate.

322988-screenshot-2020-11-24-125100.png

Maybe try adjusting some of those settings? I’d say either check the “Use Controller Desired Rotation” or crank up the z value. There could be something about how you’re instructing the pawn to move that makes these settings invalid. Post your results below if you need more help and I’d be glad to continue troubleshooting.

If this has been helpful, please mark my answer as accepted.

Happy developing,

Reishi

@ReishiRamzi

Thanks for taking the time to help me. It is much appreciated.

I have tried your solutions above, but unfortunately there has been no change.

I have tried:

  1. Ticking the ‘Use controller Desired Rotation’
  2. Ticking the ‘Orient Rotation to Movement’ box (both together and on their own)
  3. I have increased the interpolation time for my horizontal axis in the blendspace
  4. I have increased the value of the Z axis rotation rate under the character movement (rotation) section
  5. I was also attempting the following:

I currently have a double click to run functionality set within my character controller and character base BP, shown here:

The above functionality allows me to run on a double click event. I was trying to include a section to calculate rotation to this part as well, as I have done within my AnimBP (visible in my first post above) but it requires me to add a TARGET which is the AnimInstance, and I’m not sure how to get it from inside the Character controller or the characterBP. Not even sure if this would actually help but here is a screenshot of the resulting error:

Once again, thanks for your help!

Ok, so I made an AI and it was having the same snapping issue. Fixed with the following:

On the character movement component:

Check “Orient Rotation to Movement”
Uncheck “Use Controller Desired Rotation”

On the character Class Defaults:

Uncheck “Use Controller Rotation Yaw”

Profit

The character rotates a lot smoother now! Changing the rotation rate now affects the character’s rotation movement as well.

Happy developing,

Reishi

Hey, glad to help! Sorry it’s still not working. This is getting a bit tricky. What’s the controller look like? input yaw scale might have something to do with it.

Also on the character there’s “use controller rotation yaw” which is on by default on character class. maybe turn that off? possible the controller snaps to a rotation using simple move to. Also, the tooltip for “Orient Rotation to Movement” on movement component states that it overrides “use controller desired rotation” and recommends clearing “use controller rotation yaw”… just a thought.

One user at the end of This thread states they had to disable orient rotation to movement. So its possible there is some combination of these check boxes that works…

maybe disable all three?

as for getting a reference to the anim instance, you can get a reference to the mesh and from there get the anim instance.

Hope this helps!

@ReishiRamzi

Thanks again for your help on this, the above solution has resolve the snapping issue! Now I just need to figure out a way to make the character use the entire 2D blendspace set of motions!

But I will open a new thread for that. Thanks again for your help!