Tutorial Unity3d, czyli tworzymy własną grę FPS od podstaw z wykorzystaniem silnika Unity.

Temat: Jak przygotować teren do gry. Oraz jak korzystać z narzędzi i edytora terenu.

Spis treści

Jeżeli nie używałeś do tej pory Unity3d:

#0 – Podstawy Podstaw

FPS Tutorial:

#1 – Tworzenie nowego projektu i narzędzie terenu

#2 – Sterowanie postacią

#3 – Życie, pancerz i wytrzymałość postaci

#4 – Regeneracja życia i energii. Efekty trafienia.

#5 – Kamera z bronią i strzelanie

#6 – Przeładowanie broni i amunicja

#7 – Zbieranie przedmiotów

#8 – Druga broń

#9 – Rzut granatem i seria z karabinu

#10 – Celowanie i dziury po kulach

#11 – Przeciwnik z prostym AI, sztuczna inteligencja

#12 – Animacja postaci przeciwnika. Animator

#13 – Menu główne gry. GUI

#14 – Ostatnie szlify i budujemy projekt

Tworzymy nowy projekt

Stworzenie projektu to sprawa najprostsza. Uruchamiamy zainstalowanie Unity3d. Wybieramy z menu górnego File->New Project, a naszym oczom ukazuje się poniższe okienko:

Okno tworzenia nowego projektu w Unity3d
Okno tworzenia nowego projektu w Unity3d v.4.3
Tworzenie nowego projektu w Unity3d 5.0
Tworzenie nowego projektu w Unity3d 5.0

Project location, to oczywiście miejsce gdzie zapiszemy dane na dysku.

Setup Defaults for. Mamy do wyboru 3D albo 2D. Jest to dostępne od wersji 4 Unity, gdzie pojawiły się narzędzia do pracy z grami 2D. Dostosowuje nam to ustawienia silnika pod daną perspektywę. My robimy grę 3D, więc zostawiamy ustawienie jak jest. Zainteresowanych różnicami, odsyłam do krótkiego opisu różnic.

Import following packages, daje nam możliwość importu pewnych paczek. Część z nich dostępnych jest domyślnie w Unity, ale bazę możemy łatwo rozbudować paczkami z Unity Asset Store. My dodamy sobie do projektu następujące paczki:

Unity3d w wersji < 5.0

  • Character Controller – Odpowiada za kontrolę postaci gracza. Omówione zostanie w późniejszych tutorialach.
  • Particles – Są to gotowe systemy cząstek, np. ogień czy dym. Również dokładniej się im przyjrzymy później.
  • Skyboxes – Można to tłumaczyć jako pudełko nieba i w sumie takie ma zastosowanie. Sprawia że tam gdzie nie ma elementów gry, zobaczymy niebo.
  • Terain assets – Elementy terenu. Paczka kilku elementów i tekstur, które posłużą nam do zapełnienia świata gry
  • Tree creator – Jest to narzędzie do generowanie drzew. Wykorzystamy je do dekoracji naszej wyspy.
  • Water (Basic) – Oczywiste – woda. Basic, dlatego że mamy wersję Unity3d Free. Woda jest mniej realistyczna i nie dynamiczna.
  • General Music Set – Skorzystamy sobie z darmowych podkładów muzycznych. Nie uwzględnia do sampli (czyli np. odgłosów), ale wystarczy żeby załapać na czym polega praca z dźwiękiem.

Unity3d w wersji 5.0

  • Characters – Kontrola postaci gracza
  • Particles System – Efekty cząsteczkowe, czyli wszystkie wybuchy, płomienie itp.
  • Environment – Środowisko, czyli drzewa, krzewy, woda

Tworzymy teren

Czas na mięsko! :)

Zaczynamy od dodania obiektu terenu. [Game Object -> Create Other -> Terrain]. Teraz, zanim zrobimy cokolwiek innego, powinniśmy zdefiniować ustawienia. W panelu Inspektor, powinieneś zobaczyć takie oto menu:

Opcje menu terenu
Opcje narzędzia terenu

Zaczynamy od ostatniego. Resztę omówię w kolejnych krokach. Na samym początku, ważne dla nas są ustawienia Resolution. Powinniśmy je dobrze przemyśleć, bo zmienianie ich w trakcie tworzenia gry, może sprawić, że część wymodelowanego obszaru, zwyczajnie się posypie.

opcje Resoultion
Opcje Resoultion

Kluczowe do zmiany dla nas jest Terrain Width, Length i Height. Pierwsze dwa to oczywiście długość i szerokość naszego terenu. Jednostką w jakiej to wyrażamy są metry. Wysokość o tyle różni się od pozostałych, że faktycznie jest to maksymalna dostępna wysokość terenu.

