所以我有这个迷你粒子效应,产生向上移动的圆圈。我想让它看起来像烟。虽然我遇到了很多问题。Pygame粒子效应
- 首先,我希望把它递归这样,当粒子到达顶部就 返回其原始点,并再次开始,我有什么工作一点,但不完全是。
- 另一件事是我不觉得它真的看起来像烟雾任何人都可以建议更改,使其看起来更好?
- 另外我想添加到我的游戏中,我将如何使这个可调用的游戏,所以我可以称为粒子,并给它一个位置,它出现在那里。任何人都可以帮忙吗?
我的代码
import pygame,random
from pygame.locals import *
xmax = 1000 #width of window
ymax = 600 #height of window
class Particle():
def __init__(self, x, y, dx, dy, col):
self.x = x
self.y = y
self.col = col
self.ry = y
self.rx = x
self.dx = dx
self.dy = dy
def move(self):
if self.y >= 10:
if self.dy < 0:
self.dy = -self.dy
self.ry -= self.dy
self.y = int(self.ry + 0.5)
self.dy -= .1
if self.y < 1:
self.y += 500
def main():
pygame.init()
screen = pygame.display.set_mode((xmax,ymax))
white = (255, 255, 255)
black = (0,0,0)
grey = (128,128,128)
particles = []
for part in range(25):
if part % 2 > 0: col = black
else: col = grey
particles.append(Particle(random.randint(500, 530), random.randint(0, 500), 0, 0, col))
exitflag = False
while not exitflag:
for event in pygame.event.get():
if event.type == QUIT:
exitflag = True
elif event.type == KEYDOWN:
if event.key == K_ESCAPE:
exitflag = True
screen.fill(white)
for p in particles:
p.move()
pygame.draw.circle(screen, p.col, (p.x, p.y), 8)
pygame.display.flip()
pygame.quit()
if __name__ == "__main__":
main()
在我看来,这看上去一点也不像烟。这有点像一大片烟雾,但是如果你把它放进一个带有火焰的程序中,它看起来并不像真正的烟雾;它只会看起来像一堆弹跳球。但是,您可以有自己的看法,对此我没有太多可以做的。 – PygameNerd 2013-02-14 22:50:07
@PygameNerd是的,我同意你的意见,这是没有办法像烟。但是通过在一个方向上应用重力,(更新即将来临),我可以得到与你的结果非常相似的结果。顺便说一下,我的意见是什么意思?我没有详细阅读他的问题,但是要指出它的问题,我需要更改我的代码。 – pradyunsg 2013-02-15 05:28:27
@PygameNerd是的,我明白了我完全错了,这不是解决他的问题的方法... – pradyunsg 2013-02-15 05:55:27