Flash中(zhōng)簡單跟蹤彈的算法

發布時間:2010年04月28日      浏覽次數:1160 次
Flash中(zhōng)簡單跟蹤彈的算法
我(wǒ)(wǒ)看到的一(yī)些作跟蹤彈的方法,都是要用向限的轉換,還要考慮子彈和飛機在某個方向保持平行時做一(yī)些調整,個人認爲有些煩。而我(wǒ)(wǒ)這個用方向向量來計算跟蹤彈的方式,無論坐标系如何變,相關的計算隻有一(yī)個,把速度在X,Y方向的“單位方向向量”計算出來,即可。 學過向量的朋友應該都知(zhī)道,單位方向向量(x,y),其中(zhōng)的X就是這個向量與X軸的夾角的餘弦值,而Y就是正弦值,還等什麽,馬上行動。 核心代碼如下(xià):
function Getdistance(mc1, mc2) {//計算了出二者———子彈與我(wǒ)(wǒ)機的距離(lí)
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;//單位方向向量中(zhōng)的X mc1.VdirectionY=(mc2._y-mc1._y)/l;//單位方向向量中(zhōng)的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);
}
PS:其中(zhōng)對象的屬性我(wǒ)(wǒ)是另個在一(yī)段AS腳本中(zhōng)用mc.prototype.屬性(方法)=function() 個人比較喜歡用這種方式,尤其是一(yī)些物(wù)理屬性頻(pín)煩使用時,這就好比是一(yī)個小(xiǎo)的物(wù)理屬性庫了,非常的方便。
免責聲明:本站相關技術文章信息部分(fēn)來自網絡,目的主要是傳播更多信息,如果您認爲本站的某些信息侵犯了您的版權,請與我(wǒ)(wǒ)們聯系,我(wǒ)(wǒ)們會即時妥善的處理,謝謝合作!