Kolejne opcje odpowiadają za rozdzielczości:

  • Heightmap Resolution – Rozdzielczość mapy wysokościowej. Oznacza jak szczegółowa jest tekstura, w której Unity przechowuje topografię terenu. Trzeba tutaj pamiętać że ta rozdzielczość powinna być podana nie w potędze dwójki, a w rozmiarze o 1 większym od tej potęgi. Dlatego wartość 513.
  • Detail Resoultion – Rozdzielczość detali. Definiuje ona szczegółowość detali terenu, gdzie detal terenu to nic innego jak krzaczki, drzewa, rośliny, skały. W praktyce przekłada się to na fakt, że im wyższa ta wartość, tym więcej takich elementów, może być blisko siebie.
  • Detail Resoultion Per Path – Rozdzielczość każdego fragmentu terenu
  • Control Texture Resolution – Jest to rozdzielczość tekstur, w czasie ich nakładania na powierzchnię terenu. Innymi słowy im wyższy parametr, tym dokładniejsze można zrobić przejście między dwoma rodzajami tekstury. Jednak trzeba pamiętać, że wysoka wartość tego parametru, może nam bardzo zamulić grę.
  • Base Texture Resoultion – Jest to rozdzielczość tekstury, jakiej użyje Unity przy renderowaniu obszarów terenu, odpowiednio odległych od kamery gry.

Ciekawą opcją jest też zaimportowanie mapy terenu w formie pliku RAW. Jest to płaska tekstura, w jasnych i ciemnych barwach, które reprezentują topografię terenu.

Resztą opcji dostępną w tym menu nie będziemy się zajmować.

Wraz z Unity 5.0 w tej zakładce pojawiło się kilka dodatkowych, interesujących opcji, które sobie omówimy:

Opcje terenu w Unity 5.0
Opcje terenu w Unity 5.0

Base Terrain

  • Draw – Czy rysujemy teren. Odznaczenie, schowa cały model terenu, zostawiając drzewa i inne tego typu elementy
  • Pixel Error – Dokładność mapowania pomiędzy mapami, takimi jak tekstury, a samym terenem. Wyższa wartość zmniejsza dokładność, ale poprawia sprawność renderowania.
  • Base Map Distance – Dystans do którego tekstury są renderowane w najwyższej rozdzielczości. Powyżej tej wartości, użyte będą tekstury o niższej rozdzielczości.
  • Cast Shadows – Czy na terenie mają pojawić się cienie
  • Material – Materiał użyty na teren.
  • Reflection Probes – Jakie próbki odbicia światła są użyte. Działa tylko, gdy na poprzedniej opcji wybrano built-in standard material, albo Custom – gdzie wybrany materiał obsługuje renderowanie z odbiciem.
  • Thickness – Jak głęboko sięga collider terenu wgłąb. Dzięki temu, można zapobiec przenikaniu obiektów w głąb terenu, bez dodatkowych, skomplikowanych obliczeń.

Tree & Detail Objects

  • Draw – Analogicznie, czy rysować drzewa i detale.
  • Detail Distance – Dystans do którego detale będą rysowane.
  • Detail Density – Ilość obiektów detali, które będą rysowane na daną jednostkę obszaru. Zmniejszenie wartości, może odciążyć komputer.
  • Tree Distance – Jak wcześniej, dystans do którego będą rysowane drzewa.
  • Billboard Start – Dystans po przekroczeniu którego, drzewa z modeli 3D będą zastępowane obiektami typu bilbord, aby odciążyć komputer.
  • Fade length – Czas w którym drzewa będą zmieniane z bilbordów na obiekty 3D i odwrotnie.
  • Max Mesh Trees – Maksymalna liczba drzew, które są renderowane jako obiekty 3D. Wszystkie powyżej tej liczby, będą zmienione na bilbordy. Parametr do optymalizacji gry.

Wind Settings

  • Speed – Szybkość wiatru dmuchającego w  trawę.
  • Size – Wielkość „fal” na trawie, które powstają gdy wiatr w nie wieje – wyobraź sobie wielkie pole wysokiej trawy, aby sobie to zobrazować.
  • Bending – Pod jakim kątem trawa może się wygiąć.
  • Grass Tint – Dodatkowy odcień dla trawy.

Uwaga!

Zanim zaczniemy modelowanie, mała uwaga. Przed uruchomieniem gry, musisz zawsze zapisać scenę. W przeciwnym wypadku, może się zdarzyć tak, że będziesz chodził po dziurach, albo przechodził przez góry.

Modelujemy teren

W tym podrozdziale zajmiemy się 3 pierwszymi podmenu.

  • Raise / Lower Terrain – To jest dość oczywiste. Pozwala manipulować wysokością terenu w górę i w dół.
  • Paint Height – Działa podobnie jak powyższe, ale pozwala nam ustawić nieprzekraczalną wysokość.
  • Smooth Height – To jest narzędzie do poprawek. Samo nie manipuluje wysokością, ale wygładza stoki. Przez co możemy terenowi nadać realizmu.

Zacznijmy od narzędzia Paint Height

Tut_1_04
Paint Height

