UnityUnityメモ

【Unity】クリックした位置にパーティクルを発生させる方法【初心者向け】

Unity

1. はじめに

ゲーム開発でエフェクトを使うと、演出がグッと華やかになりますよね!特に「クリックした場所にパーティクルを発生させる」と、魔法や爆発のようなインタラクティブなエフェクトを簡単に追加できます。

たとえば、クリックした場所に火花が飛ぶエフェクトを出したり、地面をクリックすると煙が出るようにしたり。こんな演出を加えることで、プレイヤーがより直感的に楽しめるゲームが作れます。

この記事では、クリックした位置にパーティクルを発生させる仕組みを作ります。さらに、発生したパーティクルを一定時間後に削除する方法や、オブジェクト(Cube)をクリックしたときにパーティクルを出す方法まで詳しく解説していきます!

Unityの基本的な操作やスクリプトの知識があれば、初心者でも簡単に実装できます。さっそく作ってみましょう!




2. パーティクルをクリック位置に発生させる

ここでは、マウスのクリック位置にパーティクルシステムを発生させる方法を解説します。パーティクルは Prefab(プレハブ) にして、クリックした座標に Instantiate(インスタンス化) することで実装できます。


① 空のオブジェクトを作成

まず、クリックの処理を管理するための空のオブジェクトを作成します。

  1. Hierarchy(ヒエラルキー)ウィンドウで右クリック
  2. Create Empty(空のオブジェクトを作成)」を選択。
  3. オブジェクトの名前を「ParticleSpawner」に変更

このオブジェクトに後でスクリプトを追加し、クリック位置にパーティクルを発生させる役割を持たせます。


② パーティクルシステムの作成

続いて、発生させるパーティクルを作成します。

  1. Hierarchy ウィンドウで右クリック
  2. 3D Object > Particle System」を選択。
  3. 作成されたパーティクルの名前を「ClickParticle」に変更

デフォルトのパーティクルではわかりにくいので、色や形を調整するといいでしょう。


③ パーティクルをプレハブ化

作成したパーティクルを Prefab(プレハブ) にして、必要なときに生成できるようにします。

  1. Project(プロジェクト)ウィンドウで「Prefab」フォルダを作成(なければ作る)。
  2. 「ClickParticle」をドラッグして Prefab フォルダ内に移動
  3. プレハブ化されたら、シーン内の「ClickParticle」は削除

これで、必要なときに スクリプトからこのプレハブを生成 できるようになります。




④ クリック位置にパーティクルを発生させるスクリプトを作成

クリック位置にパーティクルを生成するスクリプトを作成します。

  1. Project ウィンドウで右クリック
  2. Create > C# Script」を選択。
  3. スクリプトの名前を「ClickScript」に変更
  4. スクリプトを開いて、以下のコードを入力
using UnityEngine;

public class ClickScript : MonoBehaviour
{
    private Vector3 mousePosition;
    private Vector3 objPosition;
    [SerializeField] GameObject particle;

    void Update()
    {
        if (Input.GetMouseButtonDown(0)) // 左クリックを検出
        {
            mousePosition = Input.mousePosition; // マウスのスクリーン座標を取得
            mousePosition.z = 10.0f; // カメラからの距離を設定
            objPosition = Camera.main.ScreenToWorldPoint(mousePosition); // ワールド座標に変換
            Instantiate(particle, objPosition, Quaternion.identity); // パーティクルを生成
        }
    }
}

⑤ スクリプトをオブジェクトにアタッチ

作成した ClickScript.csParticleSpawner にアタッチします。

  1. Hierarchy ウィンドウで「ParticleSpawner」を選択
  2. Inspector(インスペクター)で「Add Component」ボタンをクリック
  3. 「ClickScript」を検索して追加。

⑥ パーティクルをスクリプトに設定

スクリプト内の particle先ほどプレハブ化した「ClickParticle」 を設定します。

  1. 「ParticleSpawner」を選択
  2. Inspector で「ClickScript」の「Particle」フィールドを確認
  3. プレハブの「ClickParticle」をドラッグ&ドロップ

⑦ 実行テスト

  1. ゲームを再生(▶ボタンをクリック)
  2. シーン内をクリック
  3. クリックした位置にパーティクルが発生するのを確認!

これで、マウスのクリックした場所にパーティクルが発生する仕組みが完成しました!次は、一定時間後にパーティクルを削除する方法を解説します。

もっとクオリティの高いパーティクルを使いたい場合は?

