Física de mosaico con Farseer

9

Tengo un problema con el Motor de Física Farseer, donde en un entorno en mosaico, mi objeto a veces interactuará con las esquinas de otros objetos, incluso si se alinean perfectamente.

Física de mosaico con Farseer

He leído sobre personas que sugieren que calcules y crees un objeto más grande, usando Cuadrados de Marcha o algo similar. Sin embargo, esta no es una opción, ya que me gustaría que cada mosaico tenga diferentes cualidades físicas, como diferentes fricciones y restituciones.

Mi pregunta es, ¿qué es exactamente lo que lo está causando, son problemas de precisión de flotación u otra cosa? ¿Y hay alguna manera de arreglarlo, sin romper todo el motor de física?

William Mariager
fuente
Me pregunto si simplemente podría expandir los cuadros de colisión en un píxel, para que se superpongan un poco. Puede ver la superficie como más conectada quizás.
Doug.McFarlane
@ Douglas: Acabo de probar eso, y no hizo ninguna diferencia.
William Mariager
¿Son los azulejos del suelo cuerpos estáticos?
bummzack
@bummzack: Sí, lo son.
William Mariager
Estoy teniendo exactamente el mismo problema. Obtengo el efecto de "rebote" cuando mi objeto móvil es un rectángulo o un círculo. Tampoco puedo convertir varios cuadrados en un rectángulo grande porque quiero que el jugador tenga la capacidad de "eliminar" fichas individuales en ciertas situaciones.

Respuestas:

5

Farseer usa un solucionador iterativo, por lo que cuando su rueda comienza a chocar con otro rectángulo a alta velocidad, de vez en cuando verá golpes, ya que es una "alineación perfecta" para nosotros, no para una simulación física, con iteraciones como estas. nunca seas "perfecto en píxeles".

Tendrás que convertir rectángulos a formas Edge / Loop y luego modelar diferentes cualidades físicas con hacks como crear límites de mosaicos artificiales y luego cambiar las propiedades cuando el personaje ingresa a un cuadro delimitador, pero no todas las cualidades físicas se pueden emular de esa manera.

Tarde o temprano terminarás escribiendo tu propia física basada en mosaicos en lugar de Farseer. Si tu juego no tiene muchos acertijos de física complejos, será más sencillo abandonar Farseer por completo y tirar tu propia física basada en fichas.

EnoughTea
fuente
De hecho, he comenzado a codificar mi propio motor de física, específicamente para este motor de mosaico, ya que no parece que haya soluciones elegantes.
William Mariager
Decidí marcar esta respuesta, ya que no parece haber una solución simple, y será mejor que codifiques tu propia solución. O acepte que no puede tener una física diferente y use Cuadros de marcha para hacer cuerpos más grandes.
William Mariager
0

puede optimizar sus formas de colisión, esta escena se puede hacer con solo cuatro rectángulos.

puedes unir cuadros correlativos para hacer uno más grande.

este video lo muestra http://www.youtube.com/watch?v=eyhGckHgkkE

cuando agrega cuadros, puede ver un rectángulo azul claro con la forma optimizada.

Blau
fuente
1
Como dije en el tercer párrafo, convertir un grupo de objetos en un objeto más grande no es una opción, ya que perdería propiedades individuales.
William Mariager
también puedes agruparlos por sus propiedades fisiscales. Creo que no es muy común tener muchos bloques físicos diferentes juntos.
Blau
Agruparlos por cualidades físicas me daría el mismo problema si el terreno cambia mucho en un tramo. Puede ser inusual, pero no obstante es lo que necesito.
William Mariager
0

Hmm ... sospecho que podría tener algo que ver con tu círculo y no con las fichas debajo de él. Intenta hacer el suelo con un solo casco y mira si obtienes los mismos resultados. Si no, son las fichas como sospechas. Si es así, su círculo no es tan redondo como podría pensar.

John McDonald
fuente
Yo probé eso. Usando un gran rectángulo no hay problemas.
William Mariager
k, los azulejos son el problema entonces
John McDonald