【雑談程度の相談】雪の降ってくる弾幕
Posted: 2010年8月02日(月) 20:49
雪がどんどん降ってきて、だんだんつもっていく(だんだん地平線が下から迫ってくる)
弾幕を作ってみたんですが、弾を画面に残すので当然だんだんと処理が重くなるんですよね・・
降ってからしばらくした弾は確率で消すようにしてみたんですが、なんか画面上の雪が
突然ぱっと消えるってのも変な感じだなとおもいまして。
なにか処理速度を維持しやすい方法ってありますか?
龍神録と同じ形式で作っています
void boss_shot_bulletI007(){ //雪の積もる弾幕
#define TM007 6 //6カウントに一回、「地平線」を1上に
int i,k,t=boss_shot.cnt,t2=boss_shot.cnt%TM007;
static double landline=520;//「地平線」の初期高さ
if(bom.flag!=0)
landline=520;//ボムが撃たれたら「地平線」を元に戻す
if(t%180==0) //3秒に一回ボスの移動
move_boss_pos(50,50,FMX-50,150,100,60);
if(t>=0&&t%1==0){//常に雪を降らせる
int j=t%2==0?7:8;//弾の形
int l=t%2==0?9:8;//弾の色
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].flag=1;
boss_shot.bullet[k].knd=j;//弾の形
boss_shot.bullet[k].cnt=0;
boss_shot.bullet[k].col=l;//弾の色
boss_shot.bullet[k].x=GetRand(384)+rang(0.5);//x座標は画面全体にわたって
boss_shot.bullet[k].y=-30; //画面端の少し↑から降ってくる
boss_shot.bullet[k].angle=PI/2+rang(PI/9);//だいたいまっすぐ降ってくる
boss_shot.bullet[k].spd=2-rang(1);//ゆっくり降ってくる
}
}
for(i=0;i<BOSS_BULLET_MAX;i++){//雪が「地平線」よりちょっと下なら
if(boss_shot.bullet.y>landline)
boss_shot.bullet.spd=0;//雪の降下を止める
//降ってある程度たった弾は確率で消す
if(boss_shot.bullet.spd==0&&boss_shot.bullet.cnt>=300&&GetRand(2000)==0)
boss_shot.bullet.flag=0;
}
if(t2==0)
landline--;//「地平線」をあげていく
}
同じような弾幕を知っていたら参考にしたいので教えてくださると助かります
弾幕を作ってみたんですが、弾を画面に残すので当然だんだんと処理が重くなるんですよね・・
降ってからしばらくした弾は確率で消すようにしてみたんですが、なんか画面上の雪が
突然ぱっと消えるってのも変な感じだなとおもいまして。
なにか処理速度を維持しやすい方法ってありますか?
龍神録と同じ形式で作っています
void boss_shot_bulletI007(){ //雪の積もる弾幕
#define TM007 6 //6カウントに一回、「地平線」を1上に
int i,k,t=boss_shot.cnt,t2=boss_shot.cnt%TM007;
static double landline=520;//「地平線」の初期高さ
if(bom.flag!=0)
landline=520;//ボムが撃たれたら「地平線」を元に戻す
if(t%180==0) //3秒に一回ボスの移動
move_boss_pos(50,50,FMX-50,150,100,60);
if(t>=0&&t%1==0){//常に雪を降らせる
int j=t%2==0?7:8;//弾の形
int l=t%2==0?9:8;//弾の色
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].flag=1;
boss_shot.bullet[k].knd=j;//弾の形
boss_shot.bullet[k].cnt=0;
boss_shot.bullet[k].col=l;//弾の色
boss_shot.bullet[k].x=GetRand(384)+rang(0.5);//x座標は画面全体にわたって
boss_shot.bullet[k].y=-30; //画面端の少し↑から降ってくる
boss_shot.bullet[k].angle=PI/2+rang(PI/9);//だいたいまっすぐ降ってくる
boss_shot.bullet[k].spd=2-rang(1);//ゆっくり降ってくる
}
}
for(i=0;i<BOSS_BULLET_MAX;i++){//雪が「地平線」よりちょっと下なら
if(boss_shot.bullet.y>landline)
boss_shot.bullet.spd=0;//雪の降下を止める
//降ってある程度たった弾は確率で消す
if(boss_shot.bullet.spd==0&&boss_shot.bullet.cnt>=300&&GetRand(2000)==0)
boss_shot.bullet.flag=0;
}
if(t2==0)
landline--;//「地平線」をあげていく
}
同じような弾幕を知っていたら参考にしたいので教えてくださると助かります