Я делаю небольшую игру с другом.Теперь у меня есть система камер, я в основном просто меняю значения x и y объектов окружающей среды.Пример:
public void move(){
if(player.up){
enemyposy += player.speedY;
hostageposy += player.speedY;
grassy += player.speedY;
ammoboxy += player.speedY;
healthkity += player.speedY;
helipady += player.speedY;
bushy += player.speedY;
}
При перемещении кнопки вверх все эти объекты будут перемещены вниз, что создает иллюзию того, что игрок движется, а это не так.Теперь я попытался создать систему столкновений, выполнив следующее:
public void checkCollision(){
if(player.getBounds().intersects(enemy.getBounds())){
System.out.println("Colliding with Enemy");
healthdown.start();
}else{
healthdown.stop();
}
Но когда я подхожу к врагу и прикасаюсь к нему, он не реагирует так, как прикасается, он не говорит: «Столкновение сВраг. », Однако Я в игроке.Может кто-нибудь сказать мне, почему он не отвечает, и дать мне решение, как его решить?
Метод getBounds:
public Rectangle getBounds(){
return new Rectangle(getX(),getY(), 20, 20);
}
Игрок getBounds точно такой же.
intersects - это уже реализованный метод.
логический java.awt.Rectangle.intersects (Rectangle r)
Определяет, пересекаются ли этот Rectangle и указанный Rectangle.Два прямоугольника пересекаются, если их пересечение непустое.
Параметры: r указанный Rectangle Возвращает: true, если указанный Rectangle и этот Rectangle пересекаются;иначе false.