Logo pl.nowadaytechnol.com

Jak Stworzyć Podstawową Grę Platformową Unity

Spisu treści:

Jak Stworzyć Podstawową Grę Platformową Unity
Jak Stworzyć Podstawową Grę Platformową Unity

Wideo: Jak Stworzyć Podstawową Grę Platformową Unity

Wideo: Jak Stworzyć Podstawową Grę Platformową Unity
Wideo: Dodaj MENU do swojej gry! - Unity 2024, Marsz
Anonim

W tym ekskluzywnym samouczku Appual pokażemy, jak skonfigurować Unity (z obsługą WebGL) i stworzyć swój pierwszy projekt gry. W tym samouczku możesz sklonować inną grę online, ale jeśli chcesz tworzyć własne gry przeglądarkowe, powinieneś mieć pewne doświadczenie w programowaniu w HTML5 / JavaScript (i może C ++, jeśli chcesz być fantazyjny).

Tworzenie gier przeglądarkowych w Unity WebGL może być całkiem satysfakcjonujące - istnieje wiele portali z grami, które dzielą się z Tobą przychodami z reklam lub kupują od Ciebie gry. Jeśli jesteś utalentowany, możesz łatwo zarobić kilka tysięcy dolarów miesięcznie na udziale w przychodach z reklam. Jedność z WebGL jest jednym z najlepszych narzędzi do tego celu, a dzięki wtyczkom WebVR możesz również dość łatwo zapewnić swoim grom obsługę VR.

Jeśli więc zastanawiasz się, jak tworzyć gry Unity WebGL, czytaj dalej!

Wymagania

  • Jedność
  • Znajomość HTML5 / JavaScript
  • (Opcjonalnie) dobry edytor tekstu, taki jak NotePad ++

Aby rozpocząć, pobierz i zainstaluj Unity i upewnij się, że zainstalowałeś komponent obsługi WebGL.

Image
Image

Kiedy Unity uruchamia się po raz pierwszy, poświęć chwilę, aby przyzwyczaić się do interfejsu użytkownika i menu, zwłaszcza panelu Hierarchia - zawiera on wszystkie aktualne elementy sceny. Jest to w zasadzie główny widok wszystkiego, nad czym pracujesz, czy to poziom gry, czy menu główne.

Masz również zakładkę Game (do testowania gry w edytorze), a po prawej stronie znajduje się panel Inspector. Tutaj można edytować elementy, na przykład światła, aktorów itp.

Jeśli klikniesz przycisk Kierunkowe światło w menu Hierarchia, dostaniesz mnóstwo informacji o tym konkretnym świetle i będziesz mógł włączyć / wyłączyć rzucane przez nie cienie.

Na końcu masz okno Projekt u dołu, które po prostu zachowuje zakładkę plików używanych do tworzenia projektu.

Po zapoznaniu się z interfejsem użytkownika, przejdź dalej i zapisz bieżącą scenę. Idź do Plik> Zapisz scenę, a otworzy się okno dialogowe dla folderu „Zasoby”. Podczas tworzenia gier standardową praktyką jest organizowanie elementów w podfolderach, dlatego utwórz podfolder o nazwie „Sceny” i zapisz w nim scenę.

Teraz zamierzamy stworzyć coś naprawdę prostego - grę typu „platformówka”, w której nasza postać po prostu przeskakuje po platformach. Upadek oznacza śmierć. Będziemy to robić w widoku 3D / pierwszej osoby, więc postać tak naprawdę nie modeluje - w rzeczywistości użyjemy prostego obiektu „kuli” dla naszej postaci, ponieważ jest on najłatwiejszy do stworzenia.

Image
Image

Dlatego w panelu Hierarchia kliknij „Utwórz” i edytuj te właściwości:

  • Pozycja {X: 0, Y: 2,5, Z: 0}
  • Skala {X: 0,3, Y: 0,3, Z: 0,3}

Jeśli naciśniesz przycisk „Odtwórz”, w widoku kamery powinna wyświetlić się prosta sfera. Teraz chcemy dodać grawitację i przeskoczyć fizykę do naszej „postaci”.

W panelu Inspector dodaj komponent do sfery i wybierz Rigidbody - również nie chcemy, aby kula się obracała, więc przejdź do Constaints> wybierz wszystkie osie w obszarze Rotation.

Teraz musimy stworzyć jakąś platformę, aby nasza postać nie spadała bez końca w grze. Dodaj więc kostkę i ustaw wartość Skali Y na 0.1 - teraz, jeśli ponownie „zagrasz” scenę, nasza postać powinna „spaść” na kostkę.

