为了账号安全,请及时绑定邮箱和手机立即绑定

仅当我按住火键时,弹丸才会移动

仅当我按住火键时,弹丸才会移动

慕侠2389804 2021-05-30 11:51:29
以前在我的射弹模块中,我有一个单独处理每个射击方向的类(一个用于向上、向下、向左和向右射击的类),这就完成了它的工作。然而,现在我正在尝试将射击速度和其他东西纳入课程中,有 4 个单独的课程太混乱了,所以我试图减少它,以便我只有一个课程来发射所有射弹。但是,既然我已经这样做了,当我发射弹丸时,它只会在我按住开火按钮(如果向左开火,则为“a”键)的情况下移动。此外,如果我向左开火,然后向右开火,之前向左移动的弹丸将开始向右移动。我的问题是;我该如何处理弹丸,以便当我发射弹丸时,它不再接受更新并且不能直线移动?这是我的工作代码;游戏主模块import pygamefrom constants import *from player import Playerfrom Projectile import Projectilespygame.init()screen = pygame.display.set_mode([500, 500])pygame.display.set_caption('Labyrinth')# Spawn playerplayer = Player(50, 50)all_sprites_list = pygame.sprite.Group()all_sprites_list.add(player)projectile_list = pygame.sprite.Group()clock = pygame.time.Clock()done = False# ----- Event Loopwhile not done:    for event in pygame.event.get():        if event.type == pygame.QUIT:            done = True        elif event.type == pygame.KEYDOWN:            if event.key == ord('a'):                player.changespeed(-3, 0)            elif event.key == ord('d'):                player.changespeed(3, 0)            elif event.key == ord('w'):                player.changespeed(0, -3)            elif event.key == ord('s'):                player.changespeed(0, 3)            elif event.key == pygame.K_LEFT:                projectile = Projectiles(0, 0)                projectile.rect.x = player.rect.x                projectile.rect.y = player.rect.y            elif event.key == pygame.K_RIGHT:                projectile = Projectiles(0, 0)                projectile.rect.x = player.rect.x                projectile.rect.y = player.rect.y            elif event.key == pygame.K_UP:                projectile = Projectiles(0, 0)                projectile.rect.x = player.rect.x                projectile.rect.y = player.rect.y            elif event.key == pygame.K_DOWN:                projectile = Projectiles(0, 0)                projectile.rect.x = player.rect.x                projectile.rect.y = player.rect.y            try:                if projectile:                    projectile_list.add(projectile)
查看完整描述

2 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

我从未使用过 PyGame,但可以看到您update()Projectiles类中的方法取决于按键,而它应该取决于经过的时间。

每按一次键,弹丸移动5个单位,一旦发射,每个游戏滴答声移动5个单位。


查看完整回答
反对 回复 2021-06-01
  • 2 回答
  • 0 关注
  • 134 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信