I wasn't able to figure out the underlying cause of this issue, but I was able to implement a workaround by changing GetButtonDown to GetButton and using a bool to flag whether or not a move should fire (which resets in the GetButtonUp listener). If anyone else stumbles on this I hope that helps. If that wasn't clear I can post a more detailed explanation of what I did.

I am aware of the functionality difference between GetButton and GetButtonDown, but thanks for the heads up.

The way the code is written it looks like the first button press is being handled with GetButton, while the second press is handled with GetButtonDown, which logically makes sense. The reason that GetButton is "working" for the second press is because it gets picked up on each subsequent frame after the initial GetButtonDown check would fail. I think the same issue is happening with GetButton, but because it checks again the next frame the error is almost unnoticeable.

I am holding the first button for a few seconds before pressing the second button, though it doesn't seem to make a difference how long I hold it down for. I get the same result every time.

I apologize if I wasn't specific enough, but the functionality I am testing takes place before the move recognition code gets called. I have some Debug statements that I am using to test when the inputController is registering inputs, and in the cases I described the trace statements are returning false for GetButtonDown, even though both keys are pressed.

Hello,

I've noticed what appears to be a bug with the way multiple button presses are handled and I'm having trouble trying to figure out how to solve the issue. This is the scenario I'm seeing:

(functions correctly)
press and hold button 1
press button 2
TestMoveExecution gets called for the combined input of button 1, button 2. This is the expected functionality.

(functions incorrectly)
press and hold button 2
press button 1
TestMoveExecution only gets called for button 1. This is not the expected functionality.


I have tested this with many different button presses and the only common thread seems to be the fact that it only works if you hold a button that is earlier in the enum list and then press a button that is after the first held button (button 1 -> button 5 works, but button 4 -> button 3 does not work, etc).

As near as I can tell the fault lies with the call to inputController.GetButtonDown(inputRef2) inside ControlsScript. This is returning false in the incorrect instances I described above. Just to test, I changed GetButtonDown to GetButton. This solved the issue of not being able to press a high button then low button, but it created the undesirable behavior of being able to repeat a move by holding the buttons (which I'm assuming is why it was using GetButtonDown in the first place).

I'm really not sure why GetButtonDown() is failing, any and all help would be greatly appreciated. Thanks!