2016-05-22 6 views
1

Ich verwende die Formel zur Berechnung der Geschwindigkeit und verwende die Bildschirmbreite als Abstand und fps als Zeit. Die Geschwindigkeit des Sprites ist immer noch unterschiedlich, wenn Sie sich über den Bildschirm bewegen. Wie sollte ich die Formel ändern, damit sich die Geschwindigkeit auf allen Bildschirmgrößen gleich anfühlt?Geschwindigkeit des Sprites auf Leinwand unterschiedlich auf verschiedenen Bildschirmgrößen

public static float distanceX = Screen.width; 
public static float time = 60f ; 
public static float speed = Player.distanceX/Player.time; 

Antwort

0

Um die Frage zu beantworten, müssen Sie definieren, was das "Gefühl" sein muss. Angenommen, das Gerät wird im Querformat gehalten. Ein 4: 3-Gerät ist viel schmaler als ein 16: 9-Gerät. Wenn Sie also eine Reihe von Quadraten horizontal auf dem Bildschirm haben, haben Sie auf dem 16: 9-Gerät mehr davon als auf dem 4: 3-Gerät.

Wenn es Ihr Ziel ist, in einem konstanten Zeitraum von einer Seite des Bildschirms zur anderen zu wechseln, ist die in Ihrer Frage angezeigte Formel korrekt.

Wenn es Ihr Ziel ist, sich in einem konstanten Zeitraum über N Quadrate hinaus zu bewegen, benötigen Sie eine andere Formel. Es klingt wie das, was du willst.

Ein Ansatz besteht darin, eine geräteunabhängige "Arena" zu definieren, in der sich alles bewegt und dann an das Gerät anzupassen. Zum Beispiel könnten Sie definieren, dass die Welt 1000x1000 ist und dass sich die Dinge mit 100 Einheiten pro Sekunde bewegen. Sie passen dann die Arena an den Bildschirm an, indem Sie entweder die Ober- und Unterseite abschneiden oder die Seiten mit Buchstaben füllen. Ein Side-Scrolling Platformer würde normalerweise die Arena an die Gerätehöhe anpassen und dann ein breiteres oder engeres Sichtfeld horizontal zeigen. (Ein Beispiel für diesen Ansatz finden Sie unter Android Breakout.)

In einem verwandten Hinweis ist es unklug anzunehmen, dass ein Gerät eine bestimmte feste Bildrate hat. Einige Ratschläge finden Sie in this appendix.

+0

Ich werde versuchen, eine Welt auf den Bildschirm zu setzen. Vielen Dank! –

Verwandte Themen