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:
1 | function touch(hit) |
2 | humanoid = hit.Parent.HumanoidRootPart |
3 | hit.humanoid.CFrame = CFrame(game.Workspace.SpawnLocation.Position) |
4 | end |
5 | script.Parent.Touched:connect(touch) |
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.
1 | script.Parent.Touched:Connect( function (Hit) |
2 | local Root = Hit.Parent:FindFirstChild( "HumanoidRootPart" ) |
3 | -- Save it to a variable so you can use it later on quickly |
4 |
5 | if Root then |
6 | -- Do stuff with Root |
7 | end |
8 | 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.
1 | 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.
1 | script.Parent.Touched:Connect( function (Hit) |
2 | local Root = Hit.Parent:FindFirstChild( "HumanoidRootPart" ) |
3 | -- Save it to a variable so you can use it later on quickly |
4 |
5 | if Root then |
6 | Root.CFrame = CFrame.new(game.Workspace.SpawnLocation.Position) |
7 | end |
8 | end ) |
Hope I helped!
~TDP
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.
1 | function touch(hit) |
2 | if hit.Parent:FindFirstChild( "Humanoid" ) ~ = nil then |
3 | hit.Parent.HumanoidRootPart.CFrame = CFrame.new(Vector 3. new(game.Workspace.SpawnLocation.Position)) |
4 | end |
5 | end |
6 | script.Parent.Touched:connect(touch) |