2016-03-26 15 views
0

Vielleicht das Problem und einfach, aber nicht für mich, mit Trigonometrie war immer eng. Dies sollte ein runder Fortschrittsbalken für den Spieler sein. Es gibt einen Kreis, Sie müssen den Winkel von 0 bis zu einem Punkt berechnen, an dem die Berührung/Klicken aufgetreten ist.Kreis Fortschrittsbalken für Spieler

Ich fand dies:

var degr:Number = (getAngle(centerX, centerY, touchX, touchY) * 180/Math.PI); 

private function getAngle (x1:Number, y1:Number, x2:Number, y2:Number):Number 
{ 
    var dx:Number = x2 - x1; 
    var dy:Number = y2 - y1; 
    return Math.atan2(dy,dx); 
} 

aber es gibt auf der einen Seite von 0 bis 180, auf der anderen Seite zwischen -180 und 0 Notwendigkeit von 0 bis 360.

Bitte teilen mit uns seine Gedanken. Wer kann mit konfrontiert, kann jemand eine Lösung parat hat, ich dankbar sein)

Antwort

1

Da atan2 Rückkehr positiv Pi und negativ Pi, Versuch folgende

var degr:Number = (getAngle(centerX, centerY, touchX, touchY)); 

function getAngle (x1:Number, y1:Number, x2:Number, y2:Number):Number 
{ 
    var radian:Number = Math.atan2(y2 - y1,x2 - x1); 
    var degree:Number = radian*(180/Math.PI); 
    return (degree > 0 ? degree : (360 + degree)); 
} 
+0

Danke. Genau was benötigt wird! –