0
你会如何改变Pygame中旋转图像/矩形的方向?应用正面和负面的度数值,但似乎只能在整个窗口中旋转一个方向。有没有办法确保旋转方向的改变?改变旋转方向Pygame
也许每5秒改变一次旋转图像的旋转角度,或者如果能够在击中X或Y轴时改变旋转方向。 我在下面添加了一些代码。
只要我指定速度并且有位置子句,它就可以按照我想要的方式切换移动方向,只需要rect.move_ip
即可。不幸的是轮换不是那样的。我在这里添加角度以确保它旋转,但无论我尝试什么,我都无法否定旋转。
def rotate_image(self): #rotate image
orig_rect = self.image.get_rect()
rot_image = pygame.transform.rotate(self.image, self.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
def render(self):
self.screen.fill(self.bg_color)
self.rect.move_ip(0,5) #Y axis movement at 5 px per frame
self.angle += 5 #add 5 anglewhen the rect has not hit one of the window
self.angle %= 360
if self.rect.left < 0 or self.rect.right > self.width:
self.speed[0] = -self.speed[0]
self.angle = -self.angle #tried to invert the angle
self.angle -= 5 #trying to negate the angle rotation
self.angle %= 360
self.screen.blit(self.rotate_image(),self.rect)
pygame.display.flip()
我真的想知道如何反转一个图像的旋转。你可以提供你自己的例子。
pygame.transform.rotate()的[documentation](http://www.pygame.org/docs/ref/transform.html#pygame.transform.rotate)明确指出“未经过滤的逆时针旋转,角度参数表示度数,可以是任何浮点值,负角度量将顺时针旋转”...所以你说这是不正确的? – martineau
您不需要以不同方式处理顺时针和逆时针旋转。假设你想每次迭代旋转图像'self.delta_angle'度。使用'self.angle =(self.angle + self.delta_angle)%360',接着是'rot_image = pygame.transform.rotate(self.image,self.angle)'。如果self.delta_angle> 0,则旋转将逆时针旋转,如果self.delta_angle <0,则旋转将为顺时针。为了反转旋转方向,只需使'self.delta_angle = -self.delta_angle'。 – martineau