InputEnded, input delta, ContextActionService and thumbsticks

I’m just starting to make an input manager for the controls of my game.
One of the methods will be using a controller, for movement and camera the thumbsticks will be used. However, I am faced with two problems;

  • the first is that a thumbsticks delta is not a Vector3 of its X,Y,Z values. It is instead either X or Y changes (I am unsure if this is just my controller, or is experienced by others as well). The mouse is capable of return X and Y simulatenously, is this an issue with hardware or software?

  • The second is that I can’t accurately get InputEnded to be the final Input state while using ContextActionService. It will fire as Enum.UserInputState.Change, but rarely will it reached Enum.UserInputState.End. I’ll be needing to have this value updated for RenderStepped functions, such as moving the camera in a specific delta, or moving the player in a specific direction, Is there a way I can solve this within ContextActionService or do I need to also add an additional funciton?

I’ve also read somewhere that the Deadzone’s of the controllers can be set by the developer, but have found no documentation for this. Is this possible? I’m currently looking at a deadzone that feels like this on the controllers;
image
Which is alright for X and Y movement individually, but when you want to go diagonally, the deadzone feels a lot bigger

1 Like

Correct me if I’m wrong, but I think I heard somewhere that Position is used for thumbsticks (I don’t think it functions exactly like delta, but could easily be used to do so).
It might be less buggy.

As for the latter problem, you might need to use UserInputService and write your own handler similar to ContextActionService. It should be easy enough, and takes less than 5 minutes (for me).

lmao, just tested and it does. Though it takes the last inputs to make up its value, but still doesn’t register it “ending” automatically, meaning I’m stuck with a position that looks like this;
image
Thats after pushing the stick diagonally, then to the left-most point and releasing. It still sees the position as slightly up, and continues to do so until I give vertical input.

:confused:

1 Like