弾幕の作成について
Posted: 2011年11月05日(土) 21:13
いつもお世話になっております。弾幕の作成で行き詰ってしまったので質問させて頂きました。
三角形と逆三角形を同時に描き、六芒星状に弾を配置する弾幕を考えています。
ですが、最後の辺について、飛び出して弾が配置されてしまいます。添付ファイルの赤丸の部分です。
ソースコードのどの部分に問題があるのでしょうか。
ご指導、ご鞭撻の程、宜しくお願い致します。
三角形と逆三角形を同時に描き、六芒星状に弾を配置する弾幕を考えています。
ですが、最後の辺について、飛び出して弾が配置されてしまいます。添付ファイルの赤丸の部分です。
ソースコードのどの部分に問題があるのでしょうか。
ご指導、ご鞭撻の程、宜しくお願い致します。
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;
}
}
}