объект перемещается только в одном направлении в моих кодах Pygame, как я могу решить это? - PullRequest
0 голосов
/ 25 января 2020

Я делал небольшую стрелялку и проверил, хорошо ли движется персонаж.

и есть свойство 'angle' объекта 'james' класса 'hero' для перемещения персонажа в любое место на определенном расстоянии.

, но, хотя очень очевидный код, меняющий угол, он идет на один угол, который я дал, когда создавал этот объект, и не выдает никакой ошибки

кажется, что одно из движений, связанных с кодом, не сработало правильно. каждая часть моего кода перемещает объекты

for event in pygame.event.get():
    '''some other codes'''
    elif event.type==KEYDOWN:
        if not event.key in keys:
            keys.append(event.key)
    elif event.type==KEYUP:
        keys.remove(event.key)

class moving_man():
    def __init__(self,hp,speed,angle,
             s_angle,rect,weapon): #체력 ,이동속도 ,움직이는 각도 ,사격 각도 ,크기및 위치 ,패턴 ,무기
        self.hp=hp
        self.speed=speed
        self.rect=rect
        self.angle=angle
        self.s_angle=s_angle
        self.weapon=weapon 
    def move(self): #움직이기
        self.rect.centerx+=math.cos(self.angle)*self.speed
        self.rect.centery-=math.sin(self.angle)*self.speed
    '''some other codes'''

class hero(moving_man):
    def __init__(self,hp,speed,angle,
             s_angle,rect,weapon):
        super().__init__(hp,speed,angle,
             s_angle,rect,weapon)
    def pattern(self): 
        if len(keys)==1:
            if keys[0]==K_w:
                self.angle=math.radians(90)
            elif keys[0]==K_a:
                self.angle=math.radians(180)
            elif keys[0]==K_s:
                self.angle=math.radians(270)
            elif keys[0]==K_d:
                self.angle=math.radians(0)
            self.move()
        elif len(keys)>=2:
            if K_w and K_a in keys[:2]:
                self.angle=math.radians(135)
            elif K_a and K_s in keys[:2]:
                self.angle=math.radians(225)
            elif K_s and K_d in keys[:2]:
                self.angle=math.radians(315)
            elif K_d and K_w in keys[:2]:
                self.angle=math.radians(45)
            self.move()

1 Ответ

0 голосов
/ 26 января 2020

Я понятия не имею, почему мне потребовалось 3 дня, чтобы понять простую ошибку: я нажал не ту кнопку, чтобы переместить моего персонажа на 3 дня .

мои коды сохраняются при каждом нажатии кнопки но меняйте угол на go только тогда, когда я нажимаю клавиши w, a, s, d, поэтому, если я нажимаю другие, клавиша сохраняется в списке «ключей» и все еще перемещает символ. но он идет только по временному углу, который я дал, когда создавал этот объект, потому что коды не меняли угол

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...