Dra objektet in i scenen. Lägg till en komponent till ett objekt. Objektet ska ha en Kolliderare och en Styv kropp ha. Den stela kroppen bör ställas in på Kinematic. Detta innebär att objektet inte rör sig i fysiksimuleringen om det inte flyttas av ett skript.
Aktivera simulerade och använd fullständiga kinematiska kontakter.
Grundklassen definieras i skriptet och ser till att gravitationen fungerar. Lägg till PhysicsObject som en komponent. Välj Nytt skript och öppna det med Skapa och Lägg till. Dubbelklicka och öppna skriptet i den visuella redigeraren.
Eftersom det är fysik lägger du till funktionen FixedUpdate:
void FixedUpdate ()
Inom funktionen FixedUpdate bör objektet röra sig nedåt med varje ram eftersom det dras nedåt av tyngdkraften.
Därför behöver vi en variabel för hastighet:
skyddad Vector2 -hastighet;
Andra klasser använder det fysiska objektet. Du bör kunna komma åt den, men inte utanför den angivna klassen.
Tyngdkraften kan påverkas: Ett tyngdkraftsvärde krävs för detta:
public float gravityModifier = 1f;
Tyngdkraftsvärdet används i Unitys fysiksystem. Det hela är gjort med Time.deltaTime; multiplicerar och tillhör FixedUpdate:
hastighet + = gravityModifier * Physics2D.gravity * Time.deltaTime;
Nu är det definierat var objektet är efter effekterna av gravitationen:
vektor2 deltaPosition = hastighet * Time.deltaTime;
Den nya positionen används för rörelsen:
Vector2 move = Vector2.up * deltaPosition.y;
En annan funktion definieras:
tomrumsrörelse (Vector2 -rörelse)
Nu görs ett tillägg i FixedUpdate: Objektet ska flyttas baserat på de beräknade värdena:
Rörelse ();
Detta bör ske på grundval av Rigidbody2D:
skyddad Rigidbody2D rb2d;
Det finns också en OnEnable ();
rb2d = GetComponent ();
I rörelsefunktionen specificeras att rörelsen sker i varje ram:
rb2d.position) rb2d.position + flytta;
Det färdiga manuset för ett objekt med gravitation ser ut så här:
Om du sparar manuset och går tillbaka till Unity, faller objektet ner när du trycker på play.