エーアスクール那須塩原校では、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ライフを。