C# 和 Unity 引擎

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

我正在尝试完成一个关于一些代码的教程视频,这些代码应该防止玩家在某个时刻死亡后(当他们与障碍物碰撞时)继续跳跃。我们在开始时将 gameOver 指定为 false。 !gameOver 不是意味着 true 吗?那么这段代码不是说[如果我们按“空格”并且如果玩家在地面上并且如果 gameOver 布尔值为 true,那么当游戏结束时]

问题是,我不明白在开始时分配给“假”的布尔值上加上感叹号以使其成为“假”的想法。 此外,导师更喜欢在布尔值左侧添加感叹号的方式(!gameOver)。他不喜欢这样写:if (Input.GetKeyDown(KeyCode.Space) && isOnGround && gameOver != true)

导师的目标是防止玩家死后继续跳跃。我真的不明白怎么办 这个(!gameOver)有效。他的代码:

public bool gameOver = false;
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space) && isOnGround && !gameOver)
        {
            playerRb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse);
            isOnGround = false;

            playerAnim.SetTrigger("Jump_trig");
        }
    }
c# unity-game-engine visual-studio-2010
1个回答
0
投票

布尔变量前面的感叹号(!)用于否定其值。在这种情况下,代码 !gameOver 表示“不是 gameOver”。

所以,当条件 !gameOver 为 true 时,就意味着 gameOver 为 false。这是因为 !false 计算结果为 true,而 !true 计算结果为 false。

谢谢。

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