Get Me sh частиц коллайдера - PullRequest
1 голос
/ 28 февраля 2020

Как мне go получить фильтр me sh для столкновения частиц и назначить мне me sh для частицы.

Итак, у меня OnParticleCollision. Я бью объект, беру этот объект, я получаю его Me sh Filter. Затем я хочу присвоить это частице моей частицы, чтобы она приняла эффект своей физической сборки.

Вот мой код.

    void Start()
    {
        Debug.Log("Script Starting...");
        part = GetComponent<ParticleSystem>();
        collisionEvents = new List<ParticleCollisionEvent>();
    }

    void OnParticleCollision(GameObject coll)
    {
        // Getting the object of the collider
        Collider obj = coll.GetComponent<Collider>();

        Mesh mesh = obj.GetComponent<MeshFilter>().mesh;

        // Assign the mesh shape of the collider to that of the particle
        ElectricWave.shape.meshRenderer = mesh; // I know this doesnt work as is.

        // Play effect
        ElectricWave.Play();

    }

1 Ответ

0 голосов
/ 29 февраля 2020

Если вы хотите, чтобы все частицы в системе приняли меня sh, это просто. Просто возьмите объект столкновения со мной me sh и примените его к ParticleSystemRenderer:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ParticleCollision : MonoBehaviour
{

    private ParticleSystemRenderer particleRenderer;

    void Start()
    {
        particleRenderer = GetComponent<ParticleSystemRenderer>();
    }

    void OnParticleCollision(GameObject other)
    {
        particleRenderer.renderMode = ParticleSystemRenderMode.Mesh;
        particleRenderer.material = other.GetComponent<Renderer>().material;
    }
}

Однако, если вы вместо этого хотите изменить me sh из только этой частицы , это будет намного сложнее, поскольку данные ParticleCollisionEvent не содержат информацию о том, какая частица столкнулась с ней. Хорошей отправной точкой может быть поиск значения ParticleCollisionEvent.intersection и попытка найти ближайшую к этой точке частицу, используя GetParticles . Это может быть чрезвычайно затратно в вычислительном отношении, хотя, если оно вообще работает.

Более простым способом может быть фальсификация, если у вас есть системы с несколькими частицами с чрезвычайно низкими скоростями эмиссии, так что изменение me sh вся система частиц приводит к изменению только одной видимой частицы и сбросу me sh системы до того, как каждая новая частица испускается. Таким образом, вы получаете визуальный эффект, который вы ищете, но под капотом это несколько систем частиц, действующих как одна.

...