я создал текущую установку: Raycast детектирования от GameObject до геймобжекты
, который в основном две сетки, где задняя один будет невидимым (отключено визуализации), но я оставил его для контекста.
Цель состоит в том, чтобы создать raycast из каждой плитки в задней сетке, которая обнаруживает, что что-то перед ним, а затем изменяет тег плитки.
Мой код выглядит следующим образом:
int tileNumber = 0;
for (float y = 0; y > mapHeight; y--)
{
for (float x = 0; x < mapWidth; x++)
{
tile.GetComponent<Renderer>().enabled = true;
GameObject go = Instantiate(tile, new Vector3(x/3, y/3, -2), Quaternion.identity) as GameObject;
tileNumber++;
go.name = "tile" + tileNumber;
go.tag = "grid";
RaycastHit hit;
Vector3 fwd = go.transform.TransformDirection(Vector3.forward);
Debug.DrawRay(go.transform.position, fwd * 50, Color.green);
if(Physics.Raycast(go.transform.position, fwd, out hit, 200)){
go.tag = "walkableGrid";
}
}
}
Но луч Debug даже не показывает, а тег не изменяется.
Изображение, которое показывает лучи действительно работают, просто не обнаруживает свою карту сетку:
EDIT: программист пытался мне помочь, но его решение не работает для меня. Он упомянул этот вопрос может лежать в другом месте, так что если кому-то интересно, как он есть, Heres мой проект: https://www.dropbox.com/s/535soeswrgq37b4/MTA16336_Project_Boardgame.rar?dl=0
«Но это не работает. Даже отладка не появляется». В вашем коде нет Debug.Log. Что не работает и что работает? – Programmer
Я верю, что «Debug.DrawRay (go.transform.position, fwd * 50, Color.green); должен показать видимый луч –
Да, но это зависит от того, как часто он называется. Будет сложно понять, не вызван ли он каждый кадр. Вам нужно также добавить Debug.Log, чтобы убедиться, что часть кода достигнута. – Programmer