2012-03-01 25 views
5

Bien, este problema me ha estado molestando por mucho tiempo. ¿Alguien puede mostrarme o señalarme un algoritmo que puede controlar un automóvil como el de GTA2? Después de 3 días de investigación, todo lo que pude encontrar fueron todos estos algoritmos para usar el pivote y las articulaciones en las ruedas y ruedas separadas, etc. ¿Es esa la única forma de lograr un movimiento de automóvil simple como el de GTA2?GTA2 como Car Physics, pero extremadamente simplificado

Quiero ser capaz de utilizar el algoritmo en un rectángulo sin ruedas, pero aún así poder hacer que el automóvil se desplace. ¿Es eso posible? Por cierto, estoy usando Box2D para el juego 2D.

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

+0

Esto es realmente amplio ... seguro que es posible, ¿con qué parte estás teniendo problemas? – iforce2d

+0

Supongo que el problema que estoy teniendo es la implementación de un algoritmo simple en Java que se utiliza en cada cuadro para hacer que un coche como el de GTA2 el juego. –

+2

Ok, la parte con la que estás teniendo problemas es ... todo :) Esperaba un comportamiento específico que necesitas, por ejemplo, creo que cancelar un vehículo de la velocidad lateral sería un requisito típico. Me preguntaba si habías visto este: http://www.iforce2d.net/b2dtut/top-down-car La primera parte analiza algunas características típicas de la física del automóvil de arriba hacia abajo aplicadas a un solo cuerpo. Más tarde usa cuatro de esos cuerpos como ruedas, pero podrías tratar el cuerpo individual como un automóvil si quisieras. – iforce2d

Respuesta

7

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

  1. Asumir un radio de giro fijo (no demasiado malo si está utilizando un teclado, bastante molesto si tiene un controlador analógico). No hay nada como probar diferentes posiciones para descubrir qué radio se siente bien.

  2. Supongamos que tiene ruedas que están orientadas inicialmente hacia adelante y cuando presiona la tecla giratoria progresivamente alcanzan el máximo posible. Esto básicamente significa disminuir el radio desde el infinito hasta su radio más pequeño posible (puede averiguar la relación entre el ángulo de las ruedas y el radio fácilmente). Si tiene un controlador analógico, entonces el radio debe controlarse con los valores continuos de la entrada analógica.

  3. Deje que entren las fuerzas! Cuando enciende un automóvil, solo gira debido a una aceleración centrípeta. Esa aceleración centrípeta es causada por una fuerza que en realidad es la fricción del automóvil con la carretera. Puedes considerar la fricción como una constante y la masa de tu vehículo constante sin grandes problemas, entonces tienes una relación entre la velocidad del automóvil y el radio crítico (el radio mínimo que puedes girar dada la velocidad). La aceleración centrípeta es a = v^2/r = fricción/masa por lo que el radio crítico r = v^2 * masa/fricción. Puede considerar que no importa cuánto gire su vehículo se desplazará y, como máximo, describirá esta curva. Esto debería darte una buena simulación, pero no el sentimiento de "perder el control". ¡Para esto, mira el siguiente punto! circular motion

  4. La teoría es exactamente la misma que en el punto anterior, pero lo principal es que la fricción en realidad no es constante. De hecho, la fricción estática siempre será mayor que la fricción cinética. En la práctica, debe tener una fricción estática y una fricción cinética (más pequeña). Calcule r de acuerdo con la fricción estática y cuando su velocidad es demasiado grande para alcanzar esa r (esto es cuando se desplazaría) comienza a calcular la nueva r utilizando la fricción cinética. Esto le dará la sensación de perder el control, pero el vehículo aún no girará. Friction

  5. Para ver el giro, debe tener en cuenta las fuerzas aplicadas en cada rueda (es el hecho de que las diferentes ruedas están bajo diferentes fuerzas que hacen girar el automóvil) y considerar algunas físicas más avanzadas tales como qué ruedas son las ruedas motrices y también consideran la fricción cinética no una constante. Sin embargo, creo que esto está fuera de tu alcance.

  6. Alternativamente, usted puede hacer algo que GTA2 parecía hacer. En el momento en que sepa que va a derivar o está a la deriva demasiado (establece un umbral aquí) solo programáticamente haga que el vehículo pierda el control y gire.

Espero que esto ayude, si tiene alguna duda específica simplemente pregunte.

1

Encontré que el http://www.banditracer.eu/carexample/ demostró un ejemplo simple para usar Box2D para mostrar el movimiento del automóvil. El http://www.banditracer.eu/ tiene un juego de código abierto que puedes observar para ver si tiene el movimiento de deriva que estás buscando. Puede consultar el código y ver cómo manejaron el movimiento de deriva y hacer lo mismo para su proyecto.

Cuestiones relacionadas