我想在我的一个小空间游戏中添加一个粒子效果,我设置轴为"垂直",然后检查它是否大于0粒子系统(向前)
flyfloat = Input.GetAxis("Vertical");
if(flyfloat > 0)
{
particles.Play();
}
else
{
particles.Stop();
}
控制它是否正在播放粒子系统,但我的问题是,它只给出一些粒子,然后停止,我已经查看了flyfloat
,它是在1。
这里可能有什么问题?
感谢你的问题是不完整的,例如我不知道你在哪里使用这些代码行…在Update()
方法或Start()
方法中。
假设您在Update()
方法中调用它。让我先解释一下这里出了什么问题。所以当你按下UP_Arrow时Update()
每帧都会被调用键flyfloat = 1
。没关系,但是现在当你进入if循环检查flyfloat > 0
并调用partciles.Play()
时它会被调用每一个Update()
循环意味着每一帧发生的是你的ParticleSystem
每一帧都被播放所以根本没有播放。当你停止按UP_Arrow时按下flyfloat = 0
键,它将进入else循环并停止播放ParticleSystem
。
partciles.Play()
和partciles.Stop()
会被调用一次关键。下面的代码将使ParticleSystem
播放时,按下UP_Arrow键并在按DOWN_Arrow时停止关键
public ParticleSystem particles;
public float flyfloat;
bool isParticlePlaying = false;
private void Update()
{
flyfloat = Input.GetAxis("Vertical");
if (flyfloat > 0 && !isParticlePlaying)
{
particles.Play();
isParticlePlaying = true;
}
else if (flyfloat < 0 && isParticlePlaying)
{
particles.Stop();
isParticlePlaying = false;
}
}