Java 如何让精灵在Android中从gameView的边缘反弹?

Java 如何让精灵在Android中从gameView的边缘反弹?,java,android,sprite,Java,Android,Sprite,到目前为止,我一直在尝试反转速度,所以理论上他们应该回到自己身上,但事实并非如此 public void update() { if (x > gameView.getWidth() - bmp_width - xSpeed){ xSpeed = xSpeed * -1; ySpeed = ySpeed * -1; } if (y > gameView.getHeight() - bmp_height - ySpeed){

到目前为止,我一直在尝试反转速度,所以理论上他们应该回到自己身上,但事实并非如此

 public void update() {
    if (x > gameView.getWidth() - bmp_width - xSpeed){
        xSpeed = xSpeed * -1;
        ySpeed = ySpeed * -1;
    }
    if (y > gameView.getHeight() - bmp_height - ySpeed){
        xSpeed = xSpeed * -1;;
        ySpeed = ySpeed * -1;;
    }
    if(x + xSpeed < 0){
        x = 0;
        xSpeed = 0;
        ySpeed = -5;
    }

    if(y + ySpeed < 0){
        y = 0;
        xSpeed = 5;
        ySpeed = 0;
    }
    x = x + xSpeed;
    y = y + ySpeed;
}
public void update(){
如果(x>gameView.getWidth()-bmp_width-xSpeed){
xSpeed=xSpeed*-1;
ySpeed=ySpeed*-1;
}
如果(y>gameView.getHeight()-bmp\u height-ySpeed){
xSpeed=xSpeed*-1;;
ySpeed=ySpeed*-1;;
}
如果(x+x速度<0){
x=0;
xSpeed=0;
y速度=-5;
}
如果(y+y速度<0){
y=0;
xSpeed=5;
y速度=0;
}
x=x+x速度;
y=y+y速度;
}

提前谢谢

试试这样的方法:

public void update() {
    x += xSpeed;
    y += ySpeed;

    if (x >= gameView.getWidth() - bmp_width){
        xSpeed = -xSpeed;
        x = gameView.getWidth() - bmp_width;
    }else if(x <= 0){
        xSpeed = -xSpeed;
        x = 0;
    }
    if (y >= gameView.getHeight() - bmp_height){
        ySpeed = -ySpeed;
        y = gameView.getHeight() - bmp_height;
    }else if(y <= 0){
        ySpeed = -ySpeed;
        y = 0;
    }
}
public void update(){
x+=x速度;
y+=y速度;
如果(x>=gameView.getWidth()-bmp\u width){
xSpeed=-xSpeed;
x=gameView.getWidth()-bmp\u width;
}else if(x=gameView.getHeight()-bmp\u height){
ySpeed=-ySpeed;
y=gameView.getHeight()-bmp\u height;

}否则,如果(y尝试以下操作:

public void update() {
    x += xSpeed;
    y += ySpeed;

    if (x >= gameView.getWidth() - bmp_width){
        xSpeed = -xSpeed;
        x = gameView.getWidth() - bmp_width;
    }else if(x <= 0){
        xSpeed = -xSpeed;
        x = 0;
    }
    if (y >= gameView.getHeight() - bmp_height){
        ySpeed = -ySpeed;
        y = gameView.getHeight() - bmp_height;
    }else if(y <= 0){
        ySpeed = -ySpeed;
        y = 0;
    }
}
public void update(){
x+=x速度;
y+=y速度;
如果(x>=gameView.getWidth()-bmp\u width){
xSpeed=-xSpeed;
x=gameView.getWidth()-bmp\u width;
}else if(x=gameView.getHeight()-bmp\u height){
ySpeed=-ySpeed;
y=gameView.getHeight()-bmp\u height;

}否则如果(y试着注释你自己的代码并说出每一行应该做什么,你应该能够发现你的错误y注释你自己的代码并说出每一行应该做什么,你应该能够发现你的错误s关闭,谢谢,精灵仍然在x轴上退出屏幕,但不明白为什么,因为y轴的代码是相同的f gameView.getWidth()返回正确的值?它不-也不知道在哪里更改它。游戏宽度(纵向)比高度大,所以我猜这是错误的如此接近,谢谢,精灵仍然在x轴上退出屏幕,但不明白为什么,因为y轴的代码相同。你检查过gameView.getWidth()是否返回正确的值吗?它不-也不知道在哪里更改它。游戏宽度(纵向)比高度大,所以我猜这是错的