java - setVelocity 在 OutofScreen 上没有改变

标签 java android box2d andengine

我刚刚开始学习 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/

相关文章:

java - 如何向 Soap 服务发送数据?

android - Facebook像android中没有库的侧边菜单

c++ - Box2D:让 body 随机下降

java - 制作普通的泛型类

java - 为什么gson在toJSONString()方法中使用StringWriter?

java - 更改对话框中的圆圈图标

cocos2d-iphone - cocos2d box2d : different mass but body fall at same time

android - 检测android中的屏幕方向

android - 智能应用横幅;适用于 Android/Google Play 的 Windows 应用商店应用 HTML 元标记?

cocos2d-iphone - 基于 cocos2d-box2d 的项目中的警告 "' uniqueIdentifier' is deprecated"