所以我有这个代码
local player = game.Players.LocalPlayer
local unitFrame = script.Parent
local buttona = unitFrame.buttonA
local sprinting = true
unitFrame.Title.Text = "Perks"
local function onButtonAClick()
unitFrame.Title.Text = "perks"
end
local function sprintButton()
if sprinting == false then
sprinting = true
player.Character.Humanoid.WalkSpeed = 20
unitFrame.buttonA.Text = "strinting"
end
if sprinting == true then
sprinting = false
player.Character.Humanoid.WalkSpeed = 16
unitFrame.buttonA.Text = "walking"
end
end
buttona.MouseButton1Click:connect(sprintButton)
我要做的是做一个冲刺切换程序。唯一的问题是它会工作一次然后根本不起作用。我可以点击它然后它会改变文本然后当我再次点击它时它什么也没做。我希望每次按下它都能够工作。
答案 0 :(得分:1)
在函数中测试2 if语句。如果冲刺是假的,如果是真的那么。
理解你的问题的关键是你的if语句相互抵消。
让我们一起来看看,首先它会检测它是否是假的。不,冲刺不是假的。然后检查它是否真实。它是!所以它把它设置为假。
到目前为止很棒,对吗?那么这就是你的问题。当你再次尝试时,短跑是错误的。因此运行第一个if语句,并将其设置为true。但是,如果声明立即运行,那么另一个。由于它现在是真的,因此运行,将其设置为false。似乎什么也没发生。
你的解决方案?取出第一个if语句的结尾,并将第二个if替换为elseif。这样一旦一个语句评估为true,它就不会评估下一个语句。
答案 1 :(得分:1)
你的逻辑不正确。正如warspyking所说,你的条件有问题。通过添加elseif
语句来解决此问题。
local function sprintButton()
if not sprinting then
sprinting = true
player.Character.Humanoid.WalkSpeed = 20
unitFrame.buttonA.Text = "sprinting"
elseif sprinting then
sprinting = false
player.Character.Humanoid.WalkSpeed = 16
unitFrame.buttonA.Text = "walking"
end
end