我是Unity和coding的新手,我正在组织一个小项目来帮助我适应它。不过,我对粒子系统有一个问题。我想要它做的是当我按住空格键的时候同时播放两个粒子系统,然后当我松开空格键时停止,但是烟雾粒子系统只在我松开空格键后播放,当我再次按住它时停止。在我松开空格键后,火焰粒子系统也不会停止。有人能帮上忙吗?
下面是代码。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Rocket : MonoBehaviour
{
public float fuel = 500f;
public float speed = 100f;
public Rigidbody rb;
public ParticleSystem flame;
public ParticleSystem smoke;
void Start()
{
flame.Stop();
smoke.Stop();
}
void FixedUpdate()
{
if (Input.GetKey(KeyCode.Space) && fuel > 0)
{
rb.AddForce(Vector3.up * speed);
float fuelUse = fuel-- * Time.deltaTime;
flame.Play();
smoke.Play();
}
}
}发布于 2020-12-20 16:08:28
GetKey函数每帧重置您的粒子系统,以便您在释放空格键之前看不到
if (Input.GetKeyDown(KeyCode.Space) && fuel > 0)
{
isPressed = true;
flame.Play();
smoke.Play();
}
if (isPressed && fuel > 0)
{
rb.AddForce(Vector3.up * speed);
float fuelUse = fuel-- * Time.deltaTime;
}
if (Input.GetKeyDown(KeyCode.Space))
{
isPressed = false;
flame.Stop();
smoke.Stop();
} 发布于 2020-12-20 16:10:41
你需要在if后面加上一个else。
这样,当你不按空格键时,它总是会停止,但当你按下空格键,燃料>0时,它就会启动。
在这种情况下,您可以做的一件很棒的事情是在if中放置一些Debug.Log()来检查它是否正在播放,这样您就可以发现其他问题。
例如,您可以使用flame.Stop()和smoke.Stop()添加else,并在其中放置一个Debug.Log(“Debug.Log”)和if _a_ Debug.Log("play"),因此在控制台中,您将始终知道发生了什么以及出了什么问题
https://stackoverflow.com/questions/65377496
复制相似问题