If a script disables and then re-enables controls through the ControlModule and is later destroyed, the controls will no longer function for the remainder of the session or another script enables them again; the controls are essentially disabled once a script that modified them is destroyed.
Here’s a video demonstration:
Reproduction Steps (100% of the time for me on all platforms):
- Create a new LocalScript (any location where a LocalScript will run should work)
- Require the PlayerModule and call
:GetControls()
to access the ControlModule. - Disable and re-enable the controls;
:Enable(false)
,:Enable(true)
- Destroy the script.
- You’re no longer able to move
In this place file, I’ve created a button which disables and enables controls as well as one to destroy the script. Follow these steps in the place to produce:
- Visit or Download:
https://www.roblox.com/games/4920862742/Controls-Bug
Player Controls Bug.rbxl (19.1 KB) - Play
- Click the button to disable and re-enable the controls.
- Click the button to delete the script.
- The controls will no longer work for the remainder of the session, or until you reset (creates a new script so the buttons work again) and re-enable the controls from the button.
I’ve been able to reproduce this on:
-
MacOS Catalina
Unable to control the character at all. -
Windows 10 (Boot Camp) - Both Roblox Player & Roblox UWP App
Unable to control the character at all. -
iOS / Android (Bluestacks)
-
Dynamic Thumbstick
Unable to move, can still jump. -
Thumbstick
Able to move & jump (unaffected) -
Tap to Move
Unable to move, can still jump.
It’s possible to regain control by switching to any other movement type and back.
-
-
Xbox One S
Unable to control the character at all
I first came across this bug a few days ago, but I’m assuming it’s been since the new Player Scripts were implemented due to multiple threads created with this problem (1, 2, 3, 4).