Raycast, ссылка на последний объект

175
12 января 2019, 06:10

Светим лучом на объект. Вопрос: как получить ссылку на этот объект, когда луч перестает на него светить?

if (Physics.Raycast(ray, out hit, Mathf.Infinity, layerMask))
{  
    obj = hit.collider.gameObject;  
    // действие с объектом
}
else
{       
    // ссылка на объект теряется
}

К примеру, светим на объект, получаем его компонент и меняем его цвет. Потом убираем луч и нужно поменять цвет обратно.

Answer 1

Как один из вариантов, можно создать два списка объектов. В одном ("старом списке") будем хранить ссылки на объекты, полученный рейкастом в прошлый раз, а второй ("новый") список будем заполнять при текущем рейкасте.

После этого выполняем действия с объектами "нового" списка.

Затем пробегаем по всем элементам "старого списка" и ищем соответствующие объекты в "новом списке". Если совпадений нет - значит "луч перестает светить" - производим действия, которые необходимо произвести в данном случае.

После этого "старый список" заменяем значениями "нового", а "новый" очищаем.

READ ALSO
C# Oxyplot. Вылезает лог при зуме

C# Oxyplot. Вылезает лог при зуме

Как исправить лог при зуме?

195
Найти protected метод после наследования в c#

Найти protected метод после наследования в c#

Есть класс ApplicationClass с методом CustomMethod:

184
Элементы массивов в Unity

Элементы массивов в Unity

Доброго времени суток

155