Как нарисовать динамическую стрелку в Pygame? - PullRequest
2 голосов
/ 24 мая 2019

Я пытался использовать pg.draw.arrow(), но, видимо, этого не существует. Я хочу создать стрелку, где конец обновляется на основе поворота линии, чтобы они всегда были выровнены. Возможно ли это?

1 Ответ

3 голосов
/ 24 мая 2019

Я использую эту функцию, в некоторой степени основанную на том, что я видел в stackoverflow некоторое время назад:

def arrow(screen, lcolor, tricolor, start, end, trirad, thickness=2):
    pg.draw.line(screen, lcolor, start, end, thickness)
    rotation = (math.atan2(start[1] - end[1], end[0] - start[0])) + math.pi/2
    pg.draw.polygon(screen, tricolor, ((end[0] + trirad * math.sin(rotation),
                                        end[1] + trirad * math.cos(rotation)),
                                       (end[0] + trirad * math.sin(rotation - 120*rad),
                                        end[1] + trirad * math.cos(rotation - 120*rad)),
                                       (end[0] + trirad * math.sin(rotation + 120*rad),
                                        end[1] + trirad * math.cos(rotation + 120*rad))))

Я определил rad как pi / 180 для преобразования из градусов в радианы

Если вы хотите присвоить его draw:

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