首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >粒子系统在错误的时间播放

粒子系统在错误的时间播放
EN

Stack Overflow用户
提问于 2020-12-20 14:34:43
回答 2查看 52关注 0票数 0

我是Unity和coding的新手,我正在组织一个小项目来帮助我适应它。不过,我对粒子系统有一个问题。我想要它做的是当我按住空格键的时候同时播放两个粒子系统,然后当我松开空格键时停止,但是烟雾粒子系统只在我松开空格键后播放,当我再次按住它时停止。在我松开空格键后,火焰粒子系统也不会停止。有人能帮上忙吗?

下面是代码。

代码语言:javascript
复制
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();
        } 
    }
}
EN

回答 2

Stack Overflow用户

发布于 2020-12-20 16:08:28

GetKey函数每帧重置您的粒子系统,以便您在释放空格键之前看不到

代码语言:javascript
复制
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();
    } 
票数 0
EN

Stack Overflow用户

发布于 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"),因此在控制台中,您将始终知道发生了什么以及出了什么问题

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65377496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档