我正在创建一款侧向射击游戏,其中敌人(无人机)不断地在屏幕右侧生成。最近创建的敌人将附加到列表drones
中。每个敌人都移至屏幕左侧。一旦离开屏幕,它们就会从列表中删除。
当无人机与播放器碰撞时,我也想将其移除。只要drones
列表中有多个对象,以下代码就可以正常工作,但是当列表中只有一个项目(因此屏幕上有一个无人机)时,在碰撞时无人机不会被删除。
我不知道为什么第一个列表项无法销毁。
drones = []
class Drone
#other call methods
def hit(self):
del drones[drones.index(self)]
def generate_enemy():
global drones
if len(drones) < 20:
if (random.randint(1,100) == 1):
drones.append(Drone(screenWidth, random.randint(300,500))
def main():
global drones
while True:
#main loop stuff happening
if condition == True:
generate_enemy():
#main loop stuff happening
if player and (len(drones) > 0):
for i in range(len(drones)-1):
if drones[i].hitbox.colliderect(player.hitbox):
drones[i].hit()
main()