Bukan anggota model yang sah [Bantuan]

Jadi, saya membuat skrip tombol, ketika diklik, jika kondisi tertentu benar, ia akan menemukan semua anak dari model yang berbeda, tetapi ketika saya menemukan anak-anak tersebut, saya mendapat pesan kesalahan yang mengatakan "Obj bukan anggota yang valid dari model" dan kemudian tidak melakukan apa pun

Ini kode saya:

script.Parent.Touched:Connect(function(hit)
    if(hit.Name == "RightFoot" or hit.Name == "LeftFoot") then
        if(script.Parent.Color == Color3.fromRGB(0, 255, 0)) then
            --This line is where im getting problems, when i do this :GetChildren
            for _, object in pairs(script.Parent.Parent.Obj:GetChildren()) do 
                if(object:IsA("BasePart")) then
                    object.CanCollide = true
                    object.Transparency = 0
                end
            end
        end
    end
end)

person King Duck    schedule 23.04.2019    source sumber
comment
coba :waitforchild alih-alih obj dan beri tanda kutip obj seperti ini: script.Parent.Parent:WaitForChild(Obj):GetChildren()) do   -  person mgracer    schedule 23.04.2019


Jawaban (1)


<something> is not a valid member of model is adalah kesalahan yang Anda dapatkan saat mencoba mengakses nilai yang tidak ada. Jadi apapun script.Parent.Parent itu, ia tidak memiliki anak bernama Obj.

Daripada menavigasi ke objek menggunakan jalur relatif seperti script.Parent.Parent, saya akan merekomendasikan menggunakan jalur absolut dari tempat yang dapat diandalkan. Sesuatu seperti ...

local button = script.Parent

button.Touched:Connect(function(hit)
if(hit.Name == "RightFoot" or hit.Name == "LeftFoot") then

    -- find the model you are looking for
    local targetModel = game.workspace:FindFirstChild("Obj", true)
    if not targetModel then
        warn("could not find Obj in the workspace, try looking somewhere else")
        return
    end

    -- if the button is green, make stuff invisible
    if(button.Color == Color3.fromRGB(0, 255, 0)) then
        for _, object in pairs(targetModel:GetChildren()) do 
            if(object:IsA("BasePart")) then
                object.CanCollide = true
                object.Transparency = 0
            end
        end
    end
end

akhir)

person Kylaaa    schedule 23.04.2019
comment
Pencarian dari Workspace mencegah Anda memiliki banyak salinan model ini. Ini juga berisiko bertabrakan dengan nama yang dikontrol pemain (karakter, topi, atau mungkin sesuatu dengan nama yang dipilih pemain, seperti humanoid). - person Curtis Fenner; 24.04.2019
comment
Itu poin yang sangat bagus, saya mencoba menyarankan semacam jalur absolut, tapi menurut saya game.workspace terlalu umum. Apalagi karena saya juga tidak yakin di mana letak skrip tombol ini di ruang kerja. - person Kylaaa; 24.04.2019