2016-05-11 30 views
0

Ich versuche, die Position eines Rahmens so zu ändern, dass er gerade über dem oberen Bildschirmrand liegt. Ich tat dies, indem ich den oberen Teil des Bildschirms nahm und dann die Hälfte des Maßstabs des Objekts hinzufügte (da es in der Mitte zentriert ist). Wenn ich das mache, ändert sich nichts. Ich habe die Koordinaten ausgedruckt und es steht geschrieben, dass es sich bewegt hat, aber es hat nicht funktioniert. Hier ist mein Code (von der Start() -Methode in der WallScalar-Klasse).Unity Transform-Position ändert nicht die Position

Hinweis: Der folgende Code ist der einzige Code in der WallScalar Klasse, dieses Skript in der "Top" Gameobject angewandt wird.

 transform.position = 
     new Vector3(0, Camera.main.orthographicSize + (transform.localScale.y/2), 1); 

     print("yCoor: " + transform.position.y); 

Da das Objekt eine Skala von eins hat, und die Oberseite ist bei y = 5 ist, kann das Objekt sollte bei y = 5.5f platziert. Mit dieser Druckanweisung sagt es, dass es bei y = 5.5f ist, aber es bewegte sich nicht auf meinem Bildschirm. Hier ist ein Bild für weitere Informationen:

enter image description here

Wie Sie sehen können, sie sagt, es zu Ycoor = 5.5f verschoben wurde, aber es hat nicht, denn wenn ich manuell 5.5 für y eingeben, ist es nicht sichtbar, es ist nur vom Bildschirm entfernt. Jede Hilfe mit dem herauszufinden würde sehr geschätzt werden.

Update: Wenn ich eine print-Anweisung setzen wie

 print("yCoorU: " + transform.position.y); 

In meiner Update-Methode, es liest y 5 =, so dass es etwas zwingt zurück 5, sondern weiß, dass nichts anderes jeden Anruf hat zum "Top" GameObject, auf das das Skript angewendet wird.

+0

hat. Was macht das Wandskalarskript? Vielleicht bewegt es deine Wand zurück auf 5? –

+0

@UriPopov Ich werde bearbeiten und klären, das ist, wo der Code, den Sie oben sehen, lebt. – Luke

+0

Wie groß ist Ihre orthographische Kamera? –

Antwort

2

Da Sie durch einen int sich teilen, ich glaube, dass das Ergebnis der transform.localScale.y/2 0 anstelle von 0,5 sein könnte (obwohl ich Ihren Druck nicht undestand warum den richtigen Wert geben würde)

+0

** Camera.main.ortographicSize ** '+ (transform.localScale.y/2)'. Sie haben den '+ Camera.main.ortographicSize' Teil vergessen. Floating ist also keine Überraschung. – Programmer

+0

Ich glaube nicht, dass es einen Unterschied macht. Der Teil in Klammern könnte in Int –

+0

umgewandelt werden Ich habe deine Antwort falsch gelesen. Mein Kommentar ist eine Antwort auf ** Ich verstehe nicht, warum Ihr Druck den richtigen Wert geben würde **. Ich dachte, du hättest gesagt ** Ich verstehe nicht, warum dein Druck einen Gleitkommawert ergeben würde **. Ich lese es wieder und erkannte, dass es ein anderes Zeug ist ... – Programmer

0

ich es geschafft, Ihre zu replizieren Problem, indem Sie einen 0,5-Wert des Y des Elternobjekts haben. Stellen Sie sicher, dass Ihr übergeordnetes Objekt den Wert 0,0,0

+0

Es ist, ich überprüfe – Luke

+0

nur andere Sache, die ich denken kann, ist, dass die Skala des Elternteils es beeinflussen könnte. –

Verwandte Themen