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
Post a Comment