Sok retro és modern játék alapszik rácsszerkezeten.
Ha a fenti példákhoz hasonló látványt szeretnénk megvalósítani, érdemes használni a Unity beépített Tilemap eszközét, amivel könnyedén hozhatunk létre rácsalapú pályát.
3 féle mintát (grid-et) támogat a unity csempe rendszere:
- Négyszög: Rectandular
- Izometrikus: Isometric
- Hatszögrács: Hexagonal
Ezek közül most csak a négyszögrács alapú csempékkel foglalkozunk, de a lent leírtak nagy részben érvényesek egyéb rácsszerkezetekre is.
Csempe alapú játékok gyakran, ám nem mindig pixelgrafikusak. Ha érdekel a pixelgrafikus játékok készítésének elmélete, itt olvashatsz róla:
Előkészület
- A 2D Tilemap Editor és a 2D Sprite csomag letöltése a Package Manager-ből:
- Paletta kép importálása
- Állítsuk be a képen a következőket:
- Tilemap kép feldarabolása
- A Unity Tile paletta elkészítése
- (Jobb katt az Assetek közt / Create / 2D / Tile Palette / Rectangular ) vagy
- (Felső Menüsáv / Assets / Create / 2D / Tile Palette / Rectangular )
- Antialiasing kikapcsolása
(Felső Menüsáv/Window/Package Manager - Unity Registry / 2D Tilemap Editor)
(Felső Menüsáv/Window/Package Manager - Unity Registry / 2D Sprite)
Először is a projektben léteznie kell egy képnek, ami rácsba rendezve szerepelnek a csempéink sprite-jai.
(Kép kijelölése / Inspector ablak)
TextureType: Sprite (2D and UI)
SpriteMode: Multiple
Pixel per Unit: Amennyi pixelből áll egy csempe oldala
Compression: None
Csak ha pixelgrafikát használunk:
FilterMode: Point (No Filter)
(Kép kijelölése / Inspector ablak / SpriteEditor / Slice )
(Ehhez szükség van a 2D Sprite csomag telepítésére: 1. pont)
Ezután a palettához kell adni a feldarabolt Tilemap Sprite-ot. Ezt a Tile Palette ablakban tudjuk megtenni (Felső Menüsáv / Window / 2D / Tile Palette) drag and drop megoldássa.
Tilemap-ok esetében mindig kapcsoljuk ki az antialiasing-et! Ha ezt nem tesszük meg, akkor a csempék között néhol egy pixel vastag vonal jelenhet meg.
Olyan technika a számítógépes grafikában a pixelgrafikus képek éleinek simításához használható.
Az antialiasing különösen 3D játékok esetében tudja nagyban javítani a látványt.
A Unity-ben van lehetőségünk arra, hogy ki és bekapcsoljuk az automatikus antialiasing-ot:
(Felső Menüsáv / Edit / ProjectSettings / Quality / Antialiasing)
Csempék lehelyezése
Ahhoz hogy elkezdjük a játékunk pályáit lecsempézni szükségünk van egy Rácsszerkezetre. Erre a célra egy Grid komponenst kell adnunk egy üres GameObject-hez. Ezen a komponensen állíthatjuk be a rácsszerkezet tulajdonságait. Javaslom, hogy négyzetrács esetén ragaszkodjunk az 1x1-egység méretű rácsokhoz.
Ezután szükségünk van egy gyerek objektumra a Grid komponens alá. Ehhez a gyerek GameObject-hez hozzá kell adnunk egy TileMap-ot és egy TilemapRenderert, hogy megjelenjen a rajzolt pálya.
Ezután tudunk a csemperácson rajzolni. Ehhez szükségünk van a Tile Palette ablakra:
(Felső Menüsáv / Window / 2D / Tile Palette)
Több rétegbe is rendezhetjük a csempéinket, ha több Tilemap GameObject-et hozunk létre a Grid alá. Hogy ezen rétegek közül melyik jelenik meg előrébb azt a sprite-oknál megszokott módon tudjuk szabályozni: Sorting Order és Sorting Layer.
Ha bizonyos rétegekhez, fizikát is szeretnénk, használhatjuk a Tilemap Collider 2D-t.
Extrák
2D Tilemap Extras neven egy hivatalos Unity kiegészítő csomag is létezik a 2D Tilemap Editor-hoz.
Ezzel a csomaggal elérhető, hogy speciális viselkedésű tile-okat hozzunk létre:
AnimatedTile - Animált csempe:
Képes automatikusan és periodikusan cserélni egy csempe sprite-ját.
Rule Tile - Szabály csempe:
Automatikusan felvesz egy megfelelő képet a környezete alapján.
Nem kell kiválasztani, hogy alját, tetejét, sarkát, közepét vagy bármely egyéb részét rakjuk le egy nagyobb alaknak a rendszer automatikusan kiválasztja az ideális csempét egy előre beállított szabályrendszer alapján.
Egy adott pozícióra több csempe is megadható és lehet rendelkezni arról, hogyan válasszon a rendszer megfelelő a jelöltek közül, véletlenszerűen vagy valamilyen sorminta szerint.
Egy Prefab is lehet csempe, nem csak Sprite.
Általa akár 3D modellekből is állhat a csemperács.
Bonyolult viselkedésű egyedi csempék is létrehozhatók gyerek objektumokkal, hozzáadott szkriptekkel és egyéb extra komponensekkel.
Programozható. Egyedi viselkedés írható hozzá.