我有这个代码:
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)
我想做的是制作一个冲刺切换程序。唯一的问题是,它会起作用一次,然后就根本不起作用了。我可以单击它,它会更改文本,然后当我再次单击它时,它什么也不做。我希望每次按下它时它都能工作。
在函数中,您测试 2 个 if 语句。如果冲刺是假的,如果是真的。
理解你的问题的关键是你的 if 语句相互抵消。
让我们来看看这个,首先它检测它是否为假。不,短跑并不假。然后 if 检查它是否为真。这是!所以它将其设置为 false。
到目前为止都很棒,对吧?好吧,这就是你的问题。当你再次尝试时,冲刺是错误的。因此,运行第一个 if 语句,并将其设置为 true。但是,紧接着又运行另一个 if 语句。由于现在为 true,因此会运行并将其设置为 false。看来什么都没发生。
你的解决方案?取出第一个 if 语句的末尾,并将第二个 if 替换为 elseif。这样,一旦一个语句评估为 true,它就不会评估下一个。
你的逻辑不正确。正如 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