我正在尝试开发一个使用Pygame(Python库)制作的简单游戏。
我有一个sprite
物体,player
然后使用箭头键将其移动。如果我不移动鼠标,则精灵会正常移动,但是当我移动鼠标时,精灵会移动得更快(例如x2或x3)。该player
对象位于charsGroup
var 内部。
我已经在W7和Ubuntu中运行了该游戏。两种操作系统都发生相同的情况。
我有更多的实体会像NPC和子弹一样移动,但它们不会受到影响,只是玩家。鉴于此,我认为问题可能与玩家移动系统(箭头键)直接相关。
这是对象的update()
方法player
:
def update(self):
for event in pygame.event.get():
key = pygame.key.get_pressed()
mouseX, mouseY = pygame.mouse.get_pos()
if event.type == pygame.MOUSEBUTTONDOWN:
self.bulletsGroup.add(Bullet(pygame.image.load("bullet.png"),
self.rect.x + (self.image.get_width()/2),
self.rect.y + (self.image.get_height()/2),
mouseX, mouseY, 50, 50))
if key[pygame.K_RIGHT]:
if not self.checkCollision():
self.rect.x += 10
else:
self.rect.x -= 10
if key[pygame.K_LEFT]:
if not self.checkCollision():
self.rect.x -= 10
else:
self.rect.x += 10
if key[pygame.K_UP]:
if not self.checkCollision():
self.rect.y -= 10
else:
self.rect.y += 10
if key[pygame.K_DOWN]:
if not self.checkCollision():
self.rect.y += 10
else:
self.rect.y -= 10
这是while循环:
while True:
if PLAYER.healthBase <= 0:
GAMEOVER = True
if not GAMEOVER:
mapTilesGroup.draw(SCREEN)
charsGroup.update()
charsGroup.draw(SCREEN)
npcsGroup.update()
npcsGroup.draw(SCREEN)
drawBullets()
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if GAMEOVER:
myfont = pygame.font.SysFont("monospace", 30)
label = myfont.render("GAME OVER!", 1, (255, 255, 0))
SCREEN.blit(label, (400, 300))
freq.tick(0)
pygame.display.flip()
我不知道您还需要什么帮助我,但是您需要的任何东西(更多信息或代码)都可以要求!
BULLET_IMAGE = pygame.image.load("bullet.png")
再后来self.bulletsGroup.add(Bullet(BULLET_IMAGE...