Reklama

Zaskakującą cechą gospodarki internetowej jest rozwój niezależnych gier wideo. Kiedyś była to jedyna domena tysiąca, wielomilionowych studiów potrójnych A, opracowano wiele zestawów narzędzi, które dostarczaj nowoczesne zasoby do tworzenia gier w ręce osób lub małych, doraźnych kolekcji programistów i projektantów. Wcześniej omawialiśmy najlepsze gry indie 10 gier niezależnych tak dobrze, że w ogóle zapomnisz, że są niezależneMoże się jednak zdarzyć, że chcesz czegoś innego niż niezależna norma. Gra, która podąża za wartościami niezależnymi, ale jest wykonana z jakością, z której znane są gry AAA z najwyższej półki. Tytuły takie jak ... Czytaj więcej , więc upewnij się, że zapoznałeś się z nimi, aby uzyskać inspirację, co można osiągnąć za pomocą narzędzi takich jak Unity.

Ten przewodnik można pobrać w postaci bezpłatnego pliku PDF. Pobierz Programowanie gry z Unity: przewodnik dla początkujących już teraz. Kopiuj i udostępniaj to znajomym i rodzinie.

Te niezależne zespoły twórców gier wykazały się zwinnością i tolerancją na ryzyko, co w wielu przypadkach pozwala im szybciej wprowadzać innowacje w rozgrywce niż ich odpowiedniki z dużym budżetem. W ostatnich latach miało miejsce wiele zaskakująco udanych tytułów niezależnych, w tym

instagram viewer
Minecraft, Otchłań, i Super Meat Boy, a nawet jeśli nie musisz umieć tworzyć takich gier, możesz stworzyć grę za pomocą Buildbox Jak zrobić grę wideo w tydzień za pomocą BuildboxIstnieje program, który sprawia, że ​​tworzenie gier jest niezwykle łatwe nawet dla tych, którzy absolutnie nie mają doświadczenia w projektowaniu gier wideo. To się nazywa Buildbox. Oto dlaczego powinieneś spróbować. Czytaj więcej .

W szybko rozwijającym się krajobrazie gier niezależnych Jedność okazało się być de facto standardem: jego niski koszt, łatwość użycia i szeroki zestaw funkcji sprawiają, że jest idealny do szybkiego tworzenia gier. Jedność jest tak elastyczna, że ​​możesz to zrobić stwórz własne kontrolery gier Jak stworzyć niestandardowy kontroler gier z Arduino i UnityCzy kiedykolwiek chciałeś zaprojektować własny kontroler gier? To łatwiejsze niż myślisz! Czytaj więcej z odrobiną majsterkowania wiedzą!

Nawet duże studia, takie jak CCP (Developers of Eve Online) używaj go do szybkiego tworzenia prototypów koncepcji gier. Unity zapewnia „silnik gry w pudełku” - silnik fizyki i renderowania z zaczepami dla kilku języków skryptowych, dostosowujący się do praktycznie każdego gatunku gier wideo.

Chociaż Unity zapewnia edytor wizualny do manipulowania środowiskiem gry, Unity nie jest narzędziem do tworzenia gier „zero programowanie”. Wymaga to programowania w celu uzyskania wyników, ale zapewnia także znacznie bardziej elastyczne i wydajne narzędzie niż jakikolwiek program „twórcy gier” mógłby.

Unity nie wykona za ciebie pracy, ale znacznie obniża barierę wejścia. Zaczynając od zera w C ++ i OpenGL, dotarcie do punktu, w którym coś jest renderowane na ekranie, może zająć kilka dni. Korzystanie z Unity zajmuje około dziesięciu sekund. Unity przekazuje podstawowe elementy tworzenia gry w ręce początkujących programistów w szybki, intuicyjny sposób.

Dzisiaj przeprowadzę cię przez wszystko, co musisz wiedzieć, aby stworzyć grę w Unity, która jest podzielona na dziesięć głównych rozdziałów:

§1 – Wersje jedności

§2 – Instalowanie jedności

§3 – Krótkie wprowadzenie do paradygmatu obiektowego

§4 – Podstawy jedności

§5 – Przykład: podstawowe elementy gry

§6 – Skrypty w jedności

§7 – Przykład: Skrypt Pong

§8 – Poznawanie dokumentacji / Więcej informacji

§9 – Kompilowanie gry / kompilacja do samodzielnej aplikacji

§10-Uwagi końcowe

1. Wersje Unity

Unity ma dwa podstawowe smaki: wersja pro i wersja darmowa. Istnieją liczba różnic, ale ogólnie rzecz biorąc, wersja pro obsługuje wiele ulepszeń wizualnych (takich jak miękkie cienie w czasie rzeczywistym i post-processing) oraz dużą liczbę stosunkowo niewielkich funkcji, które są niezwykle pomocne w przypadku bardziej złożonych Gry.

To powiedziawszy, w przypadku większości stosunkowo prostych gier, które możesz chcieć zbudować, darmowa wersja Unity jest całkowicie wystarczająca. Poniżej omówimy bardziej szczegółowo kluczowe różnice dla zainteresowanych.

1.1 Ceny

Darmowa wersja Unity jest oczywiście bezpłatna. Istnieje jednak kilka ograniczeń: bezpłatna wersja Unity nie może być licencjonowana dla żadnej firmy, której roczny dochód przekracza $100,000. Chociaż takie organizacje wykraczają poza zakres tego przewodnika, jeśli podejrzewasz, że możesz zostać taką organizacją, prawdopodobnie rozsądnie jest znaleźć wersję Pro.

Wersja Pro Unity to $75 miesiąc lub $1500 na stałą licencję i nie ma ograniczeń co do tego, co możesz zrobić z grami stworzonymi przy jej pomocy. Dostępna jest również 30-dniowa bezpłatna wersja próbna, której będziemy używać w tym przewodniku, aby zapewnić możliwie pełny przegląd dostępnych funkcji. Dostępna jest również roczna licencja studencka Studica dla $129.

1.2 Funkcje

W darmowej wersji Unity dostępnych jest wiele funkcji. Najważniejsze różnice są jednak następujące: darmowa wersja Unity nie ma wielu opcji renderowania, które na to pozwalają lepiej wyglądające, szybsze gry (obsługa LOD, post-processing przestrzeni ekranu, zaawansowane shadery, miękkie cienie w czasie rzeczywistym i odroczone wykonanie). Brakuje również pełnego system animacji mechanimoraz niektóre narzędzia AI.

