使用多个 if 检查而不是状态机

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

我一直在尝试在我的游戏中实现变形机制。您可以在三种当前模式之间切换。但是我使用的 if 检查或我使用它的方式似乎存在问题。我问了一些人,但他们告诉我使用状态机,我发现这对于我的简单代码来说非常复杂。但我也想听听你的意见。

这是代码:

if (Input.GetKeyDown(KeyCode.Space))
{
    if (normalMode == true || normalMode == false && speedMode == true && (heavyMode == false))
    {
        normalMode = false;
        heavyMode = true;
        sr.sprite = heavyForm;
        speed = 7f;
        rb.mass = 2f;
    }
    else if (normalMode == true && normalMode == false && (heavyMode == true && (speedForm == false)))
    {
        normalMode = false;
        speedMode = true;
        sr.sprite = speedForm;
        speed = 15f;
        rb.mass = 0.5f;
    }
    else 
    {
        normalMode = true;
        sr.sprite = normalForm;
        speed = 10f;
        rb.mass = 1f;
    }
}

只有 if 和 else 语句有效,而 else if 则无效。如果有人帮助我,我会很高兴。

c# if-statement state-machine
1个回答
0
投票

由于这部分条件,

else if
永远不会被满足

normalMode == true && normalMode == false

这永远不会是真的,整个表达式将计算为

false

你必须以某种方式纠正它。

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