Jego opcje prezentują się nieco inaczej od pozostałych. Dokładniej jednym polem:

Opcje menu Paint Height
Opcje menu Paint Height

Oczywiście ta opcja to Height z dołączonym przyciskiem Flatten. Dlaczego zaczynamy tutaj? Domyślnie Teren jest ustawiony na wysokości 0. Co sprowadza się do tego, że niemożliwym jest zrobienie depresji. Podciąganie każdego kawałka terenu w górę może być niewygodne. Dlatego zaczniemy od ustawienia parametru Height na 100 i kliknięciu Flatten. Sprawi to że zmieni się domyślna wysokość terenu.

Teraz możemy przejść do menu Rise / Lower Terrain

Rise / Lower Terrain
Rise / Lower Terrain

Mamy tutaj tak naprawdę niewiele opcji:

Opcje menu Paint Height
Opcje menu Paint Height

Możemy sobie wybrać format pędzla, jego rozmiar, oraz poziom nakładania. Znamy to z każdego programu graficznego. Wybierz sobie dowolne parametry i zwyczajnie pobaw się narzędziem żeby zrozumieć zasady jego działania. Jedyne co Ci się przyda to:

  • Lewy klawisz myszy – Zwiększamy teren
  • Shift + Lewy klawisz myszy – Zmniejszamy teren

W tym miejscu warto też przetestować tworzenie terenu z ogranicznikiem wysokości. Jeżeli ustawisz go powyżej 100, teren będzie rósł do tego wymiaru i tworzył płaskowyż. Jeśli ustawisz wysokość na wymiar poniżej 100, teren będzie automatycznie się zmniejszał. Pamiętaj że 100 to magiczna liczba, która definiuje nasz „poziom morza”. Jeżeli ustawiłeś inną wartość parametru, powinieneś się odnosić do niego.

Jeżeli wiesz już jak działają narzędzia, czas wyrównać nasz teren i zrobić coś porządnego. Tern wyrównasz wchodząc znów w narzędzie Paint Height. W menu Height wprowadź 100 i kliknij Flatten. Stworzymy sobie coś na kształt wyspy.

U mnie proces wyglądał następująco:

  • Najpierw dużym pędzlem o wysokiej wartości opacity, stworzyłem zarys wyspy, tworząc zagłębienia.

    Stworzenie zaysu wyspy
    Stworzenie zarysu wyspy
  • Następnie, zmniejszając Opacity pędzla i jego rozmiar i  bawiąc się kształtami pędzla, stworzyłem kilka nierówności w terenie.

    Tworzymy nierówności w terenie
    Tworzymy nierówności w terenie
  • Korzystając z narzędzia Paint Height stworzyłem na środku mały wulkan. Najpierw ustawiając rozmiar pędzla na 70 i Height na 150, stworzyłem główny storzek wulkanu. Następnie ustawiając rozmiar pędzla na 30, stworzyłem jego krater.

    Tworzymy wulkan
    Tworzymy wulkan
  • Ostatnim krokiem było skorzystanie z narzędzia Smooth Height, którym poprawiłem ostre stoki na bardziej naturalne. Dobrze jest zwiększyć Opacity przy wygładzaniu brzegu wyspy, dzieki czemu uzyskamy coś w rodzaju gładkiego zejścia do wody.

    Wygładzanie krawędzi terenu
    Wygładzanie krawędzi terenu

Pobaw się narzędziami, i stwórz sobie wyspę dopasowaną do swoich wymagań. Nie musi ona w ogóle przypominać tego co ja zrobiłem.

 

Teksturujemy teren

Mamy już model, jednak nie jest on zbyt imponujący. Spróbujmy dodać tekstury.

Narzędzie teksturowania
Narzędzie teksturowania

Narzędzie teksturowania dysponuje dokładnie tymi samymi parametrami co poprzednie narzędzia i tymi samymi co Paint. Więc raczej nie ma co tutaj tłumaczyć. Jednak by móc z niego skorzystać, musimy dodać sobie tekstury.

Dodatkowa Wiedza
Uwaga! Pierwsza tekstura jaką dodasz, zostanie naniesiona na cały obszar terenu!

Co zrobić aby dodać teksturę?

  • Klikamy „Edit Textures…” i wybieramy Add Texture.
  • W nowym okienku klikamy select pod okienkiem Texture
  • Wybieramy teksturę.

Parametr Size wybieramy mały, chyba że tekstura będzie użyta na rozciągniętym obszarze. Offset używamy jeśli tekstura musi być przesunięta, aby dobrze nią wyłożyć obszar.

Dodajemy sobie 4 tekstury, które zaimportowaliśmy razem z paczką na początku. Są to: Good Dirt, Grass (Hill), Grass & Rock, Cliff (Layered Rock).

