AndEngine: перемещение фона параллакса с помощью акселерометра - PullRequest
0 голосов
/ 21 февраля 2012

Я хочу переместить фон параллакса (постоянная скорость), когда я наклоняю телефон. Фон параллакса движется, но замедляется и мигает. Может, у кого-нибудь есть хороший пример или знает, что не так?

Некоторые части кода:

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 ]

1 голос
/ 22 февраля 2012

Для определения наклона телефона используйте информацию об ориентации (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 голосов
/ 23 февраля 2012

Предлагаю вам посмотреть этот проект здесь http://www.andengine.org/forums/tutorials/moving-a-sprite-with-the-accelerometer-sensor-t1223.html

этот использует датчик акселерометра для перемещения спрайта, вы можете получить идею и изменить ее так, чтобы она влияла на фон, проверьте 2-ю страницу в форуме, где я разместил модифицированный код, который работает с текущими версиями andEngine [этот проект не использует физику]

0 голосов
/ 22 февраля 2012

Убедитесь, что данные из mEngine.getSecondsElapsedTotal () верны.По моему опыту, что-то подозрительное происходит с отслеживанием времени в AndEgine.

...