Плитка на основе карты и столкновения;застрять - PullRequest
1 голос
/ 03 июля 2011

Я пытаюсь заставить моего персонажа перемещаться по карте тайлов при столкновениях. Все отлично работает, кроме одной вещи. Я показываю вам картинку с проблемой:

http://i.imgur.com/bcyz5.jpg То есть, когда я достигаю плитки выше, я не могу никуда двигаться. Если вы пришли слева, я не могу двигаться ни вверх, ни вниз. Если вы дойдете до дна, я могу двигаться влево, но не вправо. И когда вы доберетесь до правой стороны, я смогу двигаться в любом направлении.

Честно говоря, я понятия не имею, что может быть неудачным. Я думаю, что это связано с if (...), потому что, если я меняю порядок, меняются адреса, по которым я могу переместиться: /

Здесь я оставляю код:

boolean collision = false;

if(Keyboard.isKeyDown(Keyboard.KEY_UP)) {
    for(int i = 0; i < map.GetNumLayers(); i++) {
        if(UpTile(map, i) > 128) {
            collision = true;
        }
    }

    if(!collision) AddPos(0.0f, -vel);
}
if(Keyboard.isKeyDown(Keyboard.KEY_LEFT)) {
    for(int i = 0; i < map.GetNumLayers(); i++) {
        if(LeftTile(map, i) > 128) {
            collision = true;
        }
    }

    if(!collision) AddPos(-vel, 0.0f);
}
if(Keyboard.isKeyDown(Keyboard.KEY_DOWN)) {
    for(int i = 0; i < map.GetNumLayers(); i++) {
        if(DownTile(map, i) > 128) {
            collision = true;
        }
    }

    if(!collision) AddPos(0.0f, vel);
}
if(Keyboard.isKeyDown(Keyboard.KEY_RIGHT)) {
    for(int i = 0; i < map.GetNumLayers(); i++) {
        if(RightTile(map, i) > 128) {
            collision = true;
        }
    }

    if(!collision) AddPos(vel, 0.0f);
}

1 Ответ

1 голос
/ 03 июля 2011

Вам будет проще отделить модель вашей игры от представленной выше.Этот пример показывает один подход, в то время как этот более сложный пример моделирует связанную игру на основе сетки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...