Juego Engranajes con gravedad

Buenas a todos,

estoy creando un juego como este:

http://www.youtube.com/watch?v=UB_e_7ozoR0

He estado probando diferentes tipos de engranajes, creando los objetos con físicas con  PhysicsEditor pero no consigo que funcione correctamente.

Mi problema, básicamente está en que los cuerpos físicos no colisionan correctamente, se solapan entre ellos. He tenido que quitar la gravedad por que si no aún funcionaba peor.

En este juego los cuerpos siempre encajan correctamente, quizas es un fallo hacer el juego con físicas.

Se os ocurre alguna manera de hacer este tipo de juego?

Agradeceré eternamente la ayuda.

Si podeis poner algun ejemplo estaría genial.

Si quereis que os ponga mi código decidmelo.

Muchas gracias!

sephirot36 - le pregunto a un par de nuestros ingenieros acerca de tu pregunta. En resumen, parece no ser lo mejor el hacer los engranes cuerpos de fisica. Aqui esta su respuesta con un poco mas de detalle:


If you are trying to model actual gears in Box2D, simply use circle shapes, and render a gear texture on top of them. To simulate different teeth size, just manually handle the gear compatibilities yourself. ie: If two gear types shouldn’t work because their teeth sizes are incompatible, prevent them from spinning in code, manually (turn off their Box2D simulation by not adding a physical body to them).

Once you decide two gears are compatible, give them physical bodies, with (very important) maximum friction so they don’t skid, and let Box2D do its thing. Don’t mess with their angular velocities. It’s unnecessary, and your code will be needlessly complex.


Saludos.

Buenas David,

entiendo lo que me dices; pero no veo claro como hacerlo.

Básicamente lo que entiendo es:

  • Uso circulos como base de los engranajes.

  • Compruebo las colisiones entre los circulos, si coinciden…

entonces transformo esos circulos en cuerpos con física?

Seguiré teniendo el mismo problema entonces de que los engranajes se solapan…

Alguien puede ponerme un pequeño código de ejemplo?

Muchas gracias!

Buenas,

os dejo un enlace con un zip con parte del juego, a ver si con el código podeis echarme una mano:

https://docs.google.com/file/d/0B-88Zk7c3DwlR3V4Z3RzbjNOTEU/edit?usp=sharing

Aqui podreis ver el funcionamiento, los cuerpos físicos que uso y la programacion.

Basicamente lo que pasa es lo siguiente

https://docs.google.com/file/d/0B-88Zk7c3DwlYjhOOGpjZnNoalk/edit?usp=sharing
 

Muchas gracias!

Hazlo directamente con imagenes, y si están en el radio, que giren.

rueda espacio rueda

Si la imagen que pongas en el espacio está tocando las dos imagenes, que rueden. Al ser todas tus imagenes círculos, las comprobaciones serían faciles. Lo único que veo dificil, es que te quede al girar un movimiento “bonito”.

–Eso, o haces un círculo grande y le añades pequeños objetos físicos, aunque lo veo menos probable.

sephirot36 - le pregunto a un par de nuestros ingenieros acerca de tu pregunta. En resumen, parece no ser lo mejor el hacer los engranes cuerpos de fisica. Aqui esta su respuesta con un poco mas de detalle:


If you are trying to model actual gears in Box2D, simply use circle shapes, and render a gear texture on top of them. To simulate different teeth size, just manually handle the gear compatibilities yourself. ie: If two gear types shouldn’t work because their teeth sizes are incompatible, prevent them from spinning in code, manually (turn off their Box2D simulation by not adding a physical body to them).

Once you decide two gears are compatible, give them physical bodies, with (very important) maximum friction so they don’t skid, and let Box2D do its thing. Don’t mess with their angular velocities. It’s unnecessary, and your code will be needlessly complex.


Saludos.

Buenas David,

entiendo lo que me dices; pero no veo claro como hacerlo.

Básicamente lo que entiendo es:

  • Uso circulos como base de los engranajes.

  • Compruebo las colisiones entre los circulos, si coinciden…

entonces transformo esos circulos en cuerpos con física?

Seguiré teniendo el mismo problema entonces de que los engranajes se solapan…

Alguien puede ponerme un pequeño código de ejemplo?

Muchas gracias!

Buenas,

os dejo un enlace con un zip con parte del juego, a ver si con el código podeis echarme una mano:

https://docs.google.com/file/d/0B-88Zk7c3DwlR3V4Z3RzbjNOTEU/edit?usp=sharing

Aqui podreis ver el funcionamiento, los cuerpos físicos que uso y la programacion.

Basicamente lo que pasa es lo siguiente

https://docs.google.com/file/d/0B-88Zk7c3DwlYjhOOGpjZnNoalk/edit?usp=sharing
 

Muchas gracias!

Hazlo directamente con imagenes, y si están en el radio, que giren.

rueda espacio rueda

Si la imagen que pongas en el espacio está tocando las dos imagenes, que rueden. Al ser todas tus imagenes círculos, las comprobaciones serían faciles. Lo único que veo dificil, es que te quede al girar un movimiento “bonito”.

–Eso, o haces un círculo grande y le añades pequeños objetos físicos, aunque lo veo menos probable.