Чтобы сделать спрайт, нужно, чтобы спрайт оставался в том положении, в котором он последний раз перемещался - PullRequest
0 голосов
/ 11 июня 2011

Я делаю Java-игру, и когда пользователь нажимает некоторые клавиши, спрайт перемещается в этом направлении, и он изменяет спрайт в соответствии с направлением, которое вводит пользователь. Если вы хотите посмотреть текущую игру, зайдите на этот сайт: http://thetutspace.org/acropolis/beta/

Вот код, который я использую:

    int x_posI = (int) x_pos;
    int y_posI = (int) y_pos;


    if (downPressed && leftPressed) {
        g.drawImage(hero225, x_posI, y_posI, this);
        spr270 = false;
    } else if (downPressed && rightPressed) {
        spr270 = false;
        g.drawImage(hero135, x_posI, y_posI, this);
    } else if (upPressed && rightPressed) {
        spr270 = false;
        g.drawImage(hero45, x_posI, y_posI, this);
    } else if (upPressed && leftPressed) {
        g.drawImage(hero315, x_posI, y_posI, this);
        spr270 = false;
    } else if (leftPressed == true) {
        g.drawImage(hero270, x_posI, y_posI, this);
        spr270 = true;
    } else if (rightPressed == true) {
        g.drawImage(hero90, x_posI, y_posI, this);  
        spr270 = false;
    } else if (upPressed == true) {
        g.drawImage(hero, x_posI, y_posI, this);
        spr270 = false;
    } else if (downPressed == true) {
        g.drawImage(hero180, x_posI, y_posI, this); 
        spr270 = false;
    }
        else{
            g.drawImage(hero, x_posI, y_posI, this);
        }
    if(spr270) {
        g.drawImage(hero270, x_posI, y_posI, this);
    }

Когда я нажимаю ВЛЕВО, вот что происходит: i.stack.imgur [точка] ком / owT3z.png

Когда я отпускаю, вот что происходит: i.stack.imgur.com/2Wrjr[dot]png

Как сделать так, чтобы персонаж оставался лицом влево?

1 Ответ

0 голосов
/ 11 июня 2011

Это внутренний метод рисования (Graphics g), верно?

Добавьте в ваш класс изменчивый спрайт поля Image («защищенный изменяемый спрайт изображения;»).Измените логику на:

int x_posI = (int) x_pos;
int y_posI = (int) y_pos;

if (downPressed && leftPressed) {
    this.sprite = hero225;
} else if (downPressed && rightPressed) {
    this.sprite = hero135;
} else if (upPressed && rightPressed) {
    this.sprite = hero45;
} else if (upPressed && leftPressed) {
    this.sprite = hero315;
} else if (leftPressed == true) {
    this.sprite = hero270;
} else if (rightPressed == true) {
    this.sprite = hero90;
} else if (upPressed == true) {
    this.sprite = hero;
} else if (downPressed == true) {
    this.sprite = hero180;
}

// this.sprite will contain value set on last "movement"
g.drawImage(this.sprite, x_posI, y_posI, this);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...