2016-09-14 3 views
1

Ich habe ein Sprite-Objekt mit einer Breite und einer Höhe (Texturgröße).Sprite Anfangsskala basierend auf der Größe auf dem Bildschirm

Ich möchte das Sprite auf dem Bildschirm mit der gleichen Größe wie die ursprüngliche Texturgröße anzeigen.

Da die Szenengröße, die Kameraposition und die Texturgrößen keine konstanten Werte sind, brauche ich eine Möglichkeit, den Sprite zu skalieren.

Die meiste Zeit der Kamera ist Perspektive, aber manchmal kann es Orthographic sein.

Also brauche ich 2 Formeln für die Waage.

Ich habe einige Antworten gefunden, wie man die Sprite-Größe beim Zoomen konstant hält, aber in dieser Berechnung ist die Anfangsskala unbekannt.

Danke.

Antwort

0

Eine Möglichkeit, etwas Ähnliches zu tun, ist die Erstellung einer anfänglichen (optimalen) Bildschirmgröße und die Skalierung des Knotens basierend auf Änderungen am Bildschirm.

Der einfachste Weg, dies zu tun, ist eine Anfangsgröße der Szene, in der Ihr Sprite genau die gewünschte Größe hat. Sie würden diese , bevor Sie das Zoomen tun anrufen und Sie es nur ONCE nennen:

Nun, wenn Sie die Größe des Bildschirms (wie Zoomen) zu ändern, müssen Sie den Maßstab finden, bei dem der Bildschirm hat sich geändert:

var scaleWidth = self.size.width/initialScreenWidth 
var scaleHeight = self.size.height/initialScreenHeight 

Nun, da Sie diese beiden Skalen haben, alles, was Sie tun müssen, ist:

texture.xScale = scaleWidth 
texture.yScale = scaleHeight 

Sie müssen die Maßstäbe erstellen und die Texturmaße jedes Mal einstellen, wenn Sie die Größe des Bildschirms ändern. (Wahrscheinlich in der Update-Funktion, so dass es glatt aussieht).

Hoffe, das hilft!

Verwandte Themen