Wpis z mikrobloga

Mirki, buduję generator tras i szukam metody na rozkładanie obiektów tak żeby nie nachodziły na siebie. Jak to najłatwiej ogarnąć? Pomysły mam trzy:

1. Obiekt przed zrzuceniem na planszę puszcza Ray i sprawdza czy coś jest pod nim, jeśli tak to szuka innego miejsca (wada: wszystko musi mieć collidery)

2. Obiekt po zrzuceniu zapisuje w tablicy punkt i pole zajmowanej powierzchni, następny obiekt sprawdza tablicę i zrzuca się w innym miejscu (wada: dużo obliczeń pól i odejmowania ich od siebie)

3. Kamera patrzy na wszystko z góry i zapisuje teksturę na której obiekty są czarne, następny obiekt patrzy na teksturę i zrzuca się w miejscu białym (wada: dużo obliczeń i kombinacji, czas)

Ew. jest jakaś inna metoda? Może unity ma coś wbudowanego? Najgorzej że droga jest w kształcie węża i odejmowanie jej pola to kupa kombinacji

#gamedev #unity3d #csharp #programowanie
Pobierz jacku - Mirki, buduję generator tras i szukam metody na rozkładanie obiektów tak żeby...
źródło: comment_1610702907Vbl531uuDIFOk0XEg7Prh4.jpg
  • 8
@jacku: ja bym to rozwinieciem pierwszej metody robil - robisz spherecasta (rozwiniecie raycasta) i sprawdzasz. wszystko musi miec collidery fakt, ale mozesz sprobowac je dodawac w generatorze i usuwać po postawieniu na ziemi.
podstawowe collidery typu box, sphere, capsule mają praktycznie zerowy wpływ na wydajność dla statycznych obiektów jak są nie używane
@jacku: nie usuwaj po nazwie bo to uczy złych nawyków. raz że wyszukiwanie po nazwie nie jest jakieś ultra wydajne, to dwa jak będziesz sobie je zrzucał to po prostu dodawaj gameobject do listy i później iteruj po tej liście.
@ultek85: jeszcze taka zagwozdka: w pozostałych metodach obiekt wie ile jest wolnej przestrzeni i gdzie się zrzucić, w przypadku collidera może próbować wybrać inne miejsce i nigdy nie trafić jeśli obiektów jest więcej.

Może najpierw rzucić 20x20 colliderów testowych i usuwać je w miarę zajmowania powierzchni przez obiekty właściwe? Wtedy testcollider jest miejscem zrzutu, to chyba będzie najszybsze
@jacku: nie bardzo rozumiem w czym problem. nie wiem ile masz na to wszystko czasu. bo to wszystko jak rozumiem bedzie preprocess i kwestia ułamka sekundy więcej. przeciez mozesz brac 20 obiektów i kazdego testować po kilka razy, jak sie uda to stawiasz, jak nie to przechodzisz dalej... zeby sie nie okazalo ze napierdzielone jest tymi obiektami dookoła i wygląda to bez sensu :)
@ultek85: staram się maksymalnie optymalizować wszystko od razu bo poprzedni generator tak właśnie celował na końcu małymi obiektami i zmulał bo nie mogły znaleźć miejsca. Ale tamten działał na analizie pikseli to też pewnie przez to, tutaj zrobię te wstępne testcollidery i będzie ok
jacku - @ultek85: staram się maksymalnie optymalizować wszystko od razu bo poprzedni ...