粒子系统的统一性并不总是表现为统一性



我想在我的一个小空间游戏中添加一个粒子效果,我设置轴为"垂直",然后检查它是否大于0粒子系统(向前)

flyfloat = Input.GetAxis("Vertical");
if(flyfloat > 0)
{
particles.Play();
}
else
{
particles.Stop();
}

控制它是否正在播放粒子系统,但我的问题是,它只给出一些粒子,然后停止,我已经查看了flyfloat,它是在1。

这里可能有什么问题?

感谢

你的问题是不完整的,例如我不知道你在哪里使用这些代码行…在Update()方法或Start()方法中。

假设您在Update()方法中调用它。让我先解释一下这里出了什么问题。所以当你按下UP_ArrowUpdate()每帧都会被调用键flyfloat = 1。没关系,但是现在当你进入if循环检查flyfloat > 0并调用partciles.Play()时它会被调用每一个Update()循环意味着每一帧发生的是你的ParticleSystem每一帧都被播放所以根本没有播放。当你停止按UP_Arrow时按下flyfloat = 0键,它将进入else循环并停止播放ParticleSystem

为了解决这个问题,你可以引入一个布尔值,当你按下UP_Arrow时,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;
}
}

最新更新