Teraz dodamy trochę fizyki, aby nasza postać trochę się „odbijała”, gdy uderzy w platformę z sześcianem. Musimy stworzyć nowy materiał fizyczny i zastosować go do kuli, aby nasza postać miała sprężyste właściwości.

Utwórz nowy podfolder w katalogu Zasoby i nazwij go na przykład „Materiały”, a następnie utwórz nowy materiał fizyczny. Nazwij to „Bouncy_blob” lub jak chcesz.

Teraz w panelu Inspekcja dodaj następujące wartości do sprężystego materiału:

  • Dynamiczne tarcie: 10
  • Fikcja statyczna: 10
  • Bounciness: 1
  • Kombinacja cierna: maksymalna
  • Bounce Combine: maksymalnie

Powinniśmy również dodać materiał fizyczny do platformy pod naszą kulą - będzie to tak, że nasza kula będzie odbijać się z rosnącą wysokością przy każdym odbiciu. Stwórz więc inny materiał i nazwij go, np. „Platform_bouncing”, i nadaj mu wartości:

  • Tarcie dynamiczne: 0,9
  • Fikcja statyczna: 0.9
  • Bounciness: 1
  • Kombinacja cierna: średnia
  • Bounce Combine: Pomnóż

Teraz, gdy naciśniesz przycisk „Odtwórz”, zauważysz, że nasza postać podskakuje wyżej przy każdym odbiciu.

Aby dodać trochę koloru / tekstury do platformy, utwórz nowy materiał i kliknij zakładkę „Albedo”, a następnie nadaj mu kolor. Możesz przeciągnąć i upuścić ten materiał na platformę, a zmieni on kolor.

Image
Image

W przypadku perspektywy pierwszoosobowej wystarczy przeciągnąć i upuścić kamerę z panelu Hierarchia na naszą sferę - spowoduje to, że kamera cały czas będzie podążać za naszą postacią. To założenie pozostaje takie samo w przypadku każdego rodzaju pierwszoosobowej gry Unity - ale jeśli tworzysz wieloosobową grę FPS, taką jak Leader Strike, staje się ona nieco bardziej zaawansowana, ponieważ będziesz mieć kilka kamer skonfigurowanych na model.

W każdym razie musisz edytować kamerę tak:

  • Pozycja {X: 0, Y: 1, Z: 0}
  • Obrót {X: 90, Y: 0, Z: 0}
  • Skala {X: 2,5, Y: 2,5, Z: 2,5}
  • Wyczyść flagi: jednolity kolor
  • Tło: # 000
  • Pole widzenia: 80,3

Teraz, aby dać nam poczucie „perspektywy” na wysokość skoku, dodamy reflektor. Więc dostosuj wartości reflektora, aby:

Obrót {X: 90, Y: 0, Z: 0}

Teraz chcemy zaprogramować sterowanie w grze, abyśmy mogli sterować ruchem postaci za pomocą myszy. Potrzebujemy do tego skryptu.

W panelu Projekty dodaj nowy folder i nazwij go „Skrypty”. Teraz dodaj JavaScript do kamery i nazwij go „InputController”, a także dodaj go do właśnie utworzonego folderu „Scripts”. Teraz po dwukrotnym kliknięciu skryptu można edytować jego właściwości.

Po otwarciu skryptu w domyślnym edytorze skryptów Unity powinien on wyglądać następująco:

Image
Image

Dlatego chcemy, aby zmienna „GameObject” odnosiła się do naszej postaci - w tym celu możesz po prostu przełączyć się z powrotem do widoku kamery Unity i przeciągnąć / upuścić naszą sferę na pole wejściowe.

Teraz chcemy przypisać połowę szerokości i wysokości ekranu do funkcji Start. Więc edytuj skrypt, aby wyglądał tak:

Image
Image

Więc teraz potrzebujemy tylko wartości myszy (za każdym razem, gdy jest poruszany przez gracza). Aby to osiągnąć, będziemy musieli skorzystać z funkcji Update. Więc dostosuj skrypt pod zmienną Update:

Image
Image

Aby wyjaśnić nieco, zmienne X i Z dotyczą osi kontrolera - chcemy, aby manipulowały pozycją naszej postaci, gdy wysyłamy dane wejściowe kontrolera do gry. Musimy odwołać się do zmiennej Input.mousePosition, która daje nam wektor 2D. Ten wektor 2D musi zostać dodany do naszego śledzenia koordynacji, więc nazwiemy funkcję setHeroPosition z wartościami jako argumentami.

