unity3d - 粒子系统未播放
问题描述
编辑
所以看来,如果我把粒子作为我创建的预制枪对象的子对象,它就会起作用。我只是不能简单地从我存储预制件的文件夹中引用预制件。这有意义吗。我觉得我应该能够只引用它们而不需要它们在对象上。
嗨,所以我有以下代码,它接受了光线投射的影响。我比得到这个对象的标签并用它来找到我想要显示的粒子系统。
这是针对金属、污垢或水等表面的子弹撞击。
我将这些粒子效果作为预制件存储在我创建的枪端预制件内。粒子都存储在一个数组中。我在这个数组中旋转,比较对象标签和粒子系统的名称。如果我找到一个,我就把它放到光线投射的位置并播放它。
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 的新手。
在我把它做成一个预制之前,我简单地将它拖到脚本上,粒子系统在场景中,它会像这样工作。
解决方案
推荐阅读
- sql - 在 PostgresSQL 上添加/更新大数据的问题
- azure - 如何为不同区域的自定义域复制 SSL 证书
- javascript - 有什么方法可以在 x 轴上强制附加最后一个值?
- android - 如何从Android中的云Firestore获取集合内的对象列表?
- react-native - 使用 React native 设置 Android 模拟器的问题
- html - 我想制作对象并将其绑定到打字稿中的html
- unit-testing - AWS Mock 无法模拟 Lambda 调用()
- javascript - React:如何使用 react-image-picker 选择多个图像
- c# - 如何在c#中创建多维数组
- bash - 循环通过 CSV 时输出混乱