弾幕の作成について
Posted: 2011年9月13日(火) 08:56
いつもお世話になっております。弾幕の作成が行き詰ってしまったので、質問させて頂きました。
東方プロジェクトのスぺカ「金閣寺の一枚天井」の、天井弾の、水平方向に射出するときの弾の実装が、思うように行きません。
弾幕風のスクリプトを参考にして、spdを9で初期化、以降spd-=8.2/15として15way弾を水平方向に射出するようにしてみたのですが、
この式だと、弾が、突然ピタッと止まってしまい、違和感を覚えます。
本家だと、僅かですが減速し、そして弾速が0になり、それから下(PI/2)の方向に等速で動いているように見えます。
sinの式を0~PI/2の範囲で動かすのかな、と思い、色々試してみましたが、弾の間隔がバラバラになってしまったりと、思ったように実装出来ません。
宜しくお願い致します。
東方プロジェクトのスぺカ「金閣寺の一枚天井」の、天井弾の、水平方向に射出するときの弾の実装が、思うように行きません。
弾幕風のスクリプトを参考にして、spdを9で初期化、以降spd-=8.2/15として15way弾を水平方向に射出するようにしてみたのですが、
この式だと、弾が、突然ピタッと止まってしまい、違和感を覚えます。
本家だと、僅かですが減速し、そして弾速が0になり、それから下(PI/2)の方向に等速で動いているように見えます。
sinの式を0~PI/2の範囲で動かすのかな、と思い、色々試してみましたが、弾の間隔がバラバラになってしまったりと、思ったように実装出来ません。
宜しくお願い致します。
/*一部省略*/
if(t%30==0){//天井弾の作成。0とPI交互に射出
double spd=9;
double x = boss.x + GetRand(40) - 20;
double y = boss.y + GetRand(60) - 30;
for(i=0;i<15;i++){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].x = x;
boss_shot.bullet[k].y = y;
boss_shot.bullet[k].angle = angle;
boss_shot.bullet[k].spd = spd;
boss_shot.bullet[k].knd = 4;
boss_shot.bullet[k].col = 4;
boss_shot.bullet[k].state = 1;
boss_shot.bullet[k].cnt = 0;
boss_shot.bullet[k].flag = 1;
}
spd -= 8.2/15;
/*以降プログラム続く*/
}