Unity でパーティクル システムを使用してペイントする方法

Unity Engine は、その多様で動的なツールセットで有名で、没入型エクスペリエンスを作成する無数の方法を提供します。これらの中でも、パーティクル システム は、雨や煙のシミュレートから複雑な アニメーション の作成まで、視覚効果のための多用途ツールとして際立っています。このシステムのあまり知られていない用途の 1 つは、Unity シーン内でのペイントです。このチュートリアルでは、Unity のサーフェス上でペイントするアクションをシミュレートするパーティクル システムの革新的なアプリケーションを紹介します。

前提条件

1. シーンのセットアップ

  • Unity を開始し、新しい 3D プロジェクト を作成します (まだ作成していない場合)。
  • Hierarchy ウィンドウ内で右クリックし、3D Object -> 'Plane' を選択します。これがキャンバスとして機能します。
  • 一貫性を保つために、平面の位置を (0, 0, 0) に調整します。

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

  • Hierarchy ウィンドウを右クリックし、'Effects' -> 'Particle System' を選択します。
  • パーティクル システムの名前を "ParticlePainter" に変更します。
  • "ParticlePainter" オブジェクトを平面の少し上に配置します。

3. ペイント用のパーティクル システムの構成

  • "ParticlePainter" オブジェクトを選択した状態で、「インスペクター」ウィンドウに移動します。

'Particle System' で次の変更を加えます。

  • 'Duration': 1
  • 'Start Lifetime': 'Infinity' (これによりパーティクルが死ななくなります)
  • 'Start Speed': 0 (パーティクルは移動しないでください)
  • 'Emission' -> 'Rate over Time': 100 (塗装濃度の好みに応じて調整します)
  • 'Shape' に移動し、"Circle" を選択します。ブラシのサイズを制御するには、半径を小さい値に調整します。
  • 'Renderer' で、マテリアルをカスタム マテリアルまたはペイントを表すカラーに変更します。

4. ペイント メカニックのスクリプト作成

ここで、パーティクルがいつどこに放出されるかを制御するために script が追加されます。

  • [Assets] ウィンドウを右クリックし、['Create'] -> ['C# Script'] を選択し、"ParticlePainterScript" という名前を付けます。
  • スクリプトをダブルクリックしてエディターで開き、その中に以下のコードを貼り付けて、スクリプトを保存します。
using UnityEngine;

public class ParticlePainterScript : MonoBehaviour
{
    private ParticleSystem painterParticles;
    private bool canPaint = false;

    void Start()
    {
        painterParticles = GetComponent<ParticleSystem>();
    }

    void Update()
    {
        PaintMechanic();
    }

    void PaintMechanic()
    {
        if (Input.GetMouseButton(0))
        {
            if (!canPaint) 
            {
                painterParticles.Play();
                canPaint = true;
            }
        }
        else
        {
            painterParticles.Stop();
            canPaint = false;
        }

        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;
        
        if (Physics.Raycast(ray, out hit))
        {
            transform.position = hit.point;
        }
    }
}
  • Unity エディターで と "ParticlePainterScript" を "ParticlePainter" オブジェクトにアタッチします。

5. カメラの調整

メイン カメラをトップダウン ビューに調整します。

  • 位置を (0, 10, 0) に、回転を (90, 0, 0) に設定します。

6. シーンをテストする

  • [再生] ボタンをクリックします。
  • マウスの左ボタンを押したまま、カーソルを平面上に移動します。パーティクルが放出されて、ペイントのような効果が作成されます。

質問と回答:

  1. 従来のテクスチャ ペイント方法ではなく、ペイントにパーティクル システムを使用する理由は何ですか?: パーティクル システムは動的なリアルタイム フィードバックを提供し、高度にカスタマイズ可能で、独自の視覚効果を提供できます。さらに、状況によっては、特に一時的なペイント エフェクトの場合、パフォーマンスが向上する可能性があります。
  2. この方法で複数の色をペイントできますか?: はい、複数のパーティクル システムを作成するか、時間の経過とともにパーティクルの色を調整することで、さまざまな色の効果を実現できます。
  3. ブラシ サイズを動的に変更するにはどうすればよいですか?: スクリプトを使用してパーティクル システムのシェイプの 'radius' 値をリアルタイムで調整することにより、ブラシ サイズを動的に変更できます。

結論

このチュートリアルの終了により、Unity パーティクル システム の新しくユニークなアプリケーションが検討されました。ゲームの仕組み、芸術的なツール、革新的な体験のいずれであっても、Unity はその多彩な機能で驚きを与え続けます。

おすすめの記事
Unity の後処理に関する重要なヒント
Unity で単純な草シェーダーを作成する
Unity で勝者画面 UI を作成する
Unity での一時停止メニューの作成
Unity でフライト シミュレーターを作成する
Unity で VHS テープ フィルター エフェクトを作成する
Unity プロジェクトに適切な剣モデルの選択