game maker
Gebruikersnaam:
Wachtwoord:
Home Info Forums Help
Welkom, Gast. Alsjeblieft inloggen of registreren.
+  Forums
|-+  Werken met Game Maker
| |-+  Beginners (Moderators: Erik Leppen, ericlegomeer, BlueMoonProductions)
| | |-+  particle system stoppen het is voor gmw#28
Pagina's: [1]
« vorige volgende »
Print
Advertenties

jeroentjje
Gebruiker


Offline Offline

Berichten: 772


« Gepost op: 17 Februari 2011, 20:12:28 »

hallo allemaal,
ik heb dus een particle system met emiter.
nu gebeurt dit via een stream maar, ik wil deze stream graag laten stoppen na 2 seconden, hoe doe ik dit? Tong
ik heb echt heel weinig ervaring met particles dus ik weet niet goed welke functies ik hiervoor moet gebruiken.

ik weet dat ik beter burst kan gebruiken maar, met een burst komen er zo weinig particles.
ik wil het dus graag met een stream oplossen.

dit heb ik nu maar hij stopt niet :
GML:
if mouse_check_button_pressed(mb_left){
alarm[0] = 2*room_speed;
for (i = 1; i < 3; i += 1){
Sname = part_system_create()

particle1 = part_type_create();
part_type_shape(particle1,pt_shape_pixel);
part_type_size(particle1,0.59,0.69,-0.18,1);
part_type_scale(particle1,1.03,3.38);
part_type_color3(particle1,1584760,6361142,2700325);
part_type_alpha3(particle1,0.95,0.41,0.05);
part_type_speed(particle1,6.21,9.73,-0.15,2);
part_type_direction(particle1,point_direction(x,y,mouse_x,mouse_y),point_direction(x,y,mouse_x,mouse_y)+45,0,5);

part_type_gravity(particle1,0.10,270);
part_type_orientation(particle1,56,325,-0.60,5,1);
part_type_blend(particle1,1);
part_type_life(particle1,30,30);

emitter1 = part_emitter_create(Sname);
part_emitter_region(Sname,emitter1,x,x,y,y,0,0);
part_emitter_stream(Sname,emitter1,particle1,3);
}
}

if alarm[0] <= 0{
part_emitter_destroy_all(Sname)

}

« Laatste verandering: 21 Februari 2011, 11:31:16 door jeroentjje »

Naar boven Gelogd

redblood
Gebruiker


Offline Offline

Berichten: 2503

Dvdbrander


« Antwoord #1 Gepost op: 18 Februari 2011, 06:53:48 »

zet dat part_emitter_destroy_all gewoon in je alarm0, een stukkie simpeler.


Mijn project: shadowconflict
Zie http://www.livestream.com/dvdbrander voor de huidige vordering van het project, en voor livestreams van het programmeren
Naar boven Gelogd

jeroentjje
Gebruiker


Offline Offline

Berichten: 772


« Antwoord #2 Gepost op: 18 Februari 2011, 17:20:42 »

