0

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()

画像の回転を反転する方法を知りたいです。あなた自身の例を提供することができます。

4

1 に答える 1

1

私の知る限り、画像を回転させる方法は 1 つしかありません。

    pygame.transform.rotate(surface, angle)

公式ドキュメントを確認できます

http://www.pygame.org/docs/ref/transform.html サンプル コードは次のとおりです。

    screen = pygame.display.set_mode((640,480))
    surf = pygame.image.load("/home/image.jpeg").convert()
    while True:
       newsurf = pygame.transform.rotate(surf, -90)
       screen.blit(newsurf, (100,100))
       pygame.display.flip()
       time.sleep(2)

このコードは、2 秒ごとに画像を時計回りに 90 度回転し続けます。お役に立てれば..

于 2013-10-23T03:27:46.030 に答える