Here's how the beginning of my swimming script goes:

Humanoid.Changed:connect(function(Property)
	if not Root then
		return
	end
	if Root.Position.Y < WaterHeight then -- and not Debounce
		Swimming = true
		local BodyForce = script.SwimPosition:Clone()
		if not Debounce then
			Debounce = true
			BodyForce.Parent = script.Parent.HumanoidRootPart
			BodyForce.MaxForce = Vector3.new(0, 9e9, 0)
			Debounce = false
		end
		IdleController:Play()

for some weird reason, when I drop into the water I sink then I rise up really fast. I don't see this in any other games. Examples such as:

My Game: https://gyazo.com/fff02da83a89b6595d9b2fdddd3ce1a1

Other Game: https://gyazo.com/36bad857ca4b4c1ae0e5c8628c45ac92

2 comments

0

Should I use touched function instead? Or keep the Changed?

0

Just used Touched function. For anyone who is reading this and going through the same problem used Touched. Touched Function: https://gyazo.com/87b8aa946ea1b6f0fadd0d67b303aa26