3

私は Android 用の最初の 2-D ゲームを設計しています。ゲームでは、単純な式 x=x+20; を使用して、ループが実行されるたびに文字を 20 ピクセルずつ移動します。しかし、画面サイズ 3 インチの解像度 320*480 の携帯電話でゲームをテストするときに直面している問題は、キャラクターが速く動くように見えますが、タブレットでテストしている間、キャラクターの動きが遅くなります。キャラクターを動かす方法を知りたいので、ローエンドのデバイスとハイエンドのデバイスの両方で同じ速度で動くように見えます.ロジックを教えてください.コードでロジックを説明するとより役に立ちます.

4

2 に答える 2

2

問題は、移動速度として常に 20 を使用していることです。倍率に応じて移動速度を生成する必要があります。縦横比の扱いがどう違うのかはわかりませんが、たとえば、レターボックスを使用していると仮定します。

レターボックスを使用していると仮定すると、希望の解像度、この場合は 320px に対して倍率を設定する必要があります。したがって、次のようにする必要があります。

DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int height = displayMetrics.heightPixels;

double scaleFactor = height / 320.0; /*// 480.0 if you're in landscape */

次に、あなたの動きのために次のことができます:

x += 20 * scaleFactor; /*// 20 is your move speed, the scaleFactor will make sure it scales across device sizes

注: 水平方向と垂直方向のスケールの処理方法によっては、デバイス間で垂直方向と水平方向の移動速度を均一に保つために両方を考慮する必要がある場合がありますが、これは良い出発点です。

于 2013-08-13T20:04:39.337 に答える