我看到的一些作跟蹤彈的方法,都是要用向限的轉(zhuǎn)換,還要考慮子彈和飛機在某個方向保持平行時做一些調(diào)整,個人認(rèn)為有些煩。而我這個用方向向量來計算跟蹤彈的方式,無論坐標(biāo)系如何變,相關(guān)的計算只有一個,把速度在X,Y方向的“單位方向向量”計算出來,即可。學(xué)過向量的朋友應(yīng)該都知道,單位方向向量(x,y),其中的X就是這個向量與X軸的夾角的余弦值,而Y就是正弦值,還等什么,馬上行動。核心代碼如下:
functionGetdistance(mc1,mc2){//計算了出二者———子彈與我機的距離
returnMath.sqrt((mc1._x-mc2._x)*(mc1._x-mc2._x)+(mc1._y-mc2._y)*(mc1._y-mc2._y));
}
functionStardandlizeAngle(mc1,mc2){//計算出子彈速度的方向向量。
varl=Getdistance(mc1,mc2);
mc1.VdirectionX=(mc2._x-mc1._x)/l;//單位方向向量中的Xmc1.VdirectionY=(mc2._y-mc1._y)/l;//單位方向向量中的Y
}
functiondoMove(mc){//算出VX,VY,通過mc._x+=mc.vx//及mc._y+=mc.vy;實現(xiàn)動態(tài)效果
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);
}
PS:其中對象的屬性我是另個在一段AS腳本中用mc.prototype.屬性(方法)=function(){[}個人比較喜歡用這種方式,尤其是一些物理屬性頻煩使用時,這就好比是一個小的物理屬性庫了,非常的方便。