-1

当我运行以下代码时,由于某种原因,它的执行好像 else 始终为真,但是当我删除 else 语句时,if 语句工作正常,因此表明 if 语句确实有效,我认为,但是我不能设置 Player.movi​​ng = true 没有其他的。

if (Player.x > j * 25 - 15 &&
    Player.x < j * 25 + 10 &&
    Player.y > i * 25 &&
    Player.y < i * 25 + 25 &&
    Player.direction === 1
) {
    Player.moving = false;
}
else if (Player.x > j * 25 &&
         Player.x < j * 25 + 25 &&
         Player.y > i * 25 - 15 &&
         Player.y < i * 25 + 10 &&
         Player.direction === 2
) {
    Player.moving = false;
}
else if (Player.x > j * 25 &&
         Player.x < j * 25 + 40 &&
         Player.y > i * 25 &&
         Player.y < i * 25 + 25 &&
         Player.direction === 3
) {
    Player.moving = false;
}
else if (Player.x > j * 25 &&
         Player.x < j * 25 + 25 &&
         Player.y > i * 25 &&
         Player.y < i * 25 + 50 &&
         Player.direction === 4
) {
    Player.moving = false;
}
else {
    Player.moving = true;
}

其中 i 和 j 是平铺地图中对象的索引,因此平铺地图看起来像这样: var tilemap = [" "," "];

例如当

if (Player.x > j * 25 &&
         Player.x < j * 25 + 40 &&
         Player.y > i * 25 &&
         Player.y < i * 25 + 25 &&
         Player.direction === 3
) {
    Player.moving = false;
}

是唯一存在的代码。当 [i][j] 处的对象按预期位于其左侧时,玩家将停止向左移动。然而,在存在 else 语句的情况下,它只是继续移动,Player.movi​​ng 保持为真。谢谢你的帮助!

4

1 回答 1

1

您的 if 子句定义不正确, x 不能同时大于和小于一个值。你也是。

你可能想要这样的东西:

If ( (Player.x > I || Player.x < J) &&
     (Player.y > M || Player.y < N) &&
      Player.direction === 1
) {...} ...
于 2015-10-18T20:27:31.600 回答