我想在倾斜手机时移动视差背景(恒定速度)。 视差背景正在移动,但要缓慢而且它会闪烁。 也许有人有一个很好的例子或知道什么是错的?
代码的某些部分:
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());
}
}
由于
答案 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进行时间跟踪时会发生一些可疑的事情。