Hola familia  ,vengo a formular unas preguntas ya que me surgen muchas dudas de como llevar en orden esta tarea

  de que manera mas limpia y eficaz puedo utilizar las rutas ?

  por ejemplo yo lo estoy utilizando de esta manera para un mismo objeto y no se si realmente hay otra forma de hacerlo

tengo una objeto _arriba  ,objeto _enmedio,  objeto _abajo todos tienen el mismo spr
objeto_contol_arriba
objeto_contol_enmedio
objeto_contol_abajo

y las rutas corepondientes arriba;enmedui y abajo

y esos los controlo con control_timeline

me gustaría saber si se puede  simplificar sin tener que duplicar tantas veces el objeto ?

#1 Diciembre 01, 2019, 03:51:44 PM Ultima modificación: Diciembre 02, 2019, 10:53:43 PM por Johann
Hola, buenos días.

Si te refieres a movimientos de un enemigo  que se controla por una time line pues este es mi consejo entendible.

1. En create creas una variable llamada tiempo de tipo numerico (tiempo=0)
2. En create creas otra variable llamada ruta de tipo string (ruta="")
3. En step haces que tiempo se sume 1 por cada stem (tiempo+=1)
4. En step el tiempo debe volver a ser cero cuando llegue a un limite (if(tiempo>500){tiempo=0})
5. En step dices lo que sucederá en cada cierto tiempo (if(tiempo=50)ruta="arriba")
6. En step defines los movimientos por movimientos X y Y pero tambien puedes usar las variables vspeed y hspeed.

Ejemplo 1. Ejemplo más simple de un movimiento controlado
[gml]//[EVENTO CREATE¡
tiempo=0
ruta=""

//[EVENTO STEP]
//control del tiempo
tiempo+=1
if(tiempo>500){tiempo=0}
if(tiempo>50)ruta="arriba"
if(tiempo>150)ruta="derecha"
if(tiempo>250)ruta="abajo"
if(tiempo>350)ruta="izquierda"
if(tiempo>450)ruta="parar"

///movimiento
if(ruta="arriba"){y-=1}
if(ruta="derecha"){x+=1}
if(ruta="abajo"){y+=1}
if(ruta="izquierda"){x-=1}[/gml]

EJEMPLO 2. Movimiento controlado con velocidad predefinida. EL OBJETO SALE DE LA ROOM SI LA VELOCIDAD ES MUY GRANDE

[gml]///EVENTO CREATE
tiempo=0
ruta=""
velocidad=5

///EVENTO STEP

tiempo+=1
if(tiempo>500){tiempo=0}
if(tiempo>50)ruta="arriba"
if(tiempo>150)ruta="derecha"
if(tiempo>250)ruta="abajo"
if(tiempo>350)ruta="izquierda"
if(tiempo>450)ruta="parar"

///movimiento
if(ruta="arriba"){y-=velocidad}
if(ruta="derecha"){x+=velocidad}
if(ruta="abajo"){y+=velocidad}
if(ruta="izquierda"){x-=velocidad}[/gml]

EJEMPLO 3. Movimiento aleatorio. Este es el movimiento donde el objeto decide para donde ir.
[gml]///EVENTO CREATE
tiempo=0
ruta=""
velocidad=1
aleatorio=0

///EVENTO STEP
tiempo+=1
if(tiempo=10){aleatorio=floor(1+random(4))}
if(tiempo=50){aleatorio=0} ///AQUI DETENEMOS UNOS SEGUNDOS AL OBJETO
if(tiempo>75){tiempo=0}


if(aleatorio=1)ruta="arriba"
if(aleatorio=2)ruta="derecha"
if(aleatorio=3)ruta="abajo"
if(aleatorio=4)ruta="izquierda"
if(aleatorio=0)ruta="parar"

///movimiento
if(ruta="arriba"){y-=velocidad}
if(ruta="derecha"){x+=velocidad}
if(ruta="abajo"){y+=velocidad}
if(ruta="izquierda"){x-=velocidad}[/gml]
Si Dios quiere; Limpiaré la oficina, puliré el piso y les serviré café a todos, luego, me enseñarán a programar e iré a comprarles más café.

#2 Diciembre 01, 2019, 11:06:27 PM Ultima modificación: Diciembre 01, 2019, 11:20:14 PM por Ikaro3d
Gracias por tu tiempo te estoy agradecido ,que Currada te has dado ,estos ejemplos los llevare a acabó en ciertos enemigos ,de alguna forma el aleatorio seria como inteligencia artificial, me lo miraré con lupa

ahora mismo tengo 3 rutas creadas para 1 enemigo y creo que en un swicht y en cada caso podre exponer, que ruta quiero que ejecute y controlar en un timeline en que momento aparecer una de las 3