Hola. Quisiera saber como puedo hacer un auto que se mueva en 16 direcciones diferentes y que para cada direccion tenga use un sprite diferente. Aca un ejemplo:

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

El auto ese se mueve en 16 direcciones, si tendria el juego lo podrian comprobar. Tambien me serviria que se mueva en 8 direcciones, pero no menos que eso.

Los sprites los se hacer, pero me falta lo mas importante...el codigo xD.

Encontre algunos engines de autos pero no me sirve ya que usan un solo sprite que lo hacen rotar, lo que yo necesito es que use 1 sprite por cada direccion porque el juego que estoy haciendo es con vista isometrica y se tienen que ver todos los lados del vehiculo como si fuere un juego en 3d. 

Muchas Gracias.

:GM8:

Bueno, no se ve muy dificil, te doy mi código, me parece que sería asi:
En step

image_index=direccion
direction=direccion*22.5

En create
direccion=0
direction=0
image_index=0

En flecha derecha
direccion-=1
En flecha izquierda
direccion+=1
En flecha arriba
motion_add(direction,4)
El Manual

- Ley de la gravitación selectiva: toda herramienta se caerá donde produzca el mayor daño.
- Si todo parece estar bien, es obvio que uno no encontró el problema
- Todo aquello que se corte a medida resultara ser demasiado corto.
- Todo archivo borrado era necesario, todo archivo conservado es inutil
- Cuando a usted se le ocurra la solución ideal, alguien habrá resuelto ya el problema.

                                                               Murphy


Cita de: Mgbu en Marzo 02, 2012, 05:39:54 PM
Bueno, no se ve muy dificil, te doy mi código, me parece que sería asi:
En step

image_index=direccion
direction=direccion*22.5

En create
direccion=0
direction=0
image_index=0

En flecha derecha
direccion-=1
En flecha izquierda
direccion+=1
En flecha arriba
motion_add(direction,4)

Me podrias explicar un poco. Suponete que yo tengo hecho los 16 sprites, que debo usarlos a cada uno por separado o hago un solo objeto que contenga los 16 sprites? Hay algo que yo deba rellenar/completar en esos condigos que pusiste?




Las imagenes tienen que estar todos en el mismo sprite, empezando por la que mira a la derecha y llendo al contrario de las agujas del reloj

Ah y olvide que en create hay que agregar "image_speed=0"

Bueno, yo puse que al presionar flecha arriba acelere, quizas debas agregar esto si no has hecho el motor de movimiento

En <no key>
friction=0.3

En flecha abajo
friction=1

Y agregar en flacha arriba
friction=0

Eso sería para que el auto se frene solo y al apretar flecha abajo, no se si funciona bien pero empezemos con las imagenes, luego con el movimiento
El Manual

- Ley de la gravitación selectiva: toda herramienta se caerá donde produzca el mayor daño.
- Si todo parece estar bien, es obvio que uno no encontró el problema
- Todo aquello que se corte a medida resultara ser demasiado corto.
- Todo archivo borrado era necesario, todo archivo conservado es inutil
- Cuando a usted se le ocurra la solución ideal, alguien habrá resuelto ya el problema.

                                                               Murphy


Cita de: Mgbu en Marzo 02, 2012, 08:21:04 PM
Las imagenes tienen que estar todos en el mismo sprite, empezando por la que mira a la derecha y llendo al contrario de las agujas del reloj

Ah y olvide que en create hay que agregar "image_speed=0"

Bueno, yo puse que al presionar flecha arriba acelere, quizas debas agregar esto si no has hecho el motor de movimiento

En <no key>
friction=0.3

En flecha abajo
friction=1

Y agregar en flacha arriba
friction=0

Eso sería para que el auto se frene solo y al apretar flecha abajo, no se si funciona bien pero empezemos con las imagenes, luego con el movimiento

Che, lo probe, esta muy bien el codigo. Faltaria una cosa que no tuve en cuenta, mejor diho me avive ahroa que lo pruebo.

Cuando vos apretas para la izq o derecha el auto se queda girando como loco. Tendria que escribir el codigo de una manera que vos puedas girar en esas direcciones a medida de que aumenta la velocidad:
-Si esta frenado que no gire cuando presionas izq o der(con este codigo estando totalmente frenado el auto cambia de direccion igual)
-A medida que vaya aumentando la velocidad que te vaya dejando girar mas.
-Que igualmente a maxima velocidad tenga un tope en la velocidad que cambia de direccion, porque aca asi como esta el codigo lo hace a la velocidad de la luz el cambio.

No se si me explico.

Si logro hacer eso seria un gran paso, ya que en el juego neesito si o si que haya autos.

Si no se entiende lo que quice decir, despues subo el emulador con el juego del video que puse en el post, asi lo probas.

saludos, gracias por el aporte. Igualmente ya me sirve para saber algo mas.

