我制作了零件,并添加了一个脚本,该脚本具有检测零件是否被触摸的功能。如果玩家触摸此部分,则需要访问该玩家的背包并找到工具。在这种情况下,它是一支手枪。然后,我尝试更改手枪网格中的TextureId
,该网格位于手枪的“手柄”部分内
我尝试使用hit.Parent.Backpack
访问玩家背包,
但是当我触摸该部件时,控制台中显示错误
背包不是附件的有效成员
这是整个脚本...
function onTouched(hit)
local player = hit.Parent
local p = player.Backpack:FindFirstChild("Pistol")
local h = p:FindFirstChild("Handle")
local m = h:FindFirstChild("Mesh")
local id = m.TextureId
id = "rbxassetid://3707943717"
end
script.Parent.Touched:Connect(onTouched)
预期结果应该是:
当玩家触摸此部分时,应该在玩家的背包中寻找“手枪”,然后寻找“ Mesh”手枪,并将“ TextureId”网格更改为我在脚本中为其设置的任何纹理。 / p>
答案 0 :(得分:2)
经过更多研究,我得以解决此问题。我的第一个错误是hit.Parent似乎只是模型。所以我用它来找到“类人动物”,然后从那里得到了玩家的名字,这样我就可以在玩家列表中找到玩家,并访问背包来更改手枪“ Mesh.TextureId”
这是新脚本...
function onTouched(m)
local p = m.Parent:FindFirstChild("Humanoid")
if p ~= nil then
local n = p.Parent.Name
local player = game.Players:FindFirstChild(n, false) -- find the player that hit the Part.
local gun = player.Backpack:FindFirstChild("Pistol")
if player == nil then return end -- escape if something goes wrong.
local handle = gun:FindFirstChild("Handle")
local mesh = handle.Mesh
mesh.TextureId = "rbxassetid://3707943717" -- change the gun texture
end
end
script.Parent.Touched:Connect(onTouched)