Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 4 - Unity (C#) Android: Generování stalagů

Vítám vás u dalšího tutoriálu na 2D hru pro Android v Unity. V minulé lekci, Unity (C#) Android: Pohyb, grafika, particles, jsme naprogramovali pohyb hráče a přidali základní grafiku hry.

V dnešní lekci nás čeká vytvoření mapy. K tomu si můžeme zvolit dva možné způsoby. Buďto můžeme tvořit mapy sami, tím pádem bychom tvořili spíše levely, a nebo můžeme vygenerovat mapu automaticky a mít nekonečnou mapu jako má například hra Flappy bird. My si zvolíme možnost druhou.

Sprity

Dnes začneme tím, že si na mapě uděláme dlouhou cestu, zatím ručně. Automaticky generovat budeme až překážky:

Tvorba 2D arkády pro Android v Unity

Stáhněte si prosím několik následujících obrázků:

Tvorba 2D arkády pro Android v Unity Tvorba 2D arkády pro Android v Unity Tvorba 2D arkády pro Android v Unity Tvorba 2D arkády pro Android v Unity

Obrázky si naimportujeme do Unity.

Hranice mapy

Nyní si vytvoříme tzv. Prefab, který bude sloužit jako náš strop a podlaha. Prefab je objekt, který chceme používat vícekrát a nechceme ho pokaždé nastavovat (možná jste někdy slyšeli o pojmu prototyp, princip je podobný).

Na scénu si přetáhneme modrou vodorovnou část a vynulujeme její pozici. Scale X nastavíme na 1.05. Pokud bychom to neudělali, vznikaly by nám nehezké mezery mezi sprity. Objekt si přejmenujeme na floor. Abychom náš objekt uložili, stačí ho přetáhnou zpět do Assets. Rovnou k tomu využijeme naší složku Prefab/. Pokud nám jméno objektu zmodrá, znamená to, že je uložený jako Prefab. To samé uděláme pro strop, přičemž objekt si pojmenujeme ceiling.

Teď, když na scéně bude libovolný počet těchto spritů a náš objekt upravíme, změní se nám všechny. Na náš sprite na scéně přidáme Box Collider 2D (protože je obdélníkový) a pokud je to potřeba, upravíme si jeho velikost a aplikujeme. Změny aplikujeme kliknutím na Overrides a dále na Apply all:

Tvorba 2D arkády pro Android v Unity

Mapa

Sprite máme připravený. Nyní si můžeme vytvořit základ pro mapu. Vytvoříme si něco podobného jako je na obrázku níže:

Tvorba 2D arkády pro Android v Unity

"Tunel" si udělejme dostatečně dlouhý, aby byl přes celou obrazovku. Objekt můžeme pohodlně kopírovat přes Ctrl + D a pohodlně přesouvat po jednotkách, pokud držíme Ctrl. Dále si vytvoříme prázdný gameObject, vyresetujeme jeho pozici a pojmenujeme jej Borders. Všechny sprity si přesuneme pod tento objekt. Z Borders si také vytvoříme Prefab.

Posun mapy

Budeme chtít, aby se naše ohraničení posouvalo společně s hráčem po ose X. Tak se nikdy nestane, že by z mapy vyjel. Přidáme si tedy na Borders skript FollowPlayer. Jeho kód bude následující:

public Transform playerRef; // veřejný odkaz na našeho hráče, přesněji jeho Transform
Vector2 pos;

void Update()
{
    // transform.position = new Vector2(playerRef.position.x, playerRef.position.y);  Dělá to samé, co kód níže, doporučuji používat spíše druhou možnost

       pos = transform.position; // pozice objektu, na kterém je skript

       pos.x = playerRef.position.x; // pozici na ose X nastavíme stejnou jako má hráč

       transform.position = pos; // nastavení pozice objektu, na kterém je skript na pozici pos
}

Překážka

Nyní, pokud hru spustíme, vidíme, že se pohybuje společně s hráčem i mapa.

Aby jsme ale nelétali pouze prázdným tunelem, přidáme i překážku. Sprite máte rovněž přiložený ke stažení. Barvu si dáme zatím například na modrou, aby nám ladil s ohraničením.

Překážce přidáme tentokrát Edge Collider 2D, protože již není jen obdélníková. Pokud chceme Collider upravit, držíme Shift a upravujeme zelenou čáru znázorňující collider, dokud nám nevznikne něco podobného. Objekt si přidáme do Prefabu a pojmenujeme jej Stalag:

Tvorba 2D arkády pro Android v Unity

Generování mapy

Pojďme si nyní do mapy překážky vygenerovat. Za to by měl být zodpovědný nějaký objekt. Vytvoříme si tedy nový GameObject a pojmenujeme si ho StartingObject, to protože se jeho skript bude provádět při startu hry. Přidáme na něj nový skript StartScript s následujícím obsahem:

public GameObject stalagPrefab;
public float distance = 10; // vzdálenost mezi jednotlivými stalagy
public float offset = 1;
public int count = 50;

void Start()
{
    for (int i = 0; i < count; i++)
    {
        Vector2 pos = new Vector2();
        pos.x = offset + i * distance;
        GenerateStalag(pos);
    }
}

void GenerateStalag(Vector2 p)
{
    Instantiate(stalagPrefab, p, Quaternion.identity);
}

Instantiate(stalagPrefab, p, Quaternion.identity) nám generuje nové objekty na zadané pozici. Třetí parametr slouží pro rotaci.

Nesmíme zapomenout přiřadit náš stalagmit do Stalag Prefab:

Tvorba 2D arkády pro Android v Unity

Po zapnutí by se nám mělo vygenerovat 50 stalagmitů.

Pokračovat budeme zas příště, v lekci Unity (C#) Android: Generování stalagů, 2. část.


 

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 439x (92.84 kB)

 

Předchozí článek
Unity (C#) Android: Pohyb, grafika, particles
Všechny články v sekci
Tvorba 2D arkády pro Android v Unity
Přeskočit článek
(nedoporučujeme)
Unity (C#) Android: Generování stalagů, 2. část
Článek pro vás napsal Jan Kubice
Avatar
Uživatelské hodnocení:
6 hlasů
Aktivity