Jak wizualizować warstwy paralaksy w edytorze poziomów?

9

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?

TenFour04
źródło
4
Kiedy zrobiłem taką grę, właśnie ją stworzyłem, abyś mógł przeciągać kamerę w edytorze i zobaczyć, jak działa paralaksa. Jednak nie jestem pewien, jak konkretnie zrobić coś takiego w Unity.
Tetrad

Odpowiedzi:

1

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.

Attackfarm
źródło
Tak, wydaje się, że użycie edytora poziomów jest najlepszym sposobem, aby to zrobić, niezależnie od tego, czy koduje swój własny, czy w moim przypadku z Unity, konfigurując go do pracy z istniejącym edytorem. Swoją konfigurację paralaksy zakodowałem za pomocą osobnego obiektu kamery dla każdej warstwy, a każda z kamer porusza się odpowiednio względem kamery głównej każdej klatki. Następnie użyj [ExecuteInEditMode], aby zaktualizować je nawet po przeciągnięciu głównej kamery w edytorze. Muszę tylko pamiętać, aby przenieść główny aparat bezpośrednio.
TenFour04
1

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.

Jason Coombes
źródło