首页 > 解决方案 > 粒子系统未播放

问题描述

编辑

所以看来,如果我把粒子作为我创建的预制枪对象的子对象,它就会起作用。我只是不能简单地从我存储预制件的文件夹中引用预制件。这有意义吗。我觉得我应该能够只引用它们而不需要它们在对象上。

嗨,所以我有以下代码,它接受了光线投射的影响。我比得到这个对象的标签并用它来找到我想要显示的粒子系统。

这是针对金属、污垢或水等表面的子弹撞击。

我将这些粒子效果作为预制件存储在我创建的枪端预制件内。粒子都存储在一个数组中。我在这个数组中旋转,比较对象标签和粒子系统的名称。如果我找到一个,我就把它放到光线投射的位置并播放它。

 if (Physics.Raycast(cam.transform.position, forwardVector, out hit, range))
        {
            string impactName = hit.transform.tag;
            //Debug.Log("This is the impact tag: " + impactName);
            foreach (ParticleSystem ps in impactParticles)
            {
                //Debug.Log("Is " + ps.transform.name.ToLower() + " equal to " + impactName.ToLower() + " == " + ps.transform.name.ToLower().Contains(impactName.ToLower()));
                if (ps.transform.name.ToLower().Contains(impactName.ToLower()))
                {
                    // This than transforms the position of the particle effect to that of the area that is shot.
                    ps.transform.position = hit.point + (hit.normal * 0.002f);
                    ps.transform.forward = hit.transform.forward;
                    ps.transform.up = hit.normal;
                    ps.Play();
                }
            }

这段代码没有给我任何错误,它只是不会显示粒子效果。我不知道这是我错过的事情还是我不知道的事情。仍然是 Unity 的新手。

在我把它做成一个预制之前,我简单地将它拖到脚本上,粒子系统在场景中,它会像这样工作。

标签: unity3draycastingparticlesparticle-system

解决方案


推荐阅读