エーアスクール那須塩原校では、unityでアクションゲームをつくっています。

生徒から、「隠しコマンドをつくってジャンプ力が上がるようにしたい」と言われたので実装してみました。
スペースキーで通常ジャンプ、Shiftキー+スペースキーで大ジャンプです。

このときに必要になるのが、unity(C#)でキーの同時押し判定です。

まずは通常のサンプルプログラム。よく見かけるやつです。

 if (Input.GetKeyDown(KeyCode.Space) ) 
 {
        audioSource.PlayOneShot(jump);
        Jump(jumpPower);
 }

もし、スペースキーが押されたら
1.jumpという名前の音を鳴らす
2.Jump関数を呼ぶ(jumpPowerに応じて、キャラクターが上下する関数)。

とします。
このとき、GetKeyDownを使いますが、この関数は、キーが押されたときにイベントが発生します。似たやつでGetKeyUpがあります。
このどちらも、押された瞬間、つまり1回ってのがポイントです。


やりたいのは同時押しなので、GetKeyDownを&&で結びたくなりますが、これだと動きません(すごいピッタリ押すと動くときもあるという情報はありました)。
ではどうするかというと、これです。

 if (Input.GetKeyDown(KeyCode.Space) && Input.GetKey(KeyCode.LeftShift))
 {
     audioSource.PlayOneShot(jump);
     Jump(jumpPower*2);
 }

GetKeyを使います。これは、押されている間はtrueが帰るので、Shiftを押しながら、スペース、という動作が成立します。
ついでに、ジャンプ力を変えたいので、Jump関数に渡すjumpPowerを2倍にしています。

では、楽しいunityライフを。


Top