LoginSignup
27
27

More than 5 years have passed since last update.

GetKeyDownとかGetButtonUpとかがtrueになるタイミングの遷移について

Last updated at Posted at 2014-08-24

はじめに

 Unityゲームエンジンを用いたゲーム開発において、Input.GetKeyDownやInput.GetButtonUpなどのメソッドを使ったことがある方は多いと思います。スマートフォン向けのゲームでは使わないかも知れませんが、学習目的でスペースボタンを押したら弾丸を発射するようなものを作ったことはありませんか?その際こららのメソッドを使ったと思います。

 さてInputクラスの、GetKeyDown、GetKey、GetKeuUpメソッドはそれぞれ、Keyを押した時、押している間、押していたキーを上げた時に、trueを返すメソッドですね。そこまでは把握されている方は多いと思います。

 これに関して、もうちょっと細かくそれぞれがtrueを返すタイミングを紹介します。といっても、こちらのUnityの公式チュートリアルの動画で、とても分かりやすく説明している内容を文字に起こしただけですが。

 ※ちなみにこちらで、GetKey系とGetButton系の使い分けを書きました。

メソッド一覧

呼び出し例

Input.Get系のメソッドは、MonoBehaviourクラスのUpdateメソッド内で次のように呼びだします。

Input.GetKeyDownメソッドの呼び出し例
using UnityEngine;

public class InputGetKey : MonoBehaviour
{
    void Update ()
    {
        if (Input.GetKeyDown (KeyCode.Space)) {
            Debug.Log ("Input.GetKeyDown");
        }
    }
}

GetButton系とGetKey系のメソッドの返却値の遷移

それぞれの状態で、InputクラスのGetButton系とGetKey系のメソッドの返却値の遷移を紹介します。

キー・ボタンを押していない状態

メソッド 返却値
GetKeyDown(GetButtonDown) false
GetKey(GetButton) false
GetKeyUp(GetButtonUp) false

キー・ボタンを押した瞬間

メソッド 返却値
GetKeyDown(GetButtonDown) true
GetKey(GetButton) true
GetKeyUp(GetButtonUp) false

1フレームのみです。

キー・ボタンを押している間

メソッド 返却値
GetKeyDown(GetButtonDown) false
GetKey(GetButton) true
GetKeyUp(GetButtonUp) false

キーを押した瞬間の次のフレームから、押している間は何フレームでもこの状態です。

キー・ボタンを離した瞬間

メソッド 返却値
GetKeyDown(GetButtonDown) false
GetKey(GetButton) false
GetKeyUp(GetButtonUp) true

1フレームのみです。

キー・ボタンを押していない状態

メソッド 返却値
GetKeyDown(GetButtonDown) false
GetKey(GetButton) false
GetKeyUp(GetButtonUp) false

もとに戻ります。

GetButton系とGetKey系のメソッドの返却値の遷移のポイント

  • キー・ボタンを押した瞬間はGetKeyDown(GetButtonDown)もGetKey(GetButton)も両方trueを返す
  • GetKeyDown(GetButtonDown)とGetKeyUp(GetButtonUp)は1フレームのみtrueを返す
  • GetKeyUp(GetButtonUp)がtrueの時、GetKey(GetButton)はfalse

 ちょっと補足。Input.GetXXX系のメソッドは、そのフレーム内であれば結果は同じで、そのフレーム内であれば何回呼び出しても結果は変わらないです。

まとめ

 InputクラスのGetButton系メソッドとGetKey系のメソッドの返り値の遷移についてまとめました。ちなみにこちらの動画でとても分かりやすく説明されているのを見て、Inputクラスのリファレンスや各メソッドのリファレンスには載っていないと思い、この投稿にまとめました。

 Unityのチュートリアルの動画は、非常参考になると思います。以外と知らなかったという情報があると思います。

 動画自体は英語ですが、Youtubeの字幕機能で日本語の字幕付きで見ることも可能です。

あわせて良かったらどうぞ!

27
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
27