2-D столкновение курс столкновения - PullRequest
2 голосов
/ 06 июня 2011

Может ли кто-нибудь дать мне ссылку на сайты, блоги, статьи или опубликовать для себя ускоренный курс или простое руководство по обнаружению столкновений в 2D для Android? Я посмотрел код столкновения из онлайн-учебника, но они не объяснили часть кода столкновения - только часть реализации спрайтов. Я не использую OpenGL, я использую Canvas для своей игры. Я искал вокруг, но я продолжаю находить вещи для OpenGL или C ++, но я использую Java. Примеры кода, которые объясняются, будут высоко оценены. Спасибо за любую помощь, которую вы можете предложить.

Ответы [ 2 ]

0 голосов
/ 06 июня 2011

сталкивающихся прямоугольников проще всего (на самом деле круги есть, но со спрайтами вы их не используете)

для 2-х прямоугольников, чтобы они сталкивались / перекрывались, некоторое пространство должно быть разделено

public class Sprite{
    private int left,right;//bounding box left<right and top>bottom
    private int top,bottom;

    public final boolean collidesWith(Sprite other){
        if(this.left>other.right || other.left>other.right)return false;
        if(this.bottom>other.top || other.bottom>other.top)return false;

        return true;
    }
}

чтобы узнать, какие из них сталкиваются, вы можете пролистать всю доску и проверить все перекрытия в одном измерении

0 голосов
/ 06 июня 2011

В Java вы можете взглянуть на

http://www.jbox2d.org/

. Этот сайт дает вам некоторое сравнение производительности:

http://www.4feets.com/2009/03/2d-physics-on-android-using-box2d/

(если вы выбираете движок, вы можете просто перейти к «учебнику движка», чтобы найти весь исходный код, который вам нужен

в противном случае вы можете написать свой собственный (в зависимости от того, насколько сложна физика, которую вы хотите)


но я укажу, что использование холста для рисования физики в реальном времени очень медленное, я начал делать это, потому что я тестировал движки, но вы никогда не получите хорошую частоту кадров.

, если тольковам нужна физика только по очень маленькой причине, я бы посоветовал вам перейти на opengl

...