Недопустимый элемент модели [Справка]

#lua #roblox

#lua #roblox

Вопрос:

Итак, я создаю скрипт кнопки, при нажатии на который, если выполняется определенное условие, он находит все дочерние элементы другой модели, но когда я нахожу дочерние элементы, он выдает мне сообщение об ошибке «Obj не является допустимым элементом модели», а затем ничего не делает

Вот мой код:

 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)
  

Комментарии:

1. попробуйте:waitforchild вместо obj и заключите obj в кавычки, подобные этому: script. Родительский элемент. Родитель: WaitForChild(«Obj»):getChildren()) сделать

Ответ №1:

<something> is not a valid member of model это ошибка, которую вы получаете при попытке получить доступ к значению, которое не существует. Итак, что бы script.Parent.Parent это ни было, у него нет дочернего элемента с именем Obj .

Вместо перехода к объекту с использованием относительного пути, такого как script.Родительский элемент.Родитель, я бы рекомендовал использовать абсолютный путь из надежного места. Что-то вроде …

 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
  

завершение)

Комментарии:

1. Поиск из Workspace не позволяет вам иметь несколько копий этой модели. Это также может привести к столкновению с именем, контролируемым игроком (персонаж, шляпа или, возможно, что-то с именем, выбранным игроком, например, гуманоид).

2. Это очень хороший момент, я пытался предложить какой-то абсолютный путь, но я думаю, game.workspace слишком общий. Особенно потому, что я также не уверен, где этот сценарий кнопки существует в рабочей области.