Fuerza de gravedad en juegos en primera persona.

11

En nuestro juego, establecemos la aceleración debida a la gravedad al valor apropiado de 9.8 m / s ^ 2. Aunque físicamente correcto, se siente más como moverse en la luna. Se siente a la derecha en un valor de 16 m / s ^ 2. Alguien más ha experimentado esto? ¿Es solo porque no tenemos movimiento borroso o sonido para dar la sensación aparente de velocidad? ¿Está bien establecerlo en 16 m / s ^ 2 si se siente bien?

Hannesh
fuente
Buena pregunta por cierto, muy común al ver esto, muchas personas suponen que tienen que cambiar la gravedad cuando se encuentran con esto
brandon
Algo que parece haber sido asumido: ¿son correctas sus masas de objetos?
DrDeth
55
la masa no debe tenerse en cuenta a menos que esté simulando planetas. Una canica cae con la misma aceleración que una bola de boliche ignorando la resistencia al viento
brandon
2
¿Tu velocidad de salto también es realista? Si tienes 9.8 m / s ^ 2 de gravedad pero un humano que salta 100 veces más alto, la gravedad se sentirá muy mal. Además, ¿estás seguro de que estás aplicando la aceleración en la escala de tiempo adecuada?
Gregory Avery-Weir

Respuestas:

12

Puede ser que su báscula esté apagada. Si está mirando un ladrillo y parece que cae más lento de lo que debería, es posible que lo haga escalar más grande de lo que debería ser un ladrillo. Tuve este problema cuando estaba trabajando en el motor physX. Toda mi escena era aproximadamente 3 veces más grande, así que la reduje y funcionó.

Si 16 parece mejor que 9.8 pero quiere usar 9.8. Simplemente multiplique el tamaño del objeto que cae por 0.61. Lo que debería reducirlo a donde 9.8 le da el efecto deseado.

Editar: para arreglar esto. Hice un objeto que debería tener 1 metro de altura. Lo escalo hasta que parece caer a la velocidad correcta. Cualquiera que sea la comparación de las unidades mundiales con la nueva escala, me da mi nueva escala de unidades. Ejemplo. Si el objeto fue escalado a 0.14 entonces eso representa 1 metro en el mundo del juego. Haga un objeto de regla que sea de .14 de alto y cuando diseñe el nivel podrá usar esa regla para escalar todo correctamente. Eso hará que todo parezca que está cayendo correctamente a 9.8 m / ss.

Brandon
fuente
Eso no suena bien. Si usa unidades consistentes, un objeto a 1 metro de altura debería caer al suelo en 0.45 segundos. Escalar toda su escena no debería importar. Tal vez estabas comunicando tu escala de tiempo incorrectamente a tu motor de física.
Kasper
55
No estoy hablando de la altura a la que lo dejas caer. Estoy hablando de escalar el objeto en sí. Si eres un hombre de 100 pies y saltas al 20% de tu altura. Te llevará más tiempo y sentirás que estás en la luna. El otro lado es, si eres un hombre de 6 pies y saltas al 20% de tu altura, saltarás mucho más bajo y tocarás el suelo mucho antes. Definitivamente es un problema de escala.
Brandon
2

Yo diría que vaya con lo que sienta y juegue bien. Sin embargo, sería mejor si estuviera utilizando el valor correcto, aunque solo sea para que usted u otros desarrolladores no tengan un momento WTF cuando vuelvan a visitar el código 6 meses después.

No olvides que tu implementación física solo será una aproximación al mundo real y que a veces acercar las cosas a la realidad hace que el juego no se pueda jugar. También puede haber algo más en su simulación que esté "apagado". Verifique eso también.

Hace más de unos años estuve involucrado con un simulador de helicóptero y el cliente quería que los controles fueran "realistas". Falló porque no se podía jugar. Al simplificar los controles, el juego se podía jugar.

ChrisF
fuente
1

Al modelar todo en el sistema métrico, también observé que la gravedad se siente demasiado débil con respecto al salto del jugador (en un juego de plataformas). Al igual que "en la luna", "gelatina", "demasiada física", no lo suficientemente "arcade". Por otro lado, los jugadores en los juegos también pueden saltar regularmente a una gran altura poco realista.

TLDR: la alta gravedad se siente muy rápida y arcade, la gravedad realista a veces puede no brindar la experiencia de juego deseada.

Jonas Bötel
fuente