Hmm .. Wenn ich Ihre Frage richtig verstanden habe, wollen Sie einen Pfeil der Art zu schaffen, die auf der Karte zu einem gewissen bestimmten Punkt verweist. Ein bisschen wie die blaue der Pfeil in dieser:
http://www.wowace.com/media/images/56/83/Bloodhound2.jpg
Nun, ich würde durch die Schaffung eines „Spielerposition“ Objekt in der Mitte des maskierten Minimap beginnen. Wir verwenden dies als einfache Referenz für das Zentrum der Minikarte und ein UI-Objekt für den Spieler, wie den blauen und silbernen Pfeil im Bild. Als nächstes können wir mithilfe von Kalkül den Winkel zwischen der Mitte der Minikarte und dem Marker bestimmen. In der Infinitesimalrechnung ist ein Winkelwinkel gleich arctan (y/x). Zwischen zwei Positionen ist es gleich arctan [(erstes y - zweites y)/(erstes x - zweites x)]. In Unity können wir Mathf verwenden, um diese Funktionen auszuführen. Nehmen wir an, die Variable 'marker' ist die RectTransform des Markers und 'playerMarker' ist die RectTransform des UI-Objekts des Spielers auf dem Minimalwert, den wir zuvor erstellt haben.
Jetzt, da wir den richtigen Winkel haben, können wir einen Pfeil als Position und Drehung dieses Winkels einstellen. Wir können sofort die Rotation einstellen. Lassen Sie uns 'Pfeil' als die RectTransform-Variable für unseren Pfeil verwenden.
arrow.rotation = Vector3(angle * Mathf.Rad2Deg, 0, 0);
Für die Position müssen wir mehr Kalkül verwenden. Wir wollen, dass der Pfeil eine bestimmte Entfernung vom playerMarker entfernt ist, aber in einem bestimmten Winkel. Der Abstand sollte etwas kleiner als der Radius der Minikarte sein. Nennen wir diese Entfernung 'arrowDistance'. So um die Pfeilposition zu setzen:
arrow.anchoredPosition.x = playerMarker.anchoredPosition.x + arrowDistance * Mathf.Cos(angle);
arrow.anchoredPosition.y = playerMarker.anchoredPosition.y + arrowDistance * Mathf.Sin(angle);
Und das sollte es sein. Dies wird nicht getestet. Wenn also jemand einen Fehler findet, weisen Sie ihn bitte darauf hin. Hoffe das hilft!
Ist die Position des Markers fest oder ist es eine Drehung? Wenn es fixiert ist, könnten Sie die Hälfte der geraden Höhe oder den Radius des Kreises von der Mitte des Kreises hinzufügen, oder Sie könnten die Hälfte der geraden Breite zum rect x und die Höhe zum y hinzufügen. Es gibt ein paar Wege. –
Ich würde gerne helfen, aber ich kann die Frage nicht verstehen. – Fattie
Hier ist der Doco für RectTransform, es ist ziemlich klar http://docs.unity3d.com/ScriptReference/RectTransform.html – Fattie