Diciembre 31, 2011, 09:15:22 PM Ultima modificación: Enero 04, 2012, 02:28:04 PM por NOKAUBURE
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
Noka siempre responde a los temas con 0 respuestas ^^

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]


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
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


#3 Enero 01, 2012, 01:47:51 PM Ultima modificación: Enero 01, 2012, 01:52:16 PM por NOKAUBURE
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.
Noka siempre responde a los temas con 0 respuestas ^^

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.

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
Noka siempre responde a los temas con 0 respuestas ^^