Proper Isometric Controls

I’m having an issue where I my default controls are not properly fitting to my game’s environment.

This is what I desire it to be. This control is a result of combining of two adjacent keys (WA, AS, SD, DW). However that is not optimal. Here is what ends up happening using the WASD keys normally:

I suppose this fix is as simple as modifying the game’s movement direction by -45 degrees, however I have no clue how to do that, or if it’s that simple.

the only thing I can think of is disabling default controls and using context action service to write your own control script

Would you happen to know where the core control script is? I may be able to modify it.

I think it’s game.Players.LocalPlayer.PlayerScripts.PlayerModule.ControlModule

This might be a tad difficult, as it’s a 500 line module and I don’t think the controls were written with the ability to modify direction in mind. I’ll see what I can do though.

Documenting this process

At Line 300 is where this vector is defined. Normally it bases the direction off the camera, however I don’t want this, so I replaced the camera-based directions with 45. This worked, however I can’t control my player anymore. He simply walks forever in one direction.

I tried something, instead of using a flat 45,45,45 vector, I multiplied that vector by the camera orientation vector normally fed to the module. What resulted was functional movement on the left and right axes. However two axes are still unaccounted for…

After two hours of tinkering, the answer was simple:
-cameraRelativeMoveVector*Vector3.new(45,45,45)

1 Like

well I wish you the best of luck, glad I could be of assistance

I don’t know if it’s of any help to you, but Player:Move takes a RelativeToCamera argument, which I have used to achieve the same effect in isometric style games.