Unityに関連する記事です

Input.GetAxis メソッド


 Input.GetAxisメソッドは、Unityの持つ Input クラスが扱うメソッドの1つです。
入力の判定を行うメソッドであるため、他のInput系のメソッドと同じように Update メソッド内に記述をして利用します

Input.GetKeyメソッドやInput.GetButtonメソッドとは異なり、bool 型ではなくて、float 型の戻り値を返すようになっています。
 
void Update(){

    float vertical = Input.GetAxis("Vertical");

    float horizontal = Input.GetAxis("Horizontal");

}

参考サイト
Unity公式スクリプトリファレンス
Input.GetAxis
https://docs.unity3d.com/ja/current/ScriptReferenc...
Qiita RyotaMurohoshi 様
Input.GetAxisとInputManagerの関連設定について
https://qiita.com/RyotaMurohoshi/items/7868752a3f0...


InputManagerの設定


 Input.GetAxisメソッドは、引数として string 型を設定していますが、この文字列には InputManager で設定している文字列を指定する必要があります。
Input.GetButton系のメソッドと同じです。


 Unityの左上にあるメニューを Edit => Project Settings と選択していくと、Project Settingsというウインドウが開きます。
このProject Settings ウインドウの左側がメニューになっており、InputManagerという項目がありますのでそちらを選択してみてください。
画像のような表示になると思います。


<手順動画 InputManagerの表示方法>
https://gyazo.com/56c0b7d6a4bc1d43e145f249e25a3e0e


参考サイト
Unity公式マニュアル
Input Manager
https://docs.unity3d.com/ja/2019.4/Manual/class-In...


 試しに、Vertical という項目を選択してみてください。詳細情報が表示されます。


InputManagerのVertical



この中の Vertical という項目の中に、Name という部分があります。
この Name が文字列なのですが、この文字列を先ほどの Input.GetAxisメソッドの引数として記述する必要があります。
Veritcalは、垂直、という意味の単語です。

  float vertical = Input.GetAxis("Vertical");  <= この Vertical の文字列が、InputManagerの Name とつながっている。そのため、文字列が合致している必要がある


 Input.GetAxisメソッドの文字列の指定は、大文字・小文字が区別されますので、小文字で vertical と書くと実行時にエラーが表示されます
InputManagerに登録されている Name のつづりで記述しましょう。


Input.GetAxisメソッドのメリット


 ではこの Vertical という文字列を指定した場合に、一体どのキー入力を判定してくれるのか、という部分ですが
先ほどの InputManager の中にある、Vertical の項目内に、キーを指定している場所があります。
画像を見てみてください。





 Negative Button と Positive Button に、downと up が登録されています。これはキーボードの下矢印と上矢印のことです。
また、 Alt Negative Button と Alt Positive Button にも s と w が登録されてます。これもキーボードの Sキーと Wキーです。

 つまり、Input.GetAxis("Vertical") という命令を実行すると、上記の4つのキー入力を判定してそのキーの入力があったかどうかを処理してくれるようになっています。
少し処理の内容は違いますが、以下の処理を、1文で実装しているイメージです。

        float vertical;
        if (Input.GetKey(KeyCode.UpArrow) || Input.GetKey(KeyCode.W)) {
            vertical = 1.0f;
        }
        if (Input.GetKey(KeyCode.DownArrow) || Input.GetKey(KeyCode.S)) {
            vertical = -1.0f;
        }

 またもう1つのメリットとしては、キーの入力値を InputManager から変更できるため、スクリプトを変更せずにキーの変更が行えるようになります。
これは Input.GetButton系と同じメリットです。


処理の流れ


  float vertical = Input.GetAxis("Vertical");

 Input.GetAxisメソッドの処理は右辺の処理なので、処理の結果が戻り値として左辺に代入されます

初期設定でこれは、キーボードの上、下、あるいは S、W のいずれかのキー入力をしたら、その処理結果を左辺の vertical 変数に代入するという処理になります。

 キーボードの上矢印、あるいは W を入力すると 0.1f 〜 1.0f の値が代入されます。
差があるのは、押している時間が長いほど 1.0f に近づくように制御されているためです(アナログスティックのイメージ)。

 キーボードの下矢印、あるいは S を入力すると、- 0.1f 〜 - 1.0f の値が代入されます。

 この数値の動きを確認するには、Debug.Logを利用してみてください。
実際にどのような処理が動いているかをConsoleビューにて確認することが出来ます。


  float vertical = Input.GetAxis("Vertical");
 Debug.Log(vertical);   // <= 追加


<検証動画 Debug.Logを使って処理の流れを追う>
https://gyazo.com/253729f72781901bb27dcfa353f4bb70


Input.GetAxisRaw メソッド


 同じ種類のメソッドに、Input.GetAxisRawメソッドがあります。こちらは戻り値として、中間値を取らずに、1.0f、あるいは -1.0f のみを取得してくれます。
書式や使用方法は、Input.GetAxisメソッドと同じです。

void Update(){

    float vertical = Input.GetAxisRaw("Vertical");     // 入力を受け付けると 1.0f か -1.0fのみを戻す
    Debug.Log(vertical);

    float horizontal = Input.GetAxisRaw("Horizontal");      // 入力を受け付けると 1.0f か -1.0fのみを戻す

}


<検証動画 Debug.Logを使って処理の流れを追う>
https://gyazo.com/31ce3b2e2630b33ef19cb0c941c5865a

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu



プログラムの基礎学習

コード練習

技術/知識(実装例)

2Dおはじきゲーム(発展編)

2D強制横スクロールアクション(発展編)

3Dダイビングアクション(発展編)

2Dタップシューティング(拡張編)

レースゲーム(抜粋)

2D放置ゲーム(発展編)

3D脱出ゲーム(抜粋)

2Dリアルタイムストラテジー

2Dトップビューアドベンチャー(宴アセット使用)

3Dタップアクション(NavMeshAgent 使用)

2Dトップビューアクション(カエルの為に〜、ボコスカウォーズ風)

3Dトップビューアクション(白猫風)

VideoPlayer イベント連動の実装例

VideoPlayer リスト内からムービー再生の実装例(発展)

AR 画像付きオブジェクト生成の実装例

AR リスト内から生成の実装例(発展)

private



このサイト内の作品はユニティちゃんライセンス条項の元に提供されています。

管理人/副管理人のみ編集できます