Autor Tema: Hacer efectos de fondo [Resuelto]  (Leído 488 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado NiuWeb

Re:Hacer efectos de fondo
« Respuesta #15 en: Octubre 14, 2017, 04:26:50 am »
O sea, reemplazase los códigos part_type*() que tenías antes por los que utilizan el sprite, ¿verdad? Muestra el código con el que creas las partículas en pantalla.
BA: RTFM and STFW



 


Desconectado Naitsabes0

Re:Hacer efectos de fondo
« Respuesta #16 en: Octubre 14, 2017, 05:18:38 am »
O sea, reemplazase los códigos part_type*() que tenías antes por los que utilizan el sprite, ¿verdad? Muestra el código con el que creas las partículas en pantalla.
Aquí tienes el panorama completo

spr_Corazon

obj_Particula_Corazon (Sin sprite)
CREATE:
///Sistema de particula
particula_nieve = part_type_create();
part_type_sprite(particula_nieve, spr_Corazon, true, true, false); //La forma de la particula
part_type_color1(particula_nieve,55295); //El color de la particula
part_type_orientation(particula_nieve,0,0,0,0,1); //La rotacion aleatoria de la particula
part_type_size(particula_nieve,0.05,0.25,0,0); //Tamaño aleatorio de la particula
part_type_speed(particula_nieve,1,1.5,0.05,0); //Velocidad de la particula
part_type_direction(particula_nieve,180,180,0,4); //Direccion de la particula
part_type_life(particula_nieve,180,210); //Duracion de la particula

Resultado final: No pasa nada en la habitación cuando este objeto esta presente, en cambio cuando aplico el obj_Particula_Nieve, hay efecto de nevacion, tengo la sencacion de que estamos omitiendo algo como:

//Creamos en el emisor
nieve_emisor = part_emitter_create(nieve);
//Establecer region de la habitacion donde se creara el emisor, el perfil y la forma de distribucion
part_emitter_region(nieve,nieve_emisor,0-100,room_width+100,-10,-5,ps_shape_ellipse,ps_distr_linear);
//Empezamos a emitir particulas cada 0.20 segundos
part_emitter_stream(nieve,nieve_emisor,particula_nieve,-5);

Que tiene el obj_Particula_Nieve.
 


Desconectado NiuWeb

Re:Hacer efectos de fondo
« Respuesta #17 en: Octubre 14, 2017, 05:53:37 am »
Pues claro, hay que crear el emisor. El código de abajo es lo que deberías tener en el objeto de partícula corazón.

Por lo que veo, necesitas de los dos sistemas: El de la nieve y el de los corazones; utiliza otra variable como emisor, no modifiques el de la nieve
BA: RTFM and STFW



 

Desconectado Naitsabes0

Re:Hacer efectos de fondo
« Respuesta #18 en: Octubre 14, 2017, 06:46:55 am »
Pues claro, hay que crear el emisor. El código de abajo es lo que deberías tener en el objeto de partícula corazón.

Por lo que veo, necesitas de los dos sistemas: El de la nieve y el de los corazones; utiliza otra variable como emisor, no modifiques el de la nieve

Esto tendría.

///Sistema de particula
particula_corazon = part_type_create();
part_type_sprite(particula_corazon, spr_Corazon, true, true, false); //La forma de la particula
part_type_color1(particula_corazon,55295); //El color de la particula
part_type_orientation(particula_corazon,0,0,0,0,1); //La rotacion aleatoria de la particula
part_type_size(particula_corazon,0.05,0.25,0,0); //Tamaño aleatorio de la particula
part_type_speed(particula_corazon,1,1.5,0.05,0); //Velocidad de la particula
part_type_direction(particula_corazon,180,180,0,4); //Direccion de la particula
part_type_life(particula_corazon,180,210); //Duracion de la particula

//Creamos en el emisor
corazon_emisor = part_emitter_create(corazon);
//Establecer region de la habitacion donde se creara el emisor, el perfil y la forma de distribucion
part_emitter_region(nieve,corazon_emisor,0-100,room_width+100,-10,-5,ps_shape_ellipse,ps_distr_linear);
//Empezamos a emitir particulas cada 0.20 segundos
part_emitter_stream(corazon,corazon_emisor,particula_corazon,-5);

Y esto provocaría al encender el juego.

FATAL ERROR in
action number 1
of Create Event
for object obj_Particula_Corazon:

Variable obj_Particula_Corazon.corazon(100024, -2147483648) not set before reading it.
 at gml_Object_obj_Particula_Corazon_CreateEvent_1 (line 12) - corazon_emisor = part_emitter_create(corazon);
 

Desconectado Ashe de Freljord

Re:Hacer efectos de fondo
« Respuesta #19 en: Octubre 14, 2017, 12:45:26 pm »
part_type_emitter toma un sistema de particulas como parametro
El cual no esta definido en ninguna parte del codigo, por lo que te da error.

soluvionarlo es tan facil como crear un part_system.
 

Desconectado Naitsabes0

Re:Hacer efectos de fondo
« Respuesta #20 en: Octubre 15, 2017, 02:17:38 am »
part_type_emitter toma un sistema de particulas como parametro
El cual no esta definido en ninguna parte del codigo, por lo que te da error.

soluvionarlo es tan facil como crear un part_system.
Si fuera tan fácil no estaría preguntando, tal vez es fácil para aquel que tenga los conocimientos de como solucionarlo, pero no uso partículas con sprite en mi juego como para entenderlo a la primera.
 

Desconectado NiuWeb

Re:Hacer efectos de fondo
« Respuesta #21 en: Octubre 15, 2017, 02:19:46 am »
Te falta una línea como ésta:
corazon = part_system_create();
BA: RTFM and STFW



 

Desconectado Naitsabes0

Re:Hacer efectos de fondo
« Respuesta #22 en: Octubre 15, 2017, 03:05:25 am »
Te falta una línea como ésta:
corazon = part_system_create();
A Pesar de que tengo el emisor y probablemente todo lo requerido la pantalla continua vacía sin efectos.

///Sistema de particula
corazon = part_system_create();
particula_corazon = part_type_create();
part_type_sprite(particula_corazon, spr_Corazon, true, true, false); //La forma de la particula
part_type_color1(particula_corazon,55295); //El color de la particula
part_type_orientation(particula_corazon,0,0,0,0,1); //La rotacion aleatoria de la particula
part_type_size(particula_corazon,0.05,0.25,0,0); //Tamaño aleatorio de la particula
part_type_speed(particula_corazon,1,1.5,0.05,0); //Velocidad de la particula
part_type_direction(particula_corazon,180,180,0,4); //Direccion de la particula
part_type_life(particula_corazon,180,210); //Duracion de la particula

//Creamos en el emisor
corazon_emisor = part_emitter_create(corazon);
//Establecer region de la habitacion donde se creara el emisor, el perfil y la forma de distribucion
part_emitter_region(corazon,corazon_emisor,0-100,room_width+100,-10,-5,ps_shape_ellipse,ps_distr_linear);
//Empezamos a emitir particulas cada 0.20 segundos
part_emitter_stream(corazon,corazon_emisor,particula_corazon,-5);

No hay errores en la consola, simplemente el código no esta asiendo nada en la habitación.
 

Desconectado NiuWeb

Re:Hacer efectos de fondo
« Respuesta #23 en: Octubre 15, 2017, 03:12:45 am »
El error está en el tamaño de la partícula. Es demasiado pequeño como para que se vea el sprite. Aumenta su tamaño.
BA: RTFM and STFW



 

Desconectado Naitsabes0

Re:Hacer efectos de fondo
« Respuesta #24 en: Octubre 15, 2017, 03:42:13 am »
El error está en el tamaño de la partícula. Es demasiado pequeño como para que se vea el sprite. Aumenta su tamaño.

En el part_type_size()

convertí sus decimales en números enteros para que tenga un tamaño mínimo y máximo, la habitación sigue vacía, incluso agregue valores de 10 a 100 para ver si era el tamaño y resulta que al hacer esto los sprite ya estarían midiendo como 32x32 a 320x320, dentro de una habitación con tamaño por defecto deberían verse como corazones gigantes cayendo pero no pasa nada.

¿Estas seguro que los errores están en que estamos usando un sprite en vez de usar código?
 

Desconectado NiuWeb

Re:Hacer efectos de fondo
« Respuesta #25 en: Octubre 15, 2017, 03:52:14 am »
¿Estas seguro que los errores están en que estamos usando un sprite en vez de usar código?
Y dale con eso. "El problema no es mi código, es que el GML funciona mal". ¿Por qué en todas las preguntas sales con lo mismo?

Ahora a la cuestión, ¿En qué eventos ejecutas este código?
//Creamos en el emisor
part_emitter_stream(corazon,corazon_emisor,particula_corazon,-5);
Ten en cuenta que esa línea de código es la que crea las partículas en la sala, por lo que si lo ejecutas en el evento create ahí está el problema. Yo copié este código en un proyecto vacío:
///--------TODO ESTO EN EL EVENTO CREATE--------------
corazon = part_system_create();
particula_corazon = part_type_create();
part_type_sprite(particula_corazon, spr_Corazon, true, true, false); //La forma de la particula
part_type_color1(particula_corazon, 55295); //El color de la particula
part_type_orientation(particula_corazon, 0, 0, 0, 0, 1); //La rotacion aleatoria de la particula
//part_type_size(particula_corazon, 0.05, 0.25, 0, 0); //Tamaño aleatorio de la particula
part_type_speed(particula_corazon, 1, 1.5, 0.05, 0); //Velocidad de la particula
part_type_direction(particula_corazon, 270, 270, 0, 4); //Direccion de la particula
part_type_life(particula_corazon, 180, 210); //Duracion de la particula

corazon_emisor = part_emitter_create(corazon);
//Establecer region de la habitacion donde se creara el emisor, el perfil y la forma de distribucion
part_emitter_region(corazon,corazon_emisor,100,room_width-100,10,room_height - 10,ps_shape_ellipse,ps_distr_linear);

alarm[0] = room_speed;
(Modifiqué el área en part_emitter_region())

Y este:
///-------------TODO ESTE EN EL EVENTO ALARM[0]---------
part_emitter_stream(corazon,corazon_emisor,particula_corazon,-5);
alarm[0] = room_speed;
Y al probar, voilà:

BA: RTFM and STFW



 

Desconectado Void

Re:Hacer efectos de fondo [Resuelto]
« Respuesta #26 en: Octubre 15, 2017, 04:53:19 am »
La función part_emitter_stream crea partículas constantemente así que no importa si solo esta en create, estas pensando en part_emitter_burst, que en efecto solo crea las partículas cuando la llamas.

El problema de tu código es la dirección de las partículas, las estas creando por encima del room y con dirección a la izquierda, de manera que nunca entran al area visible del room, cámbiales la dirección o agrégales gravedad hacia abajo (270) para que entren al room.