Страница 1 из 1

защита от взрыва

СообщениеДобавлено: 13 янв 2017, 12:45
kelod
использую для взрыва AddExplosionForce, как защитить объекты?
т.е. сделать преграду, за которой бы взрывная волна не действовала

Re: защита от взрыва

СообщениеДобавлено: 13 янв 2017, 13:24
waruiyume
Пустить луч из эпицентра взрыва в позицию объекта, если луч попел не в объект и не в пустоту, значит тот чем-то прикрыт(если объект большой, то же самое, только с несколькими лучами).

Re: защита от взрыва

СообщениеДобавлено: 13 янв 2017, 14:20
kelod
а если у меня куча объектов? из всех лучи пускать?
покажите пример как это сделать

Re: защита от взрыва

СообщениеДобавлено: 13 янв 2017, 14:47
Syberex
Можно не разрушаемые объекты пометить специальным тегом (или другим способом...), при взрыве вы видимо получаете все объекты в радиусе взрыва (overlap),
после чего надо проверить содержит ли массив объектов не разрушаемые, если содержит надо пускать лучи во все объекты и проверять попадаем или нет, иначе взрываем все объекты.

Re: защита от взрыва

СообщениеДобавлено: 13 янв 2017, 14:51
waruiyume
Синтаксис:
Используется csharp
using UnityEngine;

public class Boom : MonoBehaviour
{
    public float rad = 7;
    public float force = 100;

    [ContextMenu("Start")]
    void Start ()
    {
        var colliders = Physics.OverlapSphere(transform.position, rad);

        foreach (var c in colliders)
        {
            RaycastHit hit;
            if (Physics.Linecast(transform.position, c.ClosestPointOnBounds(transform.position), out hit))
            {
                if (hit.transform.root != c.transform.root)
                    continue;
            }

            var rb = c.GetComponent<Rigidbody>();
            if (rb)
                rb.AddExplosionForce(force, transform.position, rad);
        }
    }
}