【发布时间】:2021-03-14 01:13:10
【问题描述】:
这款游戏是一款太空射击游戏,我遇到了一个奇怪的问题,我的激光有时只能击中敌人,而其他时候则直接穿过。
for lasers in amtLasers:
if lasers.y < invaders.y:
if lasers.x > invaders.x-56 and lasers.x < invaders.x+28:
amtLasers.pop(amtLasers.index(lasers))
amtInvaders.pop(amtInvaders.index(invaders))
score += 20
我有关于激光和入侵者的课程,amtLasers 是一个列表,用于存储屏幕上的激光,直到它们被删除。我没有设置在接触时摧毁敌人,所以我注意到如果我继续射击敌人,同一个敌人有时会被击中,而其他时候不会被击中。为什么会发生这种情况,我该如何解决?
这里是一个编辑: 激光只击中最近生成的敌人,我想我知道为什么
class invader(object):
def __init__(self):
self.x = randint(30, 1020)
self.y = 0
color = randint(1, 3)
if color == 1:
self.col = (225,0,0)
elif color == 2:
self.col = (0,225,0)
elif color == 3:
self.col = (0,115,255)
self.vel = randint(1, 2)
当一个新的敌人被生成时,inviders.x 和inviders.y 会跟踪那个特定的敌人,而不会跟踪其他的,因为这个类同时在屏幕上显示了多个敌人。如何分别跟踪每个敌人?
【问题讨论】:
-
没有足够的信息来回应。尝试添加更多信息。您可以在循环中打印您的lasers.x 和 linvaders.x 以查看这些值是否有意义。
-
您的激光移动速度是否足够快,可以在两次更新之间一路穿过敌人?
-
好的,我发现了一些重要的事情。它穿过屏幕上不是最高的任何敌人。这意味着当一个新的敌人在顶部生成时,激光将穿过除那个之外的所有敌人。
标签: python python-3.x pygame