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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Ouxiy
記事: 173
登録日時: 11ヶ月前

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

#1

投稿記事 by Ouxiy » 7ヶ月前

コード:

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 のように一回だけ押すと一マスだけ動くようにできないでしょうか?

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

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

#2

投稿記事 by みけCAT » 7ヶ月前

Key[KEY_INPUT_RIGHT]のようなコントローラの各ボタンが連続で
押されているフレーム数が入る配列を作って使うか、
コントローラの各ボタンが前のフレームで押されていたかを記録しておき、
今のフレームで押されていて、かつ前のフレームで押されていない時のみ動くようにすることで、
一回だけ押すと一マスだけ動くようにできると考えられます。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

Ouxiy
記事: 173
登録日時: 11ヶ月前

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

#3

投稿記事 by Ouxiy » 6ヶ月前

どうもありがとうございます。
なんだか作るのがとても難しそうですね。

Ouxiy
記事: 173
登録日時: 11ヶ月前

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

#4

投稿記事 by Ouxiy » 6ヶ月前

あの、前のフレームが押されていないかどうかの判定はどのように考えるのでしょうか。

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

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

#5

投稿記事 by みけCAT » 6ヶ月前

わからなければググるなどして考えるのがいいと思います。

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

↓ヒットしたサイトの例
【ゲーム】入力の基本
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

Ouxiy
記事: 173
登録日時: 11ヶ月前

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

#6

投稿記事 by Ouxiy » 6ヶ月前

どうもありがとうございました!

返信

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