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)
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
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
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
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 ;)
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.