Обнаружение столкновения с краями Java - PullRequest
0 голосов
/ 04 февраля 2020

Я пытаюсь добавить обнаружение столкновения с краями, используя 4 изображения, которые представляют идущего человека. Как только изображение попадает в стену, оно должно повернуться вспять и двигаться в другую сторону, пока не достигнет стены и снова не изменит направление. Как бы я go об этом? Вот мой код:

class Walker {
    int x = 0;
    int y;
    int speed;
    PImage img1, img2, img3, img4;
    int count = 0;

    Walker(int y, int speed) {
        this.y = y;
        img1 = loadImage("walk1.gif");
        img2 = loadImage("walk2.gif");
        img3 = loadImage("walk3.gif");
        img4 = loadImage("walk4.gif");
        this.speed = speed;

    }

    void render() {

        if (count < 10)
            image(img1, x, y);
        else if (count < 20)
            image(img2, x, y);
        else if (count < 30)
            image(img3, x, y);
        else if (count < 40)
            image(img4, x, y);
        else {
            count = -1;
        }
        count++;

    }

    void move() {
        x = x + speed;
    }

}


Walker walter;

void setup() {
    size(500, 500);
    walter = new Walker(150, 3);
}

void draw() {
    background(125);
    walter.render();
    walter.move();
}

1 Ответ

1 голос
/ 04 февраля 2020

Вы должны изменить скорость, когда ходунки ударяются о стену. Ширина PImage задается свойством .width например:

class Walker {

    // [...]

    void move()
    {
        x = x + speed;

        int man_width = img1.width; 
        if (x <= 0 || x >= width-man_width)
            speed = -speed;
    }
}
...