I second this. The only thing we do differently is we have the key press/open call different functions on the character (the presses are handled in the controller) and that manages the various movement states and they open/close a gate node that is on the Tick execution path. I like the way that feels over a boolean but that’s personal preference.