GTA2 como Car Physics, pero extremadamente simplificado

Está bien, así que este problema me ha estado molestando durante más tiempo. ¿Puede alguien mostrarme o señalarme un algoritmo que puede controlar un coche como el de GTA2? Después de 3 días de investigación todo lo que podía llegar con todos estos algoritmos para el uso de pivote y articulaciones en las ruedas y ruedas separadas y tal. ¿Es ésa la única manera de conseguir el movimiento simple del coche como el de GTA2?

Quiero ser capaz de utilizar el algoritmo en un rectángulo sin ruedas, pero todavía ser capaz de tener la deriva del coche. ¿Es eso posible? Por cierto, estoy usign Box2D para el juego 2D.

Sé que esto es más adecuado para gamedev pero por alguna razón no puedo publicar preguntas.

Una respuesta simple que puede convertirse en algo bastante grande así que intentaré explicar presentando diferentes puntos en un orden creciente de sofisticación. Asumiré un conocimiento básico de la física.

  1. Suponga un radio de giro fijo (no está mal si está usando un teclado, bastante molesto si tiene un controlador analógico). Nada como probar diferentes posiciones para averiguar qué radio se siente bien.

  2. Suponga que usted tiene ruedas que están inicialmente hacia adelante y al presionar la llave de giro que progresivamente giran al máximo posible. Esto significa básicamente disminuir el radio desde el infinito hasta el radio más pequeño posible (se puede determinar fácilmente la relación entre el ángulo de las ruedas y el radio). Si tiene un controlador analógico, entonces el radio debe ser controlado por los valores continuos de la entrada analógica.

  3. ¡Que entren las fuerzas! Cuando usted está dando vuelta en un coche, usted gira solamente debido a una aceleración centrípeta. Que la aceleración centrípeta es causada por una fuerza que es en realidad la fricción del coche con la carretera. Usted puede considerar la fricción constante y la masa de su vehículo constante sin grandes problemas, entonces usted tiene una relación entre la velocidad del coche y el radio crítico (el radio mínimo que puede dar vuelta dada la velocidad). La aceleración centrípeta es a = v ^ 2 / r = fricción / masa de modo que el radio crítico r = v ^ 2 * masa / fricción. Puede considerar que no importa cuánto gire, el vehículo se desviará y, al máximo, describirá esta curva. Esto debería darle una simulación agradable pero todavía no el sentimiento de "pérdida de control". ¡Para esto vea el siguiente punto! movimiento circular

  4. La teoría es exactamente la misma que en el punto anterior, pero lo principal es que la fricción en la realidad no es constante. De hecho, la fricción estática siempre será mayor que la fricción cinética. En la práctica, usted debe tener una fricción estática y una (menor) fricción cinética. Calcula r de acuerdo con la fricción estática y cuando tu velocidad es demasiado grande para lograr que r (esto es cuando te desviarías) comienzas a calcular el nuevo r usando la fricción cinética. Esto le dará la sensación de perder el control, pero el vehículo todavía no girará. Fricción

  5. A fin de ver el giro, tendrías que considerar las fuerzas aplicadas en cada rueda (es el hecho de que las diferentes ruedas están bajo diferentes fuerzas que hace girar el coche) y considerar algunos más avanzados de la física, como qué ruedas son la conducción Ruedas y también considerar la fricción cinética no una constante. Sin embargo, creo que esto está fuera de su alcance.

  6. Alternativamente, usted puede hacer algo que GTA2 parecía hacer. En el momento en que se sabe que se van a la deriva o están a la deriva demasiado (establecer un umbral aquí) sólo programaticamente hacer que el vehículo pierda el control y giro.

Espero que esto ayude, si usted tiene alguna duda específica sólo pedir.

Encontré el http://www.banditracer.eu/carexample/ demostrado un ejemplo simple para usar Box2D para demostrar el movimiento del coche. El http://www.banditracer.eu/ tiene un juego de código abierto que puedes observar para ver si tiene el movimiento de deriva que buscas. Usted puede comprobar hacia fuera el código y ver cómo manejaron el movimiento de deriva y hacer iguales para su proyecto.

  • ¿Cómo comprobar si dos caminos están en el mismo punto de montaje?
  • ¿Qué devuelve el método location.Address de cada Android?
  • Los servicios de juegos de Google Play logran desbloqueo: desbloquear tienda en juego o desbloquear (?) Cada vez.
  • Error: Gradle: la ejecución falló para la tarea ': app: preDexDebug'
  • FTP Subir y descargar en Android
  • ¿Existe una manera de almacenar de forma segura los datos de usuario en un dispositivo Android?
  • Android Geofencing BroadcastReceiver no activado
  • Enviar arrays con Intent.putExtra
  • No sé cómo Copiar archivos a la tarjeta SD en Genymotion Android Emulator
  • Desconectar de un grupo directo wifi
  • Cómo hacer que el modo de ráfaga esté disponible para la cámara
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.