2016-03-26 2 views
0

Возможно, проблема и простенькая, но не для меня, с тригонометрией была всегда плотной. Это должен быть круглый индикатор выполнения для игрока. Существует круг, вам нужно рассчитать угол от 0 до точки, где произошло касание/щелчок.круговой индикатор хода для игрока

Я нашел это:

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); 
} 

, но она выводит на одной стороне от 0 до 180, с другой стороны между -180 и 0 необходимости от 0 до 360.

Пожалуйста, поделитесь с нами его мысли. Может кто сталкивался с, может кто-нибудь есть готовое решение, буду благодарен)

ответ

1

Поскольку atan2 обратный положительный и отрицательный пи пи, попробовать следующие

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

Спасибо. Именно то, что нужно! –

Смежные вопросы