Construct 3 suggestions & ideas

Suggest and vote on ideas for Construct 3! Please note this is only one aspect of planning. We do not guarantee any features here will be implemented, even if they are top-voted ideas. The aim is just to collect feedback. Remember to search for existing submissions before adding an idea, describe your ideas as comprehensively as possible, and vote for plausible ideas that are well thought out. Please see our full guidelines on suggesting features.

Gamepad "stickangle" Expression

I'll try to explain this clearly.

Sometimes, you want to make a game where a Sprite faces in the direction the gamepad's analog stick is pointing. But, there doesn't appear to be an expression for the angle of the gamepad sticks. I think there should be an expression to get the angle of a gamepad stick.

Already, objects such as Sprites have a 360 degree angle, with 0 being to the right. You should be able to get a gamepad stick's angle using the same relative angle.

gamepad.stickangle(0, 0)

gamepad index, analog stick index

Something like that.

Example using above expression: you are tilting the stick clockwise 5 degrees from completely right, 0 degrees according to the angle system of game objects. The expression says that the gamepad's stick (the one you want, of course) is tilted towards 5 degrees. I'm not getting the deadzone-influenced axis comparison, but rather the angle the stick is pointing. I have included terribly drawn pictures.

  • Game Developer
  • Oct 13 2020
  • No status
  • Attach files
  • Calminthenight commented
    18 Oct 07:44am

    A non-scripting solution would just be doing this calculation in the background. Joysticks and analog gamepad sticks work on XY coordinates natively.

  • Game Developer commented
    18 Oct 03:04am

    Hmm, interesting. Thanks for the info! It would be nice to have a non-scripting option though, because without your solution there's no way to get the angle without a "stickangle" expression. Your solution is definitely a big help though, thanks!

  • Calminthenight commented
    17 Oct 02:31am

    If you weren't aware you can get this by using the expression:

    angle(0,0,Gamepad.Axis(0,0),Gamepad.Axis(0,1)) it will return 0 to 180°and -0 to -180° angles.

    You can convert these to 360° angles using:

    If [angle(0,0,Gamepad.Axis(0,0),Gamepad.Axis(0,1))] < 0 then set value to [360+(angle(0,0,Gamepad.Axis(0,0),Gamepad.Axis(0,1))*1)]

    Else set value to [angle(0,0,Gamepad.Axis(0,0),Gamepad.Axis(0,1))]

  • +2