变量未在 if 语句中正确签入

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

我可以通过垃圾邮件“Q”来让 if 语句无限运行,就好像冷却时间从未被检查或从未更新过

我想要一个 60 帧的冷却计时器,并且只有在冷却关闭时才能播放此序列。但是我可以随意发送垃圾邮件

game-maker
1个回答
1
投票

您应该在创建事件中定义

meele_cooldown = 60
(近战?),而不是在函数本身内部。因为正如你提到的,如果你重复按“Q”,它会被重新定义。

meele_cooldown
达到 0 后,您应该将其设置回 60。

编辑:通过评论中添加的上下文,我进一步扩展了我的答案:

您应该将倒计时条件

if (attack_cooldown >= 1)
放在Keyboard_Check_pressed()之外,因为无论您是否按下,您都希望它冷却。您还应该改善您的状况,以确保倒计时完成后其值为 0。由于变量是小数。

所以最终结果可能是这样的:

if (attack_cooldown >= 0)
{
    attack_cooldown -=1;
}
else 
{
    attack_cooldown = 0;
}

if (keyboard_check_pressed() ... && attack_cooldown == 0)
{
    attack_cooldown = 60;
    //rest of the code
}

作为旁注:我确实注意到你现在正在使用一个序列,我自己对此并不熟悉,但我假设你希望在冷却期间播放它。我认为如果它在它自己的步骤事件中而不是在其他对象的事件中更适合。

© www.soinside.com 2019 - 2024. All rights reserved.