Ogólnie rzecz biorąc, w przypadku złożonych projektów na dużą skalę lub projektów, w których ważna jest wydajność graficzna, warto skorzystać z wersji pro. Używam wersji pro, ponieważ tworzę gry wirtualnej rzeczywistości dla Oculus Rift Recenzja Oculus RiftRzeczywistość wirtualna nie jest nowa, ale w końcu jest dostępna i jest w naszym zasięgu. Po czterech latach i dwóch prototypach opracowano ostateczną wersję konsumencką Oculus Rift. Czytaj więcej , a obsługa przetwarzania końcowego miejsca na ekranie jest niezbędna do prawidłowej interakcji z zestawem słuchawkowym.

2. Instalowanie Unity

Unity można łatwo zainstalować. Możesz pobrać plik wykonywalny z unity3d.com/get-unity/download.

Po pobraniu uruchom go, a następnie postępuj zgodnie z instrukcjami instalatora. Po zakończeniu instalacji pojawi się okno „Aktywuj licencję Unity”. Zaznacz pole „aktywuj bezpłatną 30-dniową wersję próbną Unity Pro”, a następnie „OK”.

Gratulacje! Masz teraz 30-dniową wersję próbną Unity Pro. Po wygaśnięciu okresu próbnego, jeśli nie chcesz kupować wersji pro, możesz przejść do wersji bezpłatnej i zachować istniejące treści.

3. Krótkie wprowadzenie do paradygmatu obiektowego

Zanim zaczniesz korzystać z Unity, ważne jest, abyśmy trochę zapoznali się z podstawami. Unity obsługuje oba te elementy DO# i JavaScript dla programowanie gier 7 Unity Game Development Języki do nauki: Który jest najlepszy?Chcesz rozpocząć tworzenie gry w Unity? Potrzebujesz znajomości jednego z tych języków kompatybilnych z Unity. Czytaj więcej ; w tym samouczku będziemy pracować z C #.

Po pierwsze, jeśli nigdy wcześniej tego nie programowałeś, odłóż ten samouczek i poświęć kilka dni na pracę z programem Microsoft C # Language Primer dopóki nie poczujesz się komfortowo, używając języka do prostych zadań.

Jeśli chcesz coś nieco innego niż C # (ale niekoniecznie język, którego możesz używać w Unity), zapoznaj się z naszym przewodnikiem po sześć najłatwiejszych języków programowania dla początkujących 6 najłatwiejszych języków programowania dla początkującychNauka programowania polega na znalezieniu odpowiedniego języka tak samo, jak na procesie edycji. Oto sześć najpopularniejszych języków programowania dla początkujących. Czytaj więcej .

Jeśli wcześniej programowałeś w imperatywnym lub zorientowanym obiektowo języku, takim jak C lub Java, przejrzyj podkład i zapoznaj się z tym, czym C # różni się od innych języków używanych w przeszłości. Tak czy inaczej, nie kontynuuj samouczka, dopóki nie poczujesz się komfortowo, rozwiązując proste problemy z C # (na przykład, gdybym zapytał aby napisać program, który wypisze pierwsze sto liczb pierwszych, powinieneś być w stanie napisać ten program bez konsultacji Google).

Najważniejszą koncepcją do zrozumienia tutaj jest paradygmat obiektowy Skąd się wzięło nazwa programowania obiektowego?Object Oriented to nie tylko przypadkowe hasło, które słyszysz w kręgach programistycznych. Nazwa ma powód - ale co? Dołącz do mnie, gdy będę eksplorować niektóre podstawy koncepcji programowania i wyjaśniam ... Czytaj więcej (w skrócie OOP). W językach obiektowych programy są podzielone na jednostki funkcjonalne zwane Obiekty. Każdy obiekt ma swoje prywatne zmienne i funkcje. Wywoływane są funkcje specyficzne dla obiektu metody.

Chodzi tutaj o modułowość: izolowanie każdego obiektu i zmuszanie innych obiektów do interakcji z nim dzięki jego metodom możesz zmniejszyć liczbę możliwych niezamierzonych interakcji - a przez to błędy. Możesz także tworzyć obiekty, których możesz później użyć ponownie bez modyfikacji. W Unity będziesz budować te obiekty i dołączać je podmioty gry (których zachowaniem będą rządzić).

Obiekty są tworzone z zajęcia: klasa to tylko plik, który określa definicję twojego obiektu. Więc jeśli chcesz Mook obiekt, który obsługuje sztuczną inteligencję dla wroga w grze, napisałbyś klasę „Mook”, a następnie dołączasz ten plik do każdej wrogiej jednostki. Po uruchomieniu gry każdy wróg zostanie wyposażony w kopię obiektu „Mook”.

Dołączenie nowego skryptu do obiektu wygląda następująco:

Programowanie gry w Unity: przewodnik dla początkujących gra w program jedności 1

Pierwszy, wybierz obiekt i idź do Inspektor. Kliknij na Dodaj komponent przycisk.

Programowanie gry w Unity: przewodnik dla początkujących gra w program jedności 2

Iść do nowy skrypt, wprowadź żądaną nazwę i kliknij utwórz i dodaj.

Programowanie gry w Unity: przewodnik dla początkujących gra w program jedności 3

Teraz masz nowy skrypt, który możesz edytować, klikając go dwukrotnie!

Plik klasy wygląda mniej więcej tak:

using UnityEngine; klasa publiczna Mook: MonoBehaviour {private float health; void Start () {zdrowie = 100; } void Update () {if (zdrowie> 0) {/ * Wyszukaj gracza, jeśli spotkasz go na drodze, zabij go, jeśli zostaniesz postrzelony, usuń losową ilość zdrowia * /}} }

