Flytta och rotera
Time.deltaTime
Eftersom alla datorer är olika snabba så blir det lite konstigt om man har t.ex. en fast förflyttning eller fast rotation per bildruta.
Time.deltaTime är en float som innehåller tiden som gått sedan föregående bildruta i sekunder.
Det gör att om man multiplicerar en hastighet med Time.deltaTime så kommer det att bli en stor förflyttning om man har få fps och en mindre förflyttning om man har hög fps.
Om hastigheten ska vara 2 rutor per sekund så kommer objektet alltså att röra sig 2 * 1/30 per bildruta på en dator som har 30fps och 2 * 1/60 per bildruta på en dator som har 60fps.
Position
transform.Translate()
En metod som tar emot en Vector3 och adderar den till den nuvarande positionen - samma sak som att addera själv alltså, men via en metod.
transform.position
En Vektor3 som motsvarar objektets nuvarande x, y- och z-position i världen.
Ovanstående exempel skapar en ny vektor med x-värde 2, y-värde 3.2 och z-värde 0. Därefter byts objektets nuvarande position ut mot den nya vektorn.
Ovanstående exempel skapar först en ny vektor som beskriver hur mycket objektet ska förflyttas, och sedan adderar den vektorn till transform.position så att det nya värdet som transform.position har är den nya positionen den ska ha.
Vector3.Lerp()
Lerp står för "Linear interpolation". Förenklat kan man stoppa en "källvektor" och en "målvektor" och få ut en vektor som ligger mellan källan och målet. Man anger också en float som mäter hur långt längsmed rutten från källan till målet som den mellanliggande vektorn rört sig.
Detta brukar användas för att skapa "mjuka" rörelser och storleksförändringar.
Kör man ovanstående kod i Update() så kommer objektet att flytta sig halva vägen varje bildruta. Det kommer alltså egentligen aldrig att komma fram…
Float-värdet behöver vara mellan 0 och 1, för 1 innebär "hela vägen".
Rotation
Man jobbar sällan direkt med Quaternions i Unity; man skapar åtminstone sällan egna. Istället använder man olika metoder för att generera eller förändra quaternions.
transform.Rotate()
Roterar objektet ett givet antal grader i x, y och z-led.
Eller ett visst antal grader runt en given axel
transform.RotateAround()
Snurrar objektet ett givet antal grader runt en punkt och en axel som skär denna punkt.
transform.rotation
Om man fått fram en quaternion eller vill använda en färdig – t.ex. nollrotationen Quaternion.identity – så an man ändra på transform.rotation direkt.
transform.LookAt()
Används främst i 3D – roterar objektet så att dess interna "forward"-axel pekar mot en specifik position.
Motsvarigheten till LookAt() i 2d
Det finns ett lite "fuskigt" sätt att rotera ett objekt i 2d så att det pekar mot ett annat objekt i scenen.
Last updated