2016-07-12 9 views
0

Ich habe eine 50x50 Ebenen mit C# Skript erstellt. Ich habe Ecken, UV und Dreiecke verwendet. Und diese Flugzeuge machen ein Gebiet. Also kein Problem. Aber mein Plane_0_0, der der erste ist, positioniert sich in der Mitte. Ich brauche jedes Flugzeug, das nach links unten schwenkt. Wie kann ich unten links mit Skript drehen?Unity5 Ebene Drehpunkt erstellen

+0

ein paar Bildschirme bitte, ich bin nicht sicher, was genau Sie wollen –

+0

http://hizliresim.com/gog7pZ Ich brauche keinen festen Drehpunkt Mitte nach unten links –

Antwort

0

Okay, ich denke ich habe es. Du willst, dass die "Kachel" unten links "die Mitte des gesamten" Tilesets "/" Karte "ist, also wenn und wenn du" alles "drehst, sollte das das Zentrum sein.
Okay, es ist einfach. Was Sie tun müssen, ist, dass die Plane_0_0-Kachel zum übergeordneten Element der übrigen Kacheln wird (legen Sie die Eigenschaft .Parent aller Kacheln fest, die Teil Ihrer Drehung sein sollen, auf die "Kachel" GO).

Später können Sie dies ändern. Wenn also z.B. Eine andere Kachel sollte das Drehzentrum sein. Sie können "Elternschaft zurücksetzen". Aber Reparieren ist eine teure Routine.


EDIT
Wie (wie ich oben schrieb) Neuzuordnung ist eine teuere Operation, war ich über Alternativen nachzudenken, und das ist, was ich gefunden würde ich verwenden: Erstellen Sie einen GameObject (lassen Sie sich eine andere Ebene sagen) ohne Mesh-Renderer, Collider, usw. und ziehe es auf die Größe des Feldes heraus (im Editor). Machen Sie dies zum übergeordneten Element aller Kacheln in der Szene. Dann, wann immer Sie alles "schwenken" müssen, können Sie für die Ebene RotateAround des Elternflugzeuges gehen und das Drehzentrum wo immer Sie wünschen markieren (z.B. "über" der unteren linken Ecke). Ich würde auch den Standard Unity Plane ändern und entfernen Mesh Collider von ihm und ersetzen Sie es durch eine einfache Box Collider, speichern als prefab und verwenden Sie diese vorfabriziert als meine Kachel, um etwas Rechenzeit zu sparen (wenn Flugzeuge Job ist nichts anderes als zu dienen als ein Plateau). Geben Sie

+0

Ich habe Eltern meinen WorldController, der ein leeres Spielobjekt ist (eigentlich nur Skript). Und WorldController gameobject bei der (0,0,0) Wenn ich auf (-0.5, 0, -0.5) geändert habe, geht es in Ordnung, aber wenn ich Fullscreen ändern spiele seine Bewegung wieder. –

+0

Yup, weil alle Kinder bewegen und rotieren mit dem Elternteil, und sie tun dies um die Mitte der Eltern (oder RotateAround Punkt) –

+0

immer noch nicht funktioniert:/Was mache ich falsch. Kann ich einfach rect transform und pivotieren unten links? –

0

Ihre Frage ist ein wenig unklar. Aber von dem, was ich denke, habe ich verstanden, Sie versuchen, Ihre Flugzeuge zu drehen. Dazu können Sie Euler-Winkel verwenden:

gameObj.transform.eulerAngles = new Vector3(
    gameObj.transform.eulerAngles.x, 
    gameObj.transform.eulerAngles.y, 
    gameObj.transform.eulerAngles.z 
); //Find the axis on which you want to rotate, and apply a value to it, for example : 
    //gameObj.transform.eulerAngles.y + 150 

Wo GameObj ist Ihr Flugzeug-Objekt, natürlich.

+0

Wenn durch Drehpunkt links unten, Sie meinen, dass Ihr Flugzeug sollte die untere linke Ecke des Bildschirms, ja, es kann funktionieren :) die Achse und Winkel nach unten links sollte transform.eulerAngles.y + 225 sein, aber nicht sicher darüber. Versuchen Sie, die Werte und die betroffene Achse zu ändern, bis Sie bekommen, was Sie brauchen :) – YumeYume

+0

danke für die Antwort. Aber ich brauche nicht Flugzeug drehen. Erstellen Sie einfach einen Drehpunkt mit Skripten. Hier ist es mein Problem. http://hizliresim.com/gog7pZ –

Verwandte Themen