How to fix "Pirate Island" ships

Suspected Problems

For anyone else interested in fixing this:

  • The UpdateCoroutine coroutine isn’t being resumed. The function meant to, StartUpdate()*, isn’t called.

  • The body mover’s max force setting is too low to move the ship. Might have to do with a difference in the calculated mass.

* local function inside ControlManager. The main thing it does is call PhysicsManager:ControlUpdate, which is only called inside this function.


How to fix

To mostly fix it I called StartUpdate() inside the function connected to MoveEvent.OnServerEvent.

Code Segment
MoveEvent.OnServerEvent:connect(function(Client, Type)
	if Client == SeatManager:GetActivePlayer() then
		if Type == "Forwards" then
			Forwards = 1
		elseif Type == "Backwards" then
			Forwards = -1
		elseif Type == "Left" then
			Turn = 1
		elseif Type == "Right" then
			Turn = -1
		else
			warn("Unable to handle move event with type `" .. tostring(Type) .. "`")
		end
		--EDIT
		StartUpdate()
		--EDIT
	else
		warn("Invalid client, cannot move")
	end
end)

I say mostly because after this it moves and turns really slowly:

boatGif


You can get the roblox model file here:

Cutter Fixed.rbxm (41.3 KB)

6 Likes