Android - liscia tela traslazionale scrolling base al movimento di un oggetto asincrono
-
25-10-2019 - |
Domanda
Ho un gioco per Android in cui una palla si muove in base al accelerometro. La palla si muove a velocità variabile. Il gioco ha livelli molto più grandi di uno schermo dello smartphone, e così ho tradurre la tela come la palla si avvicina al bordo dello schermo per accogliere i grandi livelli. Le opere di scorrimento, il guaio è senza intoppi scrolling basa sulla palla.
Ecco un tentativo che si sposta in base alla variazione della posizione della palla tra gli aggiornamenti:
// RIGHT SHIFT
shiftFactor = Math.abs(xCoor - prevXCoor);
if (ball.x + translateX > rightX * 0.8
&& rightX < levelWidth + padding) {
translateX -= shiftFactor;
leftX += shiftFactor;
rightX += shiftFactor;
}
Sembra nervosa.
Ecco un tentativo che sposta basano su una costante.
int shiftFactor=2;
//SHIFT SCREEN RIGHT
if (ball.x + translateX > RightPerimeter * 0.8 && rightPerimeter < levelWidth) {
translateX -= shiftFactor;
viewPortLeft += shiftFactor;
viewPortRight += shiftFactor;
}
Per valori inferiori shiftFactor, uniformemente rotoli, ma il pallone può facilmente 'Outrun' lo scorrimento. Per shiftFactors più grandi, lo scorrimento diventa incrementalmente choppier.
Qualche suggerimento? Grazie.
Soluzione
Il problema è che il frame rate è troppo basso. Nella mia esperienza tela non è ben attrezzato per fare i giochi in tempo reale ad un buon frame rate. Vedrete un grande guadagno di prestazioni se si passa a rendere con OpenGL.