Spawn(function()while Alive do local L=Character.Torso.Position local c=Body.Position-L c=(Vector3.new(c.x,0,c.z)).unit local X=(L+c*3)+Vector3.new(0,2+1*math.sin(tick()),0)local n=(CFrame.new(X)):toWorldSpace(CFrame.new(Vector3.new(0,-1,0)))local G=Ray.new(X,(n.p-X).unit*100)local R=game.Workspace:FindPartOnRay(G,Character)if R then print(R)X=Vector3.new(X.X,(R.Position.Y+R.Size.Y/2)+Body.Size.Y/2,X.Z)end Body.Float.position=X Body.Rotate.cframe=Character.Torso.CFrame wait()Body.Anchored=false Body.CanCollide=false Body:SetNetworkOwner(nil)end end)

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)

