@topi768

Почему событие клика работает через раз?

У класса есть метод с управление, на кнопки с клавиатуры все работает корректно, но с кнопками мыши проблемы. В консоль не при каждом клике выводится attack. Через pg.mouse.get_pressed() результат тот же. controls вызывается в update, возможно проблема в этом

def controls(self):
        bt = pg.key.get_pressed()
        if bt[pg.K_SPACE] and self.on_ground:
            self.jump()
        elif bt[pg.K_d]:
            self.walk("right")
        elif bt[pg.K_a]:
            self.walk('left')
        elif bt[pg.K_w]:
            self.jerk()
        else:
            self.animation("base")

        for event in pg.event.get():
            if event.type == pg.MOUSEBUTTONDOWN:
                print("attack")
                self.attack()
  • Вопрос задан
  • 48 просмотров
Пригласить эксперта
Ответы на вопрос 1
@maximq
QA Engineer
Попробуйте передавать event в эту функцию, что-то вроде этого:
def controls(self, event):
        if event.type == pg.KEYDOWN:
            bt = pg.key.get_pressed()
            if bt[pg.K_SPACE] and self.on_ground:
                self.jump()
            elif bt[pg.K_d]:
                self.walk("right")
            elif bt[pg.K_a]:
                self.walk('left')
            elif bt[pg.K_w]:
                self.jerk()
        elif event.type == pg.MOUSEBUTTONDOWN:
            print("attack")
            self.attack()
        else:
            self.animation("base")

for event in pg.event.get():
    do_event(event)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы