弾幕の作成について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
クラバック
記事: 26
登録日時: 14年前
住所: 関東

弾幕の作成について

#1

投稿記事 by クラバック » 14年前

いつもお世話になっております。弾幕の作成で行き詰ってしまったので質問させて頂きました。

三角形と逆三角形を同時に描き、六芒星状に弾を配置する弾幕を考えています。
ですが、最後の辺について、飛び出して弾が配置されてしまいます。添付ファイルの赤丸の部分です。
ソースコードのどの部分に問題があるのでしょうか。
ご指導、ご鞭撻の程、宜しくお願い致します。

コード:

void hexagram(){
#define HEXAGRAM 1000
#define LEM 5	 
#define RANGE 100
	int i,k,t=boss_shot.cnt%HEXAGRAM;
	int t2=boss_shot.cnt;
	static double x1,y1,x2, y2, s1Angle, s2Angle;
	static int status1, status2;
	if(t==0){
		x1=boss.x;
		y1=boss.y-80;
		x2=boss.x;
		y2=boss.y+80;
		s1Angle=PI/180*120;
		s2Angle=PI/180*300;
		status1=0;
		status2=0;
	}
	if(status1<=2){
		x1+=cos(s1Angle)*LEM;
		y1+=sin(s1Angle)*LEM;
		if((x1-boss.x)*(x1-boss.x)+(y1-boss.y)*(y1-boss.y)>RANGE*RANGE){
			s1Angle-=PI/180*120;
			status1++;
		}
		if((k=search_boss_shot())!=-1){//Draw Triangle
			boss_shot.bullet[k].angle = 0;
			boss_shot.bullet[k].cnt = -20;
			boss_shot.bullet[k].col = 0;
			boss_shot.bullet[k].eff = 0;
			boss_shot.bullet[k].eff_detail = 0;
			boss_shot.bullet[k].flag = 1;
			boss_shot.bullet[k].knd = 10;
			boss_shot.bullet[k].spd = 0;
			boss_shot.bullet[k].state = 0;
			boss_shot.bullet[k].x = x1;
			boss_shot.bullet[k].y = y1;
		}
	}
	if(status2<=2){
		x2+=cos(s2Angle)*LEM;
		y2+=sin(s2Angle)*LEM;
		if((x2-boss.x)*(x2-boss.x)+(y2-boss.y)*(y2-boss.y)>RANGE*RANGE){
			s2Angle-=PI/180*120;
			status2++;
		}
		if((k=search_boss_shot())!=-1){//Draw Reverse Triangle
			boss_shot.bullet[k].angle = 0;
			boss_shot.bullet[k].cnt = -20;
			boss_shot.bullet[k].col = 0;
			boss_shot.bullet[k].eff = 0;
			boss_shot.bullet[k].eff_detail = 0;
			boss_shot.bullet[k].flag = 1;
			boss_shot.bullet[k].knd = 10;
			boss_shot.bullet[k].spd = 0;
			boss_shot.bullet[k].state = 0;
			boss_shot.bullet[k].x = x2;
			boss_shot.bullet[k].y = y2;
		}
	}	
}
添付ファイル
test.png
test.png (84.1 KiB) 閲覧数: 1812 回

box
記事: 2002
登録日時: 15年前

Re: 弾幕の作成について

#2

投稿記事 by box » 14年前

クラバック さんが書きました: 三角形と逆三角形を同時に描き、六芒星状に弾を配置する弾幕を考えています。
最後の辺が飛び出していることとは別に、六芒星の形そのものがきれいになっていないように見えます。
下向きの▽の配置を、もっと下の方向にする必要はないでしょうか。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

アバター
クラバック
記事: 26
登録日時: 14年前
住所: 関東

Re: 弾幕の作成について

#3

投稿記事 by クラバック » 14年前

お騒がせして済みません・・・中心の位置とかRANGEの意味を勘違いしてました。
y1,y2の値を+-100と定めたら、うまく行きました。またstatusが3のときに一個だけ弾が配置されてしまうのも、if文を使いすぐに対処できました。
自己解決しました・・・。

閉鎖

“C言語何でも質問掲示板” へ戻る