dat heb ik nu ook gedaan.
maar het heeft eigenlijk geen toevoeging voor de oplossing:(


Naar boven Gelogd

jeroentjje
Gebruiker


Offline Offline

Berichten: 772


« Antwoord #3 Gepost op: 20 Februari 2011, 17:45:55 »

niemand een idee?


Naar boven Gelogd

Compor
Jurylid


Offline Offline

Berichten: 4662


« Antwoord #4 Gepost op: 20 Februari 2011, 18:08:56 »

GML:
emitter1 = part_emitter_create(Sname);
part_emitter_region(Sname,emitter1,x,x,y,y,0,0);
part_emitter_stream(Sname,emitter1,particle1,3);
En emitter met maar één punt als bron. Dat vind ik zinloos. Ik doe meestal gewoon:
GML:
part_particles_create([argumenten])
In het step event. Dat werkt voor mij goed.

Naar boven Gelogd

jeroentjje
Gebruiker


Offline Offline

Berichten: 772


« Antwoord #5 Gepost op: 20 Februari 2011, 18:11:06 »

maar, dit heeft toch geen toevoeging tot mijn vraag?
en waarom zou het op jou manier moeten?
waarom is het erg dat de emiter 1 punt heeft als bron?


Naar boven Gelogd

Compor
Jurylid


Offline Offline

Berichten: 4662


« Antwoord #6 Gepost op: 20 Februari 2011, 18:19:13 »

maar, dit heeft toch geen toevoeging tot mijn vraag?
Jawel. Ik geef een (naar mijn mening) beter idee om particles te uiten die je ook makkelijk stopt.
waarom is het erg dat de emiter 1 punt heeft als bron?
Een emitter is handig als je het binnen een cirkel, vierkant of lijnt wilt maken, dat het verdeeld wordt. Als je toch maar één punt hebt, kun je naar mijn idee gewoon geen emitter nemen. Het enige voordeel is dat je kan streamen, en zelfs dat vind ik zo irritant dat ik het nooit gebruik. Anders zou ik gewoon burst gebruiken als je echt per se die emitter wilt hebben.

Naar boven Gelogd

jeroentjje
Gebruiker


Offline Offline

Berichten: 772


« Antwoord #7 Gepost op: 20 Februari 2011, 18:40:56 »

Jawel. Ik geef een (naar mijn mening) beter idee om particles te uiten die je ook makkelijk stopt.
Citaat
nu gebeurt dit via een stream maar, ik wil deze stream graag laten stoppen na 2 seconden, hoe doe ik dit?
ik vraag hoe je het moet laten stoppen want, part_emitter_destroy_all(Sname) werkt niet bij mij Gemoedelijk
dat is het probleem, ik vraag geen andere manier om particles te gebruiken.(of emiter)


Naar boven Gelogd

Compor
Jurylid


Offline Offline

Berichten: 4662


« Antwoord #8 Gepost op: 20 Februari 2011, 18:44:34 »

Nee, maar als de andere manier het makkelijk laat stoppen en er verder niets wijzigt aan wat je ziet, dan kan het wel helpen.
Kan je niet gewoon doen:
GML:
part_emitter_stream(Sname,emitter1,particle1,0);

Naar boven Gelogd

jeroentjje
Gebruiker


Offline Offline

Berichten: 772


« Antwoord #9 Gepost op: 20 Februari 2011, 21:13:26 »

ik heb het geprobeerd maar het werkt niet echt, hij veranderd niet van 3 naar 0.
ik heb het nu dus op deze manier geprobeerd:
GML:
Information about object: obj_player

Sprite: spr_player_rechts
Solid: false
Visible: true
Depth: -50
Persistent: false
Parent: <no parent>
Mask: <same as sprite>

Create Event:
execute code:

alarm[0] = 0;
attackdirection = 360;


Alarm Event for alarm 0:
execute code:

part_emitter_stream(Sname,emitter1,particle1,0);


 Step Event:
execute code:

//bewegen
if keyboard_check(vk_right){
attackdirection = 360;
sprite_index = spr_player_lopen_rechts;
image_speed = 0.4;

if place_free(x+5,y){
x+=5
}
}
if keyboard_check_released(vk_right){
sprite_index = spr_player_rechts;
}


if keyboard_check(vk_left){
attackdirection = 180;
sprite_index = spr_player_lopen_links;
image_speed = 0.4;

if place_free(x-5,y){
x-=5
}
}
if keyboard_check_released(vk_left){
sprite_index = spr_player_links;
}

//springen
if keyboard_check_pressed(vk_up){
if !place_free(x,y+1){
vspeed = -12;
}
}

///zwaartekracht
if place_free(x,y+1){
gravity = 0.5;
gravity_direction = 270;
}
else{
gravity = 0;
gravity_direction = 270;

}

//Aanval1
if mouse_check_button_pressed(mb_left){
alarm[0] = 2*room_speed;

if attackdirection = 360{
sprite_index = spr_player_attack1_rechts;
}
if attackdirection = 180{
sprite_index = spr_player_attack1_links;
}

for (i = 1; i < 3; i += 1){
Sname = part_system_create()

particle1 = part_type_create();
part_type_shape(particle1,pt_shape_pixel);
part_type_size(particle1,0.59,0.69,-0.18,1);
part_type_scale(particle1,1.03,3.38);
part_type_color3(particle1,1584760,6361142,2700325);
part_type_alpha3(particle1,0.95,0.41,0.05);
part_type_speed(particle1,6.21,9.73,-0.15,2);
part_type_direction(particle1,point_direction(x,y,mouse_x,mouse_y)-22.5,point_direction(x,y,mouse_x,mouse_y)+22.5,0,5);

part_type_gravity(particle1,0.10,270);
part_type_orientation(particle1,56,325,-0.60,5,1);
part_type_blend(particle1,1);
part_type_life(particle1,30,30);

emitter1 = part_emitter_create(Sname);
part_emitter_region(Sname,emitter1,x+32,x+32,y+30,y+32,0,0);
part_emitter_stream(Sname,emitter1,particle1,3);
}
}



Naar boven Gelogd

ruler_joel
Gebruiker

Offline Offline

Berichten: 48


« Antwoord #10 Gepost op: 16 Maart 2011, 19:31:11 »

wat je kunt doen is

in het step event
GML:
if particles_enabled=1
{
emitter1 = part_emitter_create(Sname);
part_emitter_region(Sname,emitter1,x+32,x+32,y+30,y+32,0,0);
part_emitter_burst(Sname,emitter1,particle1,3);
}

wel voor zorgen dat je hem op burst zet eigenlijk hou je nog steeds een stream omdat hij telkens opnieuw wordt uitgevoerd in het step event

en dan in het alarm particles_enabled=0 dan kun je ook de tijd van het alarm naar wens instellen

Naar boven Gelogd

Advertenties
« vorige volgende »
Pagina's: [1]
Print


Topic Informatie
0 geregistreerde leden en 1 gast bekijken dit topic.

Ga naar:  

Powered by SMF 1.1.21 | SMF © 2006-2007, Simple Machines
www.game-maker.nl © 2003-2020 Nederlandse Game Maker Community