- Kod: Zaznacz wszystko
void Update()
{
//To trudno nazwać czymś skomplikowanym w pojęciu programowania
//to jest zwykła matematyka - trygonometria
// angleRad = atan2( y1 - y2, x1 - x2)
// angleDeg = (180/PI) * angleRad
// 180/PI to magiczna wartość którą jak pomnożysz kąt w stopniach to otrzymasz kąt w radianach
float AngleRad = Mathf.Atan2(Gracz.transform.position.y - my.position.y, Gracz.transform.position.x - my.position.x);
float angle = (180 / Mathf.PI) * AngleRad;
//ustawienie obrotu obiektu
body.rotation = angle;
//Również matematyka - wektory
//Przesuń obiekt o wskazany wektor
//Vector3.forward to wektor [0,0,1]
//Time.deltaTime to różnica czasu między klatkami - dzięki temu otrzymujesz prędkość na sekundę
//Zmieniasz pozycję obiektu o wektor: [0,0,1]*5 na sekundę = [0,0,5] na sekundę
transform.Translate(Vector3.forward * 5 * Time.deltaTime);
//odległość jednego punktu od drugiego
range = Vector2.Distance(transform.position, Gracz.transform.position);
//jeżeli ta odległość jest większa niż minDistance
if (range > minDistance)
{
//wypisz w konsoli
Debug.Log(range);
//Ustaw pozycje obiektu na wartość funkcji Vector2.MoveTowards( ... )
//parametry: Pozycja początkowa, pozycja docelowa, maksymalne przesunięcie
transform.position = Vector2.MoveTowards(transform.position, Gracz.transform.position, speed * Time.deltaTime);
}
}
Ten obrazek chyba najlepiej wyjaśni ci czym jest atan2:

Co do większości, tak da się to wyjaśnić tak by zrozumiała osoba która nie ma dużo do czynienia z matematyką, ale szczerze to nie chce mi się tego rozpisywać, mógłbym to rozrysować i pogadać jakbym miał czas. Ale na ten moment dam ci radę jak czytać taki kod bo to ci się bardziej przyda niż moje niezrozumiałe wyjaśnienia
Plik kodu jak książka czytasz od góry do dołu zawsze w tej kolejności, ale jak w książkach mogą pojawić się odniesienia/referencje do innych miejsc w książce, tak samo jest w kodzie. Każde wywołanie funkcji (np. Destory( gameobject, 0) ) to nic innego jak coś w stylu takiego odnośnika - w tym miejscu zostanie wykonany kod który jest napisany w metodzie Destroy.
Staraj się wypatrzeć wyrażenia matematyczne. Jasne łatwo wypatrzeć takie "x+y" i jest to jasne, ale w sytuacji w której nie znasz niektórych pojęć matematycznych (a niektóre potrafią być bardzo skomplikowane) a zmienne to nie są zwykłe "x" czy "y" to zauważenie że
Mathf.Atan2(Gracz.transform.position.y - my.position.y, Gracz.transform.position.x - my.position.x);
to proste wyrażenie matematyczne może być trudne. tutaj ci je rozpiszę:
- Kod: Zaznacz wszystko
//Uznajmy że
Gracz.transform.position.y to y1
Gracz.transform.position.x to x1
my.position.y to y2
my.position.x to x2
//to wyrażenie wygląda tak:
atan2( y1-y2 , x1-x2 )
//bardziej szczegolowo:
dy = y1 - y2
dx = x1 - x2
atan2(dy, dx)
Nagle wszystko jest prostsze
Tłumacz na język polski, Gdy widzisz takie Vector2.Distance( position1, position2 ) to gdy przetłumaczysz to na polski:
Odległość (pozycja1, pozycja2) to okazuje się ze nawet nie trzeba wyjaśniać co to robi, bo wszystko jest podane jak na tacy -odległość między pozycja1 a pozycja2.
Staraj się pisać jak najwięcej samemu bez pomocy gotowców, jakoż że możesz nie znać wszystkich funkcji na pamięć polecam ci mieć otwartą oficjalną dokumentację w której masz wszystko ładnie opisane co jak i dlaczego, nawet przykłady się znajdą. Ale lepiej żebyś zaczął od prostych rzeczy i na początku nie szukaj gotowych rozwiązań na siłę - nie wiesz jak sprawdzić odległość między punktem A a punktem B? nie szukaj gotowej funkcji tylko sam napisz wzór matematyczny, a jeżeli nie znasz to może lepiej już znajdź gotową funkcję albo jako wyzwanie sobie znajdź wzór i go zastosuj.
Mógłbym ci wyjaśnić te wszystkie zapisy matematyczne które tutaj wystąpiły ale to się mija z celem ponieważ programując jednak musisz mieć jakiś mały gram wiedzy, a co najważniejsze to umieć samemu wymyślić cuda. Oczywiście kto pyta ten nie błądzi więc mam nadzieję że przynajmniej częściowo coś wyjaśniłem czy pomogłem
Edit:dodam że na humblebundle jest aktualnie (6dni od kiedy to piszę) promocja na kursy online, jeden z nich to kurs do game devu w Unity (za 1$)