Zostaje pytanie czym jest Target Strenght. Jest to parametr, który określa jak bardzo dominująca ma być nowa tekstura. Jeśli mamy parametr na 1 i zaczynamy malować, to tekstury zostaną podmienione. Ale jeśli, po teksturze kamienia, będziemy malować, teksturą trawy z parametrem ustawionym na np. 0.4, to otrzymamy efekt, gdzie przez skałę, lekko przebija się trawa.

Tutaj również najlepszą nauką, będzie zabawa z otrzymanymi narzędziami. U mnie efekt kolorowania wyszedł następujący:

Tut_1_14
Oteksturowana wyspa

Generujemy roślinność

Wyspa już jest. Ale czas dodać tam trochę krzaczków i drzew.

Do wytworzenia drzew, posłuży nam kolejna opcja w menu:

Malarz drzew
Malarz drzew

Oczywiście jak poprzednio, trzeba zdefiniować jakieś drzewa. W momencie, w którym dodaliśmy paczkę Tree Creator, powinniśmy mieć do dyspozycji, drzewo o dumnej nazwie „Big Tree”. Dodawanie przebiega podobnie jak dodawanie tekstur:

Edit Trees -> Add Tree. Klikamy w kółeczko obok pola Tree w nowym oknie, po czym znajdujemy Big Tree i je dodajemy. Omówmy sobie szybko parametry

  • Brush Size – Proste, rozmiar pędzla
  • Tree Density – Czyli gęstość drzew na jedno „pacnięcie” pędzla.
  • Color Variation – Odchylenie koloru. Unity lekko zmodyfikuje kolor drzew, aby zmniejszyć ryzyko pojawienia się 2 identycznych obok siebie.
  • Tree Hegith/Width – Rozmiar drzewa
  • Variation – Znów odchylenie, czyli jak bardzo parametry Width i Height mogą się różnić od ustalonych.

Przycisk Mass Place Trees, jak nazwa wskazuje hurtowo wstawia nam masę drzew. Podajemy jedynie liczbę, co sprawia że rozmieszczenie często jest mało ciekawe. Dobrą techniką jest wstawienie najpierw zgrupowań drzew.  A później ubarwienie całości pojedynczymi drzewami.

Zalesiona wyspa
Zalesiona wyspa

Dodanie dodatków, odbywa się z poziomu ostatniego menu.

Menu Paint Details
Menu Paint Details

Wszystkie opcje już znamy, więc nie widzę sensu ich omawiać. Dodanie dodatków odbywa się podobnie jak w przypadku drzew i tekstur. Edit Details -> Add Grass Texture. Jednak mamy do czynienia z bardziej rozbudowanym menu po drodze.

Menu dodania detalu
Menu dodania detalu

Oczywiście wybieramy teksturę. Ale co z resztą?

  • Min Width / Height – Minimalna wysokość i szerokość detalu
  • Max Width /  Height – Maksymalna wysokość i szerokość detalu. Jak można się domyślić, jego ostateczny rozmiar, będzie liczbą wylosowaną z pomiędzy podanych.
  • Helthy i Dry Color – To znów kolory, którymi roślina zostanie ubarwiona. Pamiętaj aby kolory nie były zbyt jaskrawe, bo elementy wyjdą sztucznie.
  • Billboard – To bardzo ważna i ciekawa opcja. Sprawia, że nasz trawa, będąca teksturą 2D, będzie zawsze obracała się w stronę gracza. Dlatego mimo że trawa nie będzie modelem, gracz zawsze będzie ją widział.

Z assetami terenu, zaimportowaliśmy sobie też elementy trawy. Więc dodajmy je teraz. Są to pliki: Grass i Grass2.

Pamiętaj żeby nie przesadzić z ilością takich elementów, bo mogą bardzo spowolnić działanie gry.

Dodaj teraz elementy detali. Pamiętaj żeby przybliżyć sobie widok. Ponieważ są to na tyle małe obiekty, że z daleka ich nie widać. Dlatego też nie dodaje screena, jak to wygląda u mnie, bo nie byłoby nic widać.

Plaża! Czyli słońce, woda i wiatr

Zostały dwa szczegóły. Nie mamy jeszcze wody wokół wyspy, ani słońca.

Zacznijmy od wody. Mamy w zaimportowanych assetach pakiet wody.W panelu Projekt odnajdź folder Standard Assets i wybierz folder Water. Teraz przeciągnij obiekt Daylight Simple Water na scenę gry.Umieść go mniej więcej na środku wyspy i ustaw wysokość, równą terenowi minus parę metrów. U mnie teren ma wysokość 100, więc wodę ustawiłem na wysokości y = 90. (Zmieniamy to w komponencie transform, obiektu wody). Teraz zwiększamy skalę. Ja ustawiam 1600. Dlatego tak kosmiczna liczba, ponieważ da nam to złudzenie bezkresnego morza w czasie spoglądania na horyzont w grze.

Co ze światłem?

