У меня проблема с проверкой колоризации объектов, нарисованных на экране.Например: в настоящее время я делаю игру со змеями, и мне нужно проверить, поражает ли змея определенный объект блока (что увеличивает змею и увеличивает счет, когда змея поражает / «съедает» блок).Поэтому я сделал функцию проверки столкновения между змеей и блочным объектом, но она не работает правильно (при перемещении по объекту со змеей справа вверху это работает, но в противном случае это не так):
public boolean checkColision() {
if(SnakeObjs.get(0).x >= obj.x && SnakeObjs.get(0).x
<= obj.x+10 && SnakeObjs.get(0).y
>= obj.y && SnakeObjs.get(0).y <= obj.y+10) {
return true;
}else{
return false;
}
}
Эта функция проверяет столкновение.Где SnakeObjs.get(0)
содержит x и y хорды объекта змея, который должен поразить объект блока, а obj
содержит x и y координаты объекта блока, чтобы проверить столкновение с.
PaintМетод, рисующий как блочный объект, так и змеиный объект, выглядит следующим образом:
public void paint(Graphics g) {
for(int i=0;i<SnakeObjs.size();i++) {
g.setColor(new Color(
(int)((double)Math.random()*200.0),
(int)((double)Math.random()*200.0),
(int)((double)Math.random()*200.0)));
g.fillRect(SnakeObjs.get(i).x, SnakeObjs.get(i).y, 10, 10);
g.setColor(Color.WHITE);
g.drawRect(SnakeObjs.get(i).x-1, SnakeObjs.get(i).y-1, 12, 12);
}
g.setColor(new Color(
(int)((double)Math.random()*200.0),
(int)((double)Math.random()*200.0),
(int)((double)Math.random()*200.0)));
g.fillRect(obj.x, obj.y, 10, 10);
g.setColor(Color.BLACK);
g.drawString("Score: "+score, 10, 10);
}
Если кто-нибудь может помочь мне с этой проблемой столкновения, было бы здорово.
Заранее спасибо,
С наилучшими пожеланиями, Skyfe.