Я создаю свою собственную игру для мобильных телефонов: 2D-графика, перемещение и стрельба солдатом.И у меня проблема.У меня два TiledLayer.Первый - земля, второй - стены, деревья и т. Д. Как я могу обнаружить столкновения с этими объектами, расположенными на втором TiledLayer?Я попробовал так: если произошло столкновение, продолжайте двигаться в направлении сзади.Это не правильно.Я двигаюсь вперед и вот стена: нажми ВВЕРХ - хорошо, солдат уходит вниз.Но когда нажимаешь ЛЕВО, солдат идет ВПРАВО, несмотря на то, что должен идти ВЛЕВО (я знаю, что таким образом написал код).
Однако, как это будет написано?
public void run() {
while(true) {
int keyState = getKeyStates();
if ((keyState & LEFT_PRESSED) != 0) {
soldier.setTransform(Sprite.TRANS_ROT270);
if(!(soldier.collidesWith(traps, false))) {
soldier.move(-10, 0);
} else {
if((keyState & LEFT_PRESSED) != 0) soldier.move(10, 0);
}
} else if ((keyState & UP_PRESSED) != 0) {
soldier.setTransform(Sprite.TRANS_NONE);
if(!(soldier.collidesWith(traps, false))) {
soldier.move(0, -10);
} else {
if((keyState & UP_PRESSED) != 0) soldier.move(0, 10);
}
} else if ((keyState & DOWN_PRESSED) != 0) {
soldier.setTransform(Sprite.TRANS_ROT180);
if(!(soldier.collidesWith(traps, false))) {
soldier.move(0, 10);
} else {
if((keyState & DOWN_PRESSED) != 0) soldier.move(0, -10);
}
} else if ((keyState & RIGHT_PRESSED) != 0) {
soldier.setTransform(Sprite.TRANS_ROT90);
if(!(soldier.collidesWith(traps, false))) {
soldier.move(10, 0);
} else {
if((keyState & RIGHT_PRESSED) != 0) soldier.move(-10, 0);
}
} else if((keyState & FIRE_PRESSED) != 0) {
createBullet();
}