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

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

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

Сообщение kelod 13 янв 2017, 12:45

использую для взрыва AddExplosionForce, как защитить объекты?
т.е. сделать преграду, за которой бы взрывная волна не действовала
kelod
UNIт
 
Сообщения: 139
Зарегистрирован: 26 ноя 2012, 16:45

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

Сообщение waruiyume 13 янв 2017, 13:24

Пустить луч из эпицентра взрыва в позицию объекта, если луч попел не в объект и не в пустоту, значит тот чем-то прикрыт(если объект большой, то же самое, только с несколькими лучами).
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

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

Сообщение kelod 13 янв 2017, 14:20

а если у меня куча объектов? из всех лучи пускать?
покажите пример как это сделать
kelod
UNIт
 
Сообщения: 139
Зарегистрирован: 26 ноя 2012, 16:45

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

Сообщение Syberex 13 янв 2017, 14:47

Можно не разрушаемые объекты пометить специальным тегом (или другим способом...), при взрыве вы видимо получаете все объекты в радиусе взрыва (overlap),
после чего надо проверить содержит ли массив объектов не разрушаемые, если содержит надо пускать лучи во все объекты и проверять попадаем или нет, иначе взрываем все объекты.
Аватара пользователя
Syberex
Адепт
 
Сообщения: 2292
Зарегистрирован: 14 янв 2011, 20:35
Откуда: Кострома
  • Сайт

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

Сообщение waruiyume 13 янв 2017, 14:51

Синтаксис:
Используется 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);
        }
    }
}
 
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: wasp и гости: 25