Komentarze pozwalają mi ogarnąć co za co odpowiada ale nie rozumiem poszczególnych linijek kodu.
Świetnie - odkryłeś znaczenie komentarzy w kodzie. My też nie wiemy co dokładnie oznaczają bo to zależy od reszty kodu.
Doświadczenie jednak pozwala się domyśleć większości, a żeby do niego dojść trzeba korzystać z dokumentacji
No więc w pierwszej linijce masz jakąś zmienną którą wstępnie ustawiasz na 1
Masz metodę Update która będzie się wywoływać z każdą klatką obrazu
W pierwszej linijce podejrzewam że pobierasz ilość dotknięć na wejściu (Input.touchCount
) czyli po prostu liczysz ile paluchów dotyka ekranu smartfonu
Funkcją GetTouch
możesz zapewne pobrać szczegóły dotyczące dotknięcia
Aplikacja zakłada że będziesz obsługiwał ją tylko jednym palcem bo od razu sprawdza czy pierwszy palec (GetTouch(0)
) jest w fazie ruchu phase == TouchPhase.Moved
- czyli po prostu czy poruszyłeś palcem który pierwszy dotknął ekranu (ponieważ jest to unity to prawdopodobnie działa to też na kliknięcia myszką)
Vector2
to wektor dwuwymiarowy - czyli po prostu dwie zmienne oznaczające "x" i "y", ale owinięte w specjalną klasę która pozwala na łatwe operacje na wektorach
Tu wkracza czysta matematyka - proponuję pouczyć się o operacjach na wektorach oraz macierzach
Mi kiedyś wiele pomogła ta stronka http://www.riemers.net/eng/ExtraReading/matrices_geometrical.php
No więc pobierasz do tego wektora deltę przesunięcia Input.GetTouch(0).deltaPosition;
Pojęcie delta
pewnie miałeś w podstawówce, ale przypominam że oznacza przyrost czegość
A więc w wektorze o nazwie touchDeltaPosition
masz teraz współrzędne przesunięcia względem poprzedniej pozycji (może być ujemna)
Na końcu dokonujesz translacji czegoś o nazwie transform
- domyślam się że macierz
(translacja czyli przesunięcie)
transform.Translate (touchDeltaPosition.x * speed, touchDeltaPosition.y * speed, 0);
Macierze są tak magiczne że możesz w nich składować różne przekształcenia (typu obrót, przesunięcie, skalowanie) a potem wystarczy tylko pomnożyć macierz * współrzędne obiektu żeby ten obiekt przekształcić
A więc przesuwasz obiekt o wektor przesunięcia pomnożony * prędkość (speed).
0
to ilość o jaką przesuwasz obiekt "w głąb" - a więc w kierunku do lub od kamery - w tym przypadku wpisujesz "0" czyli obiekt będzie w tej samej odłegości (prawdopodobnie aplikacja 2D).
Nie zmieniasz w tym kodzie prędkości - domyślam się że jest zmieniana gdzieś dalej, na przykład po dłuższym przytrzymaniu możesz ją zwiększać - w ten sposób im dłużej przytrzymasz palec w danym kierunku tym szybciej będzie się poruszał obiekt.
Brakuje tu też obsługi czasu - powinno policzyć się czas jaki minął od ostatniego wywołania Update
a następnie zeskalować ruch tak żeby był zależny od czasu - w ten sposób obiekt będzie się przesuwał z tą samą prędkością urządzieniach o różnych parametrach
Może znajdzie się ktoś na forum co poda mi jakieś konkretne linki do dokumentacji albo innych poradników?
dostęp do tajemnej dokumentacji można dostać wpisując w google "unity documentation", ale proszę:
http://docs.unity3d.com/Manual/EventFunctions.html