前回のUnityのエントリーにひき続きて、積読されていた「Unityではじめる2Dゲーム作り徹底ガイド」を少しづつやっています。(P190ぐらいまで) 今回は、その中の「Input」について紹介をしたいと思います。
Unityではじめる2Dゲーム作り徹底ガイド スマートフォンでも遊べる本格ゲーム開発に挑戦 大野 功二 SBクリエイティブ 売り上げランキング : 5252 Amazonで詳しく見る |
Inputクラス
デバイスからの入力を感知するクラスが「Input」クラスです。 [c] float hoge = Input.GetAxis("Horizontal");
bool hogebool = Input.GetButtonDown("Fire1");
[/c]
対応するボタンなどは、[Edit]->[ProjectSetting]->[Input]から確認ができます。
下記の[Horizontal]の場合は、キーボードの[a][d]もしくは[left(←)][right(→)]に対応しています。
[Axes]は自分でオリジナルなモノを登録することもできます。
Input.GetAxis とInput.GetAxisRaw
上下右左の方向は、「Input.GetAxis」 と「Input.GetAxisRaw」で取得ができる。
「Input.GetAxis」の場合、ボタンを押された場合に下記の力が働きます。 これは「スムージング計算」と呼ばれるものです。
- Gravity : 何もボタンを押していない時の0に戻る力。
- Dead : デッド・ゾーン。この部分は値が0。
- Sensitivity : ボタンを押した時の加速度(「-1」「1」に向かっていく速度)
- Snap : 反対方向のボタンを押した時に、値を0にするかどうか
逆に、「Input.GetAxisRaw」はボタンを押した場合「-1「1」のどちらからの数字しか返しません。 徐々に加速をしていく場合は、「Input.GetAxis」を、一定の間隔で移動する場合は「Input.GetAxisRaw」を使った方がいいです。
その他
キーボード場合は下記のようなInputクラスが利用できます。 [c] //スペースキー boot hoge = Input.GetKey(KeyCode.Space)
//Xボタン boot hoge2 = Input.GetKey(KeyCode.XX)
[/c]
最後に
入力に関しては、スマートフォンの場合はまた違ってきそうな感じがします。 とても簡単に入力を感知できるのは素晴らしいですね。さすがUnity。 ただ、色々なパラメータがあって、それが何を意味しているのかを知るのがとてもむずかしいです。