RayCast je tehnika koja se koristi za određivanje interakcije između zrake i objekata u sceni.
Moežemo ga koristi za detektiranje ako igrač gleda u određen objekt, pucanje...
Pišemo ga tako što prvo definiramo iz koje pozicije želimo ispaliti zraku, zatim u kojem smijeru. Nakon toga joj nadodajemo RaycastHit koji pohranjuje podatke o sudaru zrake s ostalim objektima. Kao zadnje postavljamo na koju udaljenost želimo da se ta zraka ispali. Ako ništa ne postavimo na mijesto udaljenosti onda će ta udaljenost biti beskonačna.
Physics.Raycast(pozicijaIspaljivanja, smijerIspaljivanja, out RaycastHit, duljinaZrake);
U sljedećem primjeru ćemo ispisivati ime objekta kojeg je zraka pogodila. Ako ne pogode niti jedan objekt ipisati će tu poruku u konzolu.
RaycastHit pogoden;
public float duljinaZrake;
void Update()
{
Vector3 pozicijaIspaljivanja = this.transform.position;
Vector3 smijerIspaljivanja = this.transform.forward;
if (Physics.Raycast(pozicijaIspaljivanja, smijerIspaljivanja, out pogoden, duljinaZrake))
{
//ispisujemo ime objekta kojeg je pogodio RayCast
Debug.Log(pogoden.collider.name);
}
else
{
Debug.Log("Zrake nisu pogodile niti jedan objekt");
}
}
U sljedećem primjeru ćemo uništiti objekt kojeg su zrake pogodile ako pritisnemo lijevi klik miša.
RaycastHit pogoden;
public float duljinaZrake;
void Update()
{
Vector3 pozicijaIspaljivanja = this.transform.position;
Vector3 smijerIspaljivanja = this.transform.forward;
if (Physics.Raycast(pozicijaIspaljivanja, smijerIspaljivanja, out pogoden, duljinaZrake) && Input.GetKeyDown(KeyCode.Mouse0))
{
Destroy(pogoden.collider.gameObject);
}
}