我为我的明星做过脚本,给出1分,制作粒子,发出声音并摧毁物体。一切正常,但现在脚本等待,直到声音停止播放。在播放声音之前,你建议用什么方法来摧毁物体? 我可以制作新的gameobject音频源预制件,将它附加到星星组并像使用粒子系统那样调用它的播放,或者有更好的方法吗?
using UnityEngine;
using System.Collections;
public class Star : MonoBehaviour {
public ParticleSystem StarParticle;
public AudioClip otherClip;
IEnumerator OnTriggerEnter (Collider player)
{
ScoreManager.score += 1;
StarParticle.Play ();
AudioSource audio = GetComponent<AudioSource>();
audio.Play();
yield return new WaitForSeconds(audio.clip.length);
Destroy (gameObject);
}
}
这就是代码。
答案 0 :(得分:2)
通过阅读评论,这是怎么回事:
将audio.clip.length
的值转换为变量并减少它,例如除以2或4等,这样脚本将通过音频文件播放继续50%或25%。
IEnumerator OnTriggerEnter (Collider player)
{
ScoreManager.score += 1;
StarParticle.Play ();
AudioSource audio = GetComponent<AudioSource>();
waitValue = (audio.clip.length/2);
audio.Play();
yield return new WaitForSeconds(waitValue);
Destroy (gameObject);
}
答案 1 :(得分:1)
解决我的问题。 我禁用了对撞机(不允许其他ppl从该星上获取点)和网格(使星形不可见),然后在播放后我摧毁了我的星形游戏对象。谢谢回复!
使用UnityEngine; 使用System.Collections;
公共课明星:MonoBehaviour {
public ParticleSystem StarParticle;
IEnumerator OnTriggerEnter (Collider player)
{
ScoreManager.score += 1;
StarParticle.Play ();
AudioSource audio = GetComponent<AudioSource>();
audio.Play();
GetComponent<Collider>().enabled = false;
GetComponent<MeshRenderer>().enabled = false;
yield return new WaitForSeconds(audio.clip.length);
Destroy (gameObject);
}
}