www.math.uni.lodz.pl/ radmat
Cel ćwiczeń Celem bieżących ćwiczeń jest: dodanie efektów strzelania, takich jak iskra podczas wystrzału, czy dziury po kulach; stworzenie poruszającego się obiektu, po zderzeniu z którym nastąpi koniec gry; wczytanie gry od początku po zderzeniu z poruszającym się obiektem (koniec gry).
Skrypt fire.js W celu dodania efektu iskry musimy zmodyfikować skrypt fire.js dodając następujące linijki kodu: public var blysk: GameObject; oraz w funkcji Update: if(physics.raycast (kat, strzal, 100)) { Instantiate(blysk,strzal.point,Quaternion.identity); print("trafiłeś w " + strzal.collider.gameobject.tag); }
Importujemy pakiet Musimy zaimportować pakiet, w którym będą dostępne liczne efekty związane z wystrzałem z pistoletu. Wybieramy Assets Import Package ParticleSystems. W nowo otwartym oknie wybieramy Import. W Assets Standard Assets ParticleSystems powstał katalog Prefabs z różnymi efektami wybuchów. Wybierzmy np. Explosion.prefab i w oknie Hierarchy zaznaczmy UI celownik. Przenieśmy Exposion.prefab do okna Inspector do zakładki fire obok zmiennej blysk.
Rysunek: Efekt eksplozji
Dziura po kuli Żeby uzyskać efekt dziury po kuli, proszę przygotować / znaleźć odpowiednią teksturę i zaimportować ją do projektu, a następnie dopisać do skryptu fire.js następujące linijki kodu: Instantiate(dziura,strzal.point, Quaternion.FromToRotation(Vector3.up,strzal.normal));
Z GameObject 3D Object Cube tworzymy nowy obiekt i nadajemy mu nazwę dziura po kuli. Nakładamy przygotowaną teksturę na obiekt. Spłaszczamy obiekt ustawiając skalę y na 0. Rozwijamy zakładkę Shader i wybieramy Legacy Shaders Transparent Bumped Diffuse. Tworzymy nowy, pusty obiekt GameObject Create Empty i nadajemy mu nazwę dziura. W oknie Hierarchy przenosimy obiekt dziura po kuli tak, żeby stał się potomkiem obiektu dziura. W oknie Inspector w zakładce Transform ustawiamy wartość y w Position na 0.1. Dzięki temu dziura będzie zawsze na wierzchu.
Z obiektu dziura musimy wykonać prefabrykat. W tym celu przenosimy ten obiekt z zakładki Hierarchy do okna projektu np. do lokalizacji Assets Standard Assets ParticleSystems Prefabs. Tak stworzony prefabrykat przenosimy do okna Inspector obiektu UI celownik przy zmiennej dziura. Testujemy grę. Uwaga! Jeśli okaże się, że dziura jest za duża, to wystarczy zmniejszyć jej wielkość minimalizując parametr Scale dla komponentu Transform użytego prefabrykatu.
Rysunek: Efekt po oddaniu strzału
Ognista kula - nasz pierwszy przeciwnik Dodamy teraz nowy obiekt (kulę), po zetknięciu z którym nasz bohater będzie ginął. Stwórzmy gorącą kulę: Po wstawieniu nowego obiektu Sphere z okna Project wybieramy Create Material. W nowo otwartym oknie w łatwy sposób zmienimy kolor materiału np. na czerwony i ten przeniesiemy na nasz obiekt.
Ćwiczenie 1 Proszę napisać skrypt, który spowoduje, że stworzona powyżej kula będzie się poruszała do przodu poziomo (proszę wykorzystać funkcję Translate). Jeśli uderzy naszego bohatera, ten ma ginąć (na tym etapie proszę jedynie wyświetlić komunikat GAME OVER i odtworzyć dźwięk (inny od dźwięków związanych z kolizją z przedmiotami)).
Rysunek: Tocząca się kula
Rysunek: Nasz bohater został trafiony przez kulę
Prawdziwy koniec gry Teraz spowodujemy, że po trafieniu naszego gracza przez kulę po trzech sekundach automatycznie zostanie wczytana gra od początku. W odpowiednie miejsce powinni Państwo wpisać następujące linijki kodu: yield WaitForSeconds(3); Application.LoadLevel(Application.loadedLevel);