Estou tentando fazer com que quando a bolinha bata na “parede”, ela mude o sentido, ou seja, multiplicar a variavel por -1. Porém, ela só faz isso uma vez, ou seja, vai até a parede e quando colide com ela a bolinha fica indo e voltando, ja que a variavel inc_x fica alternando entre 10 e -10.
public void moveBolinha(){
int inc_x ;
int inc_y = 0;
int aux = 0;
int incrementa = 10;
int bol_x = bolinha.getX();
int bol_y = bolinha.getY();
int size_bol = bolinha.getWidth();
int wall_x = wall.getWidth();
int wall_y = wall.getHeight();
/**
* CONDIÇÕES
*/
if(bol_x >= wall_x - size_bol){
aux = 1;
}
if(bol_x >= wall_x - size_bol){
inc_x = -inc_x;
}
bolinha.setLocation(bol_x += 10, bol_y += inc_y);
}
Basta armazenar variáveis direção horizontal e direção vertical na bolinha:
public void moveBolinha() {
/** outras variáveis **/
int speed = bolinha.getSpeed();
if (bol_x >= wall_x - size_bol) {
bolinha.setHDirection(-1);
} else if (bol_x < wall_x) {
bolinha.setHDirection(1);
}
bolinha.setLocation(bol_x + speed * bolinha.getHDirection(), bol_y + speed * bolinha.getVDirection());
}
caso não seja possível armazenar na bolinha, coloque fora do método
int speed = 10;
int hDirection = 1;
int vDirection = 1;
public void moveBolinha() {
/** outras variáveis **/
if (bol_x >= wall_x - size_bol) {
hDirection = -1;
} else if (bol_x < wall_x) {
hDirection = 1;
}
bolinha.setLocation(bol_x + speed * hDirection, bol_y + speed * vDirection);
}
deu certo, obrigado!! Não sabia que no java também tinham variáveis globais…
Não são variáveis globais, nem sei se tem isso em Java, o mais próximo de variáveis globais seria declarando assim:
public static int speed = 10;
public static int hDirection = 1;
public static int vDirection = 1;
1 curtida