2016-12-03 8 views
2

私は、pygameでクラスを作成してスプライトオブジェクトを作成しています。回転させたいと思います。画像とうまく動作し、問題なく回転します。しかし、プレーンカラーでサーフェスを回転させると、ボックスは拡大して縮小するように見えます。これは、内部の四角形の頂点に合わせてサーフェスがサイズ変更された結果であることがわかりますが、どのように停止しますか?私は視覚的な回転を見たいと思います。pygameのサーフェスをその形状を変えずに回転する方法

私が直面している問題を示すためのサンプルコードを作成しました。実行すると、ボックスのサイズが単純に変更されます。

import sys, pygame 
from pygame.locals import * 

pygame.init() 
SCREEN = pygame.display.set_mode((200, 200)) 
CLOCK = pygame.time.Clock() 

surface = pygame.Surface((50 , 50)) 
surface.fill((0, 0, 0)) 
rotated_surface = surface 
rect = surface.get_rect() 
angle = 0 

while True: 
    for event in pygame.event.get(): 
     if event.type == QUIT: 
      pygame.quit() 
      sys.exit() 

    SCREEN.fill((255, 255, 255)) 
    angle += 5 
    rotated_surface = pygame.transform.rotate(surface, angle) 
    rect = rotated_surface.get_rect(center = (100, 100)) 
    SCREEN.blit(rotated_surface, (rect.x, rect.y)) 

    pygame.display.update() 
    CLOCK.tick(30) 

サーフェスをどのように回転させるにはどうすればよいですか?

助けていただけたら幸いです!

答えて

4

作成したサーフェイスオブジェクトは、透明度情報を使用する方法で表示面にスタンプするために作成する必要があります(つまり、アルファチャンネルが必要です)。

surface = pygame.Surface((50 , 50)) 

で:

surface = pygame.Surface((50 , 50), pygame.SRCALPHA) 

をし、それが動作するはずです -

はそれを行うには、あなたの表面のオブジェクトを作成するときに適切なフラグを渡すだけの問題であるだけで、これを交換してください。

関連する問題