C# Unity UI Unity C#
Početna stranica
Polazna lekcija
Prava pristupa
Time
GameObject
Destroy i SetActive
Mathf
Input
SceneManagement
UI programiranje
Audio source
Vektori
Kvaternion
Transform
Instantiate
RigidBody
OnTrigger
OnCollision
RayCast
PlayerPref

RayCast

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.

Sintaksa:


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.

Primjer:


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.

Primjer:


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);
    } 
}       
            

Prijašnje

Sljedeće