1 回答
TA贡献1890条经验 获得超9个赞
我建议使用计时器事件。用于pygame.time.set_timer()重复创建USEREVENT. 例如:
milliseconds_delay = 500 # 0.5 seconds
bullet_event = pygame.USEREVENT + 1
pygame.time.set_timer(bullet_event, milliseconds_delay)
注意,在 pygame 中可以定义客户事件。每个事件都需要一个唯一的 ID。用户事件的 ID 必须从 开始pygame.USEREVENT。在本例pygame.USEREVENT+1中是生成子弹的计时器事件的事件 ID。
在事件循环中发生事件时创建一个新项目符号:
running = True
while running:
clock.tick(FPS)
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == bullet_event:
if boss.rect.y >= 30:
boss.shoot()
有什么办法可以让敌人在之后暂停一段时间......比如说5次射击,然后在暂停后再次开始射击
可以通过将 0 传递给 time 参数来停止计时器事件。例如:
delay_time = 500 # 0.5 seconds
pause_time = 3000 # 3 seconds
bullet_event = pygame.USEREVENT + 1
pygame.time.set_timer(bullet_event, delay_time)
no_shots = 0
running = True
while running:
clock.tick(FPS)
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == bullet_event:
if boss.rect.y >= 30:
boss.shoot()
# change the timer event time
if no_shots == 0:
pygame.time.set_timer(bullet_event, delay_time)
no_shots += 1
if no_shots == 5:
pygame.time.set_timer(bullet_event, pause_time)
no_shots = 0
killed = # [...] set state when killed
# stop timer
if killed:
pygame.time.set_timer(bullet_event, 0)
添加回答
举报