Unity 3D Стоп порождения частиц после удара о стену - PullRequest
0 голосов
/ 28 мая 2019

Я делаю работу для школы: игра, как Бомбермен.
Моя проблема в том, что когда взрывается бомба, частицы должны перестать появляться после стены. Вот изображение проблемы:

У меня есть этот код здесь, чтобы вызвать бомбу и запустить сопрограмму, чтобы породить частицы в каждом направлении:

void Explode()
    {
        Instantiate(explosionPrefab, transform.position, Quaternion.identity);
        StartCoroutine(CreateExplosions(Vector3.forward));
        StartCoroutine(CreateExplosions(Vector3.right));
        StartCoroutine(CreateExplosions(Vector3.back));
        StartCoroutine(CreateExplosions(Vector3.left));
        GetComponent<MeshRenderer>().enabled = false;
        exploded = true;
        GetComponent<CapsuleCollider>().enabled = false;
        Invoke("desativar_particulas", 0.4f);
        Destroy(gameObject, .45f);

      }

А вот мой сопрограмма порождения частиц:

 private IEnumerator CreateExplosions(Vector3 direction)
{
    for (int i = 1; i < 3; i++)
    {

        RaycastHit hit;

        Physics.Raycast(transform.position + new Vector3(0, .5f, 0), direction * 10, out hit, i, levelMask);

        if (!hit.collider)
        {
                Instantiate(explosionPrefab, transform.position + (i * direction * 10), explosionPrefab.transform.rotation);
        }

        else
        {
            break;
        }


        yield return new WaitForSeconds(.05f);
    }
}

То, что если оператор должен сделать свое дело: стена имеет коллайдер компонента бокса, а частица имеет компонент коллайдера бокса в качестве триггера. Я что-то пропустил? Пожалуйста, помогите, спасибо.

Ответы [ 2 ]

1 голос
/ 28 мая 2019

В этом: Physics.Raycast(transform.position + new Vector3(0, .5f, 0), direction * 10, out hit, i, levelMask) Похоже, вы увеличиваете расстояние каждого броска, чтобы каждый раз достигать следующего блока (кстати, умный ход. Я бы сделал это гораздо более запутанным способом),но только на расстоянии до 3, тогда как во всех ссылках на местоположение взрывов вы увеличили его на десять.Возможно, вы хотели сделать что-то вроде этого:

Physics.Raycast(transform.position + new Vector3(0, .5f, 0), direction, out hit, i * 10, levelMask)

, где направление радиопередачи - это просто направление, которое вы вводите в функцию, а расстояние равноувеличено на десять?

0 голосов
/ 28 мая 2019

Вы можете настроить работу коллизий в системе частиц в этом подменю, сделать это динамически может быть сложно:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...