Unity AddExplosionForce () не применяет взрыв - PullRequest
0 голосов
/ 19 февраля 2020

При нажатии клавиши 'C' создается новый куб с твердым телом и добавляется в качестве дочернего объекта для GameObject. Однако, когда нажата клавиша F, я добавляю взрыв ко всем дочерним объектам, но ничего не происходит. Я попытался AddForce (), и это прекрасно работает, это просто AddExplosionForce (). Я только начал работать с единицей, так что это может быть глупой ошибкой.

Вот мой метод обновления скрипта:

void Update()
{
    if (Input.GetKeyDown(KeyCode.C) || Input.GetMouseButtonDown(0))
    {
        Vector3 pos = transform.position;
        cube = Instantiate(cubePrefab, pos, Quaternion.identity);
        GameObject ParentCube = GameObject.Find("GameObject");
        cube.transform.parent = ParentCube.transform;
    }
    if (Input.GetKeyDown(KeyCode.F))
    {
        foreach (Transform currentCube in transform)
        {
            Vector3 pointOfExplosion = new Vector3(transform.position.x - 1, transform.position.y - 1, transform.position.z - 1);
            currentCube.GetComponent<Rigidbody>().AddExplosionForce(20, pointOfExplosion, 10, 1);
        }
    }
}

1 Ответ

1 голос
/ 19 февраля 2020

Является ли ваш объект, к которому взрыв добавляется в ваши 10 единиц? Также вы пробовали перегруженную версию AddExplosionForce с последним аргументом «mode» как «Импульс»?

Из документации Unity:

Добавить мгновенный импульс силы к твердое тело, используя его массу.

Примените импульсную силу мгновенно с помощью одного вызова функции. Этот режим зависит от массы твердого тела, поэтому необходимо приложить больше усилий к pu sh или закрутить объекты с большей массой так же, как объекты с меньшей массой. Этот режим полезен для применения мгновенных сил, таких как силы от взрывов или столкновений. В этом режиме единица измерения параметра силы применяется к твердому телу как масса * расстояние / время

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