用鼠标旋转图像
這里涉及的到圖像旋轉后,方向的計算。我也不是很明白。先記錄下來再說。
#_*_coding:utf-8 _*_import pygame from pygame.locals import * from sys import exit from gameobjects.vector2 import Vector2 from math import *background_image_filename='./images/sea.jpg' sprite_image_filename='./images/fish.png'import pygame from pygame.locals import * from sys import exit pygame.init() # 讓pygame完全控制鼠標 pygame.mouse.set_visible(False) pygame.event.set_grab(True)screen=pygame.display.set_mode((640,480),0,32) background=pygame.image.load(background_image_filename).convert() sprite=pygame.image.load(sprite_image_filename) clock=pygame.time.Clock()sprite_pos = Vector2(200, 150) # 初始位置 sprite_speed = 300. # 每秒前進的像素數(速度) sprite_rotation = 0. # 初始角度 sprite_rotation_speed = 360. # 每秒轉動的角度數(轉速)while True:for event in pygame.event.get():if event.type == QUIT:exit()pressed_keys = pygame.key.get_pressed()rotation_direction = 0.movement_direction = 0.# 通過移動偏移量計算轉動rotation_direction = pygame.mouse.get_rel()[0]/5.0#更改角度if pressed_keys[K_LEFT]:rotation_direction+=1if pressed_keys[K_RIGHT]:rotation_direction-=1#前進 后退if pressed_keys[K_UP]:movement_direction+=1if pressed_keys[K_DOWN]:movement_direction-=1screen.blit(background,(0,0))#獲得一條轉向后的魚rotated_sprite=pygame.transform.rotate(sprite,sprite_rotation)#獲得轉向后的矩形w,h=rotated_sprite.get_size()sprite_draw_pos=Vector2(sprite_pos.x-w/2,sprite_pos.y-h/2)screen.blit(rotated_sprite,sprite_draw_pos)time_passed = clock.tick()time_passed_seconds = time_passed / 1000.0# 圖片的轉向速度也需要和行進速度一樣,通過時間來控制sprite_rotation += rotation_direction * sprite_rotation_speed * time_passed_seconds# 獲得前進(x方向和y方向),這兩個需要一點點三角的知識heading_x = sin(sprite_rotation * pi / 180.)heading_y = cos(sprite_rotation * pi / 180.)# 轉換為單位速度向量heading = Vector2(heading_x, heading_y)# 轉換為速度heading *= movement_directionsprite_pos += heading * sprite_speed * time_passed_secondspygame.display.update()?
轉載于:https://www.cnblogs.com/superxuezhazha/p/7450660.html
總結
- 上一篇: 将list转为json字符串
- 下一篇: Eclipse手动配置svn