-
Notifications
You must be signed in to change notification settings - Fork 0
/
effects.rpy
45 lines (39 loc) · 1.64 KB
/
effects.rpy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
init python:
import random
init python:
import math
class ParticleBurst(object):
def __init__(self, theDisplayable, explodeTime=0, numParticles=20, particleTime = 0.500, particleXSpeed = 3, particleYSpeed = 5):
self.sm = SpriteManager(update=self.update)
self.stars = [ ]
self.displayable = theDisplayable
self.explodeTime = explodeTime
self.numParticles = numParticles
self.particleTime = particleTime
self.particleXSpeed = particleXSpeed
self.particleYSpeed = particleYSpeed
self.gravity = 240
self.timePassed = 0
for i in range(self.numParticles):
self.add(self.displayable, 1)
def add(self, d, speed):
s = self.sm.create(d)
speed = random.random()
angle = random.random() * 3.14159 * 2
xSpeed = speed * math.cos(angle) * self.particleXSpeed
ySpeed = speed * math.sin(angle) * self.particleYSpeed - 1
s.x = xSpeed * 24
s.y = ySpeed * 24
pTime = self.particleTime
self.stars.append((s, ySpeed, xSpeed, pTime))
def update(self, st):
sindex=0
for s, ySpeed, xSpeed, particleTime in self.stars:
if (st < particleTime):
s.x = xSpeed * 120 * (st + .20)
s.y = (ySpeed * 120 * (st + .20) + (self.gravity * st * st))
else:
s.destroy()
self.stars.pop(sindex)
sindex += 1
return 0