AndEngine:用加速度计移动视差背景



当我倾斜手机时,我想移动视差背景(恒定速度)。视差背景正在移动,但速度变慢,并且闪烁。也许有人有一个很好的例子,或者知道哪里出了问题?

代码的某些部分:

public class TestPhysicsActivity extends SimpleBaseGameActivity  implements IAccelerationListener{
...
 private static final int CAMERA_WIDTH = 720;
 private static final int CAMERA_HEIGHT = 480;
 final Camera camera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
 final ScrollableParallaxBackground background = new ScrollableParallaxBackground(0, 0, 0, camera);
....    
  @Override  
  public void onLoadResources() {  
  this.enableAccelerometerSensor(this);  
  }  
 ....
@Override
 public void onAccelerationAccuracyChanged(final AccelerationData pAccelerationData) {
 }
 @Override
 public void onAccelerationChanged(final AccelerationData pAccelerationData) {
  final Vector2 gravity = Vector2Pool.obtain(pAccelerationData.getX(), pAccelerationData.getY());
  this.mPhysicsWorld.setGravity(gravity);
  Vector2Pool.recycle(gravity);
 background.setParallaxValue(this.mEngine.getSecondsElapsedTotal()*pAccelerationData.getX());
 }
}

感谢

要检测手机倾斜,请使用方向信息(onOrientationChanged),而不是加速度。此方法将获得OrientationData,您可以从中直接询问手机围绕每个轴的倾斜:

@Override public void onOrientationChanged(OrientationData pOrientationData) {
    pOrientationData.getYaw() //compass
    pOrientationData.getPitch() //one orientation axis
    pOrientationData.getRoll() //other orientation axis
}

这些方法返回的值以度为单位。我已经用这个方法的信息实现了一个全倾斜控制的游戏,所以我知道它可以很好地实现这个目的。

还记得更改传感器,使其能够使用enableOrientationSensor(this)而不是enableAccelerationSensor

我建议你在这里看看这个项目http://www.andengine.org/forums/tutorials/moving-a-sprite-with-the-accelerometer-sensor-t1223.html

这个使用加速度计传感器来移动精灵,你可以得到一个想法并改变它,这样它就会影响你的背景,查看论坛的第二页,我在那里发布了一个修改后的代码,适用于当前版本的andEngine[该项目不使用物理]

确保mEngine.getSecondsElapsedTotal()中的数据正确无误。根据我的经验,AndEgine的时间追踪有些可疑。

最新更新