当我运行以下代码时,由于某种原因它执行就好像else总是为true,但是当我拿走else语句时,if语句工作正常,因此表明if语句确实有用,我想,但是如果没有别的话,我就无法设置Player.moving = 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是tile图中对象的索引,这样tilemap看起来像这样: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.moving保持为真。 谢谢你的帮助!
答案 0 :(得分:1)
您的if子句未正确定义,x不能同时大于和小于某个值。你也是。
你可能想要这样的东西:
If ( (Player.x > I || Player.x < J) &&
(Player.y > M || Player.y < N) &&
Player.direction === 1
) {...} ...