Страница 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);
}
}
}