如果在游戏开发过程中用到物理引擎,通常避免不了角度的计算。但语言接口中的角度计算都需要先获取弧度,再转换为角度。这样的计算方法并不符合我们的习惯,于是收录了点与点间夹角的换算接口,但因为原来的代码是为了计算角度,如150度的钝角结果可能会以30度的锐角取值。如果需要给物理组件在某个角度上施加力,那么150度和30度的结果显然不同。特做修改计算实际角度以供使用。
getAngle(px,py,mx,my){//获得人物中心和鼠标坐标连线,与y轴正半轴之间的夹角
var x = Math.abs(px-mx);
var y = Math.abs(py-my);
var z = Math.sqrt(Math.pow(x,2)+Math.pow(y,2));
var cos = y/z;
var radina = Math.acos(cos);//用反三角函数求弧度
var angle = Math.floor(180/(Math.PI/radina));//将弧度转换成角度
if(mx>px&&my==py){//在x轴正方向上
angle = 0;
}
if(mx==px&&my>py){//在y轴正方向上
angle = 90;
}
if(mx<px&&my==py){//在x轴负方向上
angle = 180;
}
if(mx==px&&my<py){//在y轴负方向上
angle = 270;
}
if(mx>px&&my>py){//在第一象限
angle = 90 - angle;
}
if(mx<px&&my>py){//在第二象限
angle = 90 + angle;
}
if(mx<px&&my<py){//在第三象限
angle = 270 - angle;
}
if(mx>px&&my<py){//在第四象限
angle = 270 + angle;
}
return angle;
},