Friday, 23 July 2010

Crossover: 彈幕xWaves II

考慮會反彈的彈幕:
1)同時發出,定義方法為2次發砲之間頻率 f 和每次發砲裡面兩個相鄰攻擊點以對方(固定)發砲點為原本的角度差 (θ )
2)螺旋型發出,定義方法為砲台的轉速( ω ) 和每次發砲裡面兩個相鄰攻擊點以對方(固定)發砲點為原本的角度差 (θ )
為方便計算,對手固定攻擊點為(0,1),遊戲框左右邊界是x=+/-c, c為一常數(常理來說|c|<1),我方可在y=0線上自由移動。
至底對方的攻擊要放在甚麼角度才會打中我方?
Case I: 設我方在(0,0).
當角度=0時當然可以打中。
當角度不是0時,砲彈就要反彈來打中我方。用反射的原理來算,砲彈穿牆達到y=0時,其y軸位移(y-axis displacement)與反彈後一樣。由於其行進速度一樣,所以其x軸位移也必定有所關連。
如果子彈左(c,k)反射後,在未再一次反射下在(a,x) (|a|<|c|)點的話,將(a,x)沿x=c反射得到點(2c-a,x)。當這一發砲彈到了再一次反射的邊緣,即a=-c時,反射點為(3c,x).這時反射點跟攻擊點相差4c。攻擊點再一次反射時其軌跡再次與反射軌跡平行。
考慮到敵方跟我方垂直距離為1,那麼當對方以角度x發出砲彈時,其反射軌跡的x軸位移為tan(x)。於是砲彈的x軸位移便為x'=4c{tan (x)/4c}.
(註: {x}為小數函數,而如果a{x/a}=c, 那麼x=c (mod a)
所是當角度是tan^-1 (4cn), n為整數時對方命中。
Case 2: 我方在y=0自由移動。
當我方在(a,0)時,對方有幾個選擇:
1)向tan^-1(a)的角度直接攻擊
2)向負角度發射+反彈,其反射軌跡的x軸位移為c(4n+2)+a
3)向正角度發射+反彈,其反射軌跡的x軸位移為c(4n+2)-a
於是反射角度便成了tan^-1(c(4n+2)+/-a)
現在我們考慮對方連續地以螺旋狀攻擊時我方需要的逃跑速度。
ω=dθ/dt  = d(tan^-1 (s))/dt = (dtan^-1 s/ds)(ds/dt) = v/(s^2+1)
所以我們知道當ω不變時我方的速度要越來越快才能避開(適用於連續攻擊
當砲彈不連續時,我方在角度->0時有較大的逃避空間,而反射2次以內角度的極限約為60~70度~這些大家可以自己試一下。

to be continued...

No comments:

Post a Comment