2015-08-23 5 views
0

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

public void newSprite(float x,float y){ 
     Sprite sprite= Pools.obtain(Sprite.class); 
     sprite.set(Mysprite); 
     sprite.setPosition(x,y); 
     arrayList.add(sprite); 
    } 

if(condition==true){ 
    newSprite(); //calls the method to spawn a new sprite 
} 

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

ответ

0

Аргументы

Этот метод также принимает в двух спрайтов

Предположения

Этот метод предполагает, что оба спрайтов содержат свойства x, y, width и height.

Возвращает

Этого метод возвращает логическое значение, чтобы сказать сталкиваются ли они или нет.

bool detectCollision(Sprite sprite1, Sprite sprite2) { 

    return ((sprite1.x <= sprite2.x && (sprite2.x + sprite2.width) - sprite1-x <= sprite1.width + sprite2.width) || 
      (sprite1.x >= sprite2.x && (sprite1.x + sprite1.width) - sprite2.x <= sprite1.width + sprite2.width)) && // Check for x 
     ((sprite1.y <= sprite2.y && (sprite2.y + sprite2.height) - sprite1.y <= sprite1.height + sprite2.height) || 
      (sprite1.y >= sprite2.y (sprite1.y + sprite1.height) - sprite2.y <= sprite1.height + sprite2.height)); // Check for y 

} 

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

Сообщите мне, если это сработает!

+0

ok Я скажу вам завтра, здесь 12 утра, мне действительно нужно немного поспать. благодаря –

0

Вы можете рассчитать расстояние между двумя спрайтами (от их центра). Если расстояние между ними меньше суммы половины их радиусов, то u имеет столкновение.

Смежные вопросы