【Unity/C#】GetKeyDown(キーを押した瞬間)の基本と書き方

Unityコード専用検索

コードの型

特定のキーが押された「タイミング」を捉えて処理を実行します。

C#

void Update()
{
    // スペースキーが押された「瞬間」に実行
    if (Input.GetKeyDown(KeyCode.Space))
    {
        Debug.Log("ジャンプ!");
    }
}

コードの仕組み

GetKeyDown は、フレーム(1秒間に何度も繰り返される処理)の間で「前回のフレームでは押されていなかったのに、今回のフレームで押されている」という「変化の瞬間」を検知します。

  • 「押している間」ではない: キーを押し続けても、実行されるのは「押した瞬間の1回だけ」です。
  • メリット: ジャンプや攻撃ボタンなど、「1回押したら1回だけアクションをする」処理に最適です。

活用例

攻撃やジャンプ、メニューを開くなど、「ボタンを連打したくない処理」に使います。

C#

void Update()
{
    // 弾を発射する(押しっぱなしを防ぐ)
    if (Input.GetKeyDown(KeyCode.Z))
    {
        FireBullet(); // 弾を出す関数
    }
}

その他(実用的なテクニック)

  • 他の「入力系」命令との違い:
    • GetKeyDown: 押した瞬間だけ(ジャンプ、決定ボタンなど)
    • GetKey: 押している間ずっと(移動、アクセルなど)
    • GetKeyUp: 離した瞬間だけ(溜め攻撃のリリースなど)
  • KeyCodeの使い方: KeyCode.Space の他にも、KeyCode.LeftArrow(左矢印)や KeyCode.A など、ほとんどのキーに対応しています。
  • スマホ操作への対応: もしスマホの画面タップに置き換えたい場合は、GetKeyDown の代わりに Input.GetMouseButtonDown(0) を使うと、PCクリックとスマホタップの両方に対応できます。

初心者向けまとめ

GetKeyDown は、「ボタンを叩いた『その一瞬』を見逃さないセンサー」です。

  • Update は毎秒何十回もループしていますが、GetKeyDown を使えば「何回ループしても、ボタンを離すまでは無視!」という処理が簡単に作れます。

コメント

タイトルとURLをコピーしました