我正在尝试完成一个关于一些代码的教程视频,这些代码应该防止玩家在某个时刻死亡后(当他们与障碍物碰撞时)继续跳跃。我们在开始时将 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");
}
}
布尔变量前面的感叹号(!)用于否定其值。在这种情况下,代码 !gameOver 表示“不是 gameOver”。
所以,当条件 !gameOver 为 true 时,就意味着 gameOver 为 false。这是因为 !false 计算结果为 true,而 !true 计算结果为 false。
谢谢。