float lenghtX = m_attackMonomerMajor->getPositionX() - this->getPositionX();
//平方根函数sqrtf,根号2 等于 1.4142135623731
float lenghtY = (m_attackMonomerMajor->getPositionY() - this->getPositionY()) * sqrtf(2);
float lenght = sqrtf(lenghtX * lenghtX + lenghtY * lenghtY);
float pointX = lenghtX / lenght; //邻边/斜边
float pointY = lenghtY / lenght; //对边/斜边
float angle_X = acosf(pointX) * 180 / M_PI; //角度
float angle_Y = acosf(pointY) * 180 / M_PI;
float angle = angle_X;
if (angle_Y > 90)
{
angle = 360 - angle_X;
}
/**
这里要借助三角函数来判断鼠标当前相对于人物的方向,也就是要求出下图中角a的值。
Flash的坐标系和常用的直角坐标系稍有不同,它的y轴正方向是向下的,这里要稍微注意一下。要计算角a,先求出两直角边nx、ny以及斜边r,然后求余弦cos(a) = nx / r,最后求反余弦并取整。取整是为了节省运算,整数运算相对于浮点运算要快得多,这在有大量运算时尤为突出。另外需要注意的是当鼠标位于x轴之上时,角a会大于180度,而反三角函数只给出0~180的解,所以需要做一个转换:a = 360 - a。详细计算代码如下:
var nx:Number=mouseX-man.x;
var ny:Number=mouseY-man.y;
var r:Number=Math.sqrt(nx*nx+ny*ny);
var cos:Number=nx/r;
var angle:int=int(Math.floor(Math.acos(cos)*180/Math.PI));
if(ny<0){
angle=360-angle;
}
*/