Unityの標準パーティクルでも十分ですが、 「Epic Magic Particle Effects Pack」 のようなアセットを使うと、より美しいエフェクトを簡単に適用できます。
🔗 Epic Magic Particle Effects Pack をチェックする




3.発生したパーティクルを一定時間後に削除

パーティクルが無限に増え続けると、ゲームのパフォーマンスが悪くなってしまいます。
そこで、発生したパーティクルを一定時間後に削除する仕組みを作りましょう!

① 削除用のスクリプトを作成する

パーティクルを発生させた後、1秒後に自動で削除されるようにスクリプトを作成します。

  1. プロジェクトウィンドウで右クリック
  2. 「Create」→「C# Script」 を選んで、新しいスクリプトを作成
  3. 名前を 「ParticleManager」 にする

作成した ParticleManager.cs を開いて、以下のコードを入力してください。

using UnityEngine;

public class ParticleManager : MonoBehaviour
{
    void Start()
    {
        // 1秒後に DestroyParticle メソッドを呼び出す
        Invoke("DestroyParticle", 1.0f);
    }

    void DestroyParticle()
    {
        // ゲームオブジェクトを削除
        Destroy(gameObject);
    }
}

② プレハブにスクリプトをアタッチ

次に、作成した ParticleManager スクリプトをパーティクルのプレハブに追加します。

  1. プロジェクトウィンドウで、パーティクルのプレハブをダブルクリックして開く
  2. インスペクターウィンドウに ParticleManager.cs をドラッグ&ドロップ
  3. プレハブを保存して閉じる

③ 実行テスト

では、実際にクリックしてパーティクルを発生させてみましょう!

クリックした位置にパーティクルが発生!
1秒後に自動で消える!

これで、ゲームの負荷を抑えながらエフェクトを発生させることができました 🎉


🔹 補足:削除までの時間を変更するには?
Invoke("DestroyParticle", 1.0f);1.0f の値を変更すればOK!

例えば、2秒後に削除したい場合は以下のように書きます。

Invoke("DestroyParticle", 2.0f);

🔹 パーティクルが消えるタイミングを調整するには?
パーティクルシステムの 「Duration」や「Start Lifetime」 の設定を変更すると、表示時間を調整できます。
エフェクトの見た目に合わせて、削除タイミングを調整しましょう!

これで、クリックして発生させたパーティクルを一定時間後に自動で削除する仕組みが完成しました! 🚀




4. まとめ

この記事では、マウスクリックした位置にパーティクルを発生させる方法を解説しました。
さらに、一定時間後にパーティクルを削除する仕組みも実装し、無限に増え続けないようにしました。

💡 今回学んだポイントマウスクリック位置にオブジェクトを生成する方法
パーティクルシステムをプレハブ化して使うメリット
Invoke() を使って一定時間後にオブジェクトを削除する方法

この仕組みを応用すれば、ゲーム内でさまざまなエフェクトを作成できます。
例えば、攻撃エフェクト、スキル発動、爆発エフェクト などにも活用できます!🎮✨


💡 次のステップ もっとリアルなエフェクトを作りたいなら、以下のポイントを試してみましょう!
🎨 パーティクルの色や形を変更する → エフェクトのバリエーションを増やせる!
🔥 複数のパーティクルを組み合わせる → 爆発や魔法のエフェクトが作れる!
🎯 Raycast を使って正確な座標を取得 → クリックしたオブジェクトの表面にエフェクトを出せる!

もっとクオリティの高いパーティクルを使いたいなら?
今回の方法を応用して、よりリッチなエフェクトを活用することもできます。
例えば、 「Epic Magic Particle Effects Pack」 には、ハイクオリティな魔法エフェクトが多数収録されています!
🔗 Epic Magic Particle Effects Pack をチェック

ゲームの見た目を向上させるためには、パーティクルエフェクトはとても重要です。
今回の内容を活かして、あなたのゲームに魅力的なエフェクトを追加してみてください!🚀




よくある質問(FAQ)

Q
クリックした場所の Z 座標がうまく取得できない場合は?
A

mousePosition.z = 10.0f; の値を調整してみましょう。カメラの位置によって変わります。

Q
クリックした場所にパーティクルが出ないのはなぜ?
A

particle フィールドに正しくプレハブが設定されているか確認してください。

Q
もっと長くパーティクルを残したい場合は?
A

Invoke("DestroyParticle", 1.0f); の 1.0f を大きな値に変更しましょう。

タイトルとURLをコピーしました