だから、私は基本的な Pygame に取り組んでおり、メカニズムの 1 つは弾丸スプライトをマウスに追従させて爆発させることです。しかし、バグが 2 つだけあります。
バグ 1:箇条書きを削除すると、bullet_list 内のすべての箇条書きが削除されます。なぜこれが起こるのか理解していますが、それを修正する方法がわかりません。解決済み
バグ 2:マウスを動かすと、キー押下の検出が上書きされるようです。マウスの移動中は、弾を移動したり発射したりすることはできません。
アップデート
#Checking Keys
for event in pygame.event.get():
print("CAKE")
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_DOWN:
pPlayer.image = pDown
pPlayer.chy = 2
elif event.key == pygame.K_UP:
pPlayer.image = pUp
pPlayer.chy = -2
elif event.key == pygame.K_LEFT:
pPlayer.image = pLeft
pPlayer.chx = -2
elif event.key == pygame.K_RIGHT:
pPlayer.image = pRight
pPlayer.chx = 2
elif event.key == pygame.K_SPACE:
if pPlayer.canFire == True:
bullet = Bullet()
bullet.rect.x = int(player.x)
bullet.rect.y = int(player.y)
all_sprites_list.add(bullet)
bullet_list.add(bullet)
pPlayer.canFire = False
elif event.key == pygame.K_ESCAPE:
if gameState.togglePause == True:
if gameState.pause == True:
gameState.game = True
gameState.pause = False
elif gameState.pause == False:
gameState.game = False
gameState.pause = True
gameState.togglePause = False
elif event.type == pygame.KEYUP:
if event.key == pygame.K_DOWN or event.key == pygame.K_UP:
pPlayer.chy = 0
elif event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
pPlayer.chx = 0
elif event.key == pygame.K_SPACE:
pPlayer.canFire = True
elif event.key == pygame.K_ESCAPE:
gameState.togglePause = True
else:
pPlayer.chx = 0
pPlayer.chy = 0
新しいバグ!私は pygame.event.get() に慣れておらず、おそらくここで何か間違ったことをしているのですが、pygame ドキュメントで提供されている例はあまり役に立ちません。複数のイベントが登録されていないように見えるため、複数のイベントの処理が修正されたかどうかはわかりません。コードが「ケーキ」を出力することはめったになく、非常に遅れており、スペースに当たったときに弾丸が発射されることはほとんどありません。