脚本未激活

问题描述 投票:0回答:2

我有这个代码:

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)

我想做的是制作一个冲刺切换程序。唯一的问题是,它会起作用一次,然后就根本不起作用了。我可以单击它,它会更改文本,然后当我再次单击它时,它什么也不做。我希望每次按下它时它都能工作。

scripting lua roblox
2个回答
1
投票

在函数中,您测试 2 个 if 语句。如果冲刺是假的,如果是真的。

理解你的问题的关键是你的 if 语句相互抵消。

让我们来看看这个,首先它检测它是否为假。不,短跑并不假。然后 if 检查它是否为真。这是!所以它将其设置为 false。

到目前为止都很棒,对吧?好吧,这就是你的问题。当你再次尝试时,冲刺是错误的。因此,运行第一个 if 语句,并将其设置为 true。但是,紧接着又运行另一个 if 语句。由于现在为 true,因此会运行并将其设置为 false。看来什么都没发生。

你的解决方案?取出第一个 if 语句的末尾,并将第二个 if 替换为 elseif。这样,一旦一个语句评估为 true,它就不会评估下一个。


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
© www.soinside.com 2019 - 2024. All rights reserved.