Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pygame
- TRANSPARENT = 0, 0, 0, 0
- # Image Orientation Matter. Right Side Is Top
- def create_triangle(size, color):
- rect = pygame.Rect((0, 0), size)
- surface = pygame.Surface(size, pygame.SRCALPHA)
- surface.fill(TRANSPARENT)
- points = rect.midright, rect.bottomleft, rect.topleft
- pygame.draw.polygon(surface, color, points)
- return surface
- def rotate_image(sprite, target):
- vector = pygame.Vector2(target) - sprite.rect.center
- # Second Value Is The Angle
- angle = vector.as_polar()[1]
- # Always Rotate From Original Image. Rotate With Negative Angle Because Topleft Is (0, 0)
- sprite.image = pygame.transform.rotate(sprite.original_image, -angle)
- sprite.rect = sprite.image.get_rect(center=sprite.rect.center)
- def main(caption, width, height, flags=0, fps=60):
- # Simple Pygame Setup
- pygame.display.set_caption(caption)
- surface = pygame.display.set_mode((width, height), flags)
- rect = surface.get_rect()
- clock = pygame.time.Clock()
- running = True
- delta = 0
- fps = fps
- # Variables
- background_color = 'black'
- triangle = pygame.sprite.Sprite()
- triangle.image = create_triangle((50, 50), 'dodgerblue')
- triangle.rect = triangle.image.get_rect(center=rect.center)
- triangle.original_image = triangle.image
- # Main Loop
- while running:
- for event in pygame.event.get():
- if event.type == pygame.MOUSEMOTION:
- rotate_image(triangle, event.pos)
- elif event.type == pygame.QUIT:
- running = False
- # Logic
- # Draw
- surface.fill(background_color)
- surface.blit(triangle.image, triangle.rect)
- # Render Buffer To Screen
- pygame.display.flip()
- # Idle And Get Delta Time
- delta = clock.tick(fps)
- pygame.init()
- main('Facing Towards Mouse', 800, 600)
- pygame.quit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement