Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

Trying to tele player on touch but says HumanoidRootPart is not a valid member?

I just want to teleport the player to its spawn when it touches a brick but I am getting the error humanoid is not a valid member of MeshPart Code:

function touch(hit)
	humanoid = hit.Parent.HumanoidRootPart
	hit.humanoid.CFrame = CFrame(game.Workspace.SpawnLocation.Position)
end
script.Parent.Touched:connect(touch)

2 answers

✓ Accepted answer

There are a few problems; let's go through them in order.

1.

:connect() is now deprecated (this may not work as expected and could be removed at any time). Instead, use :Connect(). The difference is capitalising the C.

2.

As DemonizedOverlord said, you need to check for the HumanoidRootPart before actually getting it, as it will error if you try to get something that doesn't exist.

script.Parent.Touched:Connect(function(Hit)
	local Root = Hit.Parent:FindFirstChild("HumanoidRootPart")
	-- Save it to a variable so you can use it later on quickly

	if Root then
		-- Do stuff with Root
	end
end)

3.

There is no need to add a hit. before using the humanoid variable (AKA Root in my code).

This will just make the code look for a child named humanoid inside hit, which isn't what you want, and will usually throw an error.

Root.CFrame = Value

4.

You did not create a CFrame correctly. You must use the CFrame.new() function, not the library (table) it is stored in.

script.Parent.Touched:Connect(function(Hit)
	local Root = Hit.Parent:FindFirstChild("HumanoidRootPart")
	-- Save it to a variable so you can use it later on quickly

	if Root then
		Root.CFrame = CFrame.new(game.Workspace.SpawnLocation.Position)
	end
end)

Hope I helped!

~TDP

1 comment

0

ty

You have to check if humanoid exists otherwise it will run the function if a part touches it and it will check for humanoid in the part.

Edit: I noticed a mistake my bad.

function touch(hit)
if hit.Parent:FindFirstChild("Humanoid") ~= nil then
hit.Parent.HumanoidRootPart.CFrame = CFrame.new(Vector3.new(game.Workspace.SpawnLocation.Position))
end
end
script.Parent.Touched:connect(touch)

4 comments

0

A lot of things there are still wrong

0

yeah it does not work

0

It should now

0

No, it still won't - you can't put Position into a Vector3, as it already is a Vector3. Also, think about 'hit.humanoid' for a second, as that is not right either. Check my answer for solutions.

This discussion is preserved as it was. New answers, comments, and votes are closed.