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

Vektori

Vektor je matematički koncept koji se sastoji od magnitude i smjera.

U Unityju vektore koristimo za manipulaciju pozicije i veličine.

Ispod se nalazi sintaksa vektora za 3d prostor gdje su x, y i z flout-ovi.

Sintaksa:


Vector3 imeVektora = new Vector3(x, y, z);    
            


Distance

Udaljenost 2 vektora možemo provjeriti uz pomoć Vector3.Distnace.

Na prvo mijesto napišemo početni vektor, a na drugu poziciju krajnji vektor.

Primjer:


private Vector3 vektor1;
private Vector3 vektor2;

private float udaljenost;

void Start()
{
    vektor1 = new Vector3(1, 1, 1);
    vektor2 = new Vector3(2, 2, 2);

    udaljenost = Vector3.Distance(vektor1, vektor2);
} 
            


Lerp

Lerp koristimo kako bi mogli glatko interpolirati između dva vektora.

Prvo napišemo početni vektor, zatim konačni vektor. Treća vrijednost je brzina kojom će se ta interpolacija desiti.

Primjer:


private Vector3 vektor1;
private Vector3 vektor2;

[SerializeField] float brzina;

void Start()
{
    vektor1 = new Vector3(1, 1, 1);
    vektor2 = new Vector3(2, 2, 2);
}

void Update()    
{
    vektor1 = Vector3.Lerp(vektor1, vektor2, Time.deltaTime * brzina);
}
            


MoveTowards

MoveTowards je vektorska funkcija koju koristimo za postupno pomicanje objekta s jedne točke na drugu.

Za razliku od vektorske funkcije Lerp koja interpolira između dviju točaka na temelju vrijednosti t, vektorska funkcija MoveTowards pomiče objekt prema ciljnoj točki brzinom definiranom udaljenosti koju želite preći u jednom koraku.

Primjer:


private Vector3 vektor1;
private Vector3 vektor2;

[SerializeField] float brzina; // maksimalna udaljenost koju objekt može prijeći u jednom koraku.


void Start()
{
    vektor1 = new Vector3(1, 1, 1);
    vektor2 = new Vector3(2, 2, 2);
}

void Update()    
{
    vektor1 = Vector3.MoveTowards(vektor1, vektor2, Time.deltaTime * brzina);
} 
            

Float brzina je maksimalna udaljenost koju objekt može prijeći u jednom koraku.

NAPOMENA: float brzina ne određuje vrijeme u kojem će se desiti interpolacija vektora. Na primjer, ako imamo interpolaciju s 0 na 1 i interpolaciju s 0 na 10, te za obje interpolacije postavimo istu brzinu, brže će se dogoditi interpolacija s 0 na 1 zbog manje “udaljenosti”.


Primjer:


private Vector3 vektor1;
private Vector3 vektor2;
private Vector3 vektor3;
private Vector3 vektor4;

[SerializeField] float brzina; // maksimalna udaljenost koju objekt može prijeći u jednom koraku.


void Start()
{
    vektor1 =  vektor2 = new Vector3(0, 0, 0);
    vektor3 = new Vector3(1, 1, 1);
    vektor4 = new Vector3(10, 10, 10);
}

void Update()    
{
    vektor1 = Vector3.MoveTowards(vektor1, vektor3, Time.deltaTime * brzina); // "udaljenost"(|0-1| = 1)
    vektor2 = Vector3.MoveTowards(vektor1, vektor4, Time.deltaTime * brzina); // ovdje interpolacija traje duže zbog veće "udaljenosti" (|0-10| = 10)
} 
            


Prijašnje

Sljedeće