Here's the little space dust particle system for the explosions I used in the last update, just in case anyone wants to use have this code separate for something. This code is easy to incorporate in other games.
- Dav
- Dav
Code: (Select All)
'Space dust explosion particle system for ballshoot game
'Click mouse on screen to see dust.
'Dav, SEP/2024
Randomize Timer
Screen _NewImage(640, 480, 32)
'=== for space dust (explosion particles)
dustmax = 600 'make sure enough dust particles
Dim dustx(dustmax), dusty(dustmax)
Dim dustxv(dustmax), dustyv(dustmax)
Dim dustr(dustmax), dusta(dustmax)
dustcount = 0 'no active dust particles yet
Do
Line (0, 0)-(_Width, _Height), _RGBA(0, 0, 0, 75), BF
While _MouseInput: Wend
'If click on sceen, do the dust..
If _MouseButton(1) Then
For ex = 1 To 15 'this will be ball radius
If dustcount < dustmax Then
dustcount = dustcount + 1
dustx(dustcount) = _MouseX 'will be ball x
dusty(dustcount) = _MouseY 'will be ball y
dustxv(dustcount) = Rnd * 5 - 2.5
dustyv(dustcount) = Rnd * 5 - 2.5
dustr(dustcount) = Int(Rnd * 2) + 1
dusta(dustcount) = Rnd * 255
End If
Next
End If
'do your other program stuff...
'below maintains dust on the screen...
'It handle/Updates any space dust on screen
If dustcount > 0 Then
For i = 1 To dustcount
dustyv(i) = dustyv(i) + .1 'gravity effect
dustx(i) = dustx(i) + dustxv(i)
dusty(i) = dusty(i) + dustyv(i)
If dusta(i) > 0 Then
Line (dustx(i), dusty(i))-Step(dustr(i), dustr(i)), _RGBA(Rnd * 155 + 100, Rnd * 155 + 100, Rnd * 155 + 100, dusta(i)), BF
dusta(i) = dusta(i) - 4 'fading
End If
Next
'cleanup any dust fully faded out
For i = 1 To dustcount
If dusta(i) <= 0 Then
dustcount = dustcount - 1
For j = i To dustcount
dustx(j) = dustx(j + 1)
dusty(j) = dusty(j + 1)
dustxv(j) = dustxv(j + 1)
dustyv(j) = dustyv(j + 1)
dustr(j) = dustr(j + 1)
dusta(j) = dusta(j + 1)
Next
End If
Next
End If
_Display
_Limit 30
Loop Until _KeyDown(27) 'ESC to quit
End