Göra ett 2D spel med Unity (14 / 19 steg)
Steg 14: Bomber bort
Skapa ett nytt tomt spel objekt och namn den Bomb. I mappen sprite, hitta bomben sprite, öppna den och lägga till den första bildrutan i Bomb. Justera transform skalan till X = 0,5, Y = 0,5.
Lägga till en cirkel collider 2D och ändra det har skala och position för att se bra ut. Vi vill ha bomberna falla, så vi behöver också en rigidbody 2D, lägga till denna komponent.
Vi behöver även en animatör att kontrollera våra bomb stater, så tillägga att också. Avmarkera tillämpa Root rörelse och kryssrutan animera fysik i granskaren.
Öppna fönstret animering, se till att du fortfarande har Bomb_0 av bomb fortfarande är markerad. Lägga till en animering och kalla det bombidle, detta kommer att skapa ett nytt standardtillstånd i våra animatör. Använda de 3 första bildrutorna i bladet sprite (drag och släpp) och sedan sänka bildhastigheten genom att släppa prov ner till runt 20.
Skapa ett annat nya klipp, kallar detta en bombexplode och använda de återstående ramarna av bladet bomb sprite. Igen, minska framerate till ca 20.
Ner i fönstret animatör, creat en övergång från bombidle till bombexplode, lämna villkora för exit tid och ändra värdet till 5,00. Detta innebär att våra bomb förblir inaktiv (säkring lit) i 5 sekunder innan du byter att explodera.
Skapa en tredje animation i fönstret animering, kalla det bombdead och lämna det tomt. I animatör, skapa en övergång från bombexplode till bombdead.
Skapa ett nytt skript kallas bomb i mappen skript.
använder UnityEngine;
använder System.Collections;
allmän klass bomb: MonoBehaviour {
en hållare för våra animatör
Animatör anim;
en offentlig float för explosion radie
offentliga flyta explodeRadius = 1f;
Använd detta vid initiering
Ogiltig Start () {
anim = GetComponent < animatör > ();
}
Uppdatering anropas en gång per bildruta
void uppdatering () {
om vi gjort exploderande
om (anim. GetCurrentAnimatorStateInfo (0). IsName ("bombdead")) {
förstöra alla objekt i en radie om de inte är märkta spelare eller hand
Collider2D [] colliders = Physics2D.OverlapCircleAll (transform.position,explodeRadius);
foreach (Collider2D col i colliders) {
om (col.tag! = "Spelare" & & col.tag! = "hand") {
Destroy(Col.collider2D.gameObject);
}
}
Destroy(this.gameObject);
}
}
}
Slutligen dra bomb skriptet till din bomb_0 objekt.
En liten sak som jag glömde nästan, är att tag hand som hand. för att göra detta, Välj din hand objekt i fönstret hierarki, och sedan under etiketten, välj Lägg till tagg. Skapa en ny tagg på element0 heter hand, sedan med din hand objekt markerat, ändra etiketten till hands. Också ändra objekttypen penciltip till hands.
Prova att köra spelet, bomben bör sjunka, explodera och ta ut navbar. (beroende naturligtvis där du har placerat det)