¿Cómo mantendrías una vista desde arriba de un tren en las vías con el motor de física Box2D?

StackOverflow https://stackoverflow.com/questions/616375

  •  03-07-2019
  •  | 
  •  

Pregunta

Creo que sería divertido modelar una vista desde arriba de un tren siguiendo una vía, atravesando interruptores, etc., utilizando una biblioteca de física como Box2D. ¿Qué juntas y motores necesitaría para que esto funcione?

Tengo curiosidad acerca de cómo implementar las fuerzas necesarias para hacer que el auto siga una vía de spline para que pueda toparse con otros vagones de tren, peatones, DeLoreans, etc. Simplemente diciendo "el auto está ahora en spline (t) " ; Para cada paso de tiempo se crearían fuerzas excesivas en el motor de física. Si lo comprendo correctamente, tiene que pegar el auto en la pista con una fuerza, restringir su ángulo para tender en paralelo con la pista con otra (o pegar la parte delantera y trasera del auto a la pista con dos fuerzas), y crear Otra fuerza para impulsar el tren hacia adelante. Estoy buscando algunos detalles sobre cómo lograr estas cosas.

¿Fue útil?

Solución

Creo que sería más fácil sin " real " La física, como el movimiento del balón de juegos como Luxor o Tumble Bugs. Significado: dejar que el tren siga una spline definida por las vías.

Es probable que el uso de phyiscs sea excesivo para hacer que un tren siga una vía y podría provocar todo tipo de efectos secundarios no deseados, incluidos movimientos bruscos, descarrilamiento de trenes, trenes que se atascan en las uniones, etc.

Sin embargo, aún podría unirse a los vagones individuales utilizando juntas físicas. Solo asegúrate de que solo la locomotora obtenga las fuerzas de aceleración, el resto del tren simplemente sigue o es empujado pero permanece en la estría.

Otros consejos

¿Por qué te preocupa mantenerlo " en las pistas " ;? ¿A dónde va a ir? La gravedad debe mantenerla baja, la intersección de objetos debe mantenerla hacia arriba y, por lo tanto, las únicas direcciones por las que debe preocuparse son hacia adelante y hacia atrás. Ahí es donde entra un motor, y ya está. El resto son decoraciones.

En respuesta a la edición del problema:

Siderails. Y haga que el tren sea lo suficientemente largo / rígido en comparación con su ancho para que pueda navegar los cruces (acérquelos al ángulo recto para minimizar los problemas de cruce.

Una vista de arriba hacia abajo (es decir, ver el tren desde el cielo) en realidad no requiere un motor de física 2D, si te entiendo correctamente. De hecho, parece que no ayudaría realmente con el problema (si quieres una simulación de tren), pero tal vez solo quieras probarlo por diversión. :)

Sin embargo, ¿qué hay de poner algo como una junta deslizante en el tren y los vagones, y un motor en la locomotora? La junta deslizante puede necesitar alguna implementación especial; probablemente querrás correr el tren a lo largo de una spline y no un segmento de líneas rectas, ¿verdad?

Algún tipo de articulación de rótula conectaría los autos entre sí.

La implementación no es tan difícil y pude hacer un prototipo de algo en unas pocas horas que hace el trabajo básico. Requerirá mucho trabajo para que se ejecute sin problemas, pero básicamente es solo "siderails".

Obviamente, primero debes apagar la gravedad en Box2D. En segundo lugar, construir un tren. Trate las ruedas del tren como las ruedas de un automóvil y de repente se volverá más simple. Para las pistas tienes algunas opciones:

  • Crea tu propio objeto de juego (no en el mundo box2D) que es una línea simple que el tren luego " seguirá " (Puede usar motores en las ruedas del tren para " dirigir " hacia la línea). Luego solo superponga la línea con un ancho " riel " Gráficos y tienes un sistema muy simulado. Dígale a las ruedas que se apaguen si se aleja demasiado de la línea y listo, tiene un descarrilamiento.

  • Cree rieles físicos reales: rieles externos (como barandillas) que los trenes " ruedas " se topará con Tendrán que tener curvas suaves en este caso, lo que podría ser muy difícil dado los recursos limitados que tiene (simular una buena curva lenta de cajas en Box2D es difícil para el procesador)

¡Entonces simplemente suelta tu tren!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top