http://www.nicovideo.jp/watch/sm8331341
この動画のようにデバックを表示させたいのですが、
一回目のボタン入力でデバック表示、
二回目のボタン入力でデバックを消す
この様な動作を実現する際、私はボタンが入力された際、
カウントする変数をつくり、変数ごとに処理をわけました。
しかし、いちフレームで一回カウント変数に数値が加算されるために
うまくいきません。
このような、稚拙な質問ですいませんが、ご回答おねがいします
ボタンの入力
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: ボタンの入力
前の質問を放置しないようにお願いします。
http://dixq.net/forum/viewtopic.php?f=3&t=10727#p86537
http://dixq.net/forum/viewtopic.php?f=3&t=10727#p86537
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: ボタンの入力
まず、DXライブラリを使っているのであれば、
例えばキーの入力を返す関数CheckHitKey等は
押されている間ずっと1を返します。
なので、
if( CheckHitKey( KEY_INPUT_~~~ ) == 1 )
のような分岐を作った場合、その中身は押されている間毎フレーム実行されてしまいます
これを回避する方法は主に2つあり、
①前のフレームでキーが押されて無く、かつそのフレームでキーが押されているときにのみ1を返す関数を作る
②何フレームきーが連続で入力されているかを返す関数を作る
です
前述のCheckHitKeyの代わりにその関数を呼び出せばいいのです
例えばキーの入力を返す関数CheckHitKey等は
押されている間ずっと1を返します。
なので、
if( CheckHitKey( KEY_INPUT_~~~ ) == 1 )
のような分岐を作った場合、その中身は押されている間毎フレーム実行されてしまいます
これを回避する方法は主に2つあり、
①前のフレームでキーが押されて無く、かつそのフレームでキーが押されているときにのみ1を返す関数を作る
②何フレームきーが連続で入力されているかを返す関数を作る
です
前述のCheckHitKeyの代わりにその関数を呼び出せばいいのです
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: ボタンの入力
こちらで用意されたような関数を使えば押された直後だけに反応できますよ。
「新・C言語 ~ゲームプログラミングの館~ [DXライブラリ]」
http://dixq.net/g/02_09.html
ゲームプログラミングの館は役に立つ情報が色々あるので、全部目を通された方が良いと思います。
「新・C言語 ~ゲームプログラミングの館~ [DXライブラリ]」
http://dixq.net/g/02_09.html
ゲームプログラミングの館は役に立つ情報が色々あるので、全部目を通された方が良いと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。