ページ 11

コントローラを使いマス単位で動かす

Posted: 2019年12月05日(木) 19:15
by Ouxiy

コード:

Pad = GetJoypadInputState(DX_INPUT_KEY_PAD1);        //入力状態をPadに格納
if (Pad & PAD_INPUT_RIGHT && playerX < 2) {
playerMove = 1;  playerX++; playerImage = playerGHandle[2]; nomove = 1;
} 
if (Pad & PAD_INPUT_LEFT && playerX > 0) {
playerMove = 1; playerX--; playerImage = playerGHandle[9];
}
if (Pad & PAD_INPUT_UP && playerY > 0) {
playerMove = 1; playerY--; playerImage = playerGHandle[2];
}
//Pad = GetJoypadInputState(DX_INPUT_KEY_PAD1);        //入力状態をPadに格納
if (Pad & PAD_INPUT_DOWN && playerY < 2) {
playerMove = 1; playerY++; playerImage = playerGHandle[8];
}
と書いたところコントローラに反応はするのですが、一マスずつの移動ではなく、一気に端まで動いてしまいます。
Key[KEY_INPUT_RIGHT] == 1 のように一回だけ押すと一マスだけ動くようにできないでしょうか?

Re: コントローラを使いマス単位で動かす

Posted: 2019年12月06日(金) 22:10
by みけCAT
Key[KEY_INPUT_RIGHT]のようなコントローラの各ボタンが連続で
押されているフレーム数が入る配列を作って使うか、
コントローラの各ボタンが前のフレームで押されていたかを記録しておき、
今のフレームで押されていて、かつ前のフレームで押されていない時のみ動くようにすることで、
一回だけ押すと一マスだけ動くようにできると考えられます。

Re: コントローラを使いマス単位で動かす

Posted: 2019年12月08日(日) 23:05
by Ouxiy
どうもありがとうございます。
なんだか作るのがとても難しそうですね。

Re: コントローラを使いマス単位で動かす

Posted: 2019年12月08日(日) 23:58
by Ouxiy
あの、前のフレームが押されていないかどうかの判定はどのように考えるのでしょうか。

Re: コントローラを使いマス単位で動かす

Posted: 2019年12月09日(月) 22:11
by みけCAT
わからなければググるなどして考えるのがいいと思います。

ゲーム 前のフレーム 押されていない 判定 - Google 検索

↓ヒットしたサイトの例
【ゲーム】入力の基本

Re: コントローラを使いマス単位で動かす

Posted: 2019年12月11日(水) 04:06
by Ouxiy
どうもありがとうございました!