用方向向量来计算跟踪弹的方式,无论坐标系如何变,相关的计算只有一个,把速度在X,Y方向的“单位方向向量”计算出来,即可。 学过向量的朋友应该都知道,单位方向向量(x,y),其中的X就是这个向量与X轴的夹角的余弦值,而Y就是正弦值,还等什么,马上行动。 核心代码如下: function Getdistance(mc1, mc2) {//计算了出二者———子弹与我机的距离
return Math.sqrt((mc1._x-mc2._x)*(mc1._x-mc2._x)+(mc1._y-mc2._y)*(mc1._y-mc2._y)); } function StardandlizeAngle(mc1, mc2) {//计算出子弹速度的方向向量。 var l = Getdistance(mc1, mc2); mc1.VdirectionX=(mc2._x-mc1._x)/l;//单位方向向量中的X mc1.VdirectionY=(mc2._y-mc1._y)/l;//单位方向向量中的Y } function doMove(mc){//算出VX,VY,通过mc._x+=mc.vx //及mc._y+=mc.vy;实现动态效果 mc.vx=mc.v*mc.VdirectionX; mc.vy=mc.v*mc.VdirectionY; mc._x+=mc.vx; mc._y+=mc.vy; } _root.onEnterFrame=function(){ StardandlizeAngle(bullet,plane); doMove(bullet); }
|