我正在创建一个目标射击游戏,玩家点击鼠标,一颗子弹飞向它。我已经开始使用“pygame.sprite”让事情变得更简单。目前,我已成功加载目标和背景,并使目标移动。现在我想让子弹发挥作用。理想情况下,我想再次使用“pygame.sprite”命令,以便使用预先制作的碰撞检测系统。问题是,我显然不能坐在这里实例化数百个子弹,这些子弹会在点击后产生。我读过关于自动实例化的文章,但没有一篇与我的问题类似,我需要将它合并到pygame中。除了“self.rect.x/y”之外,所有项目符号都将共享相同的属性,但我可以稍后处理。基本上,是否有一种方法可以使实例在执行期间自动创建?请注意,“刷新窗口()”将包含所有绘图命令
#Using pygame.sprite to make a class for the bullet sprites.
bullet_img = pygame.image.load('bullet.png')
class Bullet(pygame.sprite.Sprite):
def __init__(self, width, height):
pygame.sprite.Sprite.__init__(self, bullet_sprites)
self.image = pygame.Surface([width, height])
self.image = bullet_img
self.rect = self.image.get_rect()
self.rect.center = (400,400)
bullet_sprites = pygame.sprite.Group()
#Creating a function which will deal with redrawing all sprites and updating the screen.
def refresh_window():
window.blit(bgr, (0,0))
player_sprites.draw(window)
target_sprites.draw(window)
bullet_sprites.draw(window)
pygame.display.update()
您只需在每次单击鼠标时创建一个新的
Bullet
。然后将其添加到您的组中。也许您只是在问题的代码中遗漏了这一部分,但是移动的精灵应该定义一个update()
函数来移动它们自己(或者它们所做的任何其他事情)在主循环中,每当玩家发射新子弹时,创建一个对象,并将其添加到精灵组
同样在主循环中,不要忘了打电话
它调用组中每个精灵的
update()
函数。这将使子弹沿着其轨迹移动相关问题 更多 >
编程相关推荐