www.math.uni.lodz.pl/ radmat
Cel ćwiczeń Celem bieżących ćwiczeń jest dodanie podpowiedzi, które będą się wyświetlały nad przedmiotami, a także systemu cząstek.
Wyświetlanie podpowiedzi Dodamy teraz do drzwi, za którymi ukryliśmy przedmiot w labiryncie, podpowiedź jaką czynność ma wykonać nasz gracz. Podpowiedź będziemy wyświetlać przez 5 sekund. Do skryptu detect collision dopiszmy następujące zmienne: private var pokazpodpowiedz: boolean = false; private var zegar: float = 0; public var czaswyswietlania: float = 5.0f; public var podpowiedzgui: UI.Text;
Dopiszmy następujący kod do funkcji Update: if(pokazpodpowiedz) { if(zegar < czaswyswietlania) { zegar += Time.deltaTime; } else { podpowiedzgui.enabled = false; pokazpodpowiedz = false; zegar = 0; } }
Musimy jeszcze dopisać następującą funkcję: function pokazpodpowiedzgui(tekst: String) { podpowiedzgui.text = tekst; podpowiedzgui.enabled = true; this.pokazpodpowiedz = true; }
Do skryptu door w funkcji OnTriggerEnter wystarczy dopisać linijkę kodu: void OnTriggerEnter(Collider o) { if (o.tag == "Player") { o.sendmessage ("pokazpodpowiedzgui","otwórz drzwi"); animator.settrigger ("Otworz"); } } Teraz wystarczy stworzyć nowy obiekt UI.Text i dodać go do odpowiedniej zmiennej dla obiektu FPSController.
Rysunek: Podpowiedź dla gracza
Ognisko Do drugiej sceny (wyspy) dodamy model ogniska. Proszę do projektu zaimportować pakiet book assets.unitypackage, który znajduje się ma mojej stronie http://www.math.uni.lodz.pl/ radmat/tippgk/ Z zaimportowanego pakietu wybieramy model campfire, ustawiamy na scenie, ewentualnie przeskalowujmy dostosowując wymiary modelu do otaczających go obiektów i dodajemy Capsule Collider.
Rysunek: Model ogniska z użytym Capsule Colliderem ustawiony na drugiej scenie gry
System cząstek Użyjemy teraz dwóch różnych systemów cząstek: jeden będzie symulował palący się ogień, a drugi dym. Wybieramy GameObject Particle System i nadajemy mu nazwę FireSystem. Aby przenieść tworzony system cząstek do ogniska należy w oknie Hierarchy zaznaczyć obiekt campfire, przenieść kursor na scenę i wybrać F, aby przybliżyć widok ogniska. Następnie w oknie Hierarchy zaznaczamy obiekt FireSystem i wybieramy GameObject Move To View.
Żeby stworzyć realistyczny obraz ognia należy w oknie Inspector na zakładce Particle System wprowadzić następujące ustawienia: Start Speed na 1. Start Rotation na 60. Start Color na pomarańczowy. Rysunek: Ustawienia na zakładce Particle Systems
Na zakładce Shape wprowadzamy następujące ustawienia: Shape na Cone. Angle na 0. Radius na 0.1. Rysunek: Ustawienia na zakładce Shape
Na zakładce Size over Lifetime ustawimy zmianę kształtu ognia w czasie, gdyż nie chcemy, żeby płomień był cały czas taki sam. W tym celu należy według upodobań ustawić krzywą: Rysunek: Ustawienia na zakładce Size over Lifetime
Rysunek: Efekt płonącego ogniska przy powyższych ustawieniach
Żeby jeszcze urealnić wygląd płomienia dodamy ściągniętą teksturę. W tym celu: Tworzymy nowy materiał wybierając z menu kontekstowego Create Material i nadajemy mu nazwę flamematerial. W oknie Inspector w zakładce Shader wybieramy Particles/Additive (Soft). W puste pole przenosimy teksturę płomienia. Tak stworzony materiał przenosimy do okna Hierarchy na obiekt Particle System. Ewentualnie zmieniamy skalę obiektu Particle System.
Rysunek: Efekt płonącego ogniska po nałożeniu tekstury
Ćwiczenie 1 W analogiczny sposób jak powyżej proszę dodać do ogniska efekt dymu wykorzystując ściągniętą teksturę i drugi emiter cząstek, a następnie dodać dźwięk palącego się ogniska.
Ćwiczenie 2 Proszę dodać do sceny z ogniskiem nowy obiekt (paczkę zapałek), po zebraniu którego gracz będzie mógł rozpalić ognisko. Wobec tego: Po uruchomieniu drugiej sceny gry na jej starcie nie włączamy emitera cząstek, który symbolizuje palący się ogień i nie odtwarzamy dźwięku. Po znalezieniu zapałek należy wyświetlić ikonę tego przedmiotu (analogicznie jak robimy to w pierwszej scenie). Gdy gracz znajdzie paczkę zapałek, to będzie mógł udać się do ogniska i je rozpalić. Wówczas należy oczywiście włączyć emisję cząstek, dźwięk oraz usunąć ikonę zapałek (gdyż zakładamy, że zostały zużyte). Podpowiedź. Aby włączyć emiter cząstek można skorzystać z następującego kodu:
function LightFire(campfire : GameObject) { var fireemittercomponents : Component[] = campfire.getcomponentsinchildren(particleemitter); var fireemitter : ParticleEmitter; for (var i = 0; i < fireemittercomponents.length; i++) { fireemitter = fireemittercomponents[i] as ParticleEmitter; fireemitter.emit = true; } }