Amigos necesito de una mano de ustedes
tengo un
obj_generator
//create
alarm[0] = 10;
//alarm 0
var platformCreate;
platformCreate = irandom(3); //Vos tenes 3 plataformas, por eso serían 0, 1 y 2.
switch (platformCreate) {
case 0:
platform = instance_create(x,y,obj_box_x);
platform.vspeed = -5;
break;
case 1:
platform = instance_create(x,y,obj_box_0);
platform.vspeed =- 5;
break;
case 2:
platform = instance_create(x,y,obj_caja3);
platform.vspeed =- 5;
break;
case 3:
platform = instance_create(x,y,obj_caja4);
platform.vspeed = -5;
break;
}
alarm[0] = room_speed*2;
El problema es que se superponen las CAJAS las cuales van hacia abajo y tienen que llegar al piso una ves lleguen al piso es el problemas
por que las cajas las tengo que destruir una por una entonces entre mas cajas destruya mas van caer y al colisionar una con otras ya no bajan.
me olvida decirles que en Event EndStep tengo esto
//gravedad
if (place_free(x,y+2))
{
gravity = 0.5;
gravity_direction = 270;
}
espero me explique bien como siempre muchas gracias.
Si quieres que las cajas vayan hacia abajo debes asignar una vspeed positiva, entonces debes borrar el signo - en el código, espero que con eso se arregle el problema.
No lo mismo..
¿Qué código usas para que se detengan cuando se empiezan a apilar?
Probablemente tengas una bandera para que deje de caer cuando ya no se cumple el place_free() y no la vuelves a activar.
step de la caja:
if place_free(x,y+vpseed) vpseed = 5; //pon el 5 a tu gusto
else vspeed = 0;
en la caja marcas la casilla solid y yasta, no necesitas tanto royo para hacer caer una cajita. Si ves que no empieza a caer, en create ponle un vspeed = 5; //el mismo numero de antes
Al parecer el codigo funciona pero tiene mas de algun error
Las cajas despues de 2 que le caigan encima despues no deja moverlas ,
cuando hay solo 2 si se mueven
me olvida decirles que en Event EndStep /////quite esto
la caja esta en solido y centrado
//gravedad
//if (place_free(x,y+2))
//{
//gravity = 0.5;
//gravity_direction = 270;
//}
GraciAS
ok, en la parte de if place_free(x,y+vspeed) añádele un +1 tal quede así: place_free(x,y+vspeed+1)
o prueba poner un 2 o más, sin pasarse a menos mejor, eso depende de la velocidad tal
y abajo de todo aquello que te dije, como veo que tratas de hacer algo tipo arena del minecraft, SUPONGO que lo tienes en una cuadricula, por eso añadele esto:
if vspeed = 0 move_snap(32,32); //32 es el tamaño de tu cuaricula.
y en el caso de que eso no sea asi... entonces cambia el primer 32 por un 1 y el segundo, dependiendo de la altura de los tiles, si no tienes todo bien cuadrado, pasan esas cosas xd
te adjunto un ejemplo donde sale impecable todo
Kostra muchas gracias el ejemplo funka bien ..pero ocupo tener el origen de CAJA centrado entonces me trae problemas
mi caja es de 100x96 de alto .
Muchas gracias
en el ejemplo está centrado porke lo puse así para ponerlas bien al clickar, en la cuadrícula, pero no hace falta, lo importante es la mask :/
Kostra gracias por responder disculpe si no me supe expresar pero la caja tiene origen center x 50 y 48 .
es de 100x96
las mask la puse igual que la del ejemplo
pásame el editable T_T
Lo mande por MP. gracias