Hi, da es wieder ne recht kleine Frage ist will ich keinen neuen Thread erstellen...
Es geht darum ein Sprite zu drehen.
Situation:
Eine quadratische Box liegt auf dem Boden. Nun drücke ich nach rechts, dann soll sie über die rechte, untere Kante nach rechts kippen.
Das Kippen an sich ist kein Problem, die Festlegung des Centers/ der Position der Box allerdings schon.
Erster Ansatz:
|
C-/C++-Quelltext
|
1
2
|
Box.SetCenter(Box.GetSize().x,Box.GetSize().y);
Box.SetPosition(BoxPosition.x+Box.GetSize().x,BoxPosition.y+Box.GetSize().y);
|
Ich setze Center auf rechts unten und die Position um die Breite der Box nach rechts und die Höhe der Box nach unten (die Position muss ja verändert werden, da meine Box ja das Center als Ausanspunks nimmt und dieser sich verändert hat).
So. Nun muss ich dann aber min. vier Fälle (habs noch nicht versucht ganz zum laufen zu bringen, da es mir als zu kompliziert erscheit) haben, da sich das Koordinatensystem des Sprites ja mitdreht. D.h. ich kann das neue Center nicht wieder auf Box.GetSize().x und Box.GetSize().y setzen, sondern muss es beim nächsten Schritt (wenn das nächste Mal nach rechts gedrückt wird) auf Box.GetSize().x, 0 setzen etc.
Zweiter Ansatz:
Bei jedem Klick ein neues Recheck um mein Sprite legen und das Center vom Sprite auf die rechte untere Ecke des Rechtecks legen.
Problem: Woher nehme ich (nicht so umständlich) die obere rechte und untere linke Koordinate um das neue Rechteck zu erstellen?
Also an sich würde ich das Problem bestimmt hinbekommen, aber nur mit sehr viel Code und ich habe das Gefühl, dass es einfacher und schöner gehen könnte. Jemand ne Idee?
€dit:
Oder in kürzer (genau das würde nämlich auch weitere Probleme vermeiden):
Kann man die echte(!) Position einer Ecke eines Sprites abfragen?