Hur man gör en enkel spel i Unity 3D (6 / 12 steg)
Steg 6: Att göra spelaren flytta runt
Välj spelaren i hierarkin.
Minimera komponenter som du inte vill se öppna i granskaren genom att klicka ner pilarna till vänster om namnet på varje komponent. Detta kommer att rensa upp din arbetsyta lite.
Klicka på Lägg till komponent längst ned i granskningsfönstret. Välj nytt manus, namn skriptet något lik "PlayerController" och välj ett programmeringsspråk. Jag använder CSharp. Klicka på skapa och lägga till.
För att hålla filer organiseras, öppna mappen tillgångar i Project-fönstret och skapa en mapp som kallas skript. Sätta din nya skript i den här mappen.
För att öppna skriptet för redigering, dubbelklicka på skriptets namn i granskaren, eller öppna den från Project-fönstret. Detta öppnar en programmeringsmiljö kallas MonoDevelop.
Obs: Om detta är första gången du kodning, bör du veta att det kan vara riktigt nitpicky. Se till att du är konsekvent med stavning, fall och med öppning och stängning av hakparenteser, parenteser, klammerparenteser, offerter, etc. Också, se upp för fel som resulterar från att inte ha ett semikolon i slutet av en rad kod.
Det bör redan vara två avsnitt ingår i din kod som standard: annullera Start () och annullera uppdatering (). Starta går när objektet kommer in i spelet och uppdatera körs kontinuerligt medan objektet är i spelet. Vi kommer att lägga till en tredje, kallas FixedUpdate för att hantera fysik-relaterade protokoll. Det bör se ut så här:
void FixedUpdate () {
}
Innan vi kan mata in kommandon, måste vi deklarera variabler. Detta görs mot toppen av sidan inom klammerparenteserna efter offentliga klass PlayerController (eller liknande): Monobehaviour, men innan funktionen void Start(). För rörelse, kommer att vi använda en variabel som kallas för "hastighet", som vi kan justera för att bestämma hastigheten vid vilken vår karaktär flyttar runt arenan. Förklara den variabeltyp (float) och namnet (hastighet) som så:
offentliga flyta hastighet;
Semikolonet berättar programmet att detta är slutet av raden av koden. Du får ett felmeddelande om du glömmer att ta ett semikolon i slutet av varje/mest rader kod, så att inte lämna ut!
FixedUpdate, förklara att de två mer flöten, moveHorizontal och moveVertical. Dessa tar på värden beroende på användarens tangentbordskommandon och FixedUpdate uppdaterar dem varje bildruta.
flyta moveHorizontal = Input.GetAxis("Horizontal");
flyta moveVertical = Input.GetAxis("Vertical");
Fallet frågor.
Fortfarande i FixedUpdate, skapa en ny Vector3, en typ av variabel med tre dimensioner användbart för att flytta objekt i 3D-rymden. Detta kommer att ta på värdet av användarens indata för horisontella och vertikala rörelse, och kommer att vara noll i upp/ned riktning eftersom i detta spel, spelaren kan bara röra sig i två dimensioner.
Vector3 rörelse = nya Vector3(moveHorizontal,0.0f,moveVertical);
Slutligen, inmatning en kraft på den spelaren att flytta runt, med rigidbody. AddForce, ett protokoll som byggdes till spelarens rigidbody komponent.
rigidbody. AddForce(movement*speed*Time.deltaTime);
Time.deltaTime används för att göra rörelsen smidigare. Vi kommer att justera hastighet variabeln senare, i enighet editor.
Spara filen CSharp, och växla tillbaka till enighet.
Gå till panelen granska för spelaren och titta på skriptet rörelse du just har skapat. Det bör finnas en ruta för din offentliga variabel hastighet. Du kan ändra värdet på offentliga variabler med hjälp av inspektören.
För nu, göra hastighet lika mellan 100-1000, och klicka på knappen Spela upp i toppen, mitten av skärmen. Du bör kunna flytta bollen med Unitys standard rörelse nycklar, antingen ASWD eller piltangenterna.
Klicka på play-knappen igen för att avsluta utanför uttestningsutgåvan läge.