当我倾斜手机时,我想移动视差背景(恒定速度)。视差背景正在移动,但速度变慢,并且闪烁。也许有人有一个很好的例子,或者知道哪里出了问题?
代码的某些部分:
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的时间追踪有些可疑。