How do I make an entire ship model move when a player sits in a Seat, and what scripting setup is needed?

What I want specifically:

  • when a player sits in a Seat part, they will be able to move the entire ship using w a s d.
  • A guide on how to set it up

My rough model (so far)


What I have so far:

  • a script that detects a player that sits on the seat in the cabin (the seat is not shown in the image above)

What I’m confused about:

  • What scripts are needed (Local script? server script? module script?)
  • Where each script should be placed in the DataModel (Serverscript inside the ship model? Local script in starterplayerscripts? Modulescript in the ships model?)
  • How the control of the ship be given only to the player that is sitting on the captain seat
  • What is the best way to move the ship (Linearvelocity? Vectorforce? Bodyvelocity?)
1 Like

I mainly tell you about script.

First, detect a player sitting on the captain seat on a Script in ServerScriptService. Then, use RemoteEvent to inform the player.

The RemoteEvent should be received on LocalScript and the player switches to control mode. When the player put WASD button(or pad on mobile), detect on LocalScript and inform to ServerScript(RemoteEvent again).

Then ServerScript check if the information is certainly sent from the player(not exploiter!), and move the boat.

I’m not good at moving models(no experience), but I think VectorForce is good as far as I saw documents.

You probably want to consider https://create.roblox.com/docs/reference/engine/classes/VehicleSeat
It handles user input.
So just connect to its events, read its properties in a heartbeat and move the boat accordingly.

I lowkey asked copilot before I posted my question here, It told me to use the regular seat and make the custom input myself

I’ll try this tomorrow and instead of placing the server script in sss ill try putting it inside of the model to make things less complicated for me