斜め移動

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

斜め移動

#1

投稿記事 by リンク » 9年前

コード:

   if(CheckStatePad(configpad.left)>0){
                player.x -= 4 / flag;
	}
        if(CheckStatePad(configpad.right)>0){
                player.x += 4 / flag;
	}
	if(CheckStatePad(configpad.up)>0){
                player.y -= 4 / flag;
	}
        if(CheckStatePad(configpad.down)>0){
                player.y += 4 / flag;
	}
 
こちらのサイトを参考にして、
このように移動制御を書いたのですがこれで斜め移動がちゃんと同じ速さになるのか分かりません。
これでいいのでしょうか?

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 15年前
住所: 北海道札幌市
連絡を取る:

Re: 斜め移動

#2

投稿記事 by Dixq (管理人) » 9年前

flagが何を指しているか分かりませんが
斜め移動時はx,yの移動量をルート2で割る必要があります

リンク

Re: 斜め移動

#3

投稿記事 by リンク » 9年前

コード:

void key_input() {
	int flag,naname,inputpad[4],sayu_flag,joge_flag;
	inputpad[0] = CheckStatePad(configpad.left);
	inputpad[1] = CheckStatePad(configpad.right);
	inputpad[2] = CheckStatePad(configpad.down);
	inputpad[3] = CheckStatePad(configpad.up);
	if (CheckStatePad(configpad.slow)>0) {
		flag = 2;
	}else {
		flag = 1;
	}
	for (i = 0; i < 2; i++) {
		if (inputpad[i] > 0) {
			sayu_flag = 1;
		}
	}
	for (i = 2; i < 4; i++) {
		if (inputpad[i] > 0) {
			joge_flag = 1;
		}
	}
	if (sayu_flag == 1 && joge_flag == 1) {
		naname = sqrt(2.0);
	}
	else {
		naname = 1;
	}
	if(CheckStatePad(configpad.left)>0){
		player.x -= 4 / flag / naname;
	}
	if(CheckStatePad(configpad.right)>0){
		player.x += 4 / flag / naname;
	}
	if(CheckStatePad(configpad.up)>0){
		player.y -= 4 / flag / naname;
	}
	if(CheckStatePad(configpad.down)>0){
		player.y += 4 / flag / naname;
	}
}
自力で解決できました、ありがとうございました。

閉鎖

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