這是我的第一篇文章,所以如果我在問我的問題時做了任何錯誤,我會提前道歉。我已經在網上看了一個特定的答案,但無法找到一個,所以這裏去.....瞭解DIP精靈移動/速度
我正在寫一個基於Surfaceview的遊戲,到目前爲止,一切進展順利,然而,我想移動我的主精靈,例如在160DPI屏幕上的1個像素作爲基線(因此基本上1個DIP是1像素= 1的DIP在160DPI屏幕上是否正確?)
我正在使用使用以下forumla:
private static final float spritemovestep = 1f;
final float scale = getResources().getDisplayMetrics().density;
MoveX = (int) (spritemovestep * scale + 0.5f);
然後......類似
SpriteX=SpriteX+MoveX
第一個問題 - 這是正確的嗎?
如果是,有人可以解釋+ .05f實際上是什麼,我讀過,這是爲「四捨五入到最接近的數字」,但....
如果spritemovestep = 1,則在一個120DPI屏幕(它返回0.75作爲我認爲的規模),它可以作爲:1 x .75 + .5?這將是1.25?那麼.5是什麼?
當它被轉換爲int值時結果是什麼?
在某些情況下,最終結果在低密度屏幕上似乎爲'0',所以精靈根本不動。
另外一些應該以不同速度移動的精靈正以相同的速度在一定的密度下移動。
我敢肯定我在這裏很愚蠢,缺少一些東西,但我不明白這應該如何工作。如果我想通過MDPI屏幕上的1個DIP /物理像素來移動我的精靈,它在LDPI屏幕上的移動方式不到1個像素?
此外,什麼是這個公式我不斷看到:
px = dp * (dpi/160) - When is this used?
會很感激,如果有人能夠回答我的問題。
感謝所有