Привет, ребята, надеюсь, вы мне поможете. Я пытаюсь закодировать игру, но при столкновении не получается. Я много искал и обнаружил, что метод ограничивающего прямоугольника (для создания невидимого прямоугольника вокруг спрайта) - лучший способ для меня. Но метод пересечения у меня не работает. У меня есть два конфликтующих растровых спрайта, но в LogCat столкновения нет ...
Спрайт №1 Класс
public Sprite(GameView theGameView, Bitmap bmp) {
this.theGameView = theGameView;
this.bmp = bmp;
this.width = bmp.getWidth();
this.height = bmp.getHeight();
ySpeed = 0;
xSpeed = 1;
}
public Rect bounds() {
return (new Rect(x,y,width,height));
}
public void onDraw(Canvas canvas) {
canvas.drawBitmap(bmp, x, y, null);
}
Спрайт №2 Класс
public FourthSprite(GameView theGameView, Bitmap bmp) {
this.theGameView = theGameView;
this.bmp = bmp;
this.width = bmp.getWidth();
this.height = bmp.getHeight();
ySpeed = 0;
xSpeed = -1;
}
public Rect bounds() {
// TODO Auto-generated method stub
return (new Rect(x,y,width,height));
}
public void onDraw(Canvas canvas) {
canvas.drawBitmap(bmp, x, y, null);
}
}
Класс GameView
public void collision () {
Rect r1 = theSprite.bounds(); // Sprite on left side
Rect r4 = theSprite4.bounds(); // Sprite on right side
if (r1.intersect(r4)){
collision = true;
Log.v("Log Tag", "COLLISION :D :D :D :D :D :D :D");
}
else {
collision = false;
Log.v("Log Tag", "NO COLLISION");
}
}
Если это поможет, я также могу загрузить видео.
Изменить: http://youtu.be/wYxZ7nKsmdw Я понял, что коллизия работает, когда один спрайт не работает move arround и координаты x, y равны 0. В чем может быть проблема?