Si, claro, ahora me doy cuenta :-[, dobla 30 veces por segundo, casi dos vueltas XD

Bueno, se me ocurre agregar una variable de recarga, que depende de la velocidad se recargue rapido o lento con un código así

Flecha derecha

if recarga=1
   {
   if speed>0 alarm[0]=50/speed //Aumentar o reducir 50 para la velocidad de giro (menor=mas rapido gira)
   else exit
   direccion-=1
   }


Flecha izquierda

if recarga=1
   {
   if speed>0 alarm[0]=50/speed //Aumentar o reducir 50 para la velocidad de giro (menor=mas rapido gira)
   else exit
   direccion+=1
   }


Alarm[0]
recarga=1

Create
recarga=1
El Manual

- Ley de la gravitación selectiva: toda herramienta se caerá donde produzca el mayor daño.
- Si todo parece estar bien, es obvio que uno no encontró el problema
- Todo aquello que se corte a medida resultara ser demasiado corto.
- Todo archivo borrado era necesario, todo archivo conservado es inutil
- Cuando a usted se le ocurra la solución ideal, alguien habrá resuelto ya el problema.

                                                               Murphy


Cita de: Mgbu en Marzo 03, 2012, 02:28:20 PM
Si, claro, ahora me doy cuenta :-[, dobla 30 veces por segundo, casi dos vueltas XD

Bueno, se me ocurre agregar una variable de recarga, que depende de la velocidad se recargue rapido o lento con un código así

Flecha derecha

if recarga=1
   {
   if speed>0 alarm[0]=50/speed //Aumentar o reducir 50 para la velocidad de giro (menor=mas rapido gira)
   else exit
   direccion-=1
   }


Flecha izquierda

if recarga=1
   {
   if speed>0 alarm[0]=50/speed //Aumentar o reducir 50 para la velocidad de giro (menor=mas rapido gira)
   else exit
   direccion+=1
   }


Alarm[0]
recarga=1

Create
recarga=1

Genial, lo voy a probar si anda.

Me quedo asi el codigo. Pero la nueva modificacion aprece no afectarle en nada.  :(

Alarma[0]
recarga=1
Step
image_index=direccion
direction=direccion*22.5

Create
recarga=1
image_speed=0
direccion=0
direction=0
image_index=0

Flecha arriba
motion_add(direction,4)
friction=0

Flecha abajo.
friction=1

Flecha derecha
direccion-=1
if recarga=1
   {
   if speed>0 alarm[0]=50/speed //Aumentar o reducir 50 para la velocidad de giro (menor=mas rapido gira)
   else exit
   direccion-=1
   }

Flecha izquierda
direccion+=1
if recarga=1
   {
   if speed>0 alarm[0]=50/speed //Aumentar o reducir 50 para la velocidad de giro (menor=mas rapido gira)
   else exit
   direccion+=1
   }

No key.
friction=0.3

Encontre el error :) hay que sacar lo tachado, porque se repite dos veces y no esta incluido en el if
Citardireccion+=1
if recarga=1
   {
   if speed>0 alarm[0]=50/speed //Aumentar o reducir 50 para la velocidad de giro (menor=mas rapido gira)
   else exit
   direccion+=1
   }
EDIT: Ten en cuenta que hay que sacarlo del evento flecha derecha y del fecha izquierda tambien

Te traduzco al español lo que dice el codigo:
CitarSi se puede doblar
Y si el auto se mueve tiene que doblar y no dejar doblar por un tiempo, (50/velocidad)

Para la proxima duda sería bueno que me mandes el editable asi se me es más facil :D
El Manual

- Ley de la gravitación selectiva: toda herramienta se caerá donde produzca el mayor daño.
- Si todo parece estar bien, es obvio que uno no encontró el problema
- Todo aquello que se corte a medida resultara ser demasiado corto.
- Todo archivo borrado era necesario, todo archivo conservado es inutil
- Cuando a usted se le ocurra la solución ideal, alguien habrá resuelto ya el problema.

                                                               Murphy


Cita de: Mgbu en Marzo 03, 2012, 06:36:29 PM
Encontre el error :) hay que sacar lo tachado, porque se repite dos veces y no esta incluido en el if
Citardireccion+=1
if recarga=1
   {
   if speed>0 alarm[0]=50/speed //Aumentar o reducir 50 para la velocidad de giro (menor=mas rapido gira)
   else exit
   direccion+=1
   }
EDIT: Ten en cuenta que hay que sacarlo del evento flecha derecha y del fecha izquierda tambien

Te traduzco al español lo que dice el codigo:
CitarSi se puede doblar
Y si el auto se mueve tiene que doblar y no dejar doblar por un tiempo, (50/velocidad)

Para la proxima duda sería bueno que me mandes el editable asi se me es más facil :D

Te dejo el archivo:
-Falta pulir algunas cosas:
-Si bien ahora cuando esta frenado no gira, cuando esta en movimiento sigue haciendo un giro incontrolable. Tendria que que ser gradual la velocidad de giro y tener un limite de velocidad.
-La velocidad del auto tendria que ser menor, por ahora lo solucione aumentandole la friccion a la tecla "Up"
-El auto deberia aumentar de velocidad mas gradualemente y no de golpe.

Aca está, me parece que funciona todo bien, al ir despacio se dobla más, pero si se va muy despacio se traba el volante ;)
El Manual

- Ley de la gravitación selectiva: toda herramienta se caerá donde produzca el mayor daño.
- Si todo parece estar bien, es obvio que uno no encontró el problema
- Todo aquello que se corte a medida resultara ser demasiado corto.
- Todo archivo borrado era necesario, todo archivo conservado es inutil
- Cuando a usted se le ocurra la solución ideal, alguien habrá resuelto ya el problema.

                                                               Murphy


Cita de: Mgbu en Marzo 04, 2012, 04:19:56 PM
Aca está, me parece que funciona todo bien, al ir despacio se dobla más, pero si se va muy despacio se traba el volante ;)

Gracias maestro, lo vi rapido y parece que ya quedo como queria. Si llego a encontrar cualquier otra cosita que  que le falte pulir te digo, pero parece que ya quedo- Seguramente cuando lo aplique al game me voy a dar cuenta si falta algo o ya lo puedo usar asi,. Muchas gracias.