GameMaker 日本語掲示板

実行タイミングについて

4 コメント
views
17 フォロー
//作成
a=0
//ステップ
if(keyboard_check_pressed(vk_enter){
a=1
}

if(a==1){
if(keyboard_check_pressed(vk_enter){
a=2
}
}

というようなプログラムを作り、「keyboard_check_pressed」なので想定では二回エンターキーを押すことによってa==2になると思っていたのですが、一回の操作でa==2になってしまいます。何か対策はないでしょうか?

オクト
作成: 2024/03/26 (火) 03:26:53
通報 ...
1
生高橋 2024/03/26 (火) 13:35:28

キーを押す条件を一つにして、その中に加算条件を入れてみました。
また、ifとelse ifでaの条件をまとめてみました。

//ステップ
if(keyboard_check_pressed(vk_enter)
{
    if(a == 0) 
    {
        a = 1;
    }
    else if(a == 1) 
    {
        a = 2;
    }
}

ifとelse ifでまとめた条件は上からの順で条件を判定していき、合致したもののみを実行します。
if(a == 0)の条件が合致すればelse ifの条件は無視されます。
これで1フレーム内で特定の条件のみを実行することができます。
ifのみで構成すると、すべての条件をチェックしますので注意が必要です。
ifとelse ifなどの基本構文はどのプログラムでも使いますので覚えておくとよいと思います。

また、単純に数を加算するのであればエンターキーを押したら+1加算するというものにしてもいいかもしれません。

if(keyboard_check_pressed(vk_enter)
{
   a++;
}
2

同じStepイベント内でキー入力を2回拾っているのでそういう挙動になっています。
やりかたと書き方はいろいろありますが、例えば下記のような方法はどうでしょうか。

if(keyboard_check_pressed(vk_enter))
{
	if(a == 0) {
		a = 1;
	} else if (a == 1) {
		a = 2;
	}
}
3

一足先に生高橋さんが詳しく説明してくれてました!

4

生高橋さん、asaさんありがとうございます!その発想はなかったです!