#python #pygame
#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. Не делай
if x == True
просто делайif x
Ответ №1:
Похоже, что присутствует только часть вашего кода, но я сделаю все возможное с тем, что доступно.
Похоже, что все ваши маркеры используют одну и ту же глобальную facing
переменную. facing
устанавливается в нижней части вашего кода. Тогда, я полагаю, верхняя часть вызывается для каждой пули, что означает, что все они будут использовать одно и то же facing
значение (независимо от того, какое оно было установлено при создании последней пули).
Однако, похоже, что вы также сохраняете эту facing
переменную внутри каждого создаваемого маркера; смотрите строку внизу, которая начинается с bullets.append(projectile(...
этого значения, просто не используется в настоящее время. Поэтому при проверке местоположения маркера в верхней половине попробуйте использовать bullet.facing
(или как там называется этот элемент) вместо просто facing
.