What's a working way to make a functioning character with no Humanoid?

I want to make a script that replaces your character with a semi-transparent ghost that obviously cannot be killed, but can still move. I asked for help at the place I got inspiration from and it’s supposed to have no humanoid. So I tried to remove the humanoid, which resulted in a broken and immovable grey character and a broken camera. Next, I tried to replace the character with a rig that has all the joints attached with no humanoid, and no luck. But it wasn’t broken, just no camera and immovable. I tried setting the camera to a different part, like the HumanoidRootPart, no luck. I need some help on how to get the character moving with no humanoid.

In case you are wondering, here’s the code:
In a GUI button in a localscript

script.Parent.MouseButton1Down:Connect(function()
	game.ReplicatedStorage.RemoteEvent:FireServer()
	repeat wait() until game.Players.LocalPlayer.Character == workspace:WaitForChild("test")
	local Camera = game.Workspace.CurrentCamera
	Camera.CameraSubject = game.Players.LocalPlayer.Character.HumanoidRootPart
	Camera.CameraType = Enum.CameraType.Custom

	local ca = Camera:GetChildren()

	for i = 1, #ca do
		local p = ca[i]
		if p:IsA("BasePart") then
			p.CanCollide = false
		end
	end
end)

For the server script which handles the character replacement:

game.ReplicatedStorage.RemoteEvent.OnServerEvent:Connect(function(plr)
	plr.CharacterAdded:Wait()
	plr:LoadCharacter()
	plr.Character:Destroy()
	plr.Character = game.ReplicatedStorage.test -- the rig used
	plr.Character.Parent = workspace
end)

Hope I formatted it correctly, this is my first post here.

Edit: Will close the post soon.

This would work, but I don’t really understand what you mean by creating an Instance. What would you create?

Wow, you deleted your reply. How rude.

Is it really necessary to remove the humanoid? You can always script an If statement to check if a player is on the ghost team, and just don’t damage them. There’s no need to reinvent the wheel, while losing tons of valuable features (such as the ones you mentioned). That’s just my take, you do what you feel is right for your game.

Edit: I didn’t see the post age until replying, I have no idea why this showed up in recent topics, my bad!

Well, there aren’t no teams, it’s for a script builder
And 2, Good point, but I don’t need it anymore.

Edit: I’ll explain.
I can just make a listener for WASD presses and for each one it can move a certain direction.
I can’t supply examples because I’m on mobile right now.