РЕДАКТИРОВАТЬ
Таким образом, получается, что если я поставлю частицы как дочерний элемент готового оружейного объекта, который я создал, это сработает, чем. Я просто не могу просто ссылаться на префаб из папки, в которой я хранил префабы. Имеет ли это смысл. Я чувствую, что должен иметь возможность просто ссылаться на них, чтобы они не находились на объекте.
Привет, поэтому у меня есть следующий код, который принимает то, что ударил в Raycast. Затем я получаю тег этого объекта и использую его, чтобы найти систему частиц, которую я хочу отобразить.
Это для пулевого удара по поверхности, такой как металл, грязь или вода.
У меня есть эти эффекты частиц в виде префабов, которые хранятся внутри этого префаба, который я создал. Все частицы хранятся внутри массива. Я вращаюсь через этот массив, сравнивая тег объектов с именем системы частиц. Если я найду один, я положу его в положение raycast и воспроизведу.
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.
Прежде, чем я сделал его сборным, я просто перетащил его на сценарий с системой частиц, находящейся на сцене, и она работала бы так: