ページ 11

弾幕の作成について

Posted: 2011年9月06日(火) 13:55
by クラバック
弾幕の作成で行き詰ってしまったので、質問させて頂きます。
今、自機狙いの弾を、50フレームごとに、[0]、[1]、[2]・・・と打っていくとして、
自機狙いの[1]が発射された瞬間、発射済みの[0]の角度を[1]の角度と同じにし、
自機狙いの[2]が発射された瞬間、発射済みの[0]と[1]の角度を[2]の角度と同じにするような弾を作りたいのですが、どうにも上手く行きません
関数shotatan2は弾と自機との角度を返す関数です。
ご鞭撻のほど宜しくお願い致します。

コード:

void boss_shot_bulletH005(){
#define TM005 50
	int i,k,t=boss_shot.cnt%TM005;	//t=0~49
	int t2=boss_shot.cnt;	//t=0~
	int l;
	if(t%50==0){//右上から射出。50カウント毎に自機狙いを射出。
		for(i=0;i<1;i++){
			if((k=search_boss_shot())!=-1){
				boss_shot.bullet[k].col	  = 1;
				boss_shot.bullet[k].x     = FMX;
				boss_shot.bullet[k].y     = FY;
				boss_shot.bullet[k].knd   = 0;
				boss_shot.bullet[k].angle = shotatan2(boss_shot.bullet[k].x, boss_shot.bullet[k].y);
				boss_shot.bullet[k].flag  = 2;
				boss_shot.bullet[k].cnt	  = 0;
				boss_shot.bullet[k].spd	  = 2;
				boss_shot.bullet[k].state = 0;
				boss_shot.bullet[k].kaiten= 0;
			}
		}
	}

	if(t%50==0){
		for(i=0;i<1;i++){//左上から射出。50カウント毎に自機狙いを射出。、今まで打った弾が、最新の弾の角度に全てなる
			if((k=search_boss_shot())!=-1){
				boss_shot.bullet[k].col		= 2;
				boss_shot.bullet[k].x		= FX;
				boss_shot.bullet[k].y		= FY;
				boss_shot.bullet[k].knd		= 0;
				boss_shot.bullet[k].angle	= shotatan2(boss_shot.bullet[k].x, boss_shot.bullet[k].y);
				boss_shot.bullet[k].flag	= 1;
				boss_shot.bullet[k].cnt		= 0;
				boss_shot.bullet[k].spd		= 2;
				boss_shot.bullet[k].state	= 1;
				boss_shot.bullet[k].kaiten	= 0;

				  l = shotatan2(boss_shot.bullet[k].x,boss_shot.bullet[k].y);	//最新の自機狙いの角度を取得
			}
		}
	}

	for(i=0;i<BOSS_BULLET_MAX;i++){
		if(boss_shot.bullet[i].flag>0){
			if(t%50==0){//右上からの弾。今まで打った弾が全て自機狙いに変わる。
					if(boss_shot.bullet[i].state==0){
						boss_shot.bullet[i].angle = shotatan2(boss_shot.bullet[i].x, boss_shot.bullet[i].y);
					}
					if(boss_shot.bullet[i].state == 1){//左上からの弾。今まで打った弾の角度が、最新の自機狙いの角度に変わる。
						boss_shot.bullet[i].angle = l;//多分ここがおかしい
					}				
			}
			if(boss_shot.bullet[i].cnt > 400){	//射出されてから400カウント経過したら、弾を消す
				boss_shot.bullet[i].flag = 0;
			}
		}
	}
}

Re: 弾幕の作成について

Posted: 2011年9月06日(火) 14:25
by Tatu
37行目 l = shotatan2(boss_shot.bullet[k].x,boss_shot.bullet[k].y); //最新の自機狙いの角度を取得
で「doubleからintへの変換です。データが失われる可能性があります。」と警告が出ました。
これはlがint型なのが原因ですね。

Re: 弾幕の作成について

Posted: 2011年9月06日(火) 14:48
by クラバック
うおお・・・!本当だ・・・!lをdoubleで宣言したら出来ましたっ。
今まで警告を無視してました・・・!今後は気をつけてみます。有り難うございますっ