我的问题与下面问题的答案有关。如何将旋转限制在pygame中设定的度数?
如何限制旋转到以红色标示在这张照片上的面积?我尝试了各种方法,但没有成功。代码始终保持在其他区域的防御者。 我修改了下面的代码。
import pygame, math, base64
pygame.init()
screen = pygame.display.set_mode((200, 200))
surf = pygame.image.load("D:\\PYTHON\\SoftwareDG\\Games\\Platform_Suvivor\\assets\\rg.png").convert_alpha()
def rot_center(image, angle):
orig_rect = image.get_rect()
rot_image = pygame.transform.rotate(image, angle)
rot_rect = orig_rect.copy()
rot_rect.center = rot_image.get_rect().center
rot_image = rot_image.subsurface(rot_rect).copy()
return rot_image
current_angle = 0
while True:
if pygame.event.get(pygame.QUIT): break
pygame.event.get()
mouseX, mouseY = pygame.mouse.get_pos()
rect = surf.get_rect(center=(92, 92))
target_angle = math.degrees(math.atan2(mouseY - rect.centery, mouseX - rect.centerx))
if target_angle < -120:
target_angle = -120
if target_angle > 120:
target_angle = 120
print target_angle
if current_angle > target_angle:
current_angle -= 0.03
if current_angle < target_angle:
current_angle += 0.03
screen.fill((40, 140, 40))
screen.blit(rot_center(surf, -current_angle), rect)
pygame.display.update()
备注:使用'pygame.time.Clock'来限制帧率,否则Pygame渲染尽可能多的帧。在main while循环创建一个时钟实例'clock = pygame.time.Clock()'之前,并在循环结束时调用'clock.tick(enter_desired_framerate_here)'。 – skrx
在上面的代码中使用时钟的相关性是什么?它会减慢代码的速度,但小增量值无论如何都会这样做。 – emorphus
如果你不使用时钟,Pygame会占用更多的处理能力,而动画运行速度会比较慢,而CPU占用率则更低。 – skrx