2012-02-21 35 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中的時間跟蹤有些腥意。