1. はじめに
今回は、Shiftキーを押しながらクリックすると、ジャンプの高さが2倍になるという仕組みをUnityで作ってみましょう!
ゲームを作っていると、「ちょっと特別なジャンプ」をしたくなるときってありますよね。たとえば、高い場所にだけ行けるスーパージャンプとか、パワーアップしたときだけ飛べる特別な動きとか。
そんなときに便利なのが、Shiftキーなどのキー入力を組み合わせて操作する方法です。この記事では、マウスの左クリックでジャンプ、そしてShiftキーを押しながらクリックすることで、ジャンプ力が2倍になる仕組みを作っていきます。
プログラミングが初めてでも大丈夫!
Unityの基本操作から、スクリプトの書き方、実際の動かし方まで、ひとつずつ丁寧に解説していくので、一緒に楽しく作っていきましょう!
それではさっそく、ジャンプするCubeを用意するところから始めましょう!✨
2. シーンの準備
まずは、ジャンプするための**地面(Plane)と、ジャンプするオブジェクト(Cube)**をシーンに配置しましょう!
🟢 ① Plane(地面)を作成しよう
- ヒエラルキー(Hierarchy)ウィンドウの空いているところで右クリックします。
- 「3D Object」→「Plane」を選びます。
これで、平らな地面がシーンに追加されました!
名前はそのまま「Plane」のままでOKです。
🟢 ② Cube(ジャンプするオブジェクト)を作成しよう
- 同じくヒエラルキーで右クリック。
- 「3D Object」→「Cube」を選びます。

Cubeがシーンに出てきましたね!これはプレイヤーが操作するジャンプ用のキャラクターだと思ってください。
🟢 ③ CubeにRigidbodyを追加しよう
ジャンプさせるためには、物理の力を使います。
そのために、Cubeに「Rigidbody(リジッドボディ)」というコンポーネントを追加します。
やり方はこちら:
- ヒエラルキーで「Cube」を選びます。
- インスペクター(Inspector)ウィンドウの下のほうにある「Add Component」ボタンをクリック。
- 検索バーに「Rigidbody」と入力し、表示されたものを選びます。

追加できたらOK!これでCubeは物理の影響を受けて、ジャンプしたり落ちたりできるようになります。
3. スクリプトの作成
さあ、いよいよジャンプの動きを作っていきますよ!
ここでは、マウスクリックでジャンプし、Shiftキーを押しながらだと2倍の高さでジャンプするスクリプトを作成していきます。
🟢 ① 新しいスクリプトを作成しよう
まずはジャンプ用のスクリプトを作成します。
- プロジェクトウィンドウの中で右クリックします。
- 「Create」→「C# Script」を選びます。
- スクリプトの名前を「CubeJump」と入力してください。
これで新しいスクリプトファイルができました!
🟢 ② Cubeにスクリプトをアタッチしよう
次に、作成したスクリプトをCubeにくっつけます(=アタッチ)。
- 先ほど作った「CubeJump」スクリプトをドラッグします。
- ヒエラルキーの「Cube」にドロップしてください。
Cubeにスクリプトが追加されていればOKです!
4. スクリプトの内容を解説
ここからは、さきほど作成したCubeJump.csの中身を編集して、クリックでジャンプ&Shiftでジャンプ力2倍!を実現していきます。
以下のコードを、スクリプトの中に入力してください。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CubeJump : MonoBehaviour
{
private Rigidbody rb;
private int upForce;
private bool isGround;
void Start()
{
rb = GetComponent<Rigidbody>();
upForce = 200;
isGround = false;
}
void Update()
{
if(Input.GetMouseButtonDown(0) && isGround)
{
if(Input.GetKey("left shift"))
{
upForce = 400;
}
else
{
upForce = 200;
}
rb.AddForce(new Vector3(0, upForce, 0));
}
}
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.name == "Plane")
{
isGround = true;
}
}
void OnCollisionExit(Collision collision)
{
if (collision.gameObject.name == "Plane")
{
isGround = false;
}
}
}
📝 コードの中身を解説!
🔹 Start()
メソッド
ゲームが始まったときに一度だけ呼ばれます。
rb = GetComponent<Rigidbody>();
Cubeに付いているRigidbodyを取得して、後でジャンプに使います。upForce = 200;
通常ジャンプの力を200に設定。isGround = false;
最初はジャンプできない状態(空中にいる)としておきます。
🔹 Update()
メソッド
毎フレーム呼ばれて、プレイヤーの入力をチェックします。
Input.GetMouseButtonDown(0)
:マウスの左クリックを押したときisGround
:Cubeが地面にいるかどうかInput.GetKey("left shift")
:Shiftキーが押されているかチェック!
もしShiftキーが押されていたらジャンプ力を400に、押されていなければ200に設定して、上向きに力を加えています(AddForce
)。
🔹 OnCollisionEnter()
と OnCollisionExit()
Cubeが地面(Plane)に触れているかどうかを判定するためのメソッドです。
OnCollisionEnter
:Planeに接触 → ジャンプできるようにする(isGround = true
)OnCollisionExit
:Planeから離れた → 空中にいる(isGround = false
)
これで、Cubeが空中にいるときにはジャンプできないようになります!
5. 実行して確認しよう
ここまでできたら、いよいよ実行してジャンプ動作をチェックしてみましょう!
▶ Unityを再生してみよう
- Unityエディタの上部にある「▶(再生)ボタン」をクリックします。
- シーンがプレイモードに切り替わります。
🖱 クリックしてジャンプ!
- マウスの左クリックをポンっと押してみてください。
- Cubeが**ピョン!**とジャンプします!
⬆ Shiftキーを押しながらクリック!
- 今度は左Shiftキーを押しながら、左クリックしてみましょう。
- Cubeがさっきより高くジャンプするのがわかりますか?
ジャンプ力が通常は200、Shiftキーを押しているときは400になっているので、ジャンプの高さが2倍になります!
実は、今回作ったようなジャンプ機能が最初から入っているテンプレートアセットがあります! Super Jump! Game Template は、ジャンプの操作や動きがすでに用意されていて、コードの中身を見ながら学ぶのにもピッタリ。
初心者の方でも安心して使えるので、ぜひチェックしてみてください!
⚠ うまく動かないときは?
もしジャンプしなかったり、Shiftジャンプが効かないときは、次のポイントをチェックしてみてください:
- CubeにRigidbodyがちゃんと付いている?
- Planeの名前が**「Plane」**になっている?
- スクリプトにタイプミスがない?
- Cubeにスクリプトがアタッチされている?

