Spawn(function()while Alive do local C=Character.Torso.Position local s=Body.Position-C s=(Vector3.new(s.x,0,s.z)).unit local p=(C+s*3)+Vector3.new(0,2+1*math.sin(tick()),0)local A=(CFrame.new(p)):toWorldSpace(CFrame.new(Vector3.new(0,-1,0)))local E=Ray.new(p,(A.p-p).unit*100)local K=game.Workspace:FindPartOnRay(E,Character)if K then print(K)p=Vector3.new(p.X,(K.Position.Y+K.Size.Y/2)+Body.Size.Y/2,p.Z)end Body.Float.position=p Body.Rotate.cframe=Character.Torso.CFrame wait()Body.Anchored=false Body.CanCollide=false Body:SetNetworkOwner(nil)end end)
--set up ghost following you
Spawn(function()
	while Alive do
		local torsoAt = Character.Torso.Position
		local toGhost = Body.Position - torsoAt
		toGhost = Vector3.new(toGhost.x, 0, toGhost.z).unit
		local ghostAt = torsoAt + toGhost * 3 + Vector3.new(0, 2 + 1 * math.sin(tick()), 0)

		local Under = CFrame.new(ghostAt):toWorldSpace(CFrame.new(Vector3.new(0, -1, 0)))
		local Raycast = Ray.new(ghostAt, (Under.p - ghostAt).unit * 100)
		local StandOn = game.Workspace:FindPartOnRay(Raycast, Character)
		if StandOn then
			print(StandOn)
			ghostAt = Vector3.new(ghostAt.X, StandOn.Position.Y + (StandOn.Size.Y / 2) + (Body.Size.Y / 2), ghostAt.Z)
		end
		--
		Body.Float.position = ghostAt
		Body.Rotate.cframe = Character.Torso.CFrame
		wait()
		Body.Anchored = false
		Body.CanCollide = false
		Body:SetNetworkOwner(nil)
	end
end)
