我正在尝试更改玩家背包中工具的“网格”纹理

时间:2019-09-08 23:01:32

标签: lua roblox

我制作了零件,并添加了一个脚本,该脚本具有检测零件是否被触摸的功能。如果玩家触摸此部分,则需要访问该玩家的背包并找到工具。在这种情况下,它是一支手枪。然后,我尝试更改手枪网格中的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>

1 个答案:

答案 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)