三角函数在游戏制作中的应用

        如果在游戏开发过程中用到物理引擎,通常避免不了角度的计算。但语言接口中的角度计算都需要先获取弧度,再转换为角度。这样的计算方法并不符合我们的习惯,于是收录了点与点间夹角的换算接口,但因为原来的代码是为了计算角度,如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

            angle = 180;

        }

        if(mx==px&&my

            angle = 270;

        }

        if(mx>px&&my>py){//在第一象限

            angle = 90 - angle;

        }

        if(mxpy){//在第二象限

            angle = 90 + angle;

        }

        if(mx

            angle = 270 - angle;

        }

        if(mx>px&&my

            angle = 270 + angle;

        }

            return angle;

    },

你可能感兴趣的:(三角函数在游戏制作中的应用)