# How can I make a smooth d-pad

• I want to make a d-pad that runs smoothly on a no gravity top view

• Make a birds eye view game, then add joystick controlled behaviour into the object you want to control.

• I only want the object to go straight not diagonally

• Then use the joystick up, down, left and right behaviours to move, and add a move by or something in them. I haven't made that sort of thing in a while, I believe I did in only one project, Winter Pac-Man.

• @Aidan-Oxley but then holding diagonally will activate two of the directions.

• @Jack8680 but you could output the angel of the joystick to make sure it's not diagonal with an "if". Like "if angle is not equal to 45" or something.

• Thanks guys I will try this

• I tried the if for angles. It works for 45 and 135 degrees but not 225 or 315 degrees, I think it must be a bug.

• Can someone tell me how to use a photo?

• I mean a screenshot in the forum

• How to send a photo? Just press the upload button (cloud with arrow) that should show in the bar above the text box you type your forum post in, then pick your screenshot.

• Ok thanks, does anyone know why this only moves north-east and this only faces 90 degrees I have changed it from this but it still does weird things

• @Stephenn If you were to output the joystick controlled angle to a text label, you can see that the angles go from 0 to 180 on the right side and 0 to -180 on the left side. The angle is never 270 degrees. So "If Greater Than 210" is invalid.

• @Stephenn how you have that set up isn't going g to work I don't think.... because if the angle is 271, all of those IF's will run, because 271 is greater than 0 and 90 and 180 and 270. (Although only the first two IF's are valid angles)
Instead you should use the joystick up, down, left, and right behaviors.
So to move right, you would do a joystick right, and an IF to check if the angle is greater than 45, then another IF to check if the angle is less than 135, and then your "move by" behavior.
And it would be the same for all the other directions, except(obviously) different numbers in the IF's.
also, you might want to have either the UP and DOWN or LEFT and RIGHT IF's be "greater than or equal to" and "less than or equal to" because otherwise the 45, 135, -45, and -135 angles wouldn't trigger ANY movement. But it would HAVE to be either up and down OR left and right.

I hope that makes some sense!

Also, @TutorialDoctor is right about the angle output. But it is 0 to -180 on the left side.

• This looks like something similar to my 3D rotation example:

The greater thans should work the way he has it but The angle is never greater than 180. I would probably use Greater than 178 or 179 on the right side and less than -178/-179 on the left side. Also, the order of the behaviors seems to matter.

• @TutorialDoctor I just checked, and both IF's trigger.

• I just used joystick up down left and right in one of my projects, worked fine for me, all I have it doing here is lightning up an arrow in the direction the player would go:

• This works

• @Aidan-Oxley I think the problem was that if you Move the joystick diagonally, it would trigger two directions....like up and right. I actually didn't try it but that's what @Jack8680 said. If you were to get your joystick perfectly at like 45° I'm guessing it would trigger two directions for you.

Also, if you look at @Stephenn's screen shot, his IF's were greater than's not equal's, which is why I said they wouldn't work right. Because some thing like 271 is greater than 270,180,90, and 0, so I think all his IFs would get triggered.

• @Aidan-Oxley moving diagonally activates two of the directions. With the way you have it, one of them gets priority based on which one activates last in the tick. This means that it might for example move up when you actually have it more to the right than up, I think there's about a 15° angle where both behaviours would activate.