これで、クリックジャンプとShiftジャンプの確認はバッチリですね!
6. 応用編
ここまでで、クリックでジャンプ&Shiftで高くジャンプできるようになりました!
でも、ちょっとした工夫でさらにゲームが楽しくなりますよ✨
ここでは「簡単な応用アイデア」をいくつか紹介します!
🎇 ① パーティクルを追加してジャンプ演出!
ジャンプするときにキラキラ光るエフェクトが出たら、もっとカッコいいですよね!
やり方(カンタン!):
- ヒエラルキーで右クリック →「Effects」→「Particle System」を選択。
- Particle SystemをCubeの子オブジェクトにして位置を合わせる。
- スクリプトの中で、ジャンプした瞬間に
Play()
するようにすればOK!
🕺 ② アニメーションと連携させる
ジャンプするときにキャラクターが「ジャンプするポーズ」になったら、よりリアルになります。
Animatorを使って、ジャンプ中・着地・待機のアニメーションを切り替えると、ぐっとクオリティが上がりますよ!
🔊 ③ ジャンプ音を鳴らす!
ジャンプ時に「ピョン!」という効果音があると、プレイヤーも気持ちいいですよね。
スクリプトにAudioSourceを追加して、Play()
を呼び出すだけで、簡単に音を鳴らせます!
💡 こんなこともできる!
- 高さに応じてカメラの視点を変える
- Shiftジャンプは「スタミナを消費する」ようにしてもおもしろい
- ステージに「Shiftジャンプしないと届かない場所」を作ってみよう!

ちょっとの工夫で、ゲームの見た目も操作感も一気に進化します。
時間があればぜひ、いろいろ試してみてくださいね!
7. まとめ
おつかれさまでした!ここまでで、クリックでジャンプ、**Shiftキーでジャンプ力2倍!**の動きを作る方法をマスターできましたね✨
今回のチュートリアルで学んだポイントを振り返ってみましょう。
✅ 学んだことまとめ
- ヒエラルキーからPlaneとCubeを作成して、シーンを準備した
- CubeにRigidbodyをつけて物理的に動くようにした
- マウスクリックでジャンプ、Shiftキーを押すとジャンプ力を変えるスクリプトを作った
OnCollisionEnter
/Exit
を使って、地面との接触判定を実装した- 応用でパーティクルやアニメーション、音を追加するアイデアも紹介しました!

プログラミング初心者の方でも、ちょっとした工夫でゲームに遊びの幅を持たせることができるんです!これから自分なりのジャンプ演出をどんどん試して、楽しい作品を作ってみてくださいね💡それでは、次回のチュートリアルもお楽しみに!🎮
よくある質問(FAQ)
- Qクリックしてもジャンプしません。なぜですか?
- A
CubeにRigidbodyがアタッチされていない可能性があります。
また、スクリプトがCubeに**正しく追加(アタッチ)**されているかもチェックしてください。それでも動かない場合は、スクリプト内のスペルミスや、Plane
の名前が正しく設定されているかを確認しましょう。
- QShiftキーを押してもジャンプの高さが変わりません。
- A
Input.GetKey("left shift")
の部分にタイプミスがないか確認してみてください。
また、キーボードの「左Shift」キーを押しているかどうかも重要です。もし右側のShiftキーを使っていた場合、反応しないことがあります。
- QPlane以外にぶつかってもジャンプできるようになります。どうすれば直せますか?
- A
スクリプト内で地面を判定しているのは、
collision.gameObject.name == "Plane"
の部分です。
Plane以外のオブジェクトに当たったときにジャンプできないようにしたい場合は、タグ(Tag)を使って「Ground」などに設定し、CompareTag("Ground")
で判定するとより確実です。