Tworzę grę 2D w Unity, ale dotyczyłoby to dowolnego silnika gry 2D.
Jeśli zaimplementuję paralaksę wielopłaszczyznową z kamerami ortograficznymi, trudno jest rozłożyć duszki warstwy tła i wiedzieć, gdzie będą one ustawiać się z duchami w innych warstwach.
Moim pierwszym instynktem było użycie wielu kamer, po jednej dla każdej warstwy, i zmniejszenie prędkości ruchu kamer dla warstw tła. Pozwala to uniknąć konieczności przesuwania wszystkich ikonek tła w każdej klatce. Problem polega na tym, że warstwa poruszająca się z połową prędkości zajmie połowę miejsca warstwy głównej podczas przeglądania w edytorze. Trudno więc wiedzieć, gdzie umieścić duszki podczas układania gry. Problem pogarsza się wykładniczo wraz ze wzrostem liczby warstw.
Jak to obejść? Próbowałem odwrotnie skalować warstwy według ich zamierzonych prędkości ruchu podczas pracy z nimi w edytorze. Dzięki temu wszystkie duszki w tle znajdują się we właściwych lokalizacjach względem głównej warstwy, ale są strasznie zniekształcone.
Czy muszę po prostu ssać i ciągle przełączać się między edytorem a uruchomioną grą, aby przetestować tło paralaksy?
źródło
Odpowiedzi:
Nie jestem zaznajomiony z Unity, więc nie mogę ci pomóc w szczegółach, ale wydaje się, że potrzebujesz zaimplementować graficzny interfejs użytkownika do dostrajania tych wartości w czasie wykonywania, powiedzmy, zestawu suwaków lub pól numerycznych. Zaimplementowanie pól w celu zmiany dowolnych wartości (skali, prędkości itp.) W czasie wykonywania byłoby dość proste, co zapewnia natychmiastową informację zwrotną. Do umieszczania można użyć pól lub ręcznego umieszczania z przeciąganiem kliknięć (co może być nieco trudniejsze do wdrożenia, ale o wiele bardziej intuicyjne).
Daje to pełną kontrolę bez kompilowania i uruchamiania kodu dla każdej niewielkiej części zmiany. Kiedy w końcu dojdziesz do wyglądu, z którego jesteś zadowolony, użyj tych wartości na liście stałych. Jeśli jest to zbyt zniechęcające ze względu na liczbę edytowanych zmiennych (powiedzmy, liczne lokalizacje ikonek na wielu poziomach), chciałbym zaimplementować go w edytorze poziomów, jak sądzę, z taką samą funkcjonalnością ręcznej regulacji, ale z wynik tworzenia i przechowywania skorygowanych danych.
źródło
Pomysł: uważam, że wystarczy aparat do przedniej warstwy. Umieszczanie sprite'ów w pewnej odległości od płaszczyzny Z, a dalsze utrzymywanie odległości daje ułamek, na którym można przesunąć tę tylną warstwę.
Na przykład odległość obiektu 10 od przedniej kamery przesuwa się o 1/10 w warstwie tła. Obiekt o odległości 2 przesuwałby się o 1/2 w odpowiedniej warstwie itp.
źródło