2011-09-24 10 views
5

Rozwijam grę używając andeninge. Naprawiłem kamery szerokość i wysokośćJak uruchomić moją grę dla innej rozdzielczości ekranu używając andengine

private static final int CAMERA_WIDTH = 480; 
private static final int CAMERA_HEIGHT = 320; 

@Override 
public Engine onLoadEngine(){  
    this.mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT); 
    final Engine engine = new Engine(new EngineOptions(true, ScreenOrientation.LANDSCAPE, new FillResolutionPolicy(), this.mCamera).setNeedsSound(true));  
    return engine; 
} 

W grze obraz wielkości budynku jest (1020x400). Widok budynku poprawnie, gdy camera_width i camera_height to 480, 320. Jak uruchomić moją grę dla różnych rozdzielczości ekranu używając andengine (używając tego samego rozmiaru obrazu budynku).

W przeciwnym razie muszę zmienić obrazy budowlane dla wszystkich rozdzielczości ekranu?

Odpowiedz

5

Możesz użyć kamery stałej, tak jak teraz, jeśli chcesz. OpenGL ES skaluje widok, aby wypełnić ekran urządzenia. Jest to prawdopodobnie najłatwiejsze rozwiązanie, ale spowoduje zmianę proporcji obrazu lub pozostawienie czarnych pól poniżej/powyżej lub z lewej/prawej strony ekranu, gdy gra jest uruchamiana na urządzeniu, które ma inny współczynnik proporcji niż 1,5 (480/320). Myślę, że obecnie większość urządzeń ma współczynnik proporcji 1,66 (800/480).

Inną opcją jest użycie:

DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics) 
CAMERA_WIDTH = metrics.widthPixels() 
CAMERA_HEIGHT = metrics.heightPixels() 

ustawić rozmiar aparatu, a następnie użyć kombinacji rozmiarów pikseli i gęstości pikseli ekrany (dpi) (patrz http://developer.android.com/reference/android/util/DisplayMetrics.html) oraz stosowanie .setScale do Sprites odpowiednio je skalować.

gry
4

AndEngine będzie skala na urządzeniu natywnie - tak ...

Jeśli ustawisz CAMERA_WIDTH/wysokość do 480x320 i ktoś uruchamia go na telefon, który jest 800x480 gra będzie skalowany do 720x480 (1,5x) i będzie margines 80px (górny, dolny, lewy, prawy lub dzielony między nimi w zależności od grawitacji Waszego Widoku).

Musisz zdecydować, co większość ludzi korzystają z aplikacji będzie korzystać - staram się kierować 800x480 i żyć z jakiegoś skurczu do mniejszych ekranów - zamiast na odwrót ...

1

Można użyć to Źródło:

@Override 
public Engine onLoadEngine() { 
    final Display defaultDisplay = getWindow().getWindowManager().getDefaultDisplay(); 
    CAMERA_WIDTH = defaultDisplay.getWidth(); 
    CAMERA_HEIGHT = defaultDisplay.getHeight(); 
    this.mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT); 
    return new Engine(new EngineOptions(true, ScreenOrientation.PORTRAIT, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), this.mCamera)); 
} 
1

AndEngine domyślnie zakłada, że ​​chcesz mieć ustaloną politykę. Ale można również zmienić, jak podano w poniższym linku,

http://android.kul.is/2013/10/andengine-tutorial-dealing-with-screen-sizes.html

Albo można śledzić ten kod i odpowiednio zmodyfikować kod. (Moje preferencje)

// Calculate the aspect ratio ofthe device. 
float aspectRatio = (float) displayMetrics.widthPixels/(float) displayMetrics.heightPixels; 

// Multiply the aspect ratio by the fixed height. 
float cameraWidth = Math.round(aspectRatio * CAMERA_HEIGHT); 

// Create the camera using those values. 
this.mCamera = new Camera(0, 0, cameraWidth, cameraHeight); 

// Pick some value for your height. 
float cameraHeight = 320; 

// Get the display metrics object. 
final DisplayMetrics displayMetrics = new DisplayMetrics(); 

// Populate it with data about your display. 
this.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); 
Powiązane problemy