Göra ett 2D spel med Unity (7 / 19 steg)
Steg 7: Få Jumping - spelare Controller Script fortsatte
Vi behöver en animation stat för hoppande och faller, och även lite mer kod till kontroll saker.
Låt oss börja med att lägga två fler parametrar till våra spelare animatör. Lägga till en flottör som kallas "vSpeed'' och en Bool kallas"Ground". Vi kommer att använda vSpeed för att hålla våra vertikala hastighet, och marken kommer att vara på plats för att hjälpa oss att upptäcka när vår karaktär är på marken, vilket möjliggör ett mer realistiskt hopp. (Hoppa genom luften utan att röra marken är mer som flygande).
Skapa ett nytt tomt spel objekt i fönstret scen. Kalla det groundcheck och lägga till en 2D cirkel Collider i den.
Dra den nya Collider i Player-objektet i fönstret hierarki. Ändra radien av groundcheck's collider till 0,1, och ändra det y transform ställning till -1. Detta sätter en liten liten cirkel precis under robotar fötter. Också tag det som spelare och sätta i spelaren i lagret.
Nu låt oss uppdatera vår väska för att använda våra nya parametrar och införa koden för att göra roboten hoppa när du trycker på mellanslagstangenten.
Uppdatera skriptet RobotController för att vara så här.
använder UnityEngine;
använder System.Collections;
allmän klass RobotController: MonoBehaviour {
Detta kommer att vara vår högsta hastighet som vi kommer alltid vara att multiplicera med 1
offentliga flyta MaxOmdr = 2f;
ett booleskt värde att representera om vi står inför vänster eller inte
bool facingLeft = sant;
ett värde som representerar våra animatör
Animatör anim;
att kontrollera marken och har en jumpforce kan vi ändra i redigeraren
bool jordad = false;
offentliga Transform groundCheck;
flyta groundRadius = 0.2f;
offentliga LayerMask whatIsGround;
offentliga flyta jumpForce = 700f;
Använd detta vid initiering
Ogiltig Start () {
Ställ in anim till våra animatör
anim = GetComponent < animatör > ();
}
void FixedUpdate () {
ställa in våra vSpeed
anim. SetFloat ("vSpeed", rigidbody2D.velocity.y);
ställa in våra jordat bool
jordad = Physics2D.OverlapCircle (groundCheck.position, groundRadius, whatIsGround);
Ställ in marken i våra Animator att matcha jordad
anim. SetBool ("mark", jordad);
float flytta = Input.GetAxis ("horisontellt"); //Gives oss för om vi är på väg via piltangenterna
flytta våra spelare rigidbody
rigidbody2D.Velocity = ny Vector3 (flytta * maxSpeed, rigidbody2D.velocity.y);
ställa vår hastighet
anim. SetFloat ("Speed",Mathf.Abs (flytta));
om vi går kvar men inte inför vänster flip, och vice versa
om (flytta < 0 & &! facingLeft) {
(Flip);
} else om (flytta > 0 & & facingLeft) {
(Flip);
}
}
void Update() {
om vi är på marken och på mellanslagstangenten trycktes, ändra våra grundtillståndet och lägga till en uppåtriktad kraft
om (jordad & & Input.GetKeyDown (KeyCode.Space)) {
anim. SetBool("Ground",false);
rigidbody2D.AddForce (nya Vector2(0,jumpForce));
}
}
Vänd om så behövs
void Flip() {
facingLeft =! facingLeft;
Vector3 theScale = transform.localScale;
theScale.x * = -1;
transform.localScale = theScale;
}
}
Gå tillbaka igen till Robot Controller skriptet i granskaren, och se till att ange vad är grunden till allt utom spelare. Markera allt sedan öppna dialogrutan igen och avmarkera spelare. (Tack c0)
I nästa steg kommer vi att skapa en animatör blandning träd att hantera hoppning och faller.