Java setVelocity不';不要在屏幕外改变

Java setVelocity不';不要在屏幕外改变,java,android,box2d,andengine,Java,Android,Box2d,Andengine,我刚刚开始学习AndEngine,正在学习一个关于精灵移动的教程,我想如果我想在它离开屏幕后反转它,我会这样做 @Override public void move() { this.mPhysicsHandler.setVelocityX(-100); this.mPhysicsHandler.setVelocityY(100); OutOfScreenX(); OutOfScreenY(); } // =====================

我刚刚开始学习AndEngine,正在学习一个关于精灵移动的教程,我想如果我想在它离开屏幕后反转它,我会这样做

@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;
    }
}
@覆盖
公开作废动议(){

这个.mpphysicandler.setVelocityX(-100);
这个.mpphysicandler.setVelocityY(100); OutOfScreenX(); 离筛(); } // =========================================================== //方法 // =========================================================== 隐私权{ 如果(mX>MainActivity.CAMERA_WIDTH){//OutOfScreenX(右) mX=0; }else如果(mX<0){//OutOfScreenX(左) mX=MainActivity.CAMERA_宽度; } } 私隐无效{ 如果(mY>MainActivity.CAMERA_HEIGHT){//OutOfScreenX(右)
这个.mpphysicandler.setVelocityY(-1000); Log.d(“改变方向”、“改变”); }else如果(mY<0){//OutOfScreenX(左) mY=main Activity.CAMERA\u高度; } }
不幸的是,所有这些都会使精灵在屏幕底部反弹。是否有任何理由修复此问题以及如何修复?我知道另一种方法是通过将速度乘以负速度来反转速度,但这似乎也不起作用

如果有人能给我指出正确的方向,我将不胜感激


谢谢

我假设您正在稳定地调用move()-方法

执行此操作时,y速度设置为100,然后调用OutOfScreenY方法检查精灵的位置。在这种方法中,y速度被设置为-1000,因此精灵的移动方向相反

但是再次调用move()-methos,将速度设置回100。然后,又一次,outofscreen方法被称为a,它将速度更改为-1000


速度在100到-1000之间稳定地变化,这可以解释反弹的原因。

this.mpphysicandler.setVelocityY(-1000);为什么它被设置为-1000?不应该是-100吗?不管你设置什么,结果都是一样的。我用1000来测试它是否能跳得更大,但它也没有。