Estoy haciendo un juego donde el jugador arrastra un bote con el dedo. Estoy usando Box2D para los aspectos físicos del juego. En particular, estoy usando b2MouseJoint
para adjuntar el evento táctil al barco para permitir que el evento táctil arrastre el barco.Simulando la resistencia al agua en Box2D
Pero hay un problema, que la forma en que la embarcación se mueve mientras se arrastra no es realista; simplemente se puede arrastrar en cualquier dirección, donde como en el mundo real, un bote solo puede moverse a lo largo de su longitud y habrá resistencia al agua que dificulta cambiar la dirección del movimiento del bote. Por lo tanto, necesito una forma de simular la resistencia al agua para hacer que el movimiento del barco sea realista.
¿Es posible simularlo en Box2D? La amortiguación lineal y la amortiguación angular simplemente hacen que el bote sea difícil de mover, pero solo quiero que el bote sea fácil de mover en una dirección y solo debe resistir el cambio de dirección.
P.S. No creo que deba publicar mi código para esta pregunta, pero hágamelo saber si desea ver el extracto del código.
¿Ha intentado utilizar la [ecuación de arrastre] (http://en.wikipedia.org/wiki/Drag_equation)? El término del área de la sección transversal * A * cambiará dependiendo de la orientación del barco en relación con su velocidad, que debe hacer lo que usted desee. Y siempre puede estimar * A * con alguna heurística barata. – Rahul
@Rahul, gracias por la pista. He añadido la ecuación de arrastre en el código con algunas técnicas de aproximación (como usar la velocidad frente al ángulo del barco para llegar al área de referencia), puedo ver un poco de resistencia al agua simulada en el último código, pero parece haber algunos movimientos locos cuando el barco choca con el límite mundial. Estoy intentando dar sentido a lo que está mal antes de pedir más ayuda aquí. De nuevo, gracias por la pista. – Lukman
Una solución descarada podría ser crear montones de cuerpos redondos muy pequeños con una masa pequeña para llenar el espacio alrededor del barco. No he probado la viabilidad de esto en términos de física o poder de procesamiento (todavía) y por eso no lo presento como una respuesta adecuada. – Andrey