Android обнаружение столкновений - PullRequest
0 голосов
/ 11 июля 2011

Описание:

У меня есть проект, который почти закончен, но я заметил, что столкновение не работает. Это змеиная игра, которой можно управлять через сенсорный экран, поэтому возможны острые (?, Извините, немецкие) углы. На данный момент я просто оставляю немного терпимости (игнорирую первые 2 спрайта), чтобы включить немного поворота. Основная проблема заключается в том, что спрайты вращаются, что приводит к появлению многомерных столкновений Я не использую игровые движки или OpenGL.

Код столкновения: offsetX & offsetY - ширина или высота растрового изображения / 2, вызываемая на голове змеи. Каждая ссылка в змее (Птица) является размещаемой

public boolean doesHit(Placeable p) {
    int xLen = Math.abs(this.x - p.x);
    int yLen = Math.abs(this.y - p.y);
    if (bmp != null) {
        if (xLen < offsetX + p.offsetX && yLen < offsetY + p.offsetY)
            return true;
    } else {
        if (xLen < Bird.BIG_W[Bird.mUseBird] / 2
                && yLen < Bird.BIG_H[Bird.mUseBird] / 2)
            return true;
    }
    return false;
}

TL; DR / Вопрос:

Есть ли способ повернуть Rects и затем сравнить их (желательно, так как игра уже закончена, кроме этого)? Или проще всего было бы портировать на OpenGL / игровой движок?

1 Ответ

2 голосов
/ 11 июля 2011

Лучшим вариантом было бы использовать OpenGL и использовать повернутые многоугольники с пересечениями.

Однако для быстрого взлома я бы изменил процедуру doHit (), чтобы рассматривать спрайты как круги вместо прямоугольников.Таким образом, они не будут расти вне границ при вращении.Цена в том, что обнаружение столкновений будет паршивым в поворотах.

...