我正在创建一个游戏并遇到一个问题,我想我知道它为什么会发生但不完全确定,即使我知道,也不知道如何解决。 我有一个10 x 10的2D数组,并且有一个占据瓷砖的“播放器”类。 现在,我创建了2个播放器实例并通过滑动移动它们。 在边缘附近,我放置了玩家无法穿过的“墙壁”,一切正常,直到我移除墙壁。 一旦我移除墙壁并将角色/玩家移动到屏幕边缘,玩家就无法继续前进。 这里出现问题,其中播放器的第二个实例不在屏幕的边缘,而是说位于边缘的“玩家”的第一个实例中的2个图块。 如果我尝试将它们进一步移动到边缘的方向,我理解玩家的第一个实例不会移动或做任何事情,但玩家的第二个实例应该仍然移动,但它不会。
这是用户滑动时执行的代码:
if (player.getArrayX() - 1 != player2.getArrayX()) {
player.moveLeft();
} else if (player.getArrayX() - 1 == player2.getArrayX() && player.getArrayY() != player2.getArrayY()) {
player.moveLeft();
}
if (player2.getArrayX() - 1 != player.getArrayX()) {
player2.moveLeft();
} else if (player2.getArrayX() - 1 == player.getArrayX() && player2.getArrayY() != player.getArrayY()) {
player2.moveLeft();
}
在玩家类中我有:
public void moveLeft() {
if (alive) {
switch (levelMaster.getLevel1(getArrayX() - 1, getArrayY())) {
case 0:
break;
case 1:
subX(); // basically moves player left
setArrayX(getArrayX() - 1); // shifts x coord of player 1 within tilemap
Log.d("semajhan", "x: " + getArrayX());
break;
case 9:
subX();
setArrayX(getArrayX() - 1);
setAlive(false);
break;
}
}
}
非常感谢任何有关此事或进一步见解的帮助,谢谢。
答案 0 :(得分:0)
通过添加if else语句解决:
public int getLevel1(int i, int j) {
int[][] level = {
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 0, 0, 1, 0, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 0, 1, 1, 1, 1, 1, 1, 0, 1},
{1, 0, 1, 1, 1, 1, 0, 1, 0, 1},
{1, 0, 1, 1, 0, 1, 0, 1, 0, 1},
{1, 0, 1, 1, 0, 1, 1, 1, 0, 1},
{1, 0, 1, 1, 1, 1, 1, 1, 0, 1},
{1, 0, 1, 1, 0, 1, 1, 1, 0, 1},
{1, 0, 1, 1, 0, 1, 8, 1, 0, 1},
{1, 0, 9, 1, 1, 1, 0, 1, 0, 1},
{1, 0, 1, 1, 1, 1, 0, 1, 0, 1},
{1, 0, 1, 1, 1, 1, 1, 1, 0, 1},
{1, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
};
if (i >= 0 && i <= 9 && j >= 0 && j <= 14) {
return level[j][i];
} else {
return 10;
}
}