Załatwiamy je również obiektem. Wybierz w menu GameObject -> Create Other -> Directional Light. (Jest kilka typów światła. Jednak przyjdzie czas na ich omówienie. Na razie mi zaufaj i wybierz ten typ).

Nasze słońce ustaw po prostu gdzieś wysoko i obrócone w stronę wyspy. U mnie była to położenie: 400, 800, -100 i rotacja: 40, -45, 0.

Directional Light, jest czymś w rodzaju ściany z której pada światło. Więc istotne jest tylko by było dobrze obrócone i po dobrej stronie obiektu. Jest to typ światła, zawsze wykorzystywane do tworzenia efektu słońca.

Jednak ten typ światła nie ma punktu widocznego. Tzn. gracz go nie zobaczy. A jednak chcielibyśmy widzieć słońce. Dlatego dodamy sobie flarę. Nie zaimportowaliśmy tego pakietu początkowo. Więc zrobimy to teraz. Skorzystaj z menu:

Asset->Import Package -> Light Flares.

Wybierz teraz obiekt Directional Light. Dla komponentu Light odnajdź parametr Flare i klikając w małe kółko, otwórz nowe okienko dialogowe. Tam wybierz jedną z dostępnych flar. Polecam flarę Sun, ponieważ ma to być słońce. ;)

W wersji Unity 3.0, „gibanie” się drzew na boki spowodowane wiatrem, było ustawiane wewnątrz obiektu drzewa. Teraz mamy do dyspozycji coś takiego jak Wind Zone. Dodajmy sobie taki obiekt: GameObejct -> Create Other -> Wind Zone.

Wind Zone
Wind Zone
  • Mode – Czyli typ. Zostawiamy directional, bo chcemy żeby wiatr wiał z jakiejś strony.
  • Wind Main – Siła wiatru domyślna.
  • Wind Turbulence – Czyli zmienność wiatru
  • Wind Pulse Magnitude – Są to impulsy mocniejszego wiatru. Określamy ich siłę.
  • Wind Pulse Frequency – Czyli jak często mają pojawiać się impulsy.

Ponownie pobaw się parametrami i ustaw wiatr jaki Ci będzie odpowiadał.

Zastanawiasz się pewnie jak sprawdzić te ostatnie zmiany? Trzeba wejść do gry. Jednak statyczna kamera nie nadaje się do testowania! Przejdź ponownie do panelu Projekt i w folderze Standard assets, znajdź kolejny o nazwie: Character Controllers. Wybierz z niego First Person Controller i umieść go w oknie Scene. Zwróć uwagę na to, żeby postać była ponad terem. Gdy tego nie dopilnujesz, po uruchomieniu gry, postać może spadać w niekończącą się pustkę.

Kiedy to zrobisz, możesz kliknąć przycisk Play na samej górze okna i przejść się po swoim świcie!

Mój efekt końcowy:

Efekt końcowy
Efekt końcowy

