Hi !
How to do an pixels explosion effect in my retro game when my player (1 pixel) die !!!
Thanks !!!
How to do an pixels explosion effect in my retro game when my player (1 pixel) die !!!
Thanks !!!
Graphics 800,600 SetBuffer BackBuffer() Type particle Field x#,y# Field speed# Field angle# Field time Field timer End Type While Not KeyHit(1) Cls If MouseHit(1) Then For loop=1 To (Int(Rnd(25,49))) create_particles(MouseX(),MouseY()) Next End If update_particle() Rect MouseX(),MouseY(),2,2 Flip Wend End Function create_particles(x,y) p.particle=New particle p\angle=Rnd(0,359) p\x=x p\y=y p\speed=Rnd(0.2,1.3) p\time=MilliSecs()+Int(Rnd(500,3000)) End Function Function update_particle() For p.particle=Each particle Color Int(Rnd(20,250)),Int(Rnd(50,250)),Int(Rnd(50,250)) Rect p\x,p\y,1,1 p\x=p\x+(Sin(p\angle)*p\speed) p\y=p\y+(Cos(p\angle)*p\speed) If MilliSecs()>=p\time Then Delete p.particle End If Next End Function
create_particles(x,y)
update_particle()
Function create_particles(x,y) p.particle=New particle p\angle=Rnd(0,359) p\x=x p\y=y p\speed=Rnd(0.2,1.3) p\time=MilliSecs()+Int(Rnd(500,3000)) End Function Function update_particle() For p.particle=Each particle Color Int(Rnd(20,250)),Int(Rnd(50,250)),Int(Rnd(50,250)) Rect p\x,p\y,1,1 p\x=p\x+(Sin(p\angle)*p\speed) p\y=p\y+(Cos(p\angle)*p\speed) If MilliSecs()>=p\time Then Delete p.particle End If Next End Function
Graphics 800,600 SetBuffer BackBuffer() Type particle Field x#,y# Field speed# Field angle# Field time# Field timer# End Type While Not KeyHit(1) Cls If MouseDown(1) Then For loop=1 To (Int(Rnd(25,49))) create_particles(MouseX(),MouseY()) Next End If If MilliSecs()<timer+1000 Then frame=frame+1 Else fps=frame frame=0 timer=MilliSecs() End If update_particle() Rect MouseX(),MouseY(),2,2 Text 0,0,"fps="+fps Flip Wend End Function create_particles(x,y) p.particle=New particle p\angle=Rnd(0,359) p\x=x p\y=y p\speed=Rnd(0.2,1.3) p\timer=Int(Rnd(500,3000)) p\time=MilliSecs()+p\timer End Function Function update_particle() For p.particle=Each particle Color 200+55*(1-(MilliSecs()-(p\time-p\timer))/(p\timer)),220*(1-(MilliSecs()-(p\time-p\timer))/(p\timer)),5 Rect p\x,p\y,1,1 p\x=p\x+(Sin(p\angle)*p\speed) p\y=p\y+(Cos(p\angle)*p\speed) If MilliSecs()>=p\time Then Delete p.particle End If Next End Function
Graphics 800,600, 16, 2 Global colours = LoadImage("colours.png") Global NumCols = ImageWidth(colours)-1 Dim ColArray(NumCols*3) LoadCols() SetBuffer BackBuffer() Const GRAVITY# = 0.009 Global LIFESPAN% = (numcols/25);3 Const MIN_PARTICLES = 10 Const MAX_PARTICLES = 40 Type particle Field x#,y# Field speed# Field angle# Field time Field timer Field Col End Type While Not KeyHit(1) Cls If MouseDown(1) Then For loop=1 To (Int(Rnd(MIN_PARTICLES,MAX_PARTICLES))) create_particles(MouseX(),MouseY()) Next End If update_particle() Rect MouseX(),MouseY(),2,2 Flip Wend End Function create_particles(x,y) p.particle=New particle p\angle=Rnd(0,359) p\x=x p\y=y p\speed=Rnd(0.2,1.3) p\time=MilliSecs()+ (NumCols * LIFESPAN) p\col = 0 End Function Function update_particle() For p.particle=Each particle Color ColArray(p\col), ColArray(p\col+1), ColArray(p\col+2) ;Int(Rnd(20,250)),Int(Rnd(50,250)),Int(Rnd(50,250)) p\col = p\col + 3 If p\col > NumCols Then p\col = NumCols Rect p\x,p\y,1,1 p\x=p\x+(Sin(p\angle)*p\speed) p\y=p\y+(Cos(p\angle)*p\speed) + Int((GRAVITY# * Float(p\col))) If MilliSecs()>=p\time Then Delete p.particle End If Next End Function Function LoadCols() OldBuffer = GraphicsBuffer() SetBuffer(ImageBuffer(colours)) For iLoop = 0 To NumCols Step 3 GetColor(iLoop,0) ColArray(iLoop) = ColorRed() ColArray(iLoop+1) = ColorGreen() ColArray(iLoop+2) = ColorBlue() Next SetBuffer(OldBuffer) End Function