SRPGキャラクタをマップに沿って移動させる処理について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
taketoshi
記事: 222
登録日時: 13年前
住所: 日本国

SRPGキャラクタをマップに沿って移動させる処理について

#1

投稿記事 by taketoshi » 11年前

こんばんわ。現在SRPGの勉強をしていてキャラクタの移動処理を書いています。

カーソルでキャラクタを掴み、カーソルが指定したところまでキャラクタを移動させることが出来たのですが
マップのマス目に沿ってカクカクと移動させる処理が思いつきません。どのように実装しているのでしょうか・・・?
XとYを同時に処理しているせいかナナメ移動してしまいます。

ご教授お願いいたします

現在のコード

コード:

int Charcter::MoveChar(Cursor *Cur){

	//カーソル移動入力
	if(Cur->nPos_x % 32 == 0 && Cur->nPos_y %32 == 0){
		if(Key[KEY_INPUT_Z] != 0 ){//キャラピックアップ入力
			if(Cur->nPos_x == nPos_x && Cur->nPos_y == nPos_y){
				Cur->GetCharNumber = cd.CharNumber;//カーソルにキャラクタ番号を代入
			}
		}
	}

	int temp;

	if(Cur->nPos_x % 32 == 0 && Cur->nPos_y %32 == 0){
		if(Key[KEY_INPUT_X] != 0 ){//キャラクタ移動処理
			if(Cur->GetCharNumber != 0){//カーソルが何かをつかんでいれば
				MoveFlag = true;//キャラクタ移動フラグを立てる
				Cur->MoveFlag = false;//カーソルを動かさないフラグを立てる
			}
		}
	}

	if(MoveFlag == true){
		if(Cur->GetCharNumber != 0){
			//カーソルの位置から移動量がプラスかマイナスかの計算
			temp = nPos_x - Cur->nPos_x;
			if(temp < 0){
				if(nPos_x != Cur->nPos_x){
					nPos_x += 2;//キャラ移動
				}
			}else{
				if(nPos_x != Cur->nPos_x)nPos_x -= 2;
			}

			//移動量がプラスかマイナスかの計算
			temp = nPos_y - Cur->nPos_y;
			if(temp < 0){
				if(nPos_y != Cur->nPos_y){
					nPos_y += 2;//キャラ移動
				}
			}else{
				if(nPos_y != Cur->nPos_y)nPos_y -= 2;
			}

			if(nPos_y == Cur->nPos_y && nPos_x == Cur->nPos_x){//フラグの解除とつかんでいるキャラを離す
				MoveFlag = false;
				Cur->MoveFlag = true;
				Cur->GetCharNumber = 0;
			}

		}
	}
	return 0;
}

taketoshi
記事: 222
登録日時: 13年前
住所: 日本国

Re: SRPGキャラクタをマップに沿って移動させる処理について

#2

投稿記事 by taketoshi » 11年前

自己解決しました。申し訳ないです。

閉鎖

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