Silnik gry v2.0 – kamera

Zmiana zachowania o 180 stopni, dlatego nazwę go v2.0. Rezygnuję z dynamicznie generowanych map i postaram się opowiedzieć jakąś historię. Pierwszym z elementów nowego silnika będzie przesuwanie kamery do przodu wraz z graczem.

Ruch kamery

Jako że jestem już prawie Senior Unity Developer (miesiąc doświadczenia) napisanie logiki zajęło mi zaledwie kilka minut. Wystarczyło przy aktualizacji każdej klatki zwiększać wartość pozycji kamery na pionowej osi.

Śledzenie gracza

Kolejnym elementem jest sprawienie aby równocześnie z kamerą przesuwał się gracz. Jest na to kilka sposobów, a jako że jestem zmęczony – zastosuję ten najgorszy. Po prostu podepnę obiekt gracza pod obiekt kamery w hierarchii projektu. Gotowe.

Player Boundaries

To byłoby zbyt piękne, jeśli nasza praca zakończyłaby się na tym etapie. Pozostała dość istotna sprawa. Po doleceniu do miejsca, gdzie kiedyś znajdowała się górna krawędź naszej kamery, gracz zostanie zablokowany. Przy przewijalnej planszy – po prostu zniknie pod nią. Trzeba by zablokować go w stosunku do aktualnego położenia kamery.

Przez myśl przeszedł mi bardzo głupi pomysł, który tu zrealizuję. Wraz z ruchem kamery przesuwał będę granice mapy. Można? Można (chociaż nie polecam, nie wygląda to nawet w najmniejszym stopniu na optymalne rozwiązanie problemu).

W programowaniu raczej powinniśmy unikać stosowania zasady ‚jeżeli coś jest głupie, ale działa, to nie jest głupie’.

Po fakcie stwierdzam że nie było to aż tak uciążliwe jak myślałem. Zajęło zalewie parę minut – wystarczyło górną i dolną granicę mapy zwiększać o pozycję kamery na osi Y. Nie wygląda także tak bardzo źle jak z początku zakładałem – w końcu dopisaliśmy tylko + Camera.main.transform.position.y w dwóch miejscach.

A co dalej? Myślę że teraz przydałoby się poprawić zachowanie przeciwników.