Zaraz zacznę rozwijać grę z przewijaniem boków, w której celem gracza jest podróżowanie jak najdalej w osi poziomej przed dotknięciem w dół. Pamiętaj, że nie muszę nigdy wracać na osi poziomej.
Rozwijam to w AndEngine na Androida, który korzysta z OpenGL i Box2d.
Zanim zacznę, muszę zdecydować o czymś ważnym: czy powinienem używać świata wokół gracza, aby symulować ruch, czy faktycznie przenieść gracza i podążać za nim z funkcjami kamery silnika gry?
Oba podejścia wydają się mieć różne zalety i wady, więc nie wiem, które z nich uważa się za najlepsze. Na przykład, co ułatwi dodawanie ulepszeń po drodze i ładne animowane tło?
Dzięki!
Odpowiedzi:
Przesuń aparat (dołączony do odtwarzacza). Wyobrażam sobie, że twój świat ma wiele obiektów, takich jak wrogowie. Jeśli zajmowałeś się przemieszczaniem świata, musiałbyś przeszukiwać wszystkie te obiekty, aby aktualizować ich pozycje za każdym razem, gdy świat się poruszał.
Jeśli przeniesiesz odtwarzacz i podłączysz kamerę do odtwarzacza, zużycie zasobów będzie minimalne. Gra przejdzie do fazy renderowania, obejrzy wszystko raz, tak jak robi to każdą klatkę, i narysuje je w pozycji - pozycja kamery. W tym przypadku pozycja kamery zawsze będzie równa pozycji gracza.
źródło
camera.setChaseEntity(player);
aby to osiągnąć.Zawsze poruszam aparatem i polecam go - jest wiele powodów, dla których wolę to, ale najważniejsze to sprowadza się do tego:
Jeśli poruszasz kamerą i odtwarzaczem, to tylko dwa byty muszą zostać zaktualizowane, aby przewinąć ekran.
Jeśli przenosisz cały świat za każdym razem, gdy ekran wymaga przewijania, obejmuje to nieznaną i prawdopodobnie dużą liczbę jednostek, które będą musiały zostać zaktualizowane.
źródło
To naprawdę bardzo trywialne, tak naprawdę nie robi różnicy od opisywanych rzeczy.
Albo przesuniesz tło obok kamery i odtwarzacza, albo przesuniesz gracza i kamerę razem z nim. Przypuszczam, że jest tylko jedna rzecz do zrobienia, jeśli przesuniesz tło.
Chociaż przypuszczam, że jeśli przesuniesz tło, będziesz musiał nadać rodzicom wszelkie przetworniki i wrogów, co znowu jest trywialne, ale warto o tym pomyśleć.
Osobiście poruszyłbym gracza, ponieważ lubię rzeczy do zrobienia w bardziej realistyczny sposób.
źródło
Inne odpowiedzi są dobre, ale chciałbym dodać kilka punktów tego, co jest lepsze, mając nadzieję, że pomogę komuś, kto spróbuje podjąć tę samą decyzję dla innego projektu.
Przenoszenie odtwarzacza:
player.x += 5;
(pseudokod).Moving the World:
0
.0
.Ostatecznie zależy to od projektu. Jeśli ktoś tworzy oryginalnego klona Mario, przenoszenie świata może być skomplikowane, podczas gdy przenoszenie gracza tak naprawdę nie stwarza wielu problemów. Chcąc stworzyć ogromną grę typu open-world, lepiej zamiast tego przenieść świat.
źródło