на нём есть 3 материала = materials.Length 3
Мне необходимо определить через Raycast какая именно текстура попала в луч. Делаю проверку:
public Texture2D[] textures;
Renderer r = hit.collider.GetComponent<Renderer>();
for (int i = 0; i < r.materials.Length; i++){
for (int a = 0; a < textures.Length; a++){
if (r.materials[i].mainTexture == textures[a].texture){
print(textures[a].texture);
}}}}
в итоге в консоле получаю название текстуры, которая никак не соответствует той, куда попал луч. Как фиксить?
Надеюсь ясно описал суть
не использовать мультиматериалы. Твой кейс не разрешим. Юнька рисует все полигоны столько раз, сколько матов и просто кулит для камеры не нужные. СОответственно ожидать, что полигонов с этим матом нет - не стоит.
То есть под каждый материал отдельно полигоны отделить как отдельный объект, не иначе?(
это хорошая практика, а мультиматериалы просто умножают кол-во поликов в сцене на кол-во матов.
Но вообще можно через очко решить задачу. Из каста ты можешь получить ювишку и сравнить с каким-то рефом координаты. Можно в принципе даже пиксель взять из этих координат и сравнить с каким-то по цвету. Так в общем случае можно понять какую текстуру ты ткнул ^_^
Понял-принял. Спасибо, что с первого раза понял, что я написал :D
в принципе, так как текстуры у тебя разные, ты можешь из каждой текстуры взять цвет пикселя по этим координатам и прочекать. Там, правда, надо потестить, возможно получить каку из-за фильтрации. Но вроде не должно.
Обсуждают сегодня