В моей игре я добавляю функцию паузы, которая позволяет вам менять оружие, если вам удалось это сделать.Существует также функция, называемая поворотом, которая поворачивает оружие вместе с игроком, проблема в том, что иногда, когда вы меняете оружие, пистолет в конце концов направляет пистолет на игрока, и, если вы меняете его, пистолет будет работать.Направьте на игрока снова
Я пытался заставить его автоматически переворачиваться при каждом переключении на другое оружие, но это не сработало.Я видел паттерн, который заключается в том, что как только я меняю оружие, это будет правильный путь, а когда я буду менять его снова, это будет неправильный путь.
Я не был на 100% уверен, какие именно фрагменты кода мне были нужны, но я думаю, что это касалось некоторых из них.Просто чтобы быстро сказать всем, кто думает, что это весь мой код. ЭТО НЕ ВСЕ МОЙ КОД !
class Gun():
def __init__(self, x, y, gun_pic_one, gun_pic_two, gun_pic_three, gun_pic_four, gun_pic_five, gun_pic_six):
self.direction_lock = False
self.current_indicator = 1
self.bullet_amount = 0
self.picture = gun_pic_one
self.gun_tag = "pistol"
self.gun_one = gun_pic_one
self.spare_gun_one = gun_pic_one
self.gun_one_tag = "pistol"
self.gun_one_permission = False
self.gun_one = pygame.transform.scale(self.gun_one, (30, 10))
self.direction = "right"
self.previous_direction = "right"
self.gun_two = gun_pic_two
self.gun_two_tag = "tatical shotgun"
self.gun_two_permission = False
self.gun_three = gun_pic_three
self.gun_three_tag = "machine gun"
self.gun_three_permission = False
self.gun_four = gun_pic_four
self.gun_four_tag = "AK47"
self.gun_four_permission = False
self.gun_five = gun_pic_five
self.gun_five_tag = "bazooka"
self.gun_five_permission = False
self.gun_six = gun_pic_six
self.gun_six_tag = "scar"
self.gun_six_permission = False
self.picture = pygame.transform.scale(self.picture, (70, 40))
if self.gun_one != None:
self.gun_one = pygame.transform.scale(self.gun_one, (70, 40))
self.spare_gun_one = pygame.transform.scale(self.spare_gun_one, (70, 40))
if self.gun_two != None:
self.gun_two = pygame.transform.scale(self.gun_two, (100, 100))
if self.gun_three != None:
self.gun_three = pygame.transform.scale(self.gun_three, (150, 150))
if self.gun_four != None:
self.gun_three = pygame.transform.scale(self.gun_four, (100, 50))
self.xpos = x
self.ypos = y
self.speed_x = 0
self.speed_y = 0
self.rect = self.picture.get_rect()
self.rect.x = self.xpos
self.rect.y = self.ypos
def change_costume(self, indicator):
if indicator == 1 and self.current_indicator != indicator:
if self.gun_one != None:
if self.gun_one_permission == True:
print(True)
self.picture = self.spare_gun_one
self.gun_tag = self.gun_one_tag
self.rect = self.picture.get_rect()
self.rect.x = self.xpos
self.rect.y = self.ypos
self.current_indicator = indicator
else:
print(False)
elif indicator == 2 and self.current_indicator != indicator:
if self.gun_two != None:
if self.gun_two_permission == True:
self.picture = self.gun_two
self.gun_tag = self.gun_two_tag
self.rect = self.picture.get_rect()
self.rect.x = self.xpos
self.rect.y = self.ypos
self.current_indicator = indicator
else:
self.picture = self.gun_one
self.gun_tag = self.gun_one_tag
self.rect = self.picture.get_rect()
self.rect.x = self.xpos
self.rect.y = self.ypos
elif indicator == 3 and self.current_indicator != indicator:
if self.gun_three != None:
if self.gun_three_permission == True:
self.picture = self.gun_three
self.gun_tag = self.gun_three_tag
self.rect = self.picture.get_rect()
self.rect.x = self.xpos
self.rect.y = self.ypos
self.current_indicator = indicator
else:
self.picture = self.gun_one
self.gun_tag = self.gun_one_tag
self.rect = self.picture.get_rect()
self.rect.x = self.xpos
self.rect.y = self.ypos
elif indicator == 4 and self.current_indicator != indicator:
if self.gun_four != None:
if self.gun_four_permission == True:
self.picture = self.gun_four
self.gun_tag = self.gun_four_tag
self.rect = self.picture.get_rect()
self.rect.x = self.xpos
self.rect.y = self.ypos
self.current_indicator = indicator
else:
self.picture = self.gun_one
self.gun_tag = self.gun_one_tag
self.rect = self.picture.get_rect()
self.rect.x = self.xpos
self.rect.y = self.ypos
elif indicator == 5 and self.current_indicator != indicator:
if self.gun_five != None:
if self.gun_five_permission == True:
self.picture = self.gun_five
self.gun_tag = self.gun_five_tag
self.rect = self.picture.get_rect()
self.rect.x = self.xpos
self.rect.y = self.ypos
self.current_indicator = indicator
else:
self.picture = self.gun_one
self.gun_tag = self.gun_one_tag
self.rect = self.picture.get_rect()
self.rect.x = self.xpos
self.rect.y = self.ypos
elif indicator == 6 and self.current_indicator != indicator:
if self.gun_six != None:
if self.gun_six_permission == True:
self.picture = self.gun_six
self.gun_tag = self.gun_six_tag
self.rect = self.picture.get_rect()
self.rect.x = self.xpos
self.rect.y = self.ypos
self.current_indicator = indicator
else:
self.picture = self.gun_one
self.gun_tag = self.gun_one_tag
self.rect = self.picture.get_rect()
self.rect.x = self.xpos
self.rect.y = self.ypos
"""if self.flipper_detector == True:
self.flipper_detector = False
elif self.flipper_detector == False:
self.flipper_detector = True"""
"""else:
self.picture = self.gun_one
self.gun_tag = self.gun_one_tag
self.rect = self.picture.get_rect()
self.rect.x = self.xpos
self.rect.y = self.ypos"""
def turn_around(self, direction):
if self.speed_x < 0:
self.direction = direction
elif self.speed_x > 0:
self.direction = direction
if self.direction != self.previous_direction:#meaning you can only flip to the opposite side when you direction is not equal to you last direction
self.picture = pygame.transform.flip(self.picture, True, False)
self.previous_direction = self.direction
while True:
if status_bar.show == False:
print(gun.direction)
else:
if cursor.clicked == True:
for icon in gun_icons:
if cursor.is_collided_with(icon):
if icon.tag == gun.gun_one_tag:
if gun.gun_one_permission == True:
gun.change_costume(1)
elif icon.tag == gun.gun_two_tag:
if gun.gun_two_permission == True:
gun.change_costume(2)
elif icon.tag == gun.gun_three_tag:
if gun.gun_three_permission == True:
gun.change_costume(3)
elif icon.tag == gun.gun_four_tag:
if gun.gun_four_permission == True:
gun.change_costume(4)
elif icon.tag == gun.gun_five_tag:
if gun.gun_five_permission == True:
gun.change_costume(5)
elif icon.tag == gun.gun_five_tag:
if gun.gun_six_permission == True:
gun.change_costume(6)
В результате, если игрок выбрал новое оружие, он перевернется не так, как прежде, и перевернетправильный путь, когда это было неправильно раньше.Что я хочу попробовать, так это то, что как только вы получите новое оружие, оно автоматически изменится в правильном направлении.У меня есть небольшое представление о том, что я мог бы сделать, чтобы исправить эту идею, но я не уверен на 100%, что это сработает.Я думал о добавлении логического значения, и если бы оно было Истиной, оно бы быстро перевернуло оружие, прежде чем вернуться в основной цикл.

На приведенной выше диаграмме пистолет направлен вправо с нашей точки зрения, но игра думает, что он направлен влево.
Затем я выхожу на экран строки состояния / паузы и иду и выбираютот же пистолет.

Когда я иду и выбираю тот же пистолет после выбора, он внезапно решает вернуться в правильное положение.