RaycastHit?BacanjeZrakaZaSloj(Sloj sloj) { int maska = 1 << (int)sloj; Ray zraka = kamera.ScreenPointToRay(Input.mousePosition); RaycastHit udar; bool udarioJe = Physics.Raycast(zraka, out udar, udaljenostDoPozadine, maska); if (udarioJe) { return(udar); } return(null); }
// Update is called once per frame void priPromjeniSloja(Sloj noviSloj) { switch (noviSloj) { case Sloj.Prohodno: Cursor.SetCursor(kursorZaHodanje, kursorHotspot, CursorMode.Auto); break; case Sloj.KrajSvijeta: Cursor.SetCursor(nepoznatiKursor, kursorHotspot, CursorMode.Auto); break; case Sloj.Neprijatelj: Cursor.SetCursor(kursorZaNapad, kursorHotspot, CursorMode.Auto); break; default: Debug.Log("Ne znam koji kursor prikazati"); return; } }
// Update is called once per frame void Update() { foreach (Sloj sloj in prioritetiSlojeva) { var udar = BacanjeZrakaZaSloj(sloj); if (udar.HasValue) { _udara = udar.Value; if (_udaraSloj != sloj) //ako se promjenio sloj { _udaraSloj = sloj; promatraciPromjeneSloja(sloj); } _udaraSloj = sloj; return; } } _udara.distance = udaljenostDoPozadine; _udaraSloj = Sloj.KrajSvijeta; promatraciPromjeneSloja(udaraSloj); }