2016-04-11 3 views
0

最近この質問をしてみましたが、十分な質問ではないことが分かりました。私のゲームでは、プレイヤーは消防士の学習者であり、私は自分のゲームで(プレイヤーが予測できないように)ランダムに発砲したいが、これをどのように実装するのか分からなかった。unity3dのシーンの異なる場所でパーティクルシステムをランダムに初期化する方法

using UnityEngine; 
using System.Collections; 
public class Example : MonoBehaviour { 
public ParticleSystem[] particles; 
public int numOn = 3; 
public int j; 

void Start() { 
    for (int i = 0; i < particles.Length - 1; i++) { 
     j = Random.Range(i + 1, particles.Length - 1); 
     ParticleSystem t = particles[j]; 
     particles[j] = particles[i]; 
     particles[i] = t; 
    } 
    for (j = 0; j < numOn; j++) 
    { 
     particles[j].Play(); 
    } 
     } 
     } 
: コードはここにある は、これまでのところ私はこれを行っているが、何も良い行かない(私は3〜5の粒子システムを持って団結でトンと呼ばれる空のオブジェクトを持っている、そしてすべては開始時に目を覚ましていけないように設定されています)。

ヘルプは高く評価されます:-)

答えて

1

プレハブを試すことができます。エディタにゲームオブジェクトを作成します。ゲームオブジェクトには、オブジェクトに必要なパーティクルシステムとスクリプトがあります。それがうまくいったら、オブジェクトを階層からプロジェクトにドラッグします。これでプレハブが作成されます(これをシーンから削除できます)。今度は、あなたの産卵スクリプトで、タイプGameObjectのフィールドを追加し、前に作ったプレハブをその中にドラッグします。さて、あなたが1つを作成する必要がある場合は、Instantiate(prefabVar)と呼んで、あなたのプレハブのコピーを作成してください。

編集:あなたの特定のケースでは
、あなたが唯一の火がランダムな場所にインスタンス化することにしたいから、あなたはこのようなあなたの産卵スクリプトを見て何かかもしれない:

public Transform[] SpawnPoints; 
public GameObject FirePrefab; 

void Start() { 
    Transform selectedSpawnPoint = SpawnPoints[(int)Random.Range(0, SpawnPoints.Count - 1)]; 
    Instantiate(FirePrefab, selectedSpawnPoint.position, selectedSpawnPoint.rotation); 
} 

このソリューションは、を可能にします必要に応じて複数の火災オブジェクトを生成する可能性があります。別の方法としては、シーン内に正確に1つの発射オブジェクトしかない場合に限ります。プレハブからインスタンス化する代わりに、オブジェクトはすでにシーンにあり、シーンの開始時にそれをあなたのスポーンポイントの1つに移動するだけです。私はこれらの線より上まで良いつもり

public Transform[] SpawnPoints; 

void Start() { 
    Transform selectedSpawnPoint = SpawnPoints[(int)Random.Range(0, SpawnPoints.Count - 1)]; 
    transform.position = selectedSpawnPoint.position; 
    transform.rotation = selectedSpawnPoint.rotation; 
} 
+0

::火災オブジェクト自体のスクリプトの例 「あなたは1を作成する必要がある場合さて、ちょうどあなたのプレハブのコピーを作成するためにインスタンス化(prefabVar)を呼び出します。」 しかし、私はシーン内でそれをどのようにランダムに行うことができますか? まず、削除前にシーン内の特定の場所にこれらのプレハブを配置する必要があります。 第2に、そのレベルが読み込まれるか再開されるたびに、どのようにランダムな場所でそれを行うことができますか? –

+0

@FarhanAliそのコメントで意味するものがわかりません – Steven

+0

申し訳ありません私はそのコメント –

関連する問題