Więc stwórz nowy skrypt, nazwij go HeroController i dołącz go do naszej sfery / postaci. Edytuj skrypt, aby wyglądał następująco:

Image
Image

Teraz po naciśnięciu przycisku „Graj” powinieneś być w stanie nawigować postacią po platformie za pomocą myszy, a nawet spaść z platformy! Naszym końcowym celem jest stworzenie gry platformowej podobnej do Short Life, więc w następnym przewodniku omówimy tę grę bardziej szczegółowo.

To już koniec podstaw tworzenia bardzo prostej rozgrywki w Unity - w następnej części tego przewodnika omówimy, jak dodać więcej scenerii do poziomu, dodać menu gry i wyeksportować to wszystko na stronę internetową za pomocą WebGL, aby grać w wyszukiwarce.

Tworzenie platform proceduralnych

Tak więc w pierwszej części tego samouczka stworzyliśmy właśnie podstawową platformę, na której twoja postać może odbijać się (i spaść do swojej zagłady) - ale w przypadku prawdziwej platformówki musimy dodać dodatkowe platformy. Ale nie chcemy dodawać miliona platform - chcemy, aby Unity automatycznie tworzyło platformy, gdy nasza postać podskakuje.

W tym celu potrzebujemy szablonu platformy - znanego również jako „prefabrykat”. Prefabrykat jest skrótem od prefabrykowanego i oznacza po prostu „gotowy” - zwykle jest to kopia obiektu gry, którego można używać wielokrotnie. W rzeczywistości prefabrykaty mogą zawierać hierarchie obiektów gry, co oznacza, że można „prefabrykować” całą scenę obiektów gry.

Image
Image

Musisz więc utworzyć nowy folder zasobów o nazwie Prefabs, a następnie przeciągnąć i upuścić naszą platformę z panelu Hierarchia do tego nowego folderu. Gotowce będą rozpoznawalne w panelu Hierarchia po kolorze niebieskim.

Teraz, aby poinstruować Unity do tworzenia platform proceduralnych, musimy stworzyć skrypt o nazwie GameManager i dołączyć go do kamery. Skrypty GameManagera zawierają w zasadzie ważne instrukcje, które silnik przekazuje do rozgrywki - w tym przypadku będzie on generował platformy w miarę przeskakiwania naszej postaci.

Powód, dla którego dołączamy go do kamer, ponieważ kamera nigdy nie została zniszczona i pozostaje stała - więc scenariusz nigdy nie jest niszczony i pozostaje stały, gdy jest do niego dołączony.

Oto, co należy uwzględnić w skrypcie:

Image
Image

Aby wyjaśnić ten fragment kodu, musimy utworzyć odniesienie zarówno do panelu prefabrykatów, jak i do sfery (naszej postaci), więc musisz przeciągnąć je i upuścić w odpowiednich miejscach w edytorze.

Ten kod zawiera również trzy zmienne prywatne - wiersze zaczynające się od private var. Spowoduje to utworzenie instancji (odniesienie) do panelu prefabrykowanego w następujący sposób:

  • Prywatna granica zmienna: limit miejsc pływających na osi y, więc gdy nasza postać skoczy wyżej niż ta granica, zostanie utworzony nowy panel.
  • Prywatna rotacja var: Quaternion; po prostu dodaje niezbędny obrót w celu utworzenia instancji naszych prefabrykatów - jednak dodajemy rotację = Quaternion.identify; ponieważ powoduje to, że silnik nie obraca obiektu gry. Obiekt (nasze prefabrykowane panele) będzie dosłownie „idealnie dopasowany” do świata.
  • Ostatnia zmienna prywatna lastPlatformPosition zapamięta i zapisze pozycję ostatniej platformy jako wektor 3D (w zasadzie platformy nie znikną za tobą, więc możesz cofnąć się przez świat gry, jeśli chcesz).

W następnym skrypcie dodamy sprawdzanie dla każdej klatki, czy nasza sfera (znak) jest powyżej granicy (co generuje nowe platformy) - jeśli nasza postać jest powyżej granicy, podnosimy limit granicy aby utworzyć nowy panel / platformę wyższą niż poprzednia.

Image
Image

Naszym kolejnym krokiem jest dodanie kodu określającego kolejną pozycję panelu:

Image
Image

