【问题标题】:AndEngine, Move Sprite smoothly using Accelerometer & PhysicsWorldAndEngine,使用 Accelerometer 和 PhysicsWorld 平滑移动 Sprite
【发布时间】:2012-01-25 07:50:22
【问题描述】:

使用 AndEngine,我试图用加速度计移动一个精灵(球),该加速度计应该会反弹墙壁并撞击其他障碍物。

到目前为止,我已经找到了以下两种方法。

 public void onAccelerometerChanged(final AccelerometerData myAccelerometerData) {
    mySprite.setPosition(mySprite.getX() + myAccelerometerData.getX(), mySprite.getY() + myAccelerometerData.getY());

}

这非常顺利,但仅限于非物理世界。 (即不会顺利反弹墙壁和其他障碍物)。

现在使用 AndEngine 提供的示例中的这种方法,球具有良好的物理特性,但并没有像我想要的那样平稳移动。

 @Override
    public void onAccelerometerChanged(final AccelerometerData pAccelerometerData) {
            final Vector2 gravity = Vector2Pool.obtain(pAccelerometerData.getX(), pAccelerometerData.getY());
            this.mPhysicsWorld.setGravity(gravity);
            Vector2Pool.recycle(gravity);
    }

我还尝试将 pAccelerometerData 与某些值(例如 2 和 5)相乘,是的,它看起来更灵敏,但也使球移动得更快且难以打球。

为了让我的问题更清楚,我希望我的游戏能够像迷宫或反弹游戏中的球在 Android 上一样流畅。其中的球对加速度计更敏感。例如,如果你想在 Labyrinth 中突然停止一个移动的球,你可以但是使用 andEngine 示例中的以下代码,它会继续移动一段时间,就好像它在一个无摩擦的世界中移动一样。

有没有办法让它像迷宫游戏一样响应更快、更流畅? https://market.android.com/details?id=se.illusionlabs.labyrinth.lite&hl=en

【问题讨论】:

    标签: android andengine


    【解决方案1】:

    您可以(如您尝试的那样)乘以 pAccelerometerData,并为球添加阻尼项。所以球会更有反应,会更快停止,并会保持合理的速度。

    阻尼是物体的属性。所以它会像

    body.setLinearDamping(1.5f);
    

    【讨论】:

    • 我试了一下,是的,精灵响应更快,提供更好的控制。谢谢佐莱斯
    • 我也有同样的问题。我应该在哪里使用这个 body.setLinearDamping(1.5f);这应该在非物理世界或物理世界中。
    • 它是物体的属性,在物理世界中也是如此。将阻尼应用于移动物体(球、角色……)的身体。
    猜你喜欢
    • 1970-01-01
    • 2020-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多