#Create a boat that slides on parts

1 messages · Page 1 of 1 (latest)

neat jolt
#

Hi, Im trying to make a boat that works by a force being applied which is already done and working as intended, but for steering, I’m trying to make the boat turn left and right and be able to go up and down planes. My current method uses an align orientation added on to the planes normal vector, however I think its not the most efficient method.

        if result then
            print(result.Normal)
            alignOrientation.CFrame = CFrame.fromMatrix(
                primaryPart.Position,
                (CFrame.Angles(0, boatYaws[boat], 0).LookVector:Cross(result.Normal)).Unit,
                result.Normal,
                (result.Normal:Cross(CFrame.Angles(0, boatYaws[boat], 0).LookVector)).Unit
            )
        end

any idea what could be causing the jittering and does anyone know any other methods to achive a boat that slides and can manouver on those water parts?

https://cdn.discordapp.com/attachments/449312743116505101/1394701044646154370/2025-07-15_11-21-10.mov?ex=6877c411&is=68767291&hm=1c9ae5b71a4d9940eee846525f9fb082f3413c6c244a268b324d54e720d6973c&

final salmonBOT
#

studio** You are now Level 1! **studio

tranquil geyser
#

a few things come to mind, based on what i've seen.

  • your align orientation force is not high enough
  • using CFrame.FromMatrix is complex. i'd suggest using direct CFrame multiplication.
    here's something i use for my movement:
#

AnglBLN - Angle between LookVector and normal
AnglBRN - Angle between RightVector and normal

you could then use this NewCFrame in your alignOrientation.

alternatively, if you are firing the raycast every heartbeat, you could use AngularVelocity and set the x and z components to LVD and RVD respectively. (you could multiply each by a constant to determine the constraint's snappyness, though making it too high could cause small amounts of sway.)