我最近在我的编码中加入了射速,但是,我必须连续按下开火按钮才能射击。
有没有办法处理 KEYDOWN 事件,这样当我按下开火按钮时,不是发射一颗子弹,只要我按住开火按钮,子弹就会定期发射?
工作代码如下;
import pygame
from constants import *
from player import Player
from Projectile import Projectile
from pygame.math import Vector2
pygame.init()
screen = pygame.display.set_mode([500, 500])
pygame.display.set_caption('Labyrinth')
# Spawn player
player = Player(50, 50)
all_sprites_list = pygame.sprite.Group()
all_sprites_list.add(player)
projectiles = pygame.sprite.Group()
clock = pygame.time.Clock()
previous_time = pygame.time.get_ticks()
speed = 12
done = False
# ----- Event Loop
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
elif event.type == pygame.KEYDOWN:
if event.key …Run Code Online (Sandbox Code Playgroud) 我最近在我的游戏中实施了一个健康系统(尽管是一个非常基本的健康系统),它的工作原理是,如果我的玩家与敌人发生碰撞,我就会失去健康.然而,我面临的问题是,只要我与敌人保持联系,我每秒就会失去60次健康.
我真正想要的是:每当玩家与敌人发生碰撞时,它就会失去一大块健康,但在至少一秒过去之前不会失去更多的健康.我尝试过使用time.sleep,但这似乎只是冻结整个程序而不仅仅是健康系统.这是我的代码;
import pygame
from constants import *
from player import Player
from enemy import Enemy
import time
pygame.init()
screen = pygame.display.set_mode([500, 500])
pygame.display.set_caption('Labyrinth')
# Spawn player
player = Player(50, 50)
all_sprites_list = pygame.sprite.Group()
all_sprites_list.add(player)
# Spawn enemy
enemy = Enemy(150, 150)
enemy_sprites = pygame.sprite.Group()
enemy_sprites.add(enemy)
clock = pygame.time.Clock()
done = False
# ----- Event Loop
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
player.changespeed(-3, …Run Code Online (Sandbox Code Playgroud)