スクリプトで制御するパーティクル表示

スクリプトで制御するパーティクル表示

単純な配置位置制御 (レガシーパーティクル)


レガシーパーティクルの場合のサンプル
最低限、子にParticleEmitterとParticleRenderのコンポーネントが必要

パーティクルのサイズを0にすると非表示に出来る
ドットイートタイプのゲームで餌をパーティクルで表示した場合、取得した餌をサイズ0にすれば食べたように見える

using UnityEngine;
using System.Collections;

public class particleScriptTest1 : MonoBehaviour
{

  // Use this for initialization
   void Start ()
   {
       ParticleEmitter pe = GetComponent<ParticleEmitter> ();
       
       int width = 3;
       int hegiht = 4;
       
       int[,] index = new int[width, hegiht];
       pe.Emit (index.Length);
       Particle[] particle = pe.particles;
       
       int count = 0;
       for (int z = 0; z < hegiht; z++) {
           for (int x = 0; x < width; x++) {
               index [x, z] = count;
               particle [count].position = new Vector3 (x, 0, -z);
               particle [count].size = 1.0f;
               count++;
           }
       }
       
       pe.particles = particle;
   }

}


単純な配置位置制御 (SHURIKEN版)


最低限、子にParticleSystemコンポーネントが必要
??いくつかの初期パラメータ値が入っているので事前に調整しておく必要あり??

using UnityEngine;
using System.Collections;

public class particleScriptTest1 : MonoBehaviour
{

  // Use this for initialization
   void Start ()
   {
       ParticleSystem pe = GetComponent<ParticleSystem> ();
       
       int width = 3;
       int hegiht = 4;
       
       int[,] index = new int[width, hegiht];
       pe.Emit (index.Length);
       ParticleSystem.Particle[] particle = new ParticleSystem.Particle[index.Length];
       pe.GetParticles(particle);
       
       int count = 0;
       for (int z = 0; z < hegiht; z++) {
           for (int x = 0; x < width; x++) {
               index [x, z] = count;
               particle [count].position = new Vector3 (x, 0, -z);
               particle [count].size = 1.0f;
               count++;
           }
       }
       
       pe.SetParticles(particle,index.Length);
   }

}

メニュー



  • 最終更新:2014-06-13 11:04:50

このWIKIを編集するにはパスワード入力が必要です

認証パスワード