Używamy pętli do while w tym kodzie, aby upewnić się, że wartości X i Z wektora (jego pozycja w świecie gry) nie są identyczne z poprzednimi platformami - więc wysokość naszych platform generowanych proceduralnie będzie zawsze rosła.

Oczywiście nie chcemy, aby te wartości były ściśle określone - odrobina przypadkowości to dobra rzecz, w przeciwnym razie robimy po prostu idealne schody. Więc używamy funkcji Random. Range, między wartościami -1 i 2, aby wywołać losowe wartości dla X i Z. Możesz bawić się tymi liczbami, jeśli chcesz się wygłupiać.

Tworzenie menu gry

Do tej pory stworzyliśmy „grę”, w której możesz skakać z rosnącą wysokością i poruszać myszą, aby kontrolować kierunek. Problem polega na tym, że jeśli spadniesz z platformy, spadniesz bez końca - musimy zacząć od skryptu w menu „śmierć” / gra.

Więc w zasadzie napiszemy skrypt, który sprawdzi, czy nasza sfera (postać) znajduje się poniżej pierwszej platformy w grze. Jeśli tak, skrypt załaduje nową scenę.

Naszym pierwszym krokiem będzie sprawdzenie, czy kula spadła poniżej określonego progu. Przejdź do skryptu GameManager, który zrobiliśmy wcześniej i spójrz na instrukcję if funkcji aktualizacji.

Użyjemy tutaj instrukcji else if, aby sprawdzić, czy pozycja naszej sfery jest poniżej -2,0 jednostek pozycji Y - jeśli tak jest, nasza funkcja prywatna gameOver… cóż, ten fragment skryptu jest oczywisty.

Image
Image

Ten ostatni fragment skryptu to funkcja służąca do obsługi stanu „koniec gry” i wczytywania menu gry.

To odnosi się do klasy Application Unity - jesteśmy w stanie wywołać funkcję LoadLevel, aby wywołać nową scenę, która w tym przypadku jest po prostu naszym menu gry - pamiętaj, że w zasadzie wszystko w Unity to „poziomy”. Główne menu (Rozpoczęcie gry - Opcje - Kredyty - itd.) To po prostu poziomy / sceny z fragmentami tekstu, na który można kliknąć. Coś jak ekrany ładowania Skyrim, co? To tylko modele 3D w pustej przestrzeni świata z paskiem ładowania.

W każdym razie musimy stworzyć scenę poprzez Plik> Nowa scena i nadać jej nazwę Menu podczas jej zapisywania. Następnie dodamy obie sceny do procesu tworzenia. Odbywa się to poprzez Plik> Ustawienia kompilacji.

Nasza scena menu powinna być nadal otwarta, więc po prostu kliknij przycisk „Dodaj bieżącą” i dodaj scenę do ustawień kompilacji - zrób to ponownie ze sceną poziomu.

Kiedy umieramy w grze, stworzony przez nas skrypt powinien przenieść nas z poziomu gry do sceny menu.

Dodaj przycisk „Start” dla graczy

Teraz możemy grać w tę grę w trybie testowym, ale w tej chwili gracze nie mają możliwości rozpoczęcia gry, gdybyśmy mieli gdzieś ją przesłać. Musimy więc stworzyć menu gry z przyciskiem do uruchomienia gry.

Przejdź więc do sceny menu gry i dodaj ten bit do kamery (w panelu Inspector, pamiętasz z punktu 1 tego samouczka?).

  • Wyczyść flagi: jednolity kolor
  • Tło: # 000
  • Szerokość: 200
  • Wysokość: 60

To da nam solidne czarne tło dla naszego menu gry - jest to robione w wartościach RGB, a nie szesnastkowych - więc niebieski to 001, zielony to 010, czerwony to 100 itd. Mógłbym ci to wyjaśnić, ale wszystko, czego potrzebujesz zrób to „selektor RGB” Google, jeśli chcesz mieć określony kolor.

Idąc dalej, musimy dodać nasz przycisk, aby rozpocząć grę. Odbywa się to za pomocą elementów UI - w zasadzie możemy dodawać elementy UI w ten sam sposób, w jaki dodajemy elementy 3D, za pośrednictwem panelu Hierarchia. Więc śmiało i stwórz przycisk interfejsu użytkownika, a zobaczysz kilka nowych elementów w panelu Hierarchia:

  • EventSystem
  • Brezentowy
  • Przycisk
  • Tekst

