Tworzenie gier VR w Unity wykorzystując C#. Kurs podstawowy.

Skoro trafiliście na forum poświęcone wirtualnej rzeczywistości, i przeglądacie tematy związane z Unity (o czym świadczy to, że czytacie ten tekst), to zapewne chcecie spróbować swoich sił w tworzeniu aplikacji VR.

Niniejszy kurs przeprowadzi Was przez podstawy programowania skryptów w Unity, wstawianie obiektów i muzyki do projektu,

dodawanie i wyświetlanie zdobytych punktów na ekranie gry, ustawianie kamery,

czy dostosowywanie projektu do konkretnych platform (np. Cardboard, Oculus Rift itp.).



PLAN KURSU PODSTAWOWEGO:

1.Pisanie skryptów w Unity

2.Wyświetlanie rezultatów w konsoli

3.Deklaracja i przypisanie zmiennych

4.Matematyczne operacje na zmiennych

5.Operatory logiczne i funkcje warunkowe

6.Metody

7.Pozycja i ruch w Unity

8.Wektory, Klasy, Obiekty

9.Wyznaczanie własnej Klasy

10.Odświeżanie wartości zmiennych

11.Debug(g)owanie

12.Tworzenie sceny 3D

13.Fizyka brył

14.Wykorzystanie już stworzonych obiektów (prefabrykaty)

15.Ustawianie prędkości przedmiotu

16.Obracanie kamery

17.Wykorzystywanie myszki

18.Zachowanie stałego położenia przedmiotu mimo ruchu

19.Kontrola kamery

20.Efekt tarcia/ lokalizacja

21.Rotacja kamery

22.Kolizje w kodzie

23.Globalne trzymanie wyników

24.Korzystanie z wielu scen

25.Tworzenie ekranu menu

26.Wyświetlanie tekstu na ekranie

27.Przyciski na ekranie

28.Wyzwalanie zdarzeń

29.Uaktualnianie tekstu (wyniku) wyświetlanego na ekranie

30.Przenoszenie danych pomiędzy scenami

31.Konwersja na Oculus Rift

32.Importowanie asset’ów i budowanie level’i

33.Używanie trigger’ów

34.Muzyka i dźwięki

35.Tworzenie projektu na Androi’a

36.Tworzenie projektu na iOS’a

37.Ustawienia kamer VR

38.Interfejs użytkownika w VR

39.Interakcje z przyciskami

[size=200][align=center]1# Pisanie skryptów w Unity[/align][/size]
[align=center]Aby rozpocząć kurs należy pobrać i zainstalować Unity 5 lub wersję wyższą i uruchomić ją. Przykładowe skrypty napisane zostały w Monodevelop-Unity, czyli edytorze stworzonym specjalnie pod silnik do gier, zatem polecam korzystanie z tego oprogramowania podczas nauki.

Słowem wstępu wskażę kilka ważnych miejsc w Unity, do których będę później nawiązywać.

Poniżej na rysunku zaznaczone są sekcje:

Hierarchy (na różowo) - jest to sekcja, w której umieszczamy elementy, które będą występować w danej scenie

Scene (na fioletowo) - tutaj możemy rozmieszczać elementy na naszej scenie - inaczej level’u

Inspector (na pomarańczowo) - ta sekcja służy do konfigurowania ustawień różnych elementów

Console (na niebiesko) - konsola, wyświetla rezultaty wykonanego kodu, błędy itp.

Przycisk Clear on Play w konsoli (na żółto) - sprawia, że konsola przy starcie gry jest czyszczona z poprzednich zapisów - pomaga zachować przejrzystość przy kontroli działania aplikacji

Assets (na zielono) - w tej sekcji umieszcza się foldery z obiektami 3d, grafikami, skryptami, dźwiękami i wszystkimi innymi elementami potrzebnymi do funkcjonowania naszej aplikacji.[/align]

[align=center][/align]

[align=center]Pierwsze skrypty napiszemy tworząc krótką tekstową grę.

Fabuła i założenia gry: Gracz jest zagubiony/a nie widzi drogi do miejsca swojego przeznaczenia. Gracz może poruszać się w górę, dół, lewo, prawo i przesuwać się o metr w każdą stronę. Wynik gry, to ilość kroków/przesunięć, które wykonał gracz.

[align=center]Pora uruchomić Unity.

Jeśli to pierwszy projekt to należy się zarejestrować w Unity, jeśli nie, to otworzy się ekran wyboru projektu. Należy kliknąć przycisk NEW zaznaczony na obrazku poniżej.[/align]

[align=center][/align]

[align=center]Otworzy się okno, w którym trzeba wpisać nazwę projektu, wybrać opcję projektu 3D oraz lokalizację, w której będziemy zapisywać wszelkie zmiany.[/align]

[align=center][/align]

[align=center]Po wybraniu odpowiednich ustawień wystarczy kliknąć niebieski przycisk “Create project” i poczekać aż otworzy się okno Unity, które widoczne jest na pierwszym zdjęciu.

Gdy projekt wyświetli się na ekranie komputera, można rozpocząć tworzenie pliku i pisanie pierwszego skryptu. W sekcji Assets pod prawym przyciskiem myszy jest opcja Create >> C# Script.[/align]

[align=center][/align]

[align=center]Po jej użyciu zostanie utworzony plik, któremu można nadać nazwę.

