Control of larger objects is very awkward and random in movement

I have these boats, and the larger they get, the hard they are to control. They don’t move correct. This video shows me moving backwards and forwards, but it moves on an angle. It’s also incredibly slippery feeling. All the boats are set to massless, so their controls and feels should all be similar, as well as their physics all the same
image


I believe the problem relates to the players position on the boat, since they are at the back, it bases movement from that position. I’m not using VehicleSeat’s either, as not all boats require you to sit, so I need all of them to work under the same system, so can’t use a seat :confused:

-- on a renderstepped
function BoatController:UpdateMovement(deltaTime)
	local MoveVector = self.ControlModule:GetMoveVector() -- Player controls
	
	script.Inputs.Forward.Value = MoveVector.Z <= -0.2 -- Forward -> -1 Y
	script.Inputs.Backward.Value = MoveVector.Z >= 0.2 -- Backward -> 1 Y
	script.Inputs.Right.Value = MoveVector.X >= 0.2 -- Right -> 1 X
	script.Inputs.Left.Value = MoveVector.X <= -0.2 -- Left -> -1 X
	
	if self.CurrentBoat then
		local NewDriveVector = Vector3.new(
			0,
			0,
			math.clamp(script.ForwardAmount.Value * script.SlowdownPercent.Value, -1, 1)
		)
		local BoatBaseCFrame = self.CurrentBoat.CFrame
		local TrueDirectionVector = BoatBaseCFrame:VectorToWorldSpace(NewDriveVector)
		local HorizontalVector = TrueDirectionVector * Vector3.new(1, 0, 1)
		
		local Speed = self.BoatMaxSpeed
		
		self.BodyVelocity.Velocity = HorizontalVector * Speed
		
		local Multiplier = math.sign(NewDriveVector.Z)
		
		self.BodyGyro.CFrame = self.BodyGyro.CFrame * CFrame.Angles(0, math.rad((self.Turn / 10) * Vector3.new(0, 0, NewDriveVector.Z).Magnitude * Multiplier), 0)
	end
end

your video doesnt load, so I’m not too sure, but some issues I think may be happening:

Humanoids have weird movement that ignore physics, so you should set them to be PlatformStanding or Seated while using the boat

the BodyGyro and BodyVelocity should be in a part where the center of gravity of the boat should be

if either the BodyGyro or BodyVelocity does not have Force/Torque=(inf, inf, inf), the center of rotation isnt going to be where the constraint it, but instead be mostly around the character especially since the boat is massless
it’s like if you pushed something across a table, but didnt push at the center of gravity. it’ll spin.

I do set PlatformStanding to be true. I can’t set seated tho as I don’t want all boats to be sitting, some reqire standing (animation) and any boat that has you ‘sit’ is just an animation.

Hard to see, but the body movers are placed inside the yellow part. This yellow part is pretty much centered for the boat. The player is seated at the back, which I think is half the problem. Controls seem to be from the players position, which makes turning the boat go from the back of the boat, not the centre, so it feels awkward with boats that are this elongated shape
image
BodyGyro and BodyVelocity properties
image
image

try changing the MaxForce to (inf, inf, inf)
you can type that in the properties window
same with the BodyGyro’s Torque (I think it’s called Torque there

image
That made the boat now float :confused:

you should lower Y in the BodyVelocity then
it should be fine to set that to 0 assuming you setup buoyancy well

Ahh I don’t have any buyancy setup. The boat basically slides along a part floor

The inf thing with 0 for the Y actually made everything move a lot nicer! :smiley: