本館:敵の移動パターンについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
LisetteLander

本館:敵の移動パターンについて

#1

投稿記事 by LisetteLander » 14年前

本館の敵の行動パターンについて質問です。
下記のソースを実行すると、出現している6体の敵が自機の座標を交差するように10フレームで移動するものなのですが、
いかんせん思い通りに動きません。
実際には、敵一体のみ上の希望を聞いてくれて、ほかの敵は希望したコースを聞いてくれた敵に平行に動きます。
  / / / / / /
 / / /○/ / /
・・・ ・・・
※上では左から3番目の敵・が聞いてくれてるように見えますが、実際は一番左の敵が右斜め下に肩をぶつけて沈んでいきます
//移動パターン1
//下がってきて停滞してキャラを交差
void enemy_pattern1(int i){
    int t=enemy.cnt;
	double x,y;
	x=ch.x-enemy.x;
	y=ch.y-enemy.y;
    if(t==0)
        enemy.vy=3;//下がってくる
    if(t==40)
        enemy.vy=0;//止まる
    if(t==40+enemy.wait){//登録された停滞時間だけして
		if(0<x){//キャラのどっちにいるか
			enemy.vx=x/10;
		}else{
			enemy.vx=-x/10;
		}
		if(0>y){//キャラより高いか低いか
			enemy.vy=-y/10;
		}else{
			enemy.vy=y/10;
		}
	}


        enemy[i].muki=0;//左向きセット
}

アバター
kimuchi
記事: 163
登録日時: 14年前
住所: 東京

Re: 本館:敵の移動パターンについて

#2

投稿記事 by kimuchi » 14年前

コード:

if(0<x){//キャラのどっちにいるか
	enemy[i].vx=x/10;
}else{
	enemy[i].vx=-x/10;
}
のところですが、

コード:

enemy[i].vx=x/10;
これだけでいいと思います。
x=ch.x-enemy.x;
上の式だけで敵が時機より左ならxが正、右ならxが負になるのであとは
x成分速度にx/10を代入してやればその正負の違いによって進行方向が変わります。
元の式では逆に進行方向が変わるのを防ぐものになります。おそらく。

LisetteLander

Re: 本館:敵の移動パターンについて

#3

投稿記事 by LisetteLander » 14年前

うおお、よく考えたらそうですよね!

問題の解決を確認しました!

せっかく負を分別しているのに
else側をマイナスで代入していたらおんなじですよね。

閉鎖

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