Rozbijmy to:

  • Za pomocą UnityEngine: Ta linia mówi C #, że chcemy korzystać z bibliotek Unity, które pozwalają nam połączyć się z silnikiem gry Unity.
  • Klasa publiczna Mook: MonoBehaviour:Ta linia deklaruje klasę i jej nazwę - Mook.
  • Prywatne zdrowie pływaka: To deklaruje zmienną klasy prywatnej (którą można zmienić tylko wewnątrz klasy). Zmienna ma wartość w Początek.
  • Void Start (): To deklaruje metodę o nazwie Początek. Start to specjalna metoda, która działa tylko raz, gdy gra jest początkowo uruchamiana.
  • Aktualizacja Void (): Aktualizacja to kolejna specjalna metoda, która działa na każdej ramce. Większość logiki gry trafi tutaj.
  • // jeśli spotkasz gracza na drodze, zabij go: Ta linia jest komentarzem (każda linia zaczynająca się od podwójnego ukośnika jest ignorowana przez C #). Komentarze służą do przypomnienia sobie, co robią poszczególne fragmenty kodu. W tym przypadku ten komentarz jest używany w zamian za bardziej skomplikowany blok kodu, który faktycznie robi to, co opisuje komentarz.

Wraz z Początek i Aktualizacja, możesz tworzyć własne metody o prawie dowolnej nazwie. Jednak metody, które utworzysz, nie będą działać, chyba że zostaną wywołane. Zadeklarujmy metodę dla hipotetycznej klasy o nazwie addTwoNumbers który dodaje dwie liczby razem:

public float addTwoNumbers (float a, float b) {return a + b; }

To deklaruje metodę publiczną (dostępną dla innych obiektów), która zwraca liczbę zmiennoprzecinkową, o nazwie addTwoNumbers, który przyjmuje dwa zmiennoprzecinkowe jako dane wejściowe (nazywane za i b). Następnie zwraca sumę dwóch wartości jako wynik.

Wywoływanie tej metody z tej samej klasy (powiedzmy z wnętrza) Aktualizacja) wygląda tak:

wynik zmiennoprzecinkowy = addTwoNumbers (1, 2);

Wywołanie metody z innej klasy jest podobne:

addTwoNumbers instance; wynik zmiennoprzecinkowy = instance.addTwoNumbers (1, 2);

Ponownie tworzy to instancję naszej klasy, uzyskuje dostęp do odpowiedniej metody i podaje jej liczby, które chcemy dodać, a następnie zapisuje wynik w wynik. Prosty.

Jeśli skrypt jest dołączony do obiektu o specjalnych właściwościach (np. Emitera cząstek), do którego nie można uzyskać dostępu w ramach normalnego zestawu parametrów GameObject można traktować go jako inny rodzaj elementu gry, używając GetComponent metoda.

Składnia tego wygląda następująco:

GetComponent().Grać();

Jeśli któryś z tych elementów jest ci nieznany, wróć i przejdź przez elementarz C #. Dzięki temu zaoszczędzisz dużo frustracji.

4. Podstawy Jedności

