なぜか敵が動かない。
Posted: 2009年8月11日(火) 16:32
シューティングゲームの館のコードを使っていたのですが、
そろそろ本格的にやりたいので、
龍神録の館のコードも少しづつ組み込んでいるのですが、
できないところができてしまったのでアドバイス、ヒントをお願いします。
で、まず、敵でもボスのような動きができるようにしました。
というのはこれはボスの動きのための関数なのですが、
自分の作っているコードにはボスの関数は作ってないため、
普通の敵を使ってボスを作ろうとしているので、
このようにしました。
そしてそれを使うため、
としてそれを
でよびだしたのに、
動いてくれません。
どうしてでしょうか?
そろそろ本格的にやりたいので、
龍神録の館のコードも少しづつ組み込んでいるのですが、
できないところができてしまったのでアドバイス、ヒントをお願いします。
//物理的計算を点と距離指定で登録をする(指定時間tで定位置に戻す)
void input_phy_pos(double x,double y,int t,int i){//t=移動にかける時間
double ymax_x,ymax_y;
if(t==0)t=1;
enemy.phy.flag=1;//登録オン
enemy.phy.cnt=0;//カウンタ初期化
enemy.phy.set_t=t;//移動にかける時間をセット
ymax_x=enemy.x-x;//移動したい水平距離
enemy.phy.v0x=2*ymax_x/t;//水平成分の初速度
enemy.phy.ax =2*ymax_x/(t*t);//水平成分の加速度
enemy.phy.prex=enemy.x;//初期x座標
ymax_y=enemy.y-y;//移動したい鉛直距離
enemy.phy.v0y=2*ymax_y/t;//鉛直成分の初速度
enemy[i].phy.ay =2*ymax_y/(t*t);//鉛直成分の加速度
enemy[i].phy.prey=enemy[i].y;//初期y座標
}
//今いる位置からdist離れた位置にtカウントで移動する
int move_boss_pos(double x1,double y1,double x2,double y2,double dist, int t,int i){
int a=0;
double x,y,angle;
for(a=0;a<1000;a++){
x=enemy[i].x,y=enemy[i].y;//今のボスの位置をセット
angle=rang(PI);//適当に向かう方向を決める
x+=cos(angle)*dist;//そちらに移動させる
y+=sin(angle)*dist;
if(x1<=x&&x<=x2 && y1<=y&&y<=y2){//その点が移動可能範囲なら
input_phy_pos(x,y,t,i);
return 0;
}
}
return -1;//1000回試してダメならエラー
}で、まず、敵でもボスのような動きができるようにしました。
というのはこれはボスの動きのための関数なのですが、
自分の作っているコードにはボスの関数は作ってないため、
普通の敵を使ってボスを作ろうとしているので、
このようにしました。
そしてそれを使うため、
void Enemy_pat6(int i){
if(enemy[i].count>0 && enemy[i].count<6000 && enemy[i].count%60==0 ){
move_boss_pos(40,40,300,150,10,10,i)
}
}としてそれを
case 4300: enemy[i].pat=6; enemy[i].flag=1; enemy[i].count=0; enemy[i].img=13; enemy[i].x=200; enemy[i].y=50; enemy[i].hp=100; break;
でよびだしたのに、
動いてくれません。
どうしてでしょうか?