Aby to wyjaśnić - płótno jest naszym kontenerem dla wszystkich elementów interfejsu użytkownika i możemy sprawić, że będzie responsywny (przez responsywność mam na myśli „skalowanie do rozmiaru ekranu”, a nie responsywność, tak jakby odpowiadała na pytania, które zadajesz. Najlepiej pozostawić to skryptom sztucznej inteligencji). W każdym razie zmienimy pozycję przycisku na:

  • Przekształcenie prostokąta {Poz X: 0, Poz Y: 0, Poz Z: 0}
  • Prosta transformacja {Szerokość: 200, Wysokość: 60}

Aby uczynić to nieco bardziej eleganckim, możesz usunąć „obraz źródłowy” przycisku i ustawić dla niego kolor. Aby zmienić tekst przycisku, po prostu edytuj element Tekst na coś w rodzaju „ROZPOCZNIJ GRĘ” i nadaj mu rozmiar czcionki około 16.

Aby przycisk był klikalny, dodamy funkcję do skryptu UIController w elemencie Button. Po prostu dodaj ten fragment kodu poniżej:

Image
Image

Zastosuj tę funkcję do ustawień Inspektora przycisku, aw ustawieniach komponentu Button (Skrypt) po prostu dodamy funkcję, która jest wykonywana, gdy odtwarzacz kliknie nasz przycisk Start. Po prostu dodaj funkcję do zdarzenia On Click () i przeciągnij / upuść przycisk Start Game do pola wprowadzania. Na koniec wybierz nowo utworzoną funkcję ze skryptu UIController (UIController. StartGame)

Możemy zastosować tę funkcję w ustawieniach Inspektora przycisku. W ustawieniach komponentu Button (Script) możemy wykonać funkcję za każdym razem, gdy gracz go kliknie. W tym celu dodajemy nową funkcję do zdarzenia On Click (), klikając ikonę +. Teraz możemy przeciągnąć i upuścić sam przycisk na pole wejściowe. Następnie wybieramy funkcję, którą właśnie napisaliśmy ze skryptu UIController (UIController. StartGame).

Jak wyeksportować / opublikować jako grę w przeglądarce WebGL

Otwórz ustawienia kompilacji i wybierz WebGL jako platformę docelową. Teraz kliknij przycisk Zmień platformę, a na koniec kliknij przycisk Buduj i podaj tytuł swojej gry. Po zbudowaniu zostanie wyeksportowany / zapisany jako plik. HTML, który można otworzyć / wyświetlić w dowolnej przeglądarce obsługującej WebGL. Chociaż jeśli chcesz opublikować swoją grę, możesz to osiągnąć na dwa sposoby:

  • Prześlij swoją grę do jakiegoś hosta plików (Dropbox, Dysk Google itp.), A następnie udostępnij link. Jest to przydatne w przypadku małych demonstracji, które chcesz pokazać znajomym lub potencjalnym klientom (witryny internetowe z grami, które albo kupią twoją grę, albo skonfigurują z tobą udział w reklamach).
  • Prześlij swoją grę na serwer FTP, którego jesteś właścicielem i umieść ją w takim miejscu:.
Image
Image

Możesz dostosować te wartości iframe i zrobić z nimi wiele różnych rzeczy. Na przykład dodanie elementu iframe, takiego jak allowfullscreen = true, pozwoliłoby grze przeglądarkowej na pełnoekranowe.

Dodatkowe zasoby:

Nie radziłbym publikować tej gry, którą stworzyliśmy w tym samouczku, na portalu gier platformowych; będziesz wyglądać naprawdę głupio bez uprzedniego polerowania.

Jednym ze sposobów na poprawienie wyglądu gry, zwłaszcza jeśli nie jesteś szczególnie dobry w tworzeniu modeli 3D, jest wykorzystanie darmowych (lub płatnych) zasobów. Oto kilka bibliotek, które warto sprawdzić:

  • Unity Asset Store (oficjalny sklep z zasobami Unity - tutaj również wiele bezpłatnych opcji)
  • Sketchfab: modele Unity 3D
  • Deviantart: modele Unity 3D
  • Światy proceduralne: zasoby Unity
  • GameArt2D: Freebies (głównie zasoby oparte na sprite / pikselach)

Dostępnych jest naprawdę mnóstwo zasobów, wystarczy uważać i czytać drobne druki - niektóre darmowe zasoby mogą być używane w projektach komercyjnych, inne pozwalają na wykorzystanie ich zasobów tylko wtedy, gdy gra jest darmowa.

Zalecana: