Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+1

Программирование в roblox studio (lua)

Умнея есть объект (lamp) и кнопка при нажатии на которую изменяется материал, и он действительно изменяется но если я пишу что если он другого материла то изменится на другой. Код какбуто бы не видет else.
local ffg = workspace.lamp

local function hhg ()
ffg.Material = "Neon"
end

local function hgg ()
ffg.Material = "Marble"
end

if ffg.Material ~= "Neon" then
script.Parent.ClickDetector.MouseClick:Connect(hhg)
else
script.Parent.ClickDetector.MouseClick:Connect(hgg)
end

По дате
По рейтингу
Аватар пользователя
Новичок

Ваш код выглядит правильным, но проблема может быть в том, что условие if ffg.Material ~= "Neon" проверяется только один раз, когда скрипт запускается. После этого, если материал объекта ffg изменяется, условие не будет проверяться снова.

Чтобы решить эту проблему, вы можете переместить условие внутрь функции обработчика событий MouseClick. Например:

123456789101112
 local ffg = workspace.lamp  
 
local function toggleMaterial() 
    if ffg.Material ~= Enum.Material.Neon then 
        ffg.Material = Enum.Material.Neon 
    else 
        ffg.Material = Enum.Material.Marble 
    end 
end 
 
script.Parent.ClickDetector.MouseClick:Connect(toggleMaterial) 
 

В этом примере, каждый раз, когда пользователь нажимает на кнопку, функция toggleMaterial вызывается и проверяет текущий материал объекта ffg. Если он не равен Neon, то он устанавливается в Neon, иначе он устанавливается в Marble. Таким образом, каждый раз, когда пользователь нажимает на кнопку, материал объекта ffg будет меняться между Neon и Marble.

Аватар пользователя
Мастер

Не знаю сработает ли но вот что Нейросеть сказал

Проблема в вашем коде возникает из-за способа, которым вы проверяете текущий материал и привязываете функции к событию MouseClick. Ваш код, на самом деле, всегда будет изменять материал на "Neon" вне зависимости от текущего материала объекта "lamp". Это происходит потому, что ваша проверка if всегда вернет true.

Вместо этого вы можете использовать следующий код, чтобы правильно менять материал в зависимости от текущего состояния:

lua

local ffg = workspace.lamp

local function toggleMaterial()
if ffg.Material == "Neon" then
ffg.Material = "Marble"
else
ffg.Material = "Neon"
end
end

script.Parent.ClickDetector.MouseClick:Connect(toggleMaterial)

Этот код определяет функцию toggleMaterial, которая проверяет текущий материал объекта "lamp". Если материал равен "Neon", функция изменяет его на "Marble", и наоборот. Затем эта функция привязывается к событию MouseClick кнопки, чтобы изменять материал каждый раз при нажатии. Этот код будет корректно переключать материал объекта "lamp" между "Neon" и "Marble".

Аватар пользователя
Мудрец

Зачем у тебя локал в функциях? +я тебе объясню ща

Заместо script.Parent.ClickDetector.MouseClick:Connect(hhg) пиши hhg() или hgg()
По вопросам в комменты пиши.