ページ 11

弾幕と敵の動きについて

Posted: 2010年5月24日(月) 00:13
by gdu
弾幕で
上から横一列に弾を並べ
そのまま下に下りていき
途中で一部の場所の弾だけをランダムで消し、
その消えた弾のところを通ってよける弾幕の構成と、

敵が上から出てきて八の字を描きながら動き回るパターンの構成が
わからず困っています。

助言、アドバイス等よろしくお願いします。

Re:弾幕と敵の動きについて

Posted: 2010年5月26日(水) 19:31
by Tatu
敵の移動関数、弾幕関数を作ってみました。

void enemy_patternT0(int i){
int t=enemy.cnt;
if(t==0){
enemy.vy=200.0/60;
}
if(t<120){
//減速
enemy.vy-=(200.0/60)/120;
}
if(t==180){
enemy.sp=3;
enemy.ang=PI/2;
}
if(t>=180){
//8を横にした形に動かす
if(t%120<60){
enemy.ang+=PI2/60;
}
else {
enemy.ang-=PI2/60;
}
}
}

void shot_bullet_T000(int n){
int i,t=shot[n].cnt;
double x;
double dx,dy;
if(t%100==0){
//横一列に弾を並べる
for(x=0;x<FMX;x+=10){
if(shot[n].flag!=2 && (k=shot_search(n))!=-1){
shot[n].bullet[k].flag=1;
shot[n].bullet[k].knd=6;
shot[n].bullet[k].col=1;
shot[n].bullet[k].cnt=0;
shot[n].bullet[k].x=x;
shot[n].bullet[k].y=-10;
shot[n].bullet[k].spd=10;
shot[n].bullet[k].angle=PI/2;
se_flag[0]=1;
}
}
//弾をランダムに消去する
x=FMX/2+rang(200);
for(i=0;i<SHOT_BULLET_MAX;i++){
dx=shot[n].bullet.x-x;
dy=shot[n].bullet.y-240;
if(dx*dx+dy*dy<64*64){
shot[n].bullet.flag=0;
}
}
}
for(i=0;i<SHOT_BULLET_MAX;i++){
//弾の減速
if(shot[n].bullet[i].spd>2){
shot[n].bullet[i].spd-=0.5;
}
}
}

Re:弾幕と敵の動きについて

Posted: 2010年6月30日(水) 03:31
by gdu
返答遅れました。

一応なんとか自分の思った動きを
するコードになったのですが。
ちょっとわからないことがあったので
お聞きいたします。

>>x=FMX/2+rang(200);
ここの()内に入ってる数字は何の役目をしているんでしょうか?

試しにここの値を100,400にしてみると、400では途中で弾幕が消えないことがあり。
100でも400ほどではないですが、稀に消えないことがあります。

返答お願いします。

Re:弾幕と敵の動きについて

Posted: 2010年6月30日(水) 03:32
by gdu
返答遅れました。

一応なんとか自分の思った動きを
するコードになったのですが。
ちょっとわからないことがあったので
お聞きいたします。

>>x=FMX/2+rang(200);
ここの()内に入ってる数字は何の役目をしているんでしょうか?

試しにここの値を100,400にしてみると、400では途中で弾幕が消えないことがあり。
100でも400ほどではないですが、稀に消えないことがあります。

返答お願いします。