Kolejna część -> #2 – Sterowanie Postacią

  • Dragono

    Da się zrobić żeby drzewa były „materialne”?

    • Trzeba dodać Collider bezpośrednio do drzewa i takie drzewo dodać na Tree paintera, jeżeli chodzi Ci o przenikanie przez drzewa. Jeżeli mało zrozumiałe, mogę opisać dokładniej ;)

  • Jack

    Dlaczego tworząc górę przenikam przez nią, tworząc dziurę nie wpadam do niej lecz chodząc wokół dziury czy góry jest odczuwalny efekt tych opcji czyli wpadam przez teksturę trawy do niewidzialnej dziury albo drogę blokuje mi niewidzialna góra

    • Nie do końca rozumiem problem. Możesz podesłać jakieś screeny?

    • Michał Błaszczyk

      Mam ten sam problem. Chodzi o to że idąc postacią po swoim terenie nie umiem się wspiąć na jakąś górę tylko przenikam przez nią. Proszę o pomoc.

    • Największa szansa, że coś nie tak jest z Collideram albo sposobem przemieszczania postaci. Tzn.
      – Upewnij się, że Collider wystaje ponad teren
      – Upewnij się, że teren ma collider
      – Zwiększ wartość parametru Skin dla postaci, jeśli korzystasz z domyślnego First Person Controllera
      – Jeśli używasz innego modelu niż standardowy First Person Controller, spróbuj wstawić domyślny i zobacz czy błąd dalej występuje
      – Jeżeli poruszasz postacią za pomocą Transform.Translate – to może być problem

      Takie pomysły na tą chwilę.

    • Michał Błaszczyk

      W konsoli pokazał mi się taki błąd:
      „TerrainColliders can no longer act as triggers since Unity 5.0
      UnityEditor.HostViev:OnGUI()”
      Co mam zrobić?

    • Hmm… tutorial powstawał pod wersją 4.6, więc w wersji 5.0 może to wyglądać nieco inaczej. Błąd sugeruje, że collider terenu nie może być Triggerem. Możesz spróbować po podmieniać Collidery obiektów, ale to tylko strzał.

    • Michał Błaszczyk

      A czy da się jakoś wrócić do wersji 4.6 ?

    • Tak. Można je pobrać stąd: http://unity3d.com/get-unity/download/archive

      Jeżeli zainstalujesz tą wersję i problemu nie będzie, to proszę, daj mi znać. Może się przydać na przyszłość ;)

    • Jack

      mam to samo co użytkownik wyżej, czasami wyskakuje taki błąd, mam identycznie chodząc po terrain’ie przenikam przez góry i nie wpadam do jezior bez wody (po prostu dziura)
      Dodatkowo czasami mam tak że cały terrain jest jakby powietrzem przez które przelatuję nieważne jak wysoko dam Collidery z FPSControll

      W postaci mam Capsule Collider + RidigBody w Terrain jest Terrain Collider i nic to nie daję ponieważ spadam w dół, czasami załapie tak że mogę chodzić i teren staje się ‚twardy’ a czasami jakby nie łapało tych Colliderów

      Dziś stworzyłem nowy projekt przed zapisaniem mogłem wchodzić na różne góry wpadać w dziury itp było w 100% dobrze lecz po otwarciu na nowo projektu znów wypadam poza mapę wg. mnie radziłbym sprawdzić Unity 5 pod kątem tworzenia nowego projektu czy czasem coś nie nawaliło

      P.s pobieram wersję 4.6 po pobraniu i zainstalowaniu i dodatkowym teście napiszę czy wszystko działa poprawnie

    • Jack

      Ok sorki że kolejny raz męczę :D ale zauważyłem że jak otwieram Grę w podstawowy sposób czyli 2x klikam na zapis w folderze gry to program ‚wariuje’ wyskakują błędy o terrain że jakieś j==i i nic nie działa jak powinno przelatuję przez textury i wszystko co tylko można lecz jeżeli otworzę program Unity (okno do wczytywania lub tworzenia nowego projektu) to wszystko wraca do normy znów mogę wspinać się na góry oraz wchodzić do ‚dziur’ więc radzę naprawdę sprawdzić działanie najnowszego Unity bo jeżeli komuś pod koniec pisania gry przytrafi się zły ‚bug’ będzie naprawdę nieciekawie

    • Jack

      Ok 3 i ostatnia odpowiedź:
      Wersji 4.6.3 działa idealnie ^^ nie muszę dodawać żadnych Colliderów ani zgadywać czy będzie działać :p
      Wystarczy dodać do gracza FPS Capsule Coll i wszystko działa tworząc górę postać wchodzi po niej bez problemów więc problem rozwiązany jest jakiś błąd czy bug w wersji 5

      Dzięki za wyjaśnienie sprawy bo tak męczyłbym się tygodniami z tym :D

    • Wielkie dzięki za przetestowanie tego. :) Mam nadzieję, znaleźć trochę więcej czasu w weekend i posprawdzać jak to wygląda w 5.0 :)

  • Filip

    Czy wie ktoś może skąd zgarnąć paczkę ‚Character Controller’ w wersji 5? Nawet dodając wszystkie paczki podczas tworzenia nowego projektu, nie mogę tego znaleźć, a tym samym nie mogę sterować postacią. Ewentualnie gdyby ktoś mógł podrzucić skrypt, też byłoby fajnie :)

    • W wersji 5.0 masz nowe systemy kontroli postaci. Tzn. istnieje też FPS Controller, który jest nieco zmodyfikowany względem starego. W nowej wersji jest paczka Characters i ona załatwia sporo. ;)

    • Filip

      Dzięki wielkie! Poszukam tego! :))

  • Error

    Witam, ostatnio zauważyłem, że w Unity 5 brakuje pewnych assetów odnoszących się do tego Tutoriala,
    assety są związane z terenem – teksturami,drzewami i wodą – pobrałem główne assety i tam nie ma tekstur:
    [Good Dirt, Grass (Hill), Grass & Rock, Cliff (Layered Rock), drzewa: (BigTree)] i wody: (Daylight Simple Water)
    pobrałem Terrein Assets ale są tylko tekstury trawy – pytanie: skąd bierzesz paczki, a jeśli są z poprzedniej wersji to czy mógłbyś je jakoś udostępnić.

    • Są to standardowe paczki z Unity. Występują też w nowym Unity, tylko pod inną nazwą. Obecnie wszystkie elementy są w standardowej paczce: Environment

    • Error

      Niestety przed chwilą zaimportowałem ponownie te paczki a mianowicie:
      Characters, Particles System, Environment (Unity 5) i nadal nie mam zasobów zawartych w 1 części tutoriala wpomnianych wyżej – paczkę assetów pobierałem z głównej strony unity

    • Owszem masz je. Jedyna różnica to nazwa assetów. W folderze Environment masz 4 foldery:
      SpeedTree – Gdzie masz 3 rodzaje drzew
      Water – Gdzie masz 2 rodzaje wody, która wygląda 1000 razy lepiej niż ta z 4.6
      Water (Basic) – Czyli ta stara woda

      TerrainAssets – Czyli wszystkie składniki terenu. On znów się rozbija na 2 foldery:
      – BillboardTextures – Czyli tekstury bilbordowe trawy
      – SurfaceTextures – Czyli tekstury terenu. Dokładnie te same co 4.6, tylko np. Grass (Hill) nazywa się teraz GrassHillAlbedo. Plus pojawiła się dodatkowa tekstura. To, że mają inne nazwy nic nie zmienia.

  • Maciej

    Czy jest możliwość zaimportowania modelu terenu z blendera? Styl graficzny jaki bym chciał osiągnąć nie jest możliwy do uzyskania za pomocą narzędzi Unity.

    • Jeżeli stworzysz sobie teren jako model, to nie ma problemu. Możesz go importować jak każdy inny asset. Problematyczne może wtedy być to, że nie możesz w łatwy sposób manipulować terenem w trakcie pracy nad grą (musisz za każdym razem edytować model terenu w Blenderze).

      Lepszą jakość możesz osiągnąć dodając tekstury i obiekty (drzewa, bilbordy) wyższej jakości.

    • Maciej

      Dzięki, w takim razie zakładając, że stworzę sobie teren w blenderze, którego już nie będę modyfikował w przyszłości, jak go zaimportować, żeby Unity rozpoznawało go jako terrain? Zaimportowałem go jak zwykły asset, ale dodanie go na scenę i dodanie terrain collider’a nie wystarczyło. Domyślam się, że potrzebna jest przede wszystkim mapa wysokościowa. Mógłbyś mi przybliżyć mniej więcej to zagadnienie lub odesłać mnie do jakiegoś tutoriala (może być w j. angielskim)? Pracuję Unity 3.5.7 (wymaga tego ode mnie prowadzący/wykładowca)

    • Istnieje skrypt Object2Terrain:
      http://wiki.unity3d.com/index.php?title=Object2Terrain

      Ewentualnie drugi wariant:

    • Maciej

      Dziękuję, wypróbuję te metody :)

  • Krystian Dzwonkowski

    Dasz gotowy teren do pobrania ?

    • Na ostatniej podstronie całego kursu, jest kompletny projekt do pobrania, łącznie z terenem.

  • Simon

    Witam! Jak wiadomo w sprawie assetów w Unity 4.6 a 5.0 trochę się pozmieniało. Mianowicie nie potrafię nigdzie znaleźć flary, aby moje słońce było widoczne. Jestem nowy w świecie Unity i prosiłbym o pomoc.

    • Znajdziesz ją w standardowej paczce Effects:
      Assets -> Import Package -> Effects
      Następnie w folderze:
      Standard Assets -> Effects -> LightFlares -> Flares
      I tam powinny być 3 do wyboru. :)

    • Simon

      Dzięki wielkie za pomoc ;)

  • Michał Mondry

    Właśnie również mam problem ze znalezieniem paczek tekstur. Czytałem wcześniej, że mają inne nazwy, ale nadal nie mogę znaleźć odpowiednich. Czy mógłbyś podać mi nazwy odpowiedników tekstur z wersji 4.6 do 5.2?

    • W panelu Edit -> Import Package -> Environment będziesz mieć folder: TerrainAssets -> SurfaceTextures
      Tam są wszystkie wymagane tekstury. Są to dokładnie te same co w poprzedniej wersji, mają tylko nieco zmienione nazwy, ale to się połapiesz raczej. Zwłaszcza, że nawet nie musisz wykorzystywać tych tekstur, o których wspominam, a mogą być to dowolne tekstury. :)

  • Kitsune

    Wkradła się literówka do tutka. Powinno być „Terrain” a jest: „Zaczynamy od dodania obiektu terenu. [Game Object -> Create Other -> Terrein].”

  • Krzysztof Kazor

    Da się zamiast tworzyć własnej mapy w unity, dodać wcześniej stworzoną np w Blenderze/zbrushu/cinemie 4d?

    • Krzysztof Kazor

      Nie doczytałem do końca, zadam więc inne pytanie: Czy jak wgram obiekt jako asset i zamianie w teren żeby uzyskać mój wymarzony kształt mapy, czy mogę stworzyć niestandardowe modele trawy drzew etc żeby działały one jak normalne ale wygląd tylko miały inny?

    • Jasne, że możesz.

      Problem jest tylko taki, że jak dodasz teren np. z Blendera, to nie będzie działał jak teren „wyrzeźbiony” w Unity. Tzn. drzewa będziesz musiał dodawać jako oddzielne elementy, a nie za pomocą pędzla.

    • Krzysztof Kazor

      No i jeszcze jedno małe pytanie, bo masz sporo tutoriali, a nie wiem gdzie tego szukać dokładnie. Gdzie mam znaleźć u ciebie tutoriale związane z kamerą? Np by pozostawała w bezruchu, obróciła się tylko o 90* i żeby elementy grafiki znikały w momencie gdy zakrywają postać. (efekt coraz popularniejszy w grach, zaraz przytoczę link żeby go zobrazować)

    • U mnie najlepiej sprawdza się szukajka, albo baza tutoriali – link masz na samej górze.
      Ale takich tutoriali akurat nie znajdziesz, bo ich nie napisałem. Nad blogiem pracuje sam i to w wolnym czasie, więc nie jestem w stanie omówić wszystkiego. :)

  • Bartosz

    Interesuje mnie stworzenie przestrzeni kosmicznej właśnie do gry i trochę zastanawiam się jak to zrobić, bo tak jest piszesz w poradniku, użycie Terrain chyba mija się z celem. Zrobiłem już tło przestrzeni z gwiazdami i jakimiś planetami, ale w chwili obecnej przestrzeń ta nie jest w żaden sposób ograniczona. Czy Unity jakoś domyślnie jest w stanie ograniczyć tą przestrzeń czy potrzebuję stworzenia czegoś na wzór Terrain, tylka dla przestrzeni kosmicznej? Dziękuję bardzo za odpowiedź, na razie kontynuuję pracę i zobaczę co z tego wyjdzie, ale po prostu cały czas w głowie mam taki dylemat ;)

    • Musisz sobie taką przestrzeń ograniczyć samodzielnie. Czy to jakimś ifem, że jeśli pozycja gracza przekroczy jakąś wartość, to znaczy że jest za obszarem gry i wtedy Ty decydujesz jak to rozegrać. Czy niewidzialna ściana, czy może w stylu Battelfielda info, że przeszedł po za obszar i jak nie zawróci to zostanie zestrzelony.

      Druga opcja podoba do pierwszej, że gdy gracz przekroczy jakiś obszar to go teleportujesz na drugą stronę mapy (coś jak by zatoczył koło).

  • Jakub

    Da się zrobić żeby w wodzie można było pływać, bo u mnie to tylko tekstura? Chyba że coś źle robię?

    • Da się, ale trzeba sobie to zakodzić. W formie w jakiej to podałem, będzie to tylko tekstura, przez którą postać będzie przenikać.

  • lolu476

    U mnie postać ciągle spada przez teren. Zdarza sie to ciągle gdy poruszam myszką po osi Y

    • Czy Twój bohater na pewno dysponuje komponentem Character Controller?

      Czy dzieje się tylko przy poruszaniu myszką w osi Y czy w innych przypadkach też? Jeśli tylko przy tej osi, to czy używasz sterowania postaci ze standardowych assetów?

  • Novril

    Nie rozumiem części poświęconej wodzie.
    Mam unity 5.5 i nie wiem co mam przeciągnąć na scenę gry.

    • Od wersji 5, pozmieniały się nieco nazwy i foldery w standardowych assetach. Obecnie masz dwa foldery: Daylight Simple Water i Nighttime Simple Water, oba dostępne w:
      Standard Assets > Water

      Więc:
      – Musisz zaimportować Standard Assets (powinieneś już to mieć zrobione)
      – Wybrać sobie jeden z folderów
      – Wrzucić do sceny prefab (który będzie gotowy w folderze)
      – Umiejscowić wodę i rozciągnąć zgodnie z instrukcją poradnika.

    • Novril

      Cze chodzi Ci o folder Standart assets > Environment > Water? Bo jeżeli tak, który folder mam wybrać: Water czy Water 4?

    • W zasadzie nie ma to znaczenia i możesz wybrać ten, w którym woda bardziej Ci się podoba. :)

    • Novril

      I mam przeciągnąć cały folder?

  • Kpiga

    Witam, robię wszystko zgodnie z instrukcją ale ciągle pojawiają się 2 takie same błędy :Assets/Water FX Pack/Scripts/ScrollUV.js(7,1): BCE0144: ‚UnityEngine.Component.renderer’ is obsolete. Property renderer has been deprecated. Use GetComponent() instead. (UnityUpgradable). Co robić?

  • Kpiga

    Witam, robię wszystko zgodnie z instrukcją ale moja postać a właściwie na razie sama kamera przenika przez teksturę i spada w otchłań. Co robię nie tak i co powinienem?

    • W jaki sposób została dodana postać? I jakimi komponentami dysponuje kamera (tutaj możesz podać screen)?

    • Kpiga

      Kamere pierwszoosobową po prostu przeciągnąłem na mape.

    • Komponent postaci powinien mieć komponent CharacterController. Bez tego nie nastąpi wykrycie kolizji i postać będzie przenikać przez obiekty.

    • Kpiga

      A jak go dodać? o_0

    • Component -> Physics -> Character Controller.
      Oczywiście kombinację wybierasz, mając zaznaczony obiekt, do którego komponent ma być dodany.

    • Kpiga

      sprawdzę i jak coś to się odezwe, dzięki :)