0

so im making a top down shooter game and i want to make the player face the mouse at all times. whenever i search it up, i cant figure out what the answer actually means. ive tried:

mouseY, mouseX = pygame.mouse.get_pos()
angle_to_pointer = math.degrees(math.atan2(T_rect.y - mouseY, T_rect.x - mouseX)) + 180

but that only makes it spin uncontrollably off the screen.

heres my main loop:

run = True
    while run:
        screen.blit(Tonk,(T_rect))
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                run = False
                exit()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    pr_l = True
                if event.key == pygame.K_RIGHT:
                    pr_r = True
                if event.key == pygame.K_UP:
                    pr_u = True
                if event.key == pygame.K_DOWN:
                    pr_d = True
                if event.key == pygame.K_SPACE:
                    pr_s = True
            elif event.type == pygame.KEYUP:  # check for key releases
                if event.key == pygame.K_LEFT:  # left arrow turns left
                    pr_l = False
                elif event.key == pygame.K_RIGHT:  # right arrow turns right
                    pr_r = False
                elif event.key == pygame.K_UP:  # up arrow goes up
                    pr_u = False
                elif event.key == pygame.K_DOWN:  # down arrow goes down
                    pr_d = False
                elif event.key == pygame.K_SPACE:
                    pr_s = False
            elif event.type == pygame.MOUSEMOTION:
                m_m = True
        if pr_l == True:
            screen.fill(colour)
            T_rect.x -= speed
            screen.blit(Tonk,(T_rect))
        if pr_r == True:
            screen.fill(colour)
            T_rect.x += speed
            screen.blit(Tonk,(T_rect))
        if pr_u == True:
            screen.fill(colour)
            T_rect.y -= speed
            screen.blit(Tonk,(T_rect))
        if pr_d == True:
            screen.fill(colour)
            T_rect.y += speed
            screen.blit(Tonk,(T_rect))
        if m_m == True:
            screen.fill(colour)
            screen.blit(Tonk,(T_rect))

        pygame.display.flip()
        clock.tick(60)

please help?

Edit: answered on my previous question: how can i make an image point towards the mouse in python

2wen
  • 41
  • 9

0 Answers0