敵の移動制御について

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

敵の移動制御について

#1

投稿記事 by けんさん » 11年前

アクションゲームを作っていて、敵の移動を制御をしていてわからないことが
あったので、お聞きします。

まず初期値900で、敵のx軸が1100の座標まで来ると、x軸をマイナスし
900までくると、1100まで+するというプログラムを作りたいです。

コード:

		yu_x++;
		if(yu_x>1100 || yu_x>=900){
			yu_x--;
		}
		if(yu_x<=900 || yu_x<=1100){
			yu_x++;
		}



これでビルドしてみると、x軸が1101のところでとまってしまいます
どのように修正すればいいでしょうか

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 敵の移動制御について

#2

投稿記事 by みけCAT » 11年前

無条件にyu_x++;するのをやめ、
移動速度(速度なので向き(正負)も含みます)を表す変数を用意し、
向きを変えるべき場所に来たら移動速度を適切に設定するようにすればいいと思います。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: 敵の移動制御について

#3

投稿記事 by softya(ソフト屋) » 11年前

分かりやすく目的を達するには、右に移動している左に移動していると言うフラグ変数を用意します。
フラグが右なら、左ならで条件分けして、それぞれ処理を適切に書いてやれば良いと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

けんさん

Re: 敵の移動制御について

#4

投稿記事 by けんさん » 11年前

ありがとうございます!

お二方のアドバイスを元に、作ったら、できました

コード:


if(yu_x<=100){
			RL_flag=0;
		}
		if(yu_x>=200){
			RL_flag=1;
		}

		if(RL_flag==0){
			yu_x+=yu_movex;
		}
		if(RL_flag==1){
			yu_x-=yu_movex;
		}


閉鎖

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