はじめに
Unityでマウスを長押ししている間にパワーをため、離したときにそのパワーを放出する仕組みを作ってみましょう。ここでは、簡単なスクリプトを使ってキューブを前方に飛ばす方法を解説します。
Unityを触ったことがないという方はコチラの記事から見てみてください!
シーンにオブジェクトを配置しよう
シーンにはキューブを置いて、これをパワーをためて動かすオブジェクトにします。
- ヒエラルキー(Hierarchy)ウィンドウで右クリックします。
- メニューから「3D Object」→「Cube」を選びます。
- 同じように「3D Object」→「Plane」を選び、床を作成します。

Rigidbodyを追加する
- ヒエラルキーの「Cube」を選択します。
- インスペクター(Inspector)ウィンドウで「Add Component」ボタンをクリックして「Rigidbody」を追加します。
スクリプトを作成しよう
次に、キューブにパワーをためるスクリプトを作成します。
- プロジェクト(Project)ウィンドウで右クリックします。
- 「Create」→「C# Script」を選びます。
- スクリプト名を「ClickPower」に変更します。
スクリプトをダブルクリックして開き、以下のコードを入力します。
全体の説明
このスクリプトは、マウスのクリックに応じてオブジェクトに力を加えるものです。クリックしている間、力が徐々に増えていき、マウスを離すとその力を使ってオブジェクトを前方に押し出します。
各部分の説明
- using System.Collections; using System.Collections.Generic; using UnityEngine;
- これは、C#で使える標準の機能や、Unity特有の機能を使うための宣言です。
- public class ClickPower : MonoBehaviour
- ここでは
ClickPowerという新しいクラスを作っています。このクラスはMonoBehaviourというUnityの基本的なクラスを継承しています。
- ここでは
- private float power;
- 力を表す
powerという名前の変数を作っています。この変数はクラスの中だけで使われます。
- 力を表す
- public Rigidbody rb;
- オブジェクトの物理的な動きを扱うための
Rigidbodyコンポーネントを保持する変数です。publicなので、Unityのインスペクターで設定できます。
- オブジェクトの物理的な動きを扱うための
- void Start()
- ゲームが始まると最初に呼ばれる関数です。ここでは
powerの初期値を0にしています。
- ゲームが始まると最初に呼ばれる関数です。ここでは
- void Update()
- 毎フレーム呼ばれる関数です。ここで、マウスの入力をチェックし、力を増やしたりオブジェクトを動かしたりします。
- if (Input.GetMouseButton(0))
- マウスの左ボタンが押されている間、
powerを少しずつ増やしています。
- マウスの左ボタンが押されている間、
- if (Input.GetMouseButtonUp(0))
- マウスの左ボタンが離された瞬間に実行されます。ここで
Rigidbodyコンポーネントを取得し、蓄積されたpowerを使ってオブジェクトに力を加え、前方に押し出します。そしてpowerを0にリセットします。
- マウスの左ボタンが離された瞬間に実行されます。ここで
- Debug.Log(power);
- 現在の
powerの値をコンソールに表示します。デバッグ用です。
- 現在の
全体の動き
ゲームが始まると、まず power の値は0にリセットされます。プレイヤーがマウスの左ボタンを押し続けると、power の値が徐々に増えていきます。マウスの左ボタンを離すと、その時の power の値を使ってオブジェクトを前方に押し出します。そして、power は再び0に戻ります。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ClickPower : MonoBehaviour
{
private float power;
public Rigidbody rb;
void Start()
{
power = 0;
}
void Update()
{
if (Input.GetMouseButton(0))
{
power += 0.1f;
}
if (Input.GetMouseButtonUp(0))
{
rb = GetComponent<Rigidbody>();
rb.AddForce(0, 0, power, ForceMode.Impulse);
power = 0;
}
Debug.Log(power);
}
}
このスクリプトは、マウスの左ボタンを押している間にパワーをため、離したときにそのパワーを前方に放出する仕組みです。
スクリプトをアタッチする
作成したスクリプトをキューブにアタッチします。
- プロジェクト(Project)ウィンドウで「ClickPower」をドラッグします。
- ヒエラルキー(Hierarchy)ウィンドウの「PowerCube」にドロップします。
これでスクリプトがキューブにアタッチされました。
シーンを再生してみよう
これで準備完了です!シーンを再生して、マウスの左ボタンを長押ししてパワーをためてみましょう。離すと、キューブがそのパワーで前方に飛び出します。
🔮魔法系演出ならこれ一択!【Magic Arsenal】
エネルギーを溜めて放つチャージショットや、ド派手な魔法弾を一瞬で演出したいなら、**「Magic Arsenal」**が圧倒的におすすめ!
100種類以上の高品質エフェクトが最初から揃っており、面倒な設定なしで即戦力として使えます。
特に「溜め→放つ」のアニメーションやパーティクルが充実しているので、チャージショットやスペルキャストの表現に最適。
2D・3Dどちらのプロジェクトでも使えるうえ、軽量でスマホ向けにも対応済み!
あわせて読みたい
チャージショット機能をさらに活かすために、以下の関連記事もぜひご覧ください!
- 🎯 Unityでボールを発射!飛距離を測定する方法を初心者向けに解説
⇒ 発射系システムを作る際に欠かせない飛距離の測定方法が学べます。 - 🔄 UnityでクリックするたびにPrefabを切り替えて発射する方法【初心者向け】
⇒ チャージに応じた発射エフェクトの切り替え実装に役立ちます! - ⏱ 【Unity】n秒おきに繰り返し実行するスクリプトを作ろう
⇒ タイマー処理でチャージショットの段階的強化に応用できます。 - 🔊 Unityでクリック時に音を鳴らし、特定ボタンで音を消す仕組みを簡単実装!
⇒ チャージ中や発射時のサウンド演出の実装にピッタリ。 - 🌀 【Unity入門】スペースキーでオブジェクトを真上に打ち上げる方法!
⇒ Rigidbodyを使ったシンプルな発射システムも参考になります。
よくある質問
- Qパワーの増加速度を変更するにはどうすればいいですか?
- A
power += 0.1f;の部分を変更します。例えば、0.1fを0.2fに変更するとパワーの増加速度が2倍になります。
- Qマウスの左ボタン以外のキーでパワーをためるにはどうすればいいですか?
- A
Input.GetMouseButton(0)の部分を他の入力に変更すればできます。例えば、スペースキーの場合はInput.GetKey(KeyCode.Space)に変更します。
- Qパワーの最大値を設定するにはどうすればいいですか?
- A
スクリプトに最大値のチェックを追加しましょう。例えば、
powerが10を超えないようにするには以下のようにします。if (power > 10) { power = 10; }
- Qパワーをためる方向を変えるにはどうすればいいですか?
- A
rb.AddForce(0, 0, power, ForceMode.Impulse);の部分で、AddForceのパラメータを変更します。例えば、上方向に飛ばすにはrb.AddForce(0, power, 0, ForceMode.Impulse);とします。







※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。
※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。