W tej sekcji omówimy podstawową mechanikę silnika Unity. Przepływ pracy w Unity wygląda mniej więcej tak:

  1. Utwórz byt, który będzie pełnił rolę w grze (puste GameObjects może być używany do abstrakcyjnych zadań logicznych).
  2. Napisz lub znajdź plik klasy i dodaj go do encji jako skrypt (używając Dodaj komponent przycisk w inspektor widok.
  3. Biegać > test > odpluskwić > powtarzać dopóki nie zadziała i przejdź do następnego elementu gry.

Unity zawiera szereg podstawowych kart widoku, które można układać na różne sposoby według upodobań użytkownika. Wielka piątka to:

  1. Gra: wyświetla działającą instancję gry, z którą można wchodzić w interakcje i testować.
  2. Scena: zapewnia statyczną, edytowalną wersję pliku swiat gry.
  3. Inspektor: pozwala modyfikować poszczególne byty w świecie gry, wybierając je w redaktor patka.
  4. Projekt: pozwala przeglądać pliki projektu i przeciągać modele, materiały i inne zasoby do redaktor, aby umieścić je w świecie gry.
  5. Hierarchia: ta karta pokazuje wszystkie obiekty na świecie, umożliwiając znajdowanie odległych obiektów w scenie, a także elementy nadrzędne względem siebie poprzez klikanie i przeciąganie.

Zobacz poniższy schemat lokalizacji tych wszystkich rzeczy:

Programowanie gry w Unity: przewodnik dla początkujących gra w program jedności 0

4.1 Jednostki jedności

4.1.1 Siatki

Siatki są drogą Geometria 3D jest reprezentowany w Jedności. Możesz albo użyć wbudowanego Unity prymitywny obiekty (kostki, kule, cylindry itp.) lub importuj własne modele 3D z pakietu modelowania, takiego jak Mikser Rozpoczęcie pracy z Blenderem: 7 fantastycznych samouczków dla początkującychModelowanie 3D to doskonały sposób na ćwiczenie kreatywności przy jednoczesnym utrzymaniu kontaktu ze stroną techniczną. Oto kilka niesamowitych darmowych samouczków. Czytaj więcej lub Maya Nauka Maya 2016: od czego zacząćMaya jest narzędziem używanym do animacji 3D, ale ma niezwykle stromą krzywą uczenia się. Jaki jest dobry materiał do nauczania? Czytaj więcej . Unity obsługuje różne formaty 3D, w tym .fbx, i .3ds.

Podstawowymi narzędziami do manipulowania siatkami są przyciski skalowania, obrotu i translacji w lewym górnym rogu interfejsu. Przyciski te dodają ikony sterowania do modeli w widoku edytora, których można następnie używać do manipulowania nimi w przestrzeni. Aby zmienić teksturę lub właściwości fizyki obiektu, wybierz je i użyj inspektor zobacz, aby przeanalizować materiał i sztywne ciało elementy.

4.1.2 Elementy GUI

Tradycyjne duszki i tekst GUI mogą być wyświetlane za pomocą Tekst GUI i Tekstura GUI GameObjects w edytorze. Jednak bardziej niezawodnym i realistycznym sposobem obsługi elementów interfejsu użytkownika jest użycie Tekst 3D i Kwadrat GameObjects (z przezroczystymi teksturami i nieoświetlonym przezroczystym shaderem) do umieszczania elementów interfejsu w świecie gry jako byty.

w hierarchia widok, te elementy rozgrywki można przeciągnąć na główną kamerę, aby uczynić je dziećmi, zapewniając, że poruszają się i obracają razem z kamerą.

Elementy GUI (tekst i tekstury) mogą mieć dostosowany rozmiar i skalę za pomocą odpowiednich pól w zakładce inspektora.

4.1.3 Materiały

Materiały to kombinacje tekstur i shadery Wyjaśnienie pięciu ważnych warunków dotyczących gier na PCJeśli grasz w grę na konsoli, szczegóły techniczne są obsługiwane. Niektórzy gracze wolą to, ale gracze na PC często cieszą się większą kontrolą nad okiem gry ... Czytaj więcej i można przeciągać bezpośrednio na obiekty gry z karty projektu. Duża liczba shaderów jest dostarczana z Unity Pro i możesz dostosować teksturę do nich dołączoną za pomocą zakładki inspektora dla obiektu, do którego zostały zastosowane.

Aby zaimportować teksturę, przekonwertuj ją na .jpg, .pnglub .bmpi przeciągnij go do majątek folder w katalogu projektu Unity (który pojawia się w Moje dokumenty domyślnie). Po kilku sekundach w edytorze pojawi się pasek ładowania. Po zakończeniu będzie można znaleźć obraz jako teksturę pod projekt patka.

4.1.5 Światła

Światła są GameObjects które rzucają blask na świat. Jeśli na scenie nie ma świateł, wszystkie wielokąty są rysowane z tym samym poziomem jasności, co nadaje światu płaski, sprany wygląd.

Światła można ustawiać, obracać i mieć kilka cech wewnętrznych, które można dostosować. The intensywność suwak kontroluje jasność światła i zasięg kontroluje szybkość zanikania.

Wytyczne w widok sceny pokaże maksymalny zasięg oświetlenia. Graj przy użyciu obu ustawień, aby uzyskać pożądany efekt. Możesz także dostosować kolor światła, wzór (ciastko wyświetlane na powierzchni światło jest wskazywane i jaki rodzaj rozbłysku pojawia się na ekranie, gdy patrzy się bezpośrednio na światło. Ciasteczka można wykorzystać do sfałszowania bardziej realistycznych wzorów światła, tworzenia dramatycznych fałszywych cieni i symulacji projektorów.

Trzy główne rodzaje światła to miejsce, punkt, i kierunkowy.

Oświetlenie punktowe mieć położenie w przestrzeni 3D i rzutować światło tylko w jednym kierunku na stożek o zmiennym kącie. Są dobre dla latarek, reflektorów i ogólnie zapewniają bardziej precyzyjną kontrolę oświetlenia. Oświetlenie punktowe może rzucać cienie.

Światła punktowe mieć lokalizację w przestrzeni 3D i równomiernie rzucać światło we wszystkich kierunkach. Światła punktowe nie rzucają cieni.

Światła kierunkowewreszcie są wykorzystywane do symulacji światła słonecznego: emitują światło w kierunku, jakby z nieskończenie dużej odległości. Światła kierunkowe wpływają na każdy obiekt w scenie i mogą wytwarzać cienie.

4.1.6 Systemy cząstek

ZA System cząstek jest GameObject który generuje i kontroluje jednocześnie setki lub tysiące cząstek. Cząsteczki to małe, zoptymalizowane obiekty 2D wyświetlane w przestrzeni 3D. Systemy cząstek wykorzystują uproszczone renderowanie i fizykę, ale mogą wyświetlać tysiące istot w czasie rzeczywistym bez jąkania, co czyni je idealnymi do dymu, ognia, deszczu, iskier, efektów magicznych i innych.

Istnieje wiele parametrów, które można modyfikować, aby osiągnąć te efekty, i można uzyskać do nich dostęp, spawnując układ cząsteczkowy pod edytor komponentów > wybór układu cząstek > otwieranie zakładki inspektora. Możesz zmienić rozmiar, prędkość, kierunek, obrót, kolor i teksturę każdej cząstki, a także ustawić większość tych parametrów, aby zmieniały się również w czasie.

Pod kolizja atrybut, jeśli go włączysz i ustawisz przestrzeń symulacji na świat dostaniesz cząsteczki, które zderzą się z obiektami na świecie, które można wykorzystać do wielu realistycznych efektów cząsteczkowych, takich jak deszcz, poruszająca się woda i iskry.

5. Przykład: podstawowe elementy gry

W tym samouczku stworzymy prostą grę Pong - coś, co omówiliśmy już kilka razy w DIY:

  • Arduino Classic Pong Jak odtworzyć klasyczną grę w ponga za pomocą ArduinoPong była pierwszą grą wideo, która trafiła na rynek masowy. Po raz pierwszy w historii koncepcja „gry wideo” została wprowadzona do domu rodzinnego dzięki Atari 2600 -... Czytaj więcej
  • Arduino OLED Pong Arduino Retro Gaming Z wyświetlaczem OLEDCzy zastanawiałeś się kiedyś, ile pracy zajmuje napisanie własnych gier retro? Jak łatwo kodować Arduino w Pong? Czytaj więcej

W tej sekcji omówimy układanie podstawowych elementów - samouczek dotyczący skryptowania pojawi się później.

Najpierw podzielmy grę w Pong na podstawowe elementy. Po pierwsze potrzebujemy dwóch łopatek i piłki. Piłka leci poza ekranem, dlatego chcemy, aby mechanizm ją zresetował. Chcemy również, aby tekst wyświetlał bieżący wynik, a żeby pokazać Ci wszystkie podstawowe elementy Unity, chcemy uzyskać efekt fantazyjnych cząstek po uderzeniu w piłkę. Cała gra będzie musiała zostać dramatycznie zapalona.

To rozkłada się na obiekt piłki (kula), a spawner, dwa rekwizyty łopatkowe z emitery cząstek załączony Encja 3D-textoraz światło punktowe. W tym samouczku użyjemy domyślnego materiału fizycznego odbić się, z bounce połączyć Ustawić zwielokrotniać. Oto jak wygląda konfiguracja na dziesięciu zrzutach ekranu:

Programowanie gry w Unity: przewodnik dla początkujących gra w program jedności 4
Programowanie gry w Unity: przewodnik dla początkujących gra w program jedności 5

Najpierw utwórz plik sześcian prop do wiosła.

Programowanie gry w Unity: przewodnik dla początkujących gra w program jedności 6

Skaluj to odpowiednio, zduplikuj toi umieść kula między łopatkami piłki.

Programowanie gry w Unity: przewodnik dla początkujących gra w program jedności 7

Następnie utwórz plik Obiekt 3DText i skala i pozycja to poprawnie, zmieniając rozmiar czcionki atrybut, aby uzyskać mniej pikselowany obraz.

Programowanie gry w Unity: przewodnik dla początkujących gra w program jedności 8

Następnie utwórz dwa układy cząstek, wybierz pożądane cechy i przymocuj je do łyżek.

Programowanie gry w Unity: przewodnik dla początkujących gra w program jedności 9
Programowanie gry w Unity: przewodnik dla początkujących gra w program jedności 10

Następnie będziesz chciał ustaw i obróć aparat tak aby właściwie kadrował scenę. Gdy kamera jest wybrana, w prawym dolnym rogu możesz zobaczyć mały podgląd widoku z kamery.

Programowanie gry w Unity: A Beginner's Guide gra w program jedności 11

Zanim skończymy, musimy stworzyć dwie dodatkowe kostki, aby były zderzakami, aby zapobiec odbijaniu się piłki od pola gry. Możemy uczynić je niewidocznymi poprzez odznaczenie renderer siatki w karta inspektora.

Programowanie gry w Unity: przewodnik dla początkujących gra w program jedności 13
Programowanie gry w Unity: przewodnik dla początkujących gra w program jedności 14

Jeśli zagrasz w grę, możesz teraz zobaczyć podstawowe elementy naszej gry. Jeszcze nic nie zrobią, ale przejdziemy do tego!

Programowanie gry w Unity: przewodnik dla początkujących gra w program jedności 12

Teraz, gdy mamy już tę konfigurację, porozmawiamy o tym, co wiąże się ze skryptowaniem tych elementów w celu stworzenia gry.

6. Skrypty w jedności

Po dołączeniu skryptu do obiektu można go poprawić, klikając dwukrotnie w polu inspektor. To się otworzy MonoDevelop, domyślne środowisko programistyczne dla Unity. Zasadniczo Monodevelop to edytor tekstowy z funkcjami specjalnie zoptymalizowanymi pod kątem programowania.

Słowa kluczowe i komentarze są wyróżnione w niebieski i Zielony, a wartości liczbowe i ciągi pojawiają się w czerwony. Jeśli używałeś Zaćmienie lub inne IDE, MonoDevelop jest bardzo podobny. Możesz budować twoje skrypty z edytora, aby sprawdzić błędy składniowe, takie jak:

Programowanie gry w Unity: przewodnik dla początkujących gra w program jedności 15

Ogólnie rzecz biorąc, aby skrypt mógł współpracować z Unity, musisz odwoływać się do elementów, które posiada obiekt zawierający skrypt (możesz zobaczyć listę tych elementów pod inspektor po wybraniu odpowiedniego obiektu). Następnie możesz wywołać metody lub ustawić zmienne dla każdego z tych elementów, aby wprowadzić pożądane zmiany.

Jeśli chcesz, aby skrypt na obiekcie wpływał na właściwości innego obiektu, możesz utworzyć pusty GameObject w skrypcie i użyj inspektor aby przypisać go do innego obiektu w scenie.

Lista elementów, które może mieć obiekt, jest następująca (wzięta z widoku inspektora jednej z naszych łyżek w powyższym przykładzie):

  1. Przekształcać
  2. Kostka (filtr siatkowy)
  3. Box Collider
  4. Renderer siatki

Na każdy z tych aspektów obiektu można wpływać z poziomu skryptu. Następnie przyjrzymy się dokładnie, jak.

6.1 Przekształcenie

Funkcje transformacji GameObject w Unity kontrolują parametry fizyczne tego obiektu: jego skala, jego pozycja, i jej orientacja. Możesz uzyskać do nich dostęp z poziomu skryptu:

transform.position = newPositionVector3; transform.rotation = newRotationQuaternion; transform.localScale = newScaleVector3;

W powyższych przykładach nazwane zmienne należą do typów określonych w nazwach. Jest tu kilka kluczowych szczegółów: pozycja i skala są, jak można się spodziewać, przechowywane jako Vector3s. Możesz uzyskać dostęp do X, Y, i Z składniki każdego z nich (na przykład transform.position.y daje odległość obiektu powyżej płaszczyzny zerowej).

Jednak, aby tego uniknąć blokada kardanowa, rotacje są obsługiwane jako Czwartorzędy (wektory czteroskładnikowe). Ponieważ czwartorzędowe manipulacje ręczne są nieintuicyjne, możesz manipulować obrotami za pomocą kątów Eulera, używając Kwaternion. Euler metoda taka:

transform.rotation = Quaternion. Euler (skok, odchylenie, przechylenie);

Jeśli chcesz płynnie przenosić obiekty z jednego miejsca do drugiego, znajdziesz Slerp pomocna metoda dla quaternions i vector3s. Slerp przyjmuje trzy argumenty - aktualny stan, stan końcowy i szybkość zmiany i płynnie interpoluje je z określoną prędkością. Składnia wygląda następująco:

transform.position = Vector3.Slerp (startPositionVector3, newDestinationVector3, 1);

6.2 Renderujący

Funkcje renderera w Unity pozwalają kontrolować sposób renderowania powierzchni rekwizytów na ekranie. Możesz ponownie przypisać teksturę, zmienić kolor oraz zmienić moduł cieniujący i widoczność obiektu. Składnia wygląda następująco:

renderer.enabled = false; renderer.material.color = nowy Kolor (0, 255, 0); renderer.material.mainTexture = myTexture; renderer.material.shader = newShader;

Większość z nich ma dość przejrzyste funkcje. Pierwszy przykład powoduje, że przedmiotowy przedmiot jest niewidoczny: przydatna sztuczka w wielu sytuacjach. Drugi przykład przypisuje nowy Kolor RGB (mianowicie zielony) do danego obiektu. Trzeci przypisuje główną rozproszoną teksturę do nowej zmiennej Texture. Ostatni przykład zmienia moduł cieniujący materiału obiektu na nowo zdefiniowaną zmienną modułu cieniującego.

6.3 Fizyka

Unity ma zintegrowany silnik fizyki - coś takiego gry z piaskownicy fizyki Smash, Drive & Build: 3 niesamowite fizyki symulatory piaskownic Czytaj więcej wszystkie wykorzystują. Pozwala to przypisać fizyczne właściwości obiektów i pozwolić, aby szczegóły dotyczące ich symulacji były obsługiwane. Ogólnie rzecz biorąc, zamiast próbować wdrożyć własną fizykę za pomocą podręcznika i systemu transformacji, łatwiej i solidniej jest korzystać z silnika fizyki Unity w największym możliwym stopniu.

Wszystkie rekwizyty fizyki wymagają zderzaki. Jednak sama symulacja jest obsługiwana przez a sztywne ciało, które można dodać w inspektor widok. Sztywnymi ciałami mogą być kinematyczny lub niekinematyczny.

Rekwizyty fizyki kinematycznej zderzają się z (i skutkują) rekwizytami fizyki niedememicznej wokół nich, ale same kolizje nie mają na nie wpływu. Statyczne rekwizyty kinematyczne to przysłowiowe nieruchome obiekty, a poruszające się obiekty kinematyczne to przysłowiowa siła nie do powstrzymania (dla przypomnienia, gdy się zderzają, po prostu przechodzą przez każdą z nich inny).

Poza tym możesz regulować opór kątowy obiektu (ilość energii potrzebnej do jego zakręcenia), zmieniać jego masę, decydować, czy ma na nią wpływ grawitacja, i przykładać do niego siły.

Przykłady:

rigidbody.angularDrag = 0.1f; rigidbody.mass = 100; rigidbody.isKinematic = false; rigidbody.useGravity = true; sztywne ciało. AddForce (przekształc. Do przodu * 100);

Wszystkie są dość oczywiste. Jedyną rzeczą do odnotowania tutaj jest użycie przekształcić. do przodu. Vector3 ma trzy elementy (.Naprzód, .w górę, i .dobrze) powiązanych z nimi, do których można uzyskać dostęp i obracać się z nimi (Naprzód to kierunek niebieskiej strzałki w edytorze). The przekształcić. do przodu słowo kluczowe jest po prostu wektorem do przodu dla bieżącego obiektu o wielkości 1. Można go pomnożyć przez liczbę zmiennoprzecinkową, aby wytworzyć większą siłę na obiekcie. Możesz również odwołać się przekształcić i transform. w prawoi zaneguj je, aby uzyskać ich odwroty.

6.4 Zderzenie

Często budując grę, chciałbyś, aby kolizja spowodowała pewną zmianę stanu w kodzie, nie tylko symulację fizyki. W tym celu potrzebujesz metoda wykrywania kolizji.

Do wykrycia kolizji w Unity potrzebna jest pewna ilość prac przygotowawczych. Po pierwsze, co najmniej jeden obiekt w kolizji potrzebuje sztywne ciało nie kinematyczne dołączony do tego. Oba obiekty muszą mieć poprawne zderzacze, ustawione na nie wyzwalacze. Całkowita prędkość obu obiektów musi być na tyle niska, że ​​faktycznie zderzają się, zamiast po prostu przeskakiwać między sobą.

Jeśli masz już wszystko to załatwione, możesz sprawdzić kolizję, umieszczając specjalną metodę wykrywania kolizji w skrypcie dołączonym do obiektu, z którym chcesz sprawdzić kolizję. Metoda będzie wyglądać następująco:

void OnCollisionEnter (Collision other) {// rób rzeczy tutaj. }

Ta metoda zostanie automatycznie uruchomiona podczas pierwszej klatki, w której inny obiekt dotyka obiektu. Podmiot kolizji inny jest odniesieniem do uderzonego obiektu. Możesz na przykład odwołać się do jego gameobject, sztywne ciało, i przekształcać cechy do manipulowania nim na różne sposoby. Podczas OnCollisionEnter jest prawdopodobnie najczęstszą funkcją, której będziesz używać, możesz też jej użyć OnCollisionExit i OnCollisionStay (z inną identyczną składnią i użyciem), które aktywują się odpowiednio podczas pierwszej klatki, w której przestajesz kolidować z obiektem i podczas każdej klatki, w której kolidujesz z obiektem.

Czasami przydatne może być także robienie tego, co się nazywa raycasting. W raycastingu nieskończenie cienka linia (a promień) jest rzucany przez świat z jakiegoś źródła, wzdłuż jakiegoś wektora, a gdy coś trafi, zwracane są pozycje i inne szczegóły pierwszej kolizji. Kod raycast wygląda następująco:

RaycastHit hit; jeśli (Fizyka. Raycast (transform.position, -Vector3.up, out hit)) {float distanceToGround = hit.distance; }

To rzutuje promień z pozycji bieżącego obiektu wzdłuż -Vector3.up (prosto w dół) i łączy zmienną trafienie do pierwszego obiektu, z którym się zderza. Gdy twój promień uderzy w coś, możesz uzyskać dostęp hit.distance określić, jak daleko jest, lub trafienie. GameObject manipulować trafionym przedmiotem.

Takich Raycastów można użyć dla strzelców, aby określić, na co celuje broń, lub wybrać obiekty, gdy kamera na nie patrzy, lub dla określonych stylów mechaniki ruchu.

6.5 Korekta czasowa

Jest jeden ważny czynnik, o którym należy pamiętać, gdy manipulujesz obiektami w ten sposób częstotliwość wyświetlania klatek. Bez względu na to, jak ostrożnie zoptymalizujesz, liczba klatek na sekundę będzie się zawsze zmieniać i nie chcesz, aby szybkość gry była odpowiednio zróżnicowana. Jeśli ktoś inny uruchamia Twoją grę na szybszym komputerze niż ten, na którym ją opracowałeś, nie chcesz, aby gra działała z podwójną prędkością.

Poprawiasz to, mnożąc używane wartości przez czas potrzebny do renderowania ostatniej klatki. Odbywa się to za pomocą Time.deltaTime. To skutecznie zmienia prędkość dowolnej zmiennej, z której zwiększasz każdą klatkę zmiana na ramkę do zmiana na sekundę, i prawdopodobnie powinieneś wprowadzić tę zmianę do dowolnej wartości, którą zwiększasz lub zmniejszasz każdą klatkę.

6.6 Źródła audio i słuchacze

Teraz, gdy omówiliśmy, jak tworzyć, renderować i kontrolować obiekty, porozmawiajmy o innym sensie, w jakim gry komputerowe mogą służyć: dźwięk. Unity obsługuje dwa rodzaje dźwięków: 2D i 3D odgłosy. Dźwięki 3D zmieniają swoją głośność w zależności od odległości i zniekształcają się, gdy poruszają się względem kamery; Dźwięki 2D nie.

Dźwięki 2D są odpowiednie dla podkładów głosowych i muzyki w tle, a dźwięki 3D dotyczą dźwięków generowanych przez wydarzenia na świecie. Aby zmienić, czy dźwięk jest 3D, wybierz go w projekt zobacz, przejdź do inspektor przejrzyj i wybierz odpowiednią opcję z menu rozwijanego, a następnie naciśnij ponowny import przycisk.

Aby odtworzyć dźwięk, musisz dołączyć źródło dźwięku na rekwizyt (rekwizyt, z którego ma pochodzić dźwięk, w przypadku dźwięku 3D). Następnie musisz otworzyć klip audio pole i wybierz plik dźwiękowy.

Możesz użyć myAudioSource. Pauza() i myAudioSource. Grać() kontrolować te pliki dźwiękowe. Możesz dostosować zachowania opadania, głośność i przesunięcie Dopplera dźwięków pod inspektor zakładka dla źródła audio.

6.7 Wejście

Gra, która nie wymaga żadnych informacji od użytkownika, nie jest zbyt dużą grą. Istnieje wiele różnych rodzajów danych wejściowych, które można odczytać, i prawie wszystkie z nich są dostępne poprzez Wejście i Kod Klucza przedmioty Niektóre przykładowe instrukcje wejściowe (których wartości są oceniane w każdej ramce) są poniżej.

Vector3 mousePos = Input.mousePosition; bool isLeftClicking = Dane wejściowe. GetMouseButton (0); bool isPressingSpace = Wejście. GetKey (KeyCode. Przestrzeń);

Funkcje tych linii są w większości oczywiste. Korzystając z tych trzech rodzajów odniesień wejściowych, możesz zrekonstruować schematy sterowania większości nowoczesnych gier komputerowych 3D.

6.8 Debugowanie skryptu

Powiedzmy, że skrypt nie działa. Jak mówi dobry lekarz, mogą się zdarzyć ciosy i zawieszenia. Jeśli wystąpią bezpośrednie błędy składniowe na Twoim C #, gra zasadniczo odmawia uruchomienia po uruchomieniu gry, a niektóre dość przydatne komunikaty o błędach są wyświetlane, jeśli budować skrypty z poziomu edytora. Patrz poniżej:

Programowanie gry w Unity: przewodnik dla początkujących gra w program jedności 16

Te błędy zazwyczaj nie są najtrudniejsze do naprawienia. Bardziej problematyczne mogą być subtelne błędy semantyczne, w których z powodzeniem napisałeś plik pełen ważnego C # - po prostu nie taki, który robi to, co myślisz. Jeśli masz jeden z tych błędów i masz problem ze śledzeniem go, możesz spróbować poprawić sytuację.

Pierwszym z nich jest wstrzymanie wykonania gry i sprawdzenie konsoli. Możesz zatrzymać grę, klikając przycisk pauza ikona w górnej środkowej części edytora, a następnie wybierając konsola od dołu okno menu (lub naciskając Ctrl > Zmiana > do). Nawet jeśli nie ma żadnych błędów, ostrzeżenia nadal mogą dać wskazówki, co może pójść nie tak.

Jeśli to nie zadziała, możesz także spróbować dowiedzieć się więcej o stanie skryptu, drukując stan zmiennych wewnętrznych, aby sprawdzić, czy program robi to, co myślisz. Możesz użyć Odpluskwić. Dziennik (ciąg) aby wydrukować zawartość ciągu na konsoli, gdy wykonanie programu uderzy w tę linię. Ogólnie rzecz biorąc, jeśli pracujesz wstecz od tego, co Twoim zdaniem powinno się dziać poprzez rzeczy, które powinny być sprawiając, że tak się stanie, w końcu osiągniesz punkt, w którym odbitki debugujące nie będą robić tego, czego oczekujesz zrobić. Tam właśnie jest twój błąd.

7. Przykład: Skrypt Pong

Aby zbudować Pong, podzielmy grę na jej podstawowe elementy: potrzebujemy piłki, która przy wzroście odbija się między łopatkami prędkości, potrzebujemy tablicy wyników, która wie, kiedy piłki miną łopatki, i potrzebujemy mechanizmu ponownego uruchamiania piłki, gdy dzieje się. Dobrym pierwszym krokiem byłoby dodanie do piłki nie sztywnego nadwozia, dwóch sztywnych nadwozi kinematycznych wiosła, wyłącz grawitację dla wszystkich i przypisz odpowiedni materiał fizyczny ze standardowych zasobów (odbić się z bounce połączyć Ustawić zwielokrotniać).

Poniżej możesz zobaczyć skrypt dla piłki z komentarzami wyjaśniającymi. Piłka musi osiągnąć kilka podstawowych celów: powinna odbijać się w skomplikowany sposób, zawsze zachowując ruch w obu osiach i powinien przyspieszać w trudnym, ale nie niemożliwym tempie w poziomie kierunek.

BallHandler.cs

Następnie musimy napisać skrypt do naszej wiosła, którą możesz zobaczyć poniżej. Wiosło musi poruszać się w górę i w dół w odpowiedzi na naciśnięcia klawiszy (ale nie poza pewnymi granicami). Musi także uruchomić układ cząsteczek, gdy zderzy się z czymś.

PaddleHandler.cs

Następnie potrzebujemy sztucznej inteligencji wroga: czegoś, co sprawi, że wiosło przeciwnika będzie śledzić piłkę w ustalonym tempie. W tym celu będziemy używać Vector3.Slerp dla maksymalnej prostoty. Chcielibyśmy również takie samo zachowanie cząstek, jakie widzimy na własnej łopatce.

EnemyAI.cs

Na koniec potrzebujemy skryptu, aby zaktualizować tabelę wyników i zresetować piłkę, gdy przekroczy ona granicę.

ScoreboardUpdater.cs

Po dołączeniu tych skryptów i wypełnieniu odnośników, kiedy uruchamiamy naszą grę w Pong, doświadczamy rozgrywki!

Programowanie gry w Unity: przewodnik dla początkujących gra w program jedności 18

Możesz pobierz moją wersję demo Ponga, jeśli chcesz zobaczyć wszystko, co nakreśliłem w akcji. Działa w systemach Windows, Mac i Linux.

8. Poznawanie dokumentacji / Dowiedz się więcej

Unity to złożony silnik z wieloma dodatkowymi funkcjami, które można by opisać w przewodniku tego stylu, i to jeszcze przed dołączeniem szerokiej gamy (darmowych i komercyjnych) rozszerzeń Unity dostępnych w Internecie Internet. Ten przewodnik da ci dobre miejsce do rozpoczęcia gry, ale samokształcenie jest ważną umiejętnością w każdym przedsięwzięciu, i tutaj podwójnie.

Kluczowym zasobem jest tutaj Unity ScriptReference. ScriptReference jest przeszukiwalną bazą danych, dostępną zarówno dla C #, jak i Javascript, która ma listę każdego polecenia i cechy Jedności, wraz z opisami ich funkcji i krótkimi przykładami składnia.

Jeśli masz problemy z edytorem i interfejsem Unity, lub po prostu jak samouczki wideo w preferencjach, istnieje długa lista wysokiej jakości Samouczki wideo Unity Najlepsze samouczki Unity 3D dla początkującychChcesz tworzyć gry w Unity, ale nie wiesz od czego zacząć? Wypróbuj jeden z tych niesamowitych samouczków Unity 3D już dziś. Czytaj więcej dostępny. Bardziej obszerny (ale mniej szeroki) samouczki tekstowe dla Unity są również dostępne w CatLikeCoding.

Wreszcie, jeśli masz pytania wykraczające poza zakres dokumentacji lub samouczków, możesz zadać konkretne pytania pod adresem odpowiedzi Unity3d.com. Pamiętaj, że odpowiedzi udzielają wolontariusze, więc szanuj ich czas i najpierw przeszukaj bazę danych, aby upewnić się, że nie ma jeszcze odpowiedzi na twoje pytanie.

9. Kompilowanie gry / kompilacja do samodzielnej aplikacji

Kiedy zbudowałeś coś, z czego jesteś dumny (lub skończyłeś klonować nasz nieco podejrzany przykład Ponga na trening), czas na przenieś swoją grę z edytora i zmień ją w coś, co możesz opublikować w Internecie i zmusić znajomych i rodzinę grać. W tym celu musisz zbudować samodzielną aplikację. Dobra wiadomość jest taka, że ​​w Unity jest to bardzo, bardzo łatwe. Istnieje jednak kilka potencjalnych czkawek, na które należy uważać.

Na początek wiedz, że możesz zbudować tylko projekt bezbłędny. W tym celu upewnij się, że konsola jest otwarta podczas kompilacji: istnieją pewne błędy, które gra zignoruje w edytorze, ale nadal przerwie próbę kompilacji. Zrzuca to tylko komunikaty o błędach do konsoli, bez widocznych wyników na ekranie, co może być frustrujące, jeśli zapomnisz sprawdzić. Jednak po skompilowaniu gry bezbłędnie możesz wybrać Ustawienia kompilacji pod Plik menu lub naciśnij Ctrl > Zmiana
> b. Spowoduje to wyświetlenie prostego okna dialogowego, które pozwala zbudować grę na kilka platform.

Programowanie gry w Unity: przewodnik dla początkujących gra w program jedności 17

Stamtąd proces jest oczywisty: wybierz opcje i naciśnij budować; gra wyświetli monit o podanie katalogu do zainstalowania i umieści w nim zarówno katalog wykonywalny, jak i katalog danych. Te dwa pliki można spakować i rozpowszechnić (upewnij się, że nie pobierasz opłat za grę wbudowaną w wersję demonstracyjną Unity, ponieważ narusza to warunki korzystania z usługi).

10. Uwagi końcowe

Podobnie jak w przypadku każdego narzędzia do tworzenia gier, kluczem do sukcesu w Unity jest programowanie iteracyjne. Musisz budować przyrosty, które możesz kontrolować - bądź ambitny, ale bądź ambitny w małych porcjach i układaj takie kawałki, że nawet jeśli nie osiągniesz ostatecznych ambicji, przynajmniej skończysz z spójnym produkt.

Najpierw zdobądź najważniejsze elementy: pomyśl o swoim minimalny opłacalny produkt, najprostsza, najbardziej pozbawiona kości rzecz, jaką możesz stworzyć i nadal czujesz, jakbyś osiągnął coś wartościowego. Dotrzyj do tego minimalnie wykonalnego projektu, zanim przejdziesz do większych ambicji.

Ten samouczek daje ci dobre miejsce do rozpoczęcia, ale najlepszym sposobem na naukę Unity jest zbudowanie gry. Zacznij budować grę, wypełniaj luki w wiedzy, gdy tylko się pojawią, a stopniowy przepływ wiedzy zniszczy rzeczy, których nie znasz zaskakująco szybko.

Jeśli wszystko to przeczytałeś i jesteś trochę przytłoczony kodowaniem wymaganym w Unity, sprawdź, jak to zrobić uczyć się tworzenia gier z Unity Learn Unity Learn to najprostszy sposób na opanowanie tworzenia gierChcesz zacząć tworzyć własne gry? Unity Learn to najlepszy i najłatwiejszy sposób na nauczenie się i opanowanie tego, co musisz wiedzieć. Czytaj więcej a także przeczytaj nasz przewodnik na jak tworzyć gry wideo bez programowania Jak tworzyć gry wideo bez programowaniaChcesz stworzyć grę wideo, ale nie możesz kodować? Następnie użyj zestawu do budowy gier wideo, który pozwala tworzyć gry bez konieczności kodowania! Czytaj więcej .

Unity to potężne narzędzie, a przy odrobinie eksploracji możesz tworzyć imponujące projekty szybciej, niż się spodziewasz. Daj nam znać, co napisałeś w komentarzach poniżej - chcielibyśmy zobaczyć!

Andre, pisarz i dziennikarz z południowego zachodu, gwarantuje funkcjonalność do 50 stopni Celsjusza i jest wodoodporny do głębokości dwunastu stóp.