Programowanie Gier, laboratorium 03 Obiekty w unity składają się z
Transkrypt
Programowanie Gier, laboratorium 03 Obiekty w unity składają się z
Programowanie Gier, laboratorium 03 Obiekty w unity składają się z komponentów. Czy możliwe jest używanie ich spod skryptów? Niestety tak, przy pomocy funkcji GetComponent. Postać gracza po kliknięciu przemieszczała się w wybrane miejsce, ale do połowy zanużona była w ziemi. Aby pozbyć się tego efektu, potrzebna jest wiedza o wielkości modelu gracza: W linii 31 dobieramy się do komponentu MeshRenderer i wyciągamy z niego wielkość modelu. W linii 32 do pozycji w którą kliknęliśmy dodajemy połowę wysokości modelu. Puf, gotowe. Możliwe też jest używanie innych skryptów. Dodajmy graczowi kolejny skrypt o dowolnej nazwie: Do skryptu Player dodajmy publiczną funkcję, np. shoot. Aby wywołać ją z nowego skryptu: Póki co, postać gracza może chodzić gdzie chce. Ograniczmy jej swobodę i wstawmy „Niewidzialne Ściany Chodzenia Na Łatwiznę”. Stwórzmy kostkę i powiększmy ją tak, żeby mogła uchodzić za ścianę, a potem przenieśmy do okna Assets – utworzymy prefabrykat (obiekt z niebieską nazwą w oknie Hierarchy). Wstawmy kilka na scenę w miejscach, w które nie chcemy wpuścić gracza. Kolejną rzeczą jaką trzeba zrobić jest ustawienie warstw obiektów: ścian oraz terenu. Rozwińmy listę „Layer”, stwórzmy dwie warstwy o nazwach np. „Teren” oraz „Przeszkoda” i ustawmy je obiektom: Pora na C# – włączmy skrypt postaci gracza i zmodyfikujmy ruch: Tak jak początkowo, sprawdzamy czy klawisz został wciśnięty oraz wystrzeliwujemy promień. Tym razem jednak, szukamy tylko obiektów znajdujących się na pewnej warstwie, a konkretnie na warstwie nazwanej „Teren”. Jeśli trafimy w teren, to sprawdzamy czy w promieniu 1.0 jednostki od trafionego punktu, na warstwie „Przeszkoda” znajduje się jakiś obiekt. Jeśli nie – postać może się tam ruszyć. Identyfikatory warstw są maskami bitowymi, aby możliwe było jednoczesne sprawdzanie kilku warstw. Funkcja Physics.CheckSphere sprawdza kolizję kuli z dowolnym obiektem (na podanej warstwie). W linii 31 przed Physics.CheckSphere(...) jest znak !. Postać się rusza, jednak dla testów chcemy, aby zaznaczony był punkt do którego idzie postać. Linia dodana, postać się rusza ale nic nie widać. Dlaczego? Bo nie kliknęliśmy magicznego przycisku „Gizmos” który powoduje, że rysowane są wszystkie debugowe cuda. Na koniec przydałoby się jeszcze sprawić, że nasze Niewidzialne Ściany Chodzenia Na Łatwiznę staną się rzeczywiście niewidzialne – wyłączmy im komponent Mesh Renderer.