WASD Input Action

When creating a new project, the character already has a movement system implemented. The problem is that when holding down two keys on the same axis at the same time, the game always selects one direction. If you hold down all four keys at once, the player will always move right and back (135 degrees). This really irritates me. When pressing W and S (or A and D), or all four, the player must stand still. I can easily implement this with the outdated input system. But it’s already an outdated system. I’ve heard that switching between characters and vehicles is difficult with this method. When using the new system, all that remains is to remove the IMC responsible for controlling the character and add the IMC for the vehicle at the right moment.

The starter kits are very simplistic. They’re helpful to pick apart to figure out how the engine pieces are put together, but for anything “real,” I would recommend starting from a blank project and adding all the bits you need yourself.

That’s why I’m asking how to create a proper movement system, since I can’t find this information anywhere online. Everyone uses this 135-degree movement system. Even in games, more and more developers don’t bother and create this bad system.

There’s no magic to implementing a movement system.

Decide whether you move by applying physical forces/controls, or whether you move by directly placing your bodies.

Decode the inputs from the player.

Run the simulation code you want to run.

Apply to the Pawn in the appropriate way.

The “press WS always goes backwards” behavior you see looks like it’s coming from trying to implement an analog axis based on key inputs, and when both keys are mapped to the same axis, the axis can’t be in both “forward” and “backward” position at the same time. An alternative to implement key movement would be to have two separate axes (a forward axis, and a backward axis) and add them two together to get the sum total input. Easy enough to set up if that’s what you want in your movement system.