So I have been working on a car chassis for quite awhile. As of right now, we have run into quite a predicament with our chassis controls on Xbox. As you may know, the controls on the preset controls for Vehicle seats are really wonky.
We do know it is possible but we are not sure how to make custom controls for it. My other question is what is the limit to customization on Vehicle seats.
(Note: I do realize this is also valid for scripting support but because we are dealing with Vehicle seats I felt it has a better place here in Building.)
Yeah, we have been able to make our own custom GUI for it. The problem I’m facing right now is if it’s possible or even worth my time to make custom Xbox controls. Right now we are building a suspension car chassis but the preset Xbox controls are terrible. I have seen people make custom controls for the Vehicle seat using a module script but I am really not sure how to override and set new custom controls for vehicle seats.
I believe setting Humanoid.MoveDirection on the player(who is in the seat)'s character. I made myself a custom RPG style movement system and found this out and it really helped a lot!
Hey, that might let me override the controls. I had figured out that you can use OO to insert the controls but I couldn’t figure out if it can override it. That may work.
How would this correlate with overriding pre-set VehicleSeat controls however? The problem isn’t really how we’d make the car move, it’s how to disable what’s already there with the VehicleSeat. Thanks for the input. (pun intended)
I believe there is a ModuleScript within the ControlScript which controls VehicleSeats specifically and can be cleared and all require() functions that reference that script can be deleted. That should allow custom vehicle controls made using UserInputService or ContextActionService via the Humanoid’s MoveDirection property. Keep in mind that a Humanoid’s MoveDirection is read-only. You will need to use the Humanoid’s Move() function, with the second argument set to true (RelativeToCamera) in order to have this method work. Without deleting the module, I believe that the script would work, but only to a certain extent, where certain controls may overlap and cause problems, such as the conflict currently mentioned. Without deleting the module, moving the Left Stick on an Xbox One controller would still result in the car going forward. I believe the same can be done for mobile controls. Delete the modules and bind GUI buttons to the Humanoid:Move() function. I suggest (Xbox only) that you allow variable gas (racing game or not) when pressing down the trigger. Don’t check for a deadzone or threshold, but check for how far the trigger is held down (I think this is possible in Roblox). The last part is a recommendation, so it’s not required. I hope whatever project you are working on turns out well!
Is this found inside of StarterPlayerScripts once a player takes the .Occupant role of a VehicleSeat?
Thanks for the suggestion! We’ve actually been planning on doing that. Would that be accomplished with .InputChanged? I believe it was a floating point value between 0 and 1 that represents how far the trigger is being pressed down.
And thanks very much for all the info, this helps us a lot.
I believe you could set the Z value of the Move() function to the negative value of the InputChangedInput variable, as you mentioned.
I believe this script is always there (correct me if I’m wrong). You should be able to fork the player scripts and delete just the seat scripts, to prevent the need to rewrite all the movement. Forgot to mention this in the previous reply: The script should do something like this:
Create a variable
Every second…
a. Check if the Player’s Humanoid is in a VehicleSeat
b. Set the variable to true or false depending on if they are