2012-02-21 93 views
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()); 

} 

} 

感谢

回答

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

+0

据我所知,方向信息只检测设备是否处于纵向/横向模式..你能详细解释一下吗? – Jimmar 2012-02-23 16:57:14

+0

我已经编辑了我的答案,以便更完整,希望帮助:) – vertti 2012-02-24 05:58:42

-1

确保mEngine.getSecondsElapsedTotal()中的数据是正确的。根据我的经验,AndEgine中的时间跟踪有些腥意。