Hola Gamemakeros!
Que bueno es saludarlos de nuevo! les comento que estoy a punto de lanzar un juego nuevo pero tengo un problema y el siguiente..
Mi juego a los 5 minutos de jugarlo empezaba a lagear a tal punto que tenias que apagarlo... fui sacando y poniendo hasta que encontre el problema y fue que las particulas eran las causantes de este problema...
Ahora bien, hay forma de poder usarlas sin que me pase esto?
les dejo el codigo que use!, la realidad es que mucho no experimente con particulas y es mi primera real vez.
Gracias!!! :)
//particulas
if vspeed<0
{
sName=part_system_create();
particle1 = part_type_create();
part_type_shape(particle1,pt_shape_flare);
part_type_size(particle1,0.10,0.10,0,0);
part_type_scale(particle1,5,10);
part_type_color3(particle1,14784512,15723412,16777215);
part_type_alpha3(particle1,0.10,0.10,0.05);
part_type_speed(particle1,0,1,0,0);
part_type_direction(particle1,0,356,0,0);
part_type_gravity(particle1,0.33,270);
part_type_orientation(particle1,0.25,20,0,0,1);
part_type_blend(particle1,1);
part_type_life(particle1,10,60);
part_particles_create(sName,x,y,particle1,5);
}
//particulas
if vspeed<0
{
sName=part_system_create();
particle1 = part_type_create();
part_type_shape(particle1,pt_shape_flare);
.
.
Por ese IF creo adivinar que estás usando el bloque de partículas en el evento STEP, por lo que en cada paso estás creando un sistema de partículas, por lo que a los pocos segundos el pc llega al límite. Sólo debes crear el sistema una sola vez.
la solución, como ya te habrás imaginado pasa por mmover el código de definición del sistema de STEP a CREATE
Gracias penumbra!
esta bien, voy entendiendo, y como hago si luego quiero que se ejecute cuando el vspeed sea >0
(el efecto es como un humo azul que da el efecto de propulsion por eso me interesa que se despidan particulas de forma seguida)
Tienes que crear un emisor (también en CREATE) que se encargará de emitir las partículas que definiste con el código anterior
part_emitter_create
Luego hay que definir una región que será el área de acción del emisor (esto si debe ir en step). Tienes que especificar la región basado en la posicion del objeto propulsado. No necesitas una region grande, una region de unos cuantos pixeles sobra y basta en la mayoria de los casos.
part_emitter_region
Hay dos maneras para arrojar partículas en un emisor, como ráfaga (burst) o como flujo (stream). Me imagino que en tu caso se adapta mejor el stream, pero eso ya lo decides tú.
part_emitter_stream
las dos funciones anteriores o al menos la anterior irían en ese (if vspeed > 0)
La primera vez que use las particulas no me funcionaban como esperaba, y despues de batallar, me di cuenta que era por la configuracion del blending y el color de mi fondo, lo digo por si te ocurre lo mismo.
part_type_blend
Todas las funciones mencionadas no las puse completas (están sin parámetros), pero las puedes revisar en el manual.
GRANDE PENUMBRA!
Me funciono de maravilla! gracias por estar atento a las dudas de todos :D