Система столкновения не работает - PullRequest
0 голосов
/ 14 мая 2011

Я делаю небольшую игру с другом.Теперь у меня есть система камер, я в основном просто меняю значения 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.

1 Ответ

0 голосов
/ 14 мая 2011

В показанном вами коде вы не обновляете player.x, поэтому player.getX не изменится. То же самое для врага:)

...