Unity
Unity Platforma do tworzenia gier dla różnych systemów docelowych, m.in.: Windows, macos, ios, Android, Powstała w 2005 r., obecnie wersja 5.3.5
Unity Wymagania systemowe: Windows 7SP1, 8, 10 Mac OS X 10.8+ Kod pisany w C# lub JavaScript
Unity Wersje: Personal - darmowa z ograniczeniami Enterprise - od $75 miesięcznie Wymaga założenia konta
Gra 2D w Unity
Tworzymy projekt
Pusty projekt
Zasoby Musimy zaimportować zasoby dla gry z Asset Store
Potwierdzamy import Zasoby
Scena Zapisujemy naszą na razie pustą scenę, najlepiej w podkatalogu Assets/Scenes pod nazwą Main
Tło Dodajemy do naszej sceny Sprite Przeciągamy z katalogu Sprites zaimportowany element Background do hierarchii sceny Utworzyliśmy w ten sposób GameObject, posiadający transformację i Sprite Renderer
Gracz Wyłączamy widok siatki w menu Gizmos Przeciągamy kolejny sprite ze Sprites, tym razem UFO i zmieniamu mu nazwę na Player
Kategorie Sprite ów Sprite y możemy grupować w warstwy, np. warstwa tła, warstwa elementów, warstwa obiektów, itp. Warstwy definiujemy w polu Sorting Layer Najniższa warstwa jest rysowana na końcu (na wierzchu) Przypisujemy nasz sprite do warstwy Player, a tło do Background
Ustawienia Zmieniamy rozmiar gracza na 75% wielkości Ustawiamy opcje kamery: rozmiar na 16.5 kolor tła na 32,32,32 (RGB)
Fizyka Do naszego gracza dodajemy element Rigidbody Zaznaczamy obiekt Player i wybieramy Add Component
Dodajemy skrypt Korzystamy znowu z Add Component dla obiektu Player Dodajemy nowy skrypt o nazwie PlayerController w C#
Trochę porządków Unity utworzyło skrypt w głównym katalogu Assets Tworzymy podkatalog Scripts Przenosimy do niego skrypt Otwieramy skrypt
Skrypt Pusty skrypt w edytorze
Skrypt Będziemy uaktualniać pozycję gracza korzystając z metody FixedUpdate Korzystamy z klasy Input do odczytania wejścia
Skrypt Chcemy poruszać obiekt jako ciało 2D Korzystamy z klasy Rigidbody2D i metody AddForce Deklarujemy pole typu Rigidbody2D Pobieramy referencję do obiektu w metodzie Start
Skrypt Wracamy do Unity Uruchamiamy scenę i nasz gracz spada z planszy przez grawitację. Zmieniamy mu Gravity Scale na 0 Obiekt porusza się w reakcji na klawisze strzałek, ale bardzo wolno
Skrypt W skrypcie zadeklarujemy pole publiczne speed Przemnożymy przez jego wartość wektor ruchu
Skrypt We własnościach obiektu, w polu skryptu, pojawia się teraz pole odpowiadające polu klasy Ustawmy wartość na 10 i przetestujmy scenę
Wykrywanie kolizji Do obiektów musimy dodać Collider Do gracza dodajemy Circle Collider 2D Zmieniamy promień aby odpowiadał sprite owi
Wykrywanie kolizji Do tła dodajemy Box Collider 2D Po uruchomieniu gracz ucieka z planszy - Unity widzi planszę jako jeden wielki obiekt Musimy stworzyć Collidery tylko dla ścian
Wykrywanie kolizji Ustawiamy rozmiar istniejącego Collider a - będzie prawą ścianą Z podręcznego menu wybieramy Copy Component a potem Paste Component As New trzy razy
Wykrywanie kolizji Ustawiamy parametry nowych Collider ów Uruchamiamy scenę
Ruch kamery Wiążemy kamerę z obiektem gracza przesuwając kamerę w hierarchii poniżej obiektu Player Testujemy scenę Po zderzeniach obraca się nie UFO ale cała plansza - nie o to chodziło Wracamy do stanu poprzedniego Napiszemy skrypt
Skrypt Piszemy skrypt Kojarzymy obiekt Player z polem skryptu przeciągając go z hierarchii Testujemy scenę
Zbieranie elementów Dodajemy kolejny sprite Pickup Zmieniamy mu SortingLayer na Pickups Możemy tymczasowo ukryć sprite gracza Dodajemy Circle Collider 2D do sprite a
Dodajemy skrypt Dodajemy skrypt Rotator Obiekt teraz się obraca Przekształcimy go teraz w szablon Prefab Tworzymy folder Prefabs I przeciągamy tam obiekt Pickup
Prefabs Tworzymy pusty GameObject Zmieniamy mu nazwę na Pickups Przeciągamy do niego Pickup Przenosimy obiekt w jego miejsce a następnie mnożymy korzystając z polecenia Duplicate (Ctrl+D)
Zbieranie elementów Musimy dodać wykrywanie kolizji pomiędzy graczem a obiektami Zaznaczamy obiekt Pickup z folderu Prefabs i ustawiamy mu Tag na PickUp Edytujemy skrypt dla gracza dopisując metodę:
Zbieranie elementów Musimy jeszcze zaznaczyć opcję Is Trigger w Collider ze elementów W celu zwiększenia wydajności możemy dodać Rigidbody 2D do elementów Trzeba jeszcze zazanczyć opcję Is Kinematic, aby nie były wrażliwe na fizykę
Liczenie elementów Dodamy do skryptu licznik zebranych elementów A także pola do współpracy z UI
Tekst Dodajemy element UI do wyświetlania tekstu Tekst musi znajdować się poniżej obiektu Canvas Zmieniamy mu nazwę na CountText Ustawiamy kolor tekstu na żółty
Tekst Przenosimy tekst do lewego górnego rogu Ustawiamy pozycję względem narożnika
Tekst Dodajemy drugi tekst i nazywamy go WinText Ustawiamy jego własności
Kompilacja gry Wybieramy polecenia Build Settings