我刚刚开始学习 AndEngine,并且正在学习有关使 Sprite 移动的教程,我想我会想办法在它离开屏幕后是否要反转它,我会这样做。
@Override
public void move() {
this.mPhysicsHandler.setVelocityX(-100);
this.mPhysicsHandler.setVelocityY(100);
OutOfScreenX();
OutOfScreenY();
}
// ===========================================================
// Methods
// ===========================================================
private void OutOfScreenX() {
if (mX > MainActivity.CAMERA_WIDTH) { // OutOfScreenX (right)
mX = 0;
} else if (mX < 0) { // OutOfScreenX (left)
mX = MainActivity.CAMERA_WIDTH;
}
}
private void OutOfScreenY() {
if (mY > MainActivity.CAMERA_HEIGHT) { // OutOfScreenX (right)
this.mPhysicsHandler.setVelocityY(-1000);
Log.d("Changing Direction","Changed");
} else if (mY < 0) { // OutOfScreenX (left)
mY = MainActivity.CAMERA_HEIGHT;
}
}
不幸的是,所有这一切只是让 Sprite 在屏幕底部弹跳。有什么理由解决这个问题以及如何解决?我知道另一种方法是通过将速度乘以负数来反转速度,但这似乎也不起作用。
如果有人能指出我正确的方向,我将不胜感激!
谢谢!
最佳答案
我假设您正在稳定地调用 move() 方法。
执行此操作时,y 速度设置为 100,然后调用 OutOfScreenY 方法来检查 Sprite 的位置。在此方法中,y 速度设置为 -1000,因此 Sprite 向相反的方向移动。
但是再次调用 move() 方法,将速度设置回 100。然后再次调用 OutOfScreenY 方法,将速度更改为 -1000。
速度在 100 和 -1000 之间稳定变化,这可以解释弹跳。
关于java - setVelocity 在 OutofScreen 上没有改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22916861/