ゲームオブジェクトをプレイヤーが操作するためには、プレイヤーの入力に応じて動かすような処理を作成しなければいけません。
外部からの入力は、すべて「
Input」というオブジェクトにまとめられます。これは
UnityEngineパッケージにあるクラスのインスタンスです。この
Inputに用意されているメソッドを利用して入力された情報を調べます。
まずは「キーボード」の入力からやってみましょう。パソコンなどでゲームをプレイする場合、キーボードから入力してゲームを操作するのがもっとも一般的でしょう。これは
Inputクラスの「
GetKey」というメソッドを利用します。
bool 変数 = Input.GetKey( キーの指定 );
この
GetKeyメソッドは、真偽値を返すメソッドです。引数に、チェックしたいキーを示す値を指定すると、そのキーが押されていればtrue、押されていなければfalseを返します。
問題は、引数に用意する「キーの指定」の仕方でしょう。これは、「
KeyCode」に用意されている値を使います。この
KeyCodeは列挙体と呼ばれるもので、あらかじめ用意されている選択肢の中から選ぶようなときに用いられます。
KeyCodeには、キーを示す値がひと通り揃っており、その中からチェックしたい値を指定して
GetKeyすればいいのです。
では、
Input.GetKeyを使ってゲームオブジェクトを動かす簡単なサンプルを挙げておきましょう。前回までのサンプルをそのまま利用しています(シーンにCubeが1つあり、これにmyscriptというC#のスクリプトがコンポーネントとして設定された状態です)。シーンを実行すると、上下左右のキーを押せばCubeが前後左右に動きます。
■KeyCodeの値について
ここでは、
if (Input.GetKey(KeyCode.LeftArrow)){……}といった具合に、
Input.GetKeyで上下左右の矢印キーについて1つ1つ状態を調べ、それらが押されていたら、
this.transform.positionから取り出した
Vector3の値を増減しています。そしてひと通りチェックが終わったら、変更された
Vector3を
positionに再設定してゲームオブジェクトを移動している、というわけです。
考え方はとても単純です。問題は、「
KeyCodeに用意されているキーを示す値はどんなものか」でしょう。これは、整理するとざっと以下のようになります。
アルファベット関係――そのままアルファベットの大文字の名前で値が用意されています。
数字関係――テンキーは「
Keypad数字」という名前、アルファベット部分の数字キーは「
Alpha数字」という名前で用意されています。(Keypad1、Alpha2など)
矢印キー――「
UpArrow」「
DownArrow」「
RightArrow」「
LeftArrow」
機能キー関係――「
RightAlt」「
LeftAlt」「
RightControl」「
LeftControl」「
RightCommand」「
LeftCommand」「
RightShift」「
LeftShift」
ファンクションキー――「
F数字」という名前で用意されています。(F1など)
その他のキー――「
Space」「
Tab」「
Return」「
Delete」「
Backspace」「
Escape」などが用意されています。
だいたいキーの名前やキャラクタそのものなので、迷うこともないでしょう。これらの値を使えば、押したキーがどうなっているかすぐにわかるのです。