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.