Plik ze skryptem można z łatwością edytować otwierając w edytorze typu MonoDevelop. Gdy zmienimy nazwę pliku należy sprawdzić czy wewnątrz pliku zapis klasy jest prawidłowy. Jeśli nie trzeba go zmienić na taki sam jak w nazwie pliku.[/align]

[align=center][/align]

[align=center]Czym jest skrypt? lub czym jest C#? Nie będę dokładnie odpowiadać na to pytanie, gdyż dostatecznie dużo informacji na ten temat jest w Internecie :wink:. Nakreślę jedynie, że jest to swego rodzaju instrukcja , podobna do przepisu na ciasto, jednak musi być ona bardzo precyzyjna i napisana w języku czytelnym dla komputera. Jednym z takim języków jest C#. Przykładowa instrukcja: idź do kuchni>otwórz szafkę> wyjmij miskę i mąkę> wsyp 200g mąki do miski. Język C# cechuje się specjalna składnią, różną od polskich zdań, jednak nie o tym jest ten kurs.

Czas na napisanie pierwszego fragmentu kodu w Unity.

Pomiędzy klamrami {} znajdującymi się po wrażeniu “void Start ()” znajdują się komendy, które są wywoływane tylko raz, zaraz po uruchomieniu skryptu. Kod, który ma zostać wywołany zaraz po starcie gry należy więc umieścić pomiędzy nawiasami klamrowymi. Zgodnie z założeniami tworzona gra jest grą testową, więc musimy wydać polecenie napisania konkretnego zdania, które chcemy wyświetlić.

Przykładowa linia kodu:[/align]
void Start () {

Debug.Log (“Welcome to GAME”);

}


[align=center]Śpieszę tłumaczyć skrypt:[/align]
Debug.Log - jest to polecenie wyświetlenia w konsoli Unity

() - między nawiasami wpisujemy co chcemy wyświetlić

“” - tekst w języku programowania jest stringiem, a żeby zaznaczyć, że używamy string, należy umieścić tekst w cudzysłowie

; - średnik jest informacją, że ta konkretna instrukcja jest już zakończona i można zacząć kolejną.


[align=center]Podstawowe zasady pisania skryptu zostały wyjaśnione, więcej informacji odnośnie polecenia Debug.Log znajdziecie na:

<LINK_TEXT text=“https://docs.unity3d.com/540/Documentat … g.Log.html”>https://docs.unity3d.com/540/Documentation/ScriptReference/Debug.Log.html</LINK_TEXT>. Jest tam również wiele innych poleceń, warto się im przyjrzeć.

[align=center]W następnej części kursu pokażę jak podpiąć skrypt by wyświetlał się konsoli. Jednak już teraz można przygotować tekst dla tekstowej gry polegającej na jak najszybszym dotarciu do szukanej lokalizacji.

Powodzenia![/align]

[size=200][align=center]2# Wyświetlanie rezultatów w konsoli[/align][/size]
[align=center]Przykładowy skrypt, który napisany został w poprzedniej części kursu, może zostać wyświetlony w konsoli, trzeba tylko odpowiednio podpiąć go w silniku do gry (Unity). Pierwsza rzecz jaką należy zrobić to zapisać plik ze skryptem. Gdy plik jest zapisany, staje się tzw. komponentem, i jest widoczny wciąż pośród assetów w sekcji Project.[/align]

[align=center][/align]

[align=center]Komponent będący skryptem, tak naprawdę jest instrukcją co do zachowania jakiegoś elementu w grze.

Gdy nasz komponent jest gotowy, potrzebny będzie nam tzw. GameObject, do którego podepniemy skrypt. (Można podpinać wiele komponentów do jednego GameObjectu).

GameObject’y występują w sekcji Hierarchy.

Aby dodać komponent, do którego chcemy podpiąć skrypt wystarczy w w/w sekcji kliknąć prawym przyciskiem myszy i wybrać Create Empty.[/align]

[align=center][/align]

[align=center](Póki co wybieramy empty, bo nie chcemy umieszczać elementu w widoku sceny, w późniejszych sekcjach omówimy inne rodzaje GameObject’ów).

Gdy GamePbject został utworzony możemy, a wręcz powinniśmy zmienić jego nazwę, tak by sugerowała z czym jest on związany.

W przykładzie nazwa została zmieniona na FirstScriptedGameObject.

Aby połączyć nasz komponent (skrypt) z GameObject’em należy:

albo: przeciągnąć skrypt z sekcji Project na utworzony/wybrany GameObject umieszczony w sekcji Hierarchy.[/align]

[align=center][/align]

[align=center]albo: przeciągnąć skrypt z sekcji Project do sekcji Inspector, gdy wybrany jest utworzony GameObject.[/align]

[align=center][/align]

[align=center]Teraz, gdy zapiszemy scenę i odpalimy grę, to w sekcji Console pojawi się nasz string, czyli tekst, który wpisaliśmy podczas robienia instrukcji z pierwszej części kursu.[/align]

[align=center][/align]

[align=center]Możemy usuwać i dodawać kolejne skrypty dla Game Objectu, co polecam zrobić w ramach podczas ćwiczeń.

W kolejnej części omówione zostanie przypisywanie zmiennych, co pozwoli małymi kroczkami zacząć kodować w Unity.[/align]