Hey,
ich bräuchte Hilfe bei der Berechnung von Textdrawpositionen. Mein Vorhaben ist es einen Kompass zu erstellen. Er soll aus 5 Textdraws bestehen. Aus einem Pfeil um den sich 4 Buchstaben drehen: N(Norden), E(Osten), S(Süden), W(Westen).
Da ich bisher die Textdraws noch nicht erstellt habe, nehmen wir eine Beispielsposition.
Also sagen wir ich gucke nach Norden und die Koordinaten der Textdraws sind:
Pfeil: X: 100 Y: 100
N: X: 125 Y: 100
E: X: 100 Y: 125
S: X: 75 Y: 100
W: X: 100 Y: 75
Also die Buchstaben sollen immer um 25 (was auch immer die Maßeinheit ist ) vom Pfeil (100/100) entfernt sein. Berechnet soll die Position der Buchstaben immer in Verbindung der Facingangle des Spielers werden.
Nur wie mache ich das bzw. welche Formel brauche ich ?
Würde mich über Hilfe freuen
![](https://breadfish.de/wcf/images/avatars/f6/4871-f67b9175442230f6dfd4fe5b6e3186400395d383.jpg)
Kompass / Kreisberechnung
- Oskaar1994
- Geschlossen
- Erledigt
-
-
http://www.juergen-roth.de/dyn…igonom/einheitskreis.html
http://wiki.sa-mp.com/wiki/GetPlayerFacingAngleVielleicht hilft dir das ein wenig weiter
-
http://www.juergen-roth.de/dyn…igonom/einheitskreis.html
http://wiki.sa-mp.com/wiki/GetPlayerFacingAngleVielleicht hilft dir das ein wenig weiter
Schon mal danke, dass du das für mich raus gesucht hast, aber leider hatte ich das mit Sinus,Cosinus, usw. in der Schule noch nicht. Könnte mir da jemand weiter helfen ?
-
Könnte mir da jemand weiter helfen ?
new Float:a, Float:x, Float:y;
GetPlayerFacingAngle(playerid, a);//N
x = 100.0 + (25.0 * floatsin(a, degrees));
y = 100.0 + (25.0 * floatcos(-a, degrees));//W
x = 100.0 + (25.0 * floatsin(-a-90.0, degrees));
y = 100.0 + (25.0 * floatcos(a-90.0, degrees));//S
x = 100.0 + (25.0 * floatsin(a+180.0, degrees));
y = 100.0 + (25.0 * floatcos(-a+180.0, degrees));//O
x = 100.0 + (25.0 * floatsin(-a+90.0, degrees));
y = 100.0 + (25.0 * floatcos(a+90.0, degrees)); -
Danke, werde es probieren
-
new Float:a, Float:x, Float:y;
GetPlayerFacingAngle(playerid, a);//N
x = 100.0 + (25.0 * floatsin(a, degrees));
y = 100.0 + (25.0 * floatcos(-a, degrees));//W
x = 100.0 + (25.0 * floatsin(-a-90.0, degrees));
y = 100.0 + (25.0 * floatcos(a-90.0, degrees));//S
x = 100.0 + (25.0 * floatsin(a+180.0, degrees));
y = 100.0 + (25.0 * floatcos(-a+180.0, degrees));//O
x = 100.0 + (25.0 * floatsin(-a+90.0, degrees));
y = 100.0 + (25.0 * floatcos(a+90.0, degrees));Müssten es nicht mehr-dimensionale Variablen sein, da du X und Y sonst immer "überspeicherst" ?
new Float:a, Float:x[4], Float:y[4];
GetPlayerFacingAngle(playerid, a);//N
x[0] = 100.0 + (25.0 * floatsin(a, degrees));
y[0]= 100.0 + (25.0 * floatcos(-a, degrees));//W
x[1] = 100.0 + (25.0 * floatsin(-a-90.0, degrees));
y[1] = 100.0 + (25.0 * floatcos(a-90.0, degrees));//S
x[2] = 100.0 + (25.0 * floatsin(a+180.0, degrees));
y[2] = 100.0 + (25.0 * floatcos(-a+180.0, degrees));//O
x[3] = 100.0 + (25.0 * floatsin(-a+90.0, degrees));
y[3] = 100.0 + (25.0 * floatcos(a+90.0, degrees)); -
Müssten es nicht mehr-dimensionale Variablen sein, da du X und Y sonst immer "überspeicherst" ?
Kommt darauf an, muss man nicht. Warum Speicher verschwenden?//N
x = 100.0 + (25.0 * floatsin(a, degrees));
y = 100.0 + (25.0 * floatcos(-a, degrees));
//Hier das N-TextDraw an der Position erstellen.//W
x = 100.0 + (25.0 * floatsin(-a-90.0, degrees));
y = 100.0 + (25.0 * floatcos(a-90.0, degrees));
//Hier das W-TextDraw an der Position erstellen.//S
//...uswDaher wird es nicht überschrieben, da man es gleich verwendet.
-
Hatte ich auch im Kopf, aber du hattest es nicht als Beispiel (für Ihn) aufgeschrieben, daher dachte ich du willst es gar nicht so lösen (für das Beispiel)
-
breadfish.de
Hat das Thema geschlossen.