python - Rotating an Image in Pygame -


i know question has been asked before, because have read through every post on here mentioning subject, cannot achieve effect wanting. far can tell, math , code correct. basically, creating over-the-head 90 degree shooter, , want player's image rotate face mouse. now, image rotate left , right, not rotate face mouse. said, have looked through tutorials not able figure out. or pointers appreciated. code below. thanks!

    #import pygame     import pygame, sys     pygame.locals import *     import math      #initialize pygame     pygame.init()      #system variables    running = true    dispwidth = 800    dispheight = 600    pygame.mouse.set_visible(false)    pygame.key.set_repeat(1, 50)     player = pygame.image.load('resources/player_handgun.png')    playerx = 50    playery = 50     background = pygame.image.load('resources/grass.png')     crosshair = pygame.image.load('resources/crosshair.png')     gamescreen = pygame.display.set_mode( ( dispwidth, dispheight) )    pygame.display.set_caption('zombie shooter')    gamescreen.blit( player, ( playerx, playery))    gamescreen.blit( background, ( 0, 0))     pygame.display.update()     #def updatescreen():    #    playerx = playerx + movement     #game loop    while running:      blue = (0,0,255)        velx = 0      vely = 0       event in pygame.event.get():          if event.type == quit:              pygame.quit()              sys.exit()          elif event.type == pygame.keydown:              if event.key == pygame.k_d:                  velx = 10              if event.key == pygame.k_a:                  velx = (-10)              if event.key == pygame.k_w:                  vely = (-10)              if event.key == pygame.k_s:                  vely = 10       playerx = playerx + velx      playery = playery + vely      pos = (pygame.mouse.get_pos()[0], pygame.mouse.get_pos()[1])      playerdirection = math.atan2(playery-pos[1], playerx-pos[0])       char = pygame.transform.rotate(player, playerdirection)      gamescreen.blit( background, (0, 0))      gamescreen.blit( char,(playerx,playery))        gamescreen.blit( crosshair, (pos[0]-16,pos[1]-16))        print playerdirection      pygame.display.update() 

pygame.transform.rotate takes angle in degrees, while math.atan2 returns angle in radians, need convert between two.

playerdirection = math.degrees(math.atan2(playery-pos[1], playerx-pos[0])) 

links:


Comments

Popular posts from this blog

javascript - RequestAnimationFrame not working when exiting fullscreen switching space on Safari -

jsf - How to ajax update an item in the footer of a PrimeFaces dataTable? -

django - CSRF verification failed. Request aborted. CSRF cookie not set -