Ziehe das Objekt in die Szene. Füge einem Objekt eine Komponente hinzu. Das Objekt sollte einen collider i jedan Rigidbody haben. Der Rigidbody sollte auf Kinematic gestellt sein. Das bedeutet, das Objekt bewegt sich nicht in der Physiksimulation, solange es nicht von einem Script bewegt wird.
Aktivirajte simulirane i koristite potpune kinematičke kontakte.
Osnovna klasa je definisana u skripti i osigurava da gravitacija radi. Dodajte PhysicsObject kao komponentu. Odaberite Nova skripta i otvorite je sa Kreiraj i Dodaj. Dvaput kliknite i otvorite skriptu u vizualnom uređivaču.
Budući da se radi o fizici, dodajte funkciju FixedUpdate:
void FixedUpdate ()
Unutar funkcije FixedUpdate, objekt bi se trebao pomicati prema dolje sa svakim okvirom jer ga gravitacija povlači prema dolje.
Stoga nam je potrebna varijabla brzine:
zaštićena vektorska brzina Vector2;
Druge klase koriste fizički objekt. Trebali biste mu moći pristupiti, ali ne izvan određene klase.
Na gravitaciju se može utjecati: Za to je potrebna vrijednost gravitacije:
javni plovak gravityModifier = 1f;
Vrijednost gravitacije koristi se u Unityjevom fizičkom sistemu. Cijela se stvar radi s Time.deltaTime; množi se i pripada FixedUpdate:
velocity + = gravityModifier * Physics2D.gravity * Time.deltaTime;
Sada je definirano gdje se objekt nalazi nakon djelovanja gravitacije:
vector2 deltaPosition = brzina * Time.deltaTime;
Novi položaj se koristi za kretanje:
Vector2 potez = Vector2.up * deltaPosition.y;
Definisana je još jedna funkcija:
kretanje praznine (potez Vector2)
Sada je napravljen dodatak u FixedUpdate: Objekt bi se trebao kretati na osnovu izračunatih vrijednosti:
Pokret ();
To bi se trebalo dogoditi na temelju Rigidbody2D:
zaštićeno Rigidbody2D rb2d;
Tu je i OnEnable ();
rb2d = GetComponent ();
U funkciji kretanja navedeno je da se kretanje odvija u svakom okviru:
rb2d.position) rb2d.position + potez;
Gotova skripta za objekt s gravitacijom izgleda ovako:
Ako sačuvate skriptu i vratite se u Unity, objekt pada prema dolje kada pritisnete play.