Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: NOKAUBURE en Diciembre 31, 2011, 09:15:22 PM

Título: Como logro este efecto? [SOLUCIONADO]
Publicado por: NOKAUBURE en Diciembre 31, 2011, 09:15:22 PM
Buenas, no se como lograr este efecto explico:

Tengo una instancia. Entonces en un solo step salta a una determinada posicion. Por ej, esta en 100,100 y salta a 300,500. Lo que quiero lograr eske se creen humos entre 100,100 y 300,500 en un solo step. Con crear 1 cada 32 pixeles ya tendria bastante. Ejemplo:

[]....................O

[] es la posicion donde estaba antes
O es la posicion donde esta ahora
. son los humos


Si alguien vio los dibujos del correcaminos (mic mic xD) o cualquier serie de cartoon network, sabra que busco xP
Título: Re: Como logro este efecto?
Publicado por: brunoxzx en Diciembre 31, 2011, 10:14:26 PM
Algo que es f?cil de entender y muy eficiente es usar 2 fores.

[gml]
//Reemplaza rango_x y rango_y por el tama?o de tu cuadrado, reemplaza x e y por el lugar
//donde quieres que comience el cuadrado, y reemplaza obj_humo.
for(i=0;i<rango_x);i+=32){
    for (j=0;i<rango_y;j+=32){
        instance_create(obj_humo,x+i,y+j,obj_humo);
    }
}[/gml]

Título: Re: Como logro este efecto?
Publicado por: Mgbu en Enero 01, 2012, 01:51:59 AM
No estoy en mi casa pero en 3 dias te puedo darun coodigo con particulas, es un juego de aviones que largan humo, supongo que es lo que necesitas
Título: Re: Como logro este efecto?
Publicado por: NOKAUBURE en Enero 01, 2012, 01:47:51 PM
bruno te dejaste 2 errores, pusiste un argumento de mas en instance_create. Bueno entonces lo dejaria asi creo:

[gml]for(i=0;i<32;i+=32){
  for (j=0;i<32;j+=32){
      effect_create_above(ef_smokeup,x+i,y+j,0,c_white)
  }
}[/gml]

No entendi muy bien lo del quadrado. Puse 32. Probe este codigo y el juego me rebento xD (finalize proceso).

EDIT: Probe asi:

[gml]for(i=0;i<x-xprevious;i+=32){
  for (j=0;i<y-yprevious;j+=32){
      effect_create_above(ef_smokeup,xprevious+i,yprevious+j,0,c_white)
  }
}[/gml]

No rebienta, sin embargo no se aprecia nada el efecto xD

CitarNo estoy en mi casa pero en 3 dias te puedo darun coodigo con particulas, es un juego de aviones que largan humo, supongo que es lo que necesitas
Eso ya lo se hacer, lo que no se hacer esque cuando un objeto se teleporta a una posicion, se cree una linia de humos, como si hubiese ido a la velocidad luz, para que no parezca que haga un teleport.
Título: Re: Como logro este efecto?
Publicado por: brunoxzx en Enero 01, 2012, 09:56:48 PM
Intenta as? (:

[gml]for(i=0;i<x-512;i+=32){
  for (j=0;i<y-512;j+=32){
      effect_create_above(ef_smokeup,x+i,y+j,0,c_white);
  }
}[/gml]

Busca que es un for en el manual o en cualquier pagina de programaci?n, aunque b?sicamente lo que hace es repetir un c?digo en un mismo step hasta que se cumpla una condici?n.
Título: Re: Como logro este efecto?
Publicado por: NOKAUBURE en Enero 04, 2012, 02:27:47 PM
Tu lo has dicho, no tengo ni idea de como usar el for  :-[ pero como gamemaker siempre tiene muchas salidas, al final lo deje asi:

dash_effect(cordenadas donde te teletransportaras)
[gml]repfactor = 0
newx = argument0
newy = argument1
numberofrepeats = round(point_distance(x,y,newx,newy)/32)
distanceY = point_distance(0,y,0,newy)
distanceX = point_distance(x,0,newx,0)
if numberofrepeats < 1 {exit;}
repeat(numberofrepeats)
{
repfactor += 1
if y < newy {reduceY = newy-(distanceY/repfactor)} else {reduceY = newy+(distanceY/repfactor)}
if x < newx {reduceX = newx-(distanceX/repfactor)} else {reduceX = newx+(distanceX/repfactor)}
effect_create_above(ef_smokeup,reduceX,reduceY,1,c_white);
}[/gml]

Es el efecto correcaminos. Se que me complico la vida pero asi lo entiendo mucho mejor xP