2016-04-17 8 views
0

Cocos2dx Anfänger hier. Verwenden von Cocos2dx V3.10.Sprite Breite passend für alle Auflösungen cocos2dx

Ich habe viele Tutorials und Dokumentation über Multi-Plattform-Unterstützung über iOS/Android etc. gelesen und in der Hauptsache bekomme ich es. Ich verwende setDesignResolutionSize in Kombination mit setContentScaleFactor und es funktioniert bisher ziemlich gut.

Ich habe ein Problem, bei dem ich mir nicht sicher bin, wie ich es am besten angehen kann.

Mein Spiel ist Porträt und ich möchte, dass ein bestimmtes Sprite auf iphone4s und iphone5 die gleiche Breite hat.

Sie beide verwenden die gleiche Design-Auflösung Größe und Inhaltsskalierung Faktor, aber auf iphone4 ist das Sprite kleiner als das auf iphone4 (und iphone5).

Ich habe zwei Bilder beigefügt, um zu demonstrieren, was ich meine.

enter image description here

enter image description here

Wie Sie das Sprite auf der iphone4 sehen kann, ist nicht ganz den gleichen Abstand von den Rändern entfernt wie die iphone5 ist, was ich davon ausgehen, ist bis auf den Unterschied in der Auflösung.

Muss ich einen anderen Satz von Assets für diese Auflösung erstellen und wie würde ich diese festlegen? Wie zur Zeit verwenden iphone4 und iphone5 beide die gleiche Skala und Design-Größe, dh:

Jede Hilfe sehr geschätzt.

Antwort

2

Dies kann so gemacht werden, dass das Spiel gleich aussieht, egal welches Gerät Sie verwenden. Zunächst einmal kommentieren Sie alle folgenden Code in Ihr AppDelegate.cpp

/* if (frameSize.height > mediumResolutionSize.height) 
    {   
     director->setContentScaleFactor(MIN(largeResolutionSize.height/designResolutionSize.height, largeResolutionSize.width/designResolutionSize.width)); 
    } 
    // if the frame's height is larger than the height of small size. 
    else if (frameSize.height > smallResolutionSize.height) 
    {   
     director->setContentScaleFactor(MIN(mediumResolutionSize.height/designResolutionSize.height, mediumResolutionSize.width/designResolutionSize.width)); 
    } 
    // if the frame's height is smaller than the height of medium sxize. 
    else 
    {   
     director->setContentScaleFactor(MIN(smallResolutionSize.height/designResolutionSize.height, smallResolutionSize.width/designResolutionSize.width)); 
    } 
*/ 

Nun, stellen Sie sicher, dass alle Ihre Vermögenswerte in Bezug auf eine Leinwand Größe entwickelt worden, die im Idealfall von der Größe Ihres Hintergrund ist.

Nehmen wir an, dass die Größe customWidth x customHeight ist.

nun die folgenden Zeilen in AppDelegate.cpp bearbeiten wie folgt:

glview->setDesignResolutionSize(customWidth, customHeight, ResolutionPolicy::EXACT_FIT); 
Size frameSize = glview->getFrameSize(); 

Ihr Spiel gleich, unabhängig von dem Gerät aussehen wird, solange Seitenverhältnis beibehalten wird (die für alle gleich ist Telefone, aber anders für Tablets).

+0

Danke für die Rückmeldung, diese Methode ist neu für mich, also muss ich ihr ein Spiel geben. Nur um zu bestätigen, ob meine benutzerdefinierte Größe sage (w) 320 (h) 480 wäre, würde ich meine Assets mit der doppelten Größe entwerfen und dann die EXACT_FIT-Richtlinie verwenden? Wie würden die Tablets funktionieren und was ist mit Screens, die ein anderes Verhältnis zum iPhone-Bildschirm haben (dh Androiden). Vielen Dank – type25

+0

Alle Handy-Bildschirme einschließlich iOS und Android haben mehr oder weniger das gleiche Seitenverhältnis ~ 1,77, so dass kein Problem sein wird. – mohakagr

+0

Danke. Eine letzte Sache, setContentScaleFactor finde ich nützlich, weil es Schriftarten etc skaliert .... Muss ich das jetzt manuell tun? – type25