Android - Glattes translationales Scrollen von Leinwand basierend auf der Bewegung eines asynchronen Objekts

StackOverflow https://stackoverflow.com/questions/5810992

Frage

Ich habe ein Android -Spiel, bei dem sich ein Ball auf dem Beschleunigungsmesser bewegt. Der Ball bewegt sich mit einer variablen Geschwindigkeit. Das Spiel hat Levels, die viel größer sind als ein Smartphone -Bildschirm, und so übersetze ich die Leinwand, da sich der Ball dem Bildschirmkand nähert, um die großen Ebenen zu erhalten. Das Scrollen funktioniert, das Problem ist reibungslos auf dem Ball scrollen.

Hier ist ein Versuch, der sich basierend auf der Änderung der Position des Balls zwischen Aktualisierungen verschiebt:


// RIGHT SHIFT
shiftFactor = Math.abs(xCoor - prevXCoor);
if (ball.x + translateX &gt rightX * 0.8
 && rightX &lt levelWidth + padding) {
    translateX -= shiftFactor;
    leftX += shiftFactor;
    rightX += shiftFactor;
} 
Es sieht nervös aus.

Hier ist ein Versuch, der sich auf einer Konstanten verschiebt.


int shiftFactor=2;

//SHIFT SCREEN RIGHT
if (ball.x + translateX > RightPerimeter * 0.8 && rightPerimeter < levelWidth) {
  translateX -= shiftFactor;
  viewPortLeft += shiftFactor;
  viewPortRight += shiftFactor;
}

Bei niedrigeren Schaltfaktorenwerten scrollen Sie reibungslos, aber der Ball kann das Scrollen leicht überschreiten. Bei größeren Schaltfaktoren wird das Scrollen inkrementell abgehackter.

Irgendwelche Vorschläge? Vielen Dank.

War es hilfreich?

Lösung

Ihr Problem ist, dass Ihre Bildrate zu niedrig ist. Nach meiner Erfahrung ist Leinwand nicht gut ausgestattet, um Echtzeitspiele mit guter Bildrate zu machen. Wenn Sie mit OpenGL auf das Rendering wechseln, sehen Sie einen großen Leistungsgewinn.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top