如何解决我的项目符号代码,以便当我从不同方向射击第二个项目符号时,不会改变第一个项目符号的方向?

时间:2019-04-23 23:00:26

标签: python pygame

我遇到一个问题,当我向某个方向发射一颗子弹,然后向另一个方向发射第二颗子弹时,前一个子弹也会改变方向。

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

1 个答案:

答案 0 :(得分:0)

看起来您的代码只存在一部分,但是我会尽力提供可用的代码。

您的所有项目符号似乎都共享同一个全局facing变量。 facing被设置在代码的底部。然后,我假设在每个项目符号上调用顶部,这意味着它们都将使用相同的facing值(无论创建最后一个项目符号时设置为什么)。

但是,看起来您还在每个创建的项目符号中存储了facing变量;请参阅以bullets.append(projectile(...开头的底部附近的行,该值当前未使用。因此,在检查子弹在上半部分的位置时,请尝试使用bullet.facing(或该成员的名字)而不是仅使用facing