也许问题很简单,但不适合我,三角测量总是很紧张。 这应该是玩家的圆形进度条。 有一个圆圈,您需要计算从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.
请与我们分享他的想法。谁可以面对,任何人都可以准备好解决方案,我将不胜感激)
答案 0 :(得分:1)
因为atan2返回正pi和负pi, 尝试以下
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));
}