ページ 11

斜め移動

Posted: 2015年12月10日(木) 13:53
by リンク

コード:

   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;
	}
 
こちらのサイトを参考にして、
このように移動制御を書いたのですがこれで斜め移動がちゃんと同じ速さになるのか分かりません。
これでいいのでしょうか?

Re: 斜め移動

Posted: 2015年12月10日(木) 15:28
by Dixq (管理人)
flagが何を指しているか分かりませんが
斜め移動時はx,yの移動量をルート2で割る必要があります

Re: 斜め移動

Posted: 2015年12月10日(木) 20:02
by リンク

コード:

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;
	}
}
自力で解決できました、ありがとうございました。