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.
[stextbox id=”info” defcaption=”true”]Uwaga! Pierwsza tekstura jaką dodasz, zostanie naniesiona na cały obszar terenu![/stextbox]
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ą

70 thoughts

    1. 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 ;)

  1. 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

    1. 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.

    2. 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ę.

    3. 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ć?

    4. 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ł.

    5. 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

    6. 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

    7. 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

  2. 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 :)

    1. 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. ;)

  3. 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ć.

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

    2. 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

    3. 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.

  4. 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.

    1. 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.

    2. 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)

  5. 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.

    1. 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. :)

  6. 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?

    1. 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. :)

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

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

    1. 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?

    2. 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.

    3. 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ć)

    4. 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. :)

  9. 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 ;)

    1. 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).

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

    1. 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?

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

    1. 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.

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

  12. 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ć?

  13. 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?

  14. Witam, mam pytanie, czy jeżeli dodaje masowo drzewa i jakieś pojawią się w miejscu w którym nie chcę żeby rosły to czy jest jakaś możliwość żeby je usunąć?
    Dziękuję i pozdrawiam.

  15. Czy to normalne że w każdym z poradników Unity niema pokazane jak robić zwykłe pomieszczenia ? dobrze byłoby jak byś takowy napisał poradnik iż nie umiem żadnego zrobić poza tym czy tylko Unity można robić takie rzeczy ? w sensie chyba są inne programy lepsze którymi można zrobić mapę np. Blender.

    Dobrze byłoby abyś odpowiedział szybko

    1. Może to być dość normalne, ponieważ z reguły w IT mamy specjalizację. Ja jestem programistą, więc nie umiałbym wam pokazać jak ładnie wymodelować pomieszczenie, bo tym się nie zajmuje. Jeśli interesuje Cię taka wiedza to powinieneś bardziej poszukać poradników do Blendera, 3DS Maxa czy innego oprogramowania do tworzenia modeli 3D.

    1. Hej,
      Więc tak , okazało się że tekstura po lewej musi mieć taki ‘dziwny’ kolor ( jaskrawy niebiesko-czerwony ) który nakłada pofałdowanie na zwykłą teksturę teksturę.
      Problem się sam rozwiązał, ale skoro już to jestem to, prosiłbym bardzo o wyjaśnienie, jak się ‘kładzie’ teksturę wodę, żeby niebyła 2. wymiarowa, tzn żeby w momencie wejścia postaci do wody ( poniżej poziomu tafli wody ), widzieli wodę.

    2. Ta jaskrawa tekstura to mapa normalnych, czyli tekstura, która pokazuje jak światło powinno się odbijać. – Może kiedyś o tym więcej napiszę.
      Jeżeli chodzi o efekt bycia pod wodą, to raczej nie robi się wody w 3D, a masz jedynie tafle, natomiast efekt bycia pod wodą, to często tylko niebieska półprzeźroczysta tekstura nałożona na kamerę, co daje efekt bycia pod wodą. ;)

Leave a Reply

Your email address will not be published. Required fields are marked *