所以我加载了一张图片,然后用它旋转。但是,当我运行该程序时,它只是滑出屏幕。为什么呢?
import pygame, sys
def rotate45(gameObject):
newObject = pygame.transform.rotate(gameObject, 45)
return newObject
def main():
pygame.init()
screen = pygame.display.set_mode((800,600))
Tardis = pygame.image.load("Tardis.bmp")
Tardis.set_colorkey((255, 0, 0))
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
screen.fill( (0,0,0) )
Tardis = rotate45(Tardis)
screen.blit(Tardis, (400,300))
pygame.display.update()
有人可以帮忙吗?如果你需要知道,我的图片是75 x 134。
我是编程新手,但我不知道为什么会这样。
答案 0 :(得分:3)
就像@cmd所说,rotate
转换会改变对象的尺寸。保存原始对象并继续将更改的转换应用于原始对象。以下是一个例子:
import pygame
import sys
import time
def rotate45(gameObject, rotations={}):
r = rotations.get(gameObject,0) + 45
rotations[gameObject] = r
return pygame.transform.rotate(gameObject, r)
def main():
pygame.init()
screen = pygame.display.set_mode((800,600))
Tardis = pygame.image.load("Tardis.bmp")
Tardis.set_colorkey((255, 0, 0))
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
screen.fill( (0,0,0) )
rotatedTardis = rotate45(Tardis)
screen.blit(rotatedTardis, (400,300))
pygame.display.update()
time.sleep(1)
main()
答案 1 :(得分:1)
问题是所有图像都是矩形。如果您开始使用75x134的图像并将其旋转45度,则新的矩形将更大(147x147),因为45度图像需要适合新的矩形。然后这个新的矩形将再次旋转45度并且将需要(207x 207)...等等。最终它将变得如此之大Tardis矩形主要是背景并且原始图像离开屏幕即使左上方是在同一地点。你应该做的就是保留原始图像,只需增加每次需要绘制图像时旋转图像的数量。
...
tardis_angle = 0
while True:
# Events
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
# update game state
tardis_angle = (tardis_angle + 45) % 360
# draw
screen.fill( (0,0,0) )
screen.blit(pygame.transform.rotate(Tardis, tardis_angle), (400,300))
pygame.display.update()