1

And Engine を使用してゲームを作成していますが、すべてのデバイスで動作する一般的な方法で作成しようとすると、問題が発生します...

すべての画面で機能する背景スプライトの特定の位置にスプライトを設定する必要があります...背景画面のサイズはデバイスの寸法と同じです..

Glaxy S3 haの寸法720 * 1280と言うピクセルを使用しようとしました

そして、それに従ってスプライトを場所(584,608)に設定しました

と私の HTC experia ha 寸法(320,480)

だから私はそれを(244,172)に設定する必要があります....

スプライトの位置を一般的な方法で設定するために、次のすべての方法を試しましたが、うまくいかない場合...

私はそれを可能にするいくつかの式を作るために次のことをたくさん試しましたが、何も見つけることができません..アドバイスしてください

final Display display = getWindowManager().getDefaultDisplay();
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

 metrics.density;
 metrics.densityDpi;
 metrics.heightPixels);
 metrics.scaledDensity);
 metrics.widthPixels);
 metrics.xdpi);
 metrics.ydpi);



Point point = getDisplaySize(display);
 CAMERA_WIDTH = point.x;
 CAMERA_HEIGHT = point.y;
 DisplayMetrics dm = new DisplayMetrics();     getWindowManager().getDefaultDisplay().getMetrics(dm);
 double x = Math.pow(dm.widthPixels/dm.xdpi,2); 
 double y = Math.pow(dm.heightPixels/dm.ydpi,2);
 double screenInches = Math.sqrt(x+y);
 int widthPix = (int) Math.ceil(dm.widthPixels * (dm.densityDpi / 160.0));

//CAMERA_WIDTH = display.getWidth();
//CAMERA_HEIGHT = display.getHeight();

問題は少し複雑です..上で述べたように、ピクセルを使用しようとしましたが、Glaxy S3 ha *dimensions 720*1280 とします。必要なスプライトの位置は (584,608) なので、( CAMERA_WIDTH/1.233f,CAMERA_HEIGHT/2.112f) のように設定します。 *

しかし、 HTC experia の寸法は*320*480 なので、( CAMERA_WIDTH/1.233f,CAMERA_HEIGHT/2.112f) に基づく必要な位置は (2599.5,227.27)* ですが、表示によるとこれは間違っています... (244,172)に設定するとエクスペリアの場合、完璧に機能します。... 助けてください。

4

1 に答える 1

3

AndEngine は複数の解決ポリシーを提供します。これらは のサイズを決定するために使用されるためRenderSurfaceView、画面サイズに応じて、画面上のゲームの実際のサイズが決まります。

使用する必要がありますRatioResolutionPolicy: 幅と高さの比率を一定に保ちながら、可能な限り最大のサイズを使用します。カメラのサイズを一定に保つことで、表示されるすべてのものがこの一定の比率でスケーリングされますが、この比率はデバイスによって異なります。

例:CAMERA_WIDTH = 720と をみましょうCAMERA_HEIGHT = 480。この方法でカメラとエンジン オプションを作成すると、次のようになります。

this.mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
EngineOptions options = new EngineOptions(..., new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), mCamera);

比率は720 / 480 = 1.5です。シーンにスプライトを配置するときは、一定の座標を使用してください。画面の中央に配置するとします。

Sprite sprite = new Sprite(CAMERA_WIDTH / 2, CAMERA_HEIGHT / 2, ...);

だから

  • 画面サイズが 720x480 のデバイスでは、スプライトは (360, 240) 画面座標に配置されます。
  • 画面サイズが 480x320 のデバイスでは、スプライトは (240, 160) 画面座標に配置されます。
  • 画面サイズが 800x480 のデバイスでは、スプライトは (400, 240) 画面座標に配置されます。

等々...

于 2012-12-09T15:37:31.700 に答える