2016-04-18 7 views
0

Ich versuche, die Ebenen eines Zauberwürfel mit RotateAround zu drehen, mein Problem ist bei der Bestimmung der Achse Vektor, dass eine bestimmte Ebene muss sich drehen, werde ich immer müssen Verwenden Sie den Vektor, der durch das Spielobjekt in der Mitte geht, aber Vector3.up/down/right/left ist nutzlos, besonders wenn der Würfel rotiert und seine Position ändert, irgendwelche Vorschläge? : \Rotieren der Ebenen eines Zauberwürfels in Unity

zum Beispiel, das ist die Linie, die ich verwenden, ist die grüne Ebene zu drehen, grün ist das Zentrum Gameobject in diesem Fall

Parent.transform.RotateAround(green.transform.position,WHAT AXIS VECTOR?,100*Time.deltaTime); 
+1

hi msLangdon, nur FYI, ich kann dich warnen, das ist * extrem * schwer gut zu machen. Es ist kein Job für Anfänger oder Lernprogrammierer. ein grundlegender Tipp, beachten Sie, dass Transform.Rotate ** in der lokalen Achse ** funktionieren kann (lesen Sie den Doco). das kann dir helfen. es ist immer "lokal", wenn Sie sehen, was ich meine. – Fattie

+0

Nun, ich bin kein Anfänger in Programmierung und Mathe im Allgemeinen, ich bin ein bisschen neu in der Einheit: \ ist es so schwer? : \ – msLangdon95

+1

ok, in der ersten Instanz meistern Sie den Unterschied zwischen lokalen und Welt Achsen, genießen Sie – Fattie

Antwort

1

Was ich tun würde, ist die folgende:

auf Positionen von jedem der 6 zentralen Teile auf jeder Seite würde ich ein leeres Spielobjekt platzieren. Ich würde sie manuell drehen, so dass sie alle ihre lokale Y-Achse von der Oberfläche nach außen zeigen (wechseln Sie dazu in Unity).

Nun, wenn ich eine Drehung einer Seite benötigen würde, ich würde:

  • Eltern all 9 Stück der Seite unter meinem leeren Spielobjekt für diese Seite
  • das Objekt Mutter Spiel 90 drehen oder - 90 Grad um lokale Y-Achse
  • un-parent alle 9 Stück (so dass sie für den nächsten Zyklus bereit sind)

Alles, was Sie brauchen würde, ist diese Check-out von Unity Docs: transform.parent , transform.localEulerAngles und einige Rotationsfunktionen, wahrscheinlich Mathf.Lerp und Vector3.Lerp für glatte Rotationen.

+1

das ist ganz richtig. * leider *, indem man "nur" den Ärger von bewegenden Sachen wie in Unity beiseite legt; Die ganze Sache ist fast unmöglich, es sei denn, du folgst einem mvc-Muster und du hast eine Datenstruktur, die alle sich bewegenden Teile versteht. Es ist ein echter Schmerz! – Fattie

+0

ist es wirklich ein wahrer Schmerz: | Aber danke, ich versuche es immer noch – msLangdon95