Del 3 (If's og input)
Bonus Info: C# if-statements
Det er tid til at introducere if
-statements. if
-statements er en måde at lave en beslutning i koden. Hvis en betingelse er sand, så udføres en blok kode. Hvis betingelsen er falsk, så udføres en anden blok kode.
Tag som eksempel denne kode:
Her tjekker vi om speed
er større end 18. Hvis det er, så skriver vi "Du er speed" i konsollen. Ellers skriver vi "Du er aight".
Brug Components
Snart har vi brug for at flytte vores spiller. Derfor skal vi bruge Rigidbody komponenten. For at gøre det kan vi gemme en reference til vores Rigidbody komponent ved at skrive:
Syntaksen GetComponent<Rigidbody>()
er måske jeres allerførste gang i ser en funktion. Selve GetComponent
er navnet på funktionen. Denne specifikke funktion findes på alle MonoBehaviours i Unity. Det næste er <RigidBody>
og det er fordi GetComponent
tager en type som argument og returnere en reference til den første komponent af den type på objektet.
Altså GetComponent<RigidBody>()
returnere en reference til den første Rigidbody komponent på objektet som scriptet er koblet til.
Input
Hvis vi vil lave en beslutning baseret på input, så kan vi bruge Input
klassen. Input klassen har en funktion GetAxisRaw
som tager en string som argument. Denne string repræsenterer navnet på en akse. Unity har nogle indbyggede akser som f.eks. "Horizontal"
og "Vertical"
. Når man kalder funktionen GetAxisRaw
returnerer den en float
værdi fra -1 til 1 baseret på input fra computeren.
Som eksempel kan vi skrive:
for at gemme to variable horizontalInput
og verticalInput
som indeholder input fra computeren.
Vi kan gange disse input værdier med vores speed
variabel for at flytte vores spiller.
Her gemmer vi vores nuværende hastighed i movement
og så ændrer vi x
og z
komponenterne baseret resultaterne fra før. Derefter sætter vi vores hastighed tilbage til movement
.
Forberedelse til Opgave 3
Input Manager
Her til sidst vil vi give lidt ekstra info til at løse den sidste opgave. Det er nemlig sådan at man kan lave sine egne input og akser i "Input Manager". Der har vi tænkt os at lave en ny input akse vi kan bruge til at dreje spilleren med.
Ændre 30
til 31
, så vi har et mere input. Derefter:
Kald den
TurnAround
.Sæt
Positive Button
tilright
.Sæt
Negative Button
tilleft
.Sæt
Type
tilKey or Mouse Button
.
Split Spiller fra Model
For at dreje spilleren er det lettest at fjerne modellen fra spilleren og, tilføje en 'capsule' som child. Dernæst, for at indikere hvad der er frem kan vi også tilføje en cube. Det ser sådan ud:
Transform Rotate
Ligesom tidligere kan vi få vores Transform
component I koden ved at skrive GetComponent
.
Men når vi gør det spotter vi at vi får en fejl som nævner at den findes allerede. Det skyldes at Unity allerede har lavet den variabel med den specifikke værdi for os. En af funktionerne vi kan kalde på vores Transform
er Rotate
, et eksempel på hvordan funktionen bruges kan ses herunder:
Denn kode roterer 5 grader om Y-aksen hvert frame.
Opgave 3
Slå "Rotate unity manual" op på din favorit search engine
Ud fra
“TurnAround”
axis få karakteren til at dreje rundt når du trykker påleft
ogright
knapperne.
Når opgaven er