###前提・実現したいこと
キー入力とUpdateとLateUpdateを利用して、パーティクルを一瞬だけ表示したいと考えています。
仕様:
Fキーを押した瞬間だけ、指定した再生位置でパーティクルを表示する。それ以外の時はパーティクルは非表示。
###試したこと
以下のようなコードを組んでゲームを実行してみましたが、意図通りの結果になりません。
C#
1 void Start(){ 2 pObject = GameObject.Find ("Particle System"); 3 particle = pObject.GetComponent<ParticleSystem> (); 4 5 particle.Simulate(0.0f,true,true); 6 particle.Stop (); 7 } 8 9 void Update(){ 10 if (Input.GetKeyDown (KeyCode.F)) { 11 if (particle.isStopped || particle.isPaused) { 12 particle.Simulate(3.0f,true,true); 13 particle.Play (); 14 Debug.Log ("A"); 15 } 16 } 17 } 18 19 void LateUpdate(){ 20 if (particle.isPlaying) { 21 particle.Stop (); 22 Debug.Log ("B"); 23 } 24 }
###発生している問題・エラーメッセージ
最初にFキーを押すとパーティクルは表示されて消えるが、その後、何度かFキーを押してみると、
パーティクルが表示される時と表示されない時がある。
また、パーティクルが表示されても、一瞬だけ表示しているようには見えず、表示されている時間が少し長い気がする。
また、コードでログを取ってみると、パーティクルが表示されていないときでも、「B」の出力が出続けます。
それならば、同じif文内の「particle.Stop();」が効いて、次のLateUpdateでは「if(particle.isPlaying)」の
if文に引っ掛からないはずなのに、何故か、そのif文に引っ掛かって「B」が連続して出力されます。
この辺りの挙動がわからないです。
キー入力でパーティクルを一瞬だけ表示する方法ならば、他にも方法があるのかもしれないですが、現状から、次の2点に関して教えていただきたいです。
・今回のソースコードでうまくいかない原因。 特に、「if(particle.isPlaying)」のif文に引っかかり続けているにも関わらず 「particle.Stop();」が効かない理由。 ・UpdateとLateUpdateを利用して、キー入力でパーティクルを一瞬表示させる方法。 (今回のコードの修正方法。)
しかし、UpdateとLateUpdateを使う仕様自体がbad codeであるのならば、代替の方法を教えて頂きたいです。
ご教授のほどよろしくお願いします。
###追記①
ご回答ありがとうございます。追記しました。
C#
1 //ここでパーティクルが停止される時間を指定 2 float particleDelayTime = .2f; 3 4 void Awake() 5 { 6 pObject = GameObject.Find ("Particle System"); 7 particle = pObject.GetComponent<ParticleSystem> (); 8 particle.gameObject.SetActive(false); 9 } 10 11 void Update() 12 { 13 if (Input.GetKeyDown ("f") && particle.isStopped) { 14 particle.gameObject.SetActive (true); 15 particle.Simulate (4.0f, true, true); //追記。 16 particle.Play (); //追記。 17 StartCoroutine (delay (particleDelayTime, () => { 18 particle.gameObject.SetActive (false); 19 })); 20 //for Debug 21 Debug.Log ("A"); 22 } 23 } 24 25 IEnumerator delay(float waitTime, UnityAction action) 26 { 27 yield return new WaitForSeconds(waitTime); 28 action(); 29 }

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/09/28 12:54 編集
2016/09/28 17:11
退会済みユーザー
2016/09/29 15:56 編集
2016/09/30 13:44
退会済みユーザー
2016/09/30 13:47