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

时间:2012-02-21 11:18:58

标签: android opengl-es-2.0 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());

 }

}

由于

3 个答案:

答案 0 :(得分:1)

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

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

这些方法返回的值以度为单位。我已经实现了一个完全倾斜控制的游戏,只有这种方法的信息,所以我知道它可以正常用于此目的。

另请注意更改传感器,以便使用enableOrientationSensor(this)代替enableAccelerationSensor

答案 1 :(得分:0)

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

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

答案 2 :(得分:-1)

确保来自mEngine.getSecondsElapsedTotal()的数据正确无误。根据我的经验,在AndEgine进行时间跟踪时会发生一些可疑的事情。