Parts falling into void

Hello!
I have some parts in Roblox that I don’t want to anchor, but still apply forces on X, Z. So I have a ServerScript and a LocalScript to make the parts stay stuck on the Y axis. The problem is that it works fine but when time passes, it doesn’t work for some reason that I don’t know.

Server:

local tornadoStarter = game.Workspace.TornadoStarter

local Tsunami = game.Workspace.Tsunami

local tornadoH = tornadoStarter.Hitbox
local tornadoPar = tornadoStarter.Particle

local FireTornado = game.Workspace.FireTornado

local tornadoY = tornadoH.Position.Y
local tornadoY2 = tornadoPar.Position.Y

local FireTorY = FireTornado.Position.Y

local tsuY = Tsunami.Position.Y

 
game:GetService("RunService").Heartbeat:Connect(function()
	local spouts = game.Workspace.Waterspouts:GetChildren()

	local torX = tornadoH.Position.X
	local torZ = tornadoH.Position.Z
	
	local tsuX = Tsunami.Position.X
	local tsuZ = Tsunami.Position.Z
	
	local fireTorX = FireTornado.Position.X
	local fireTorZ = FireTornado.Position.Z
	
	tornadoH.Position = Vector3.new(torX,tornadoY,torZ)
	tornadoPar.Position = tornadoH.Position

	for _,v in pairs(spouts) do
		if v and v:IsA("Part") then
			local SpoutX = v.Position.X
			local SpoutZ = v.Position.Z
			
			v.Position = Vector3.new(SpoutX,113.557,SpoutZ)
		end
		
	end
	FireTornado.Position = Vector3.new(fireTorX,FireTorY,fireTorZ)
end)
--wait(2)

local tornadoStarter = game.Workspace:WaitForChild("TornadoStarter")

local spoutsFold = game.Workspace:WaitForChild("ClonedWaterspouts")

local Tsunami = game.Workspace:WaitForChild("Tsunami")

local tornadoH = tornadoStarter:WaitForChild("Hitbox")
local tornadoPar = tornadoStarter:WaitForChild("Particle")

local FireTornado = game.Workspace.FireTornado
local FireTorY = FireTornado.Position.Y

local tornadoY = tornadoH.Position.Y
local tornadoY2 = tornadoPar.Position.Y

local tsuY = Tsunami.Position.Y


game:GetService("RunService").Heartbeat:Connect(function()
	
	
	local spouts = spoutsFold:GetChildren()
	
	local torX = tornadoH.Position.X
	local torZ = tornadoH.Position.Z

	local tsuX = Tsunami.Position.X
	local tsuZ = Tsunami.Position.Z
	
	local fireTorX = FireTornado.Position.X
	local fireTorZ = FireTornado.Position.Z

	tornadoH.Position = Vector3.new(torX,tornadoY,torZ)
	tornadoPar.Position = tornadoH.Position

	Tsunami.Position = Vector3.new(tsuX,tsuY,tsuZ)

	for _,v in pairs(spouts) do
		if v and v:IsA("Part") then
			local SpoutX = v.Position.X
			local SpoutZ = v.Position.Z


			v.Position = Vector3.new(SpoutX,113.557,SpoutZ)
		end
	end
	FireTornado.Position = Vector3.new(fireTorX,FireTorY,fireTorZ)
end)

Any help is deeply appreciated!

1 Like