尝试用 'WaitForChild' 索引 nil
attempt to index nil with 'WaitForChild'
我目前正在制作一个脚本,这样当一个方块被触摸时,玩家就会到位。是
game.Workspace.AUPortal.Glitch4.Position
我需要帮助解决这个错误。
Workspace.A12.MovePlayer:4: attempt to index nil with 'WaitForChild'
脚本:
function onTouched(hit)
local h = hit.Parent:findFirstChild("Humanoid")
local playerMod = require(game:GetService("Players").LocalPlayer:WaitForChild("PlayerModule"))
local controls = playerMod:GetControls()
if h~=nil then
controls:Disable()
pos = game.Workspace.AUPortal.Glitch4.Position
h:MoveTo(pos)
wait()
end
end
script.Parent.Touched:connect(onTouched)
我只能假设您正在尝试访问标准 Script 中的 LocalPlayer,这是您无法做到的。
您只能在 LocalScript 中访问 LocalPlayer,因此您收到 WaitForChild 错误的原因。因为 LocalPlayer 不存在(它是 nil)。
通过 Touched 事件,您实际上可以获得对您尝试使用的播放器的引用:
Part.Touched:Connect(function(HitPart)
local Humanoid = HitPart.Parent:FindFirstChild('Humanoid');
if (Humanoid) then
local Player = game.Players:GetPlayerFromCharacter(HitPart.Parent);
-- You can then use this player reference.
end
end)
我目前正在制作一个脚本,这样当一个方块被触摸时,玩家就会到位。是
game.Workspace.AUPortal.Glitch4.Position
我需要帮助解决这个错误。
Workspace.A12.MovePlayer:4: attempt to index nil with 'WaitForChild'
脚本:
function onTouched(hit)
local h = hit.Parent:findFirstChild("Humanoid")
local playerMod = require(game:GetService("Players").LocalPlayer:WaitForChild("PlayerModule"))
local controls = playerMod:GetControls()
if h~=nil then
controls:Disable()
pos = game.Workspace.AUPortal.Glitch4.Position
h:MoveTo(pos)
wait()
end
end
script.Parent.Touched:connect(onTouched)
我只能假设您正在尝试访问标准 Script 中的 LocalPlayer,这是您无法做到的。
您只能在 LocalScript 中访问 LocalPlayer,因此您收到 WaitForChild 错误的原因。因为 LocalPlayer 不存在(它是 nil)。
通过 Touched 事件,您实际上可以获得对您尝试使用的播放器的引用:
Part.Touched:Connect(function(HitPart)
local Humanoid = HitPart.Parent:FindFirstChild('Humanoid');
if (Humanoid) then
local Player = game.Players:GetPlayerFromCharacter(HitPart.Parent);
-- You can then use this player reference.
end
end)