我遇到一个问题,当我向某个方向发射一颗子弹,然后向另一个方向发射第二颗子弹时,前一个子弹也会改变方向。
if bullet.x < 1919 and bullet.x > 0 and facing==-1 or bullet.x < 1919 and bullet.x > 0 and facing==1 :#boundry for bullets made small change
bullet.x += bullet.vel
elif bullet.y < 803 and bullet.y> 0 and facing==2:#boundry for bullets made small change needs added to main stage
bullet.y -= bullet.vel
elif bullet.y < 803 and bullet.y > 0 and facing==-2 :#needs added to main stage
bullet.y -= bullet.vel
else:
bullets.pop(bullets.index(bullet))
keys = pygame.key.get_pressed()
movemana=25#the cost when using that move need ot make function for that later
if keys[pygame.K_SPACE] and mana>movemana and shootloop==0:
#print(mana)
mana-=movemana
#print(mana)
if man.up==True:
facing=2
if man.left==True:
facing = -1
if man.right==True:
facing = 1
if man.down==True:
facing=-2
print(facing)
if len(bullets) < 5:
bullets.append(projectile(round(man.x + man.width //2), round(man.y + man.height//2), 6, (0,0,0), facing))
shootloop=1#cooldownrate
答案 0 :(得分:0)
看起来您的代码只存在一部分,但是我会尽力提供可用的代码。
您的所有项目符号似乎都共享同一个全局facing
变量。 facing
被设置在代码的底部。然后,我假设在每个项目符号上调用顶部,这意味着它们都将使用相同的facing
值(无论创建最后一个项目符号时设置为什么)。
但是,看起来您还在每个创建的项目符号中存储了facing
变量;请参阅以bullets.append(projectile(...
开头的底部附近的行,该值当前未使用。因此,在检查子弹在上半部分的位置时,请尝试使用bullet.facing
(或该成员的名字)而不是仅使用facing
。