AndEngine,使用加速度计和物理世界平滑移动精灵



使用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);
    }

我还尝试过将pAcceleratometerData乘以某些值,如2和5,是的,它看起来更灵敏,但也会使球移动得更快,更难打。

为了明确我的问题,我希望我的游戏能像Android版的迷宫或反弹游戏中的球一样流畅。它们里面的球对加速度计的反应更灵敏。例如,如果你想在迷宫中突然停止一个移动的球,你可以,但使用andEngine示例中的以下代码,它会持续移动一段时间,就像它在一个没有摩擦的世界中移动一样。

我有没有办法让它像迷宫游戏那样反应更灵敏、更流畅?https://market.android.com/details?id=se.illusionlabs.labyrinth.lite&hl=en-

您可以(在尝试时)乘以pAcceleratometerData,并为球添加阻尼项。因此,球的反应会更灵敏,停得更快,并保持合理的速度。

阻尼是身体的一种特性。所以它会有点像

body.setLinearDamping(1.5f);

最新更新