Estou tendo um problema com o Farseer Physics Engine, onde, em um ambiente lado a lado, meu objeto às vezes interage com cantos de outros objetos, mesmo que eles se alinhem perfeitamente.
Eu li sobre pessoas sugerindo que você calcule e crie um objeto maior, usando Marching Squares ou algo semelhante. No entanto, essa não é uma opção, pois eu gostaria que cada peça tivesse qualidades físicas diferentes, como diferentes atritos e restituições.
Minha pergunta é: o que exatamente está causando isso, são problemas de precisão de flutuação ou algo mais? E existe uma maneira de consertar isso, sem interromper todo o mecanismo de física?
xna
physics
farseer-physics-engine
William Mariager
fonte
fonte
Respostas:
O Farseer usa um solucionador iterativo; portanto, quando sua roda começar a colidir com outro retângulo em alta velocidade, de tempos em tempos você verá solavancos, pois é um "alinhamento perfeito" para nós, não para uma simulação de física, com iterações como essas nunca seja "perfeito em pixels".
Você precisará converter retângulos em formas Edge / Loop e modelar diferentes qualidades físicas com hacks, como criar limites artificiais de blocos e alterar propriedades quando o personagem entrar em uma caixa delimitadora, mas nem toda qualidade física pode ser emulada dessa maneira.
Mais cedo ou mais tarde, você acabará escrevendo sua própria física baseada em ladrilhos, em vez de Farseer. Se o seu jogo não tiver muitos quebra-cabeças de física complexos, será mais fácil abandonar o Farseer completamente e lançar sua própria física baseada em peças.
fonte
você pode otimizar as formas das colisões, essa cena pode ser feita com apenas quatro retângulos.
você pode juntar caixas correlativas para aumentar uma.
este vídeo mostra http://www.youtube.com/watch?v=eyhGckHgkkE
ao adicionar caixas, você pode ver um retângulo azul claro com a forma otimizada.
fonte
Hmm ... suspeito que possa ter algo a ver com o seu círculo e não com os ladrilhos abaixo dele. Tente fazer o solo usando um único casco e veja se obtém os mesmos resultados. Caso contrário, são os ladrilhos como você suspeita. Nesse caso, seu círculo não é tão redondo quanto você imagina.
fonte