Mam problem z Farseer Physics Engine, w którym w kafelkowym środowisku mój obiekt czasami wchodzi w interakcje z narożnikami innych obiektów, nawet jeśli są idealnie wyrównane.
Czytałem o ludziach sugerujących, abyś obliczył i stworzył jeden większy obiekt, używając Kwadratów Marszowych lub czegoś podobnego. Nie jest to jednak opcja, ponieważ chciałbym, aby każda płytka miała inne cechy fizyczne, takie jak inne tarcie i restytucja.
Moje pytanie brzmi: co dokładnie to powoduje, czy są to problemy z precyzją typu float, czy coś innego? I czy jest sposób, aby to naprawić, nie psując całego silnika fizyki?
xna
physics
farseer-physics-engine
William Mariager
źródło
źródło
Odpowiedzi:
Farseer używa iteracyjnego solvera, więc kiedy twoje koło zacznie zderzać się z innym prostokątem z dużą prędkością, od czasu do czasu zobaczysz nierówności, ponieważ jest to „idealne dopasowanie” do nas, a nie do symulacji fizyki, z iteracjami takie rzeczy będą nigdy nie być „perfekcyjnie w pikselach”.
Będziesz musiał przekonwertować prostokąty na kształty krawędzi / pętli, a następnie modelować różne cechy fizyczne za pomocą hacków, takich jak tworzenie sztucznych granic płytek, a następnie zmiana właściwości, gdy postać wejdzie do ramki granicznej, ale nie każda jakość fizyczna może być w ten sposób emulowana.
Wcześniej czy później skończysz pisać własną fizykę opartą na kafelkach zamiast Farseer. Jeśli w twojej grze nie ma wielu skomplikowanych zagadek fizyki, łatwiej będzie całkowicie porzucić Farseer i rzucić własną fizyką opartą na kafelkach.
źródło
możesz zoptymalizować kształty kolizji, ta scena może być wykonana tylko z czterema prostokątami.
możesz dołączyć pola korelacyjne, aby zwiększyć jeden.
ten film pokazuje to http://www.youtube.com/watch?v=eyhGckHgkkE
podczas dodawania pól widać jasnoniebieski prostokąt o zoptymalizowanym kształcie.
źródło
Hmm ... Podejrzewam, że to może mieć coś wspólnego z twoim kręgiem, a nie z płytkami pod nim. Spróbuj wylądować za pomocą pojedynczego kadłuba i sprawdź, czy uzyskasz takie same wyniki. Jeśli nie, to takie płytki, jak podejrzewasz. Jeśli tak, twoje koło nie jest tak okrągłe, jak mogłoby się wydawać.
źródło