【问题标题】:Pygame images move with rotationPygame 图像随旋转移动
【发布时间】:2014-04-18 04:42:28
【问题描述】:

我仍然遇到旋转问题(请参阅我之前的问题),因此为了解决这些问题,我将问题从我的游戏上下文中解脱出来,看看我是否可以让它旋转而不会混淆我正在尝试的所有其他事情去做。 我现在遇到的问题是图像会旋转,但它也会同时飞出屏幕。我没有任何移动命令,它只应该在原地旋转。 为什么会这样?

这是我的代码:

import pygame
import sys

pygame.init()

size = width , height = 400 , 400

screen = pygame.display.set_mode(size)

car = pygame.image.load("Car3.png").convert()
carRect = car.get_rect()
carRect = carRect.move(200 , 200)

running = True

while running:

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
           running = False

    car = pygame.transform.rotozoom(car ,30  , 1)

    screen.blit(car , carRect)
    pygame.display.flip()

pygame.quit()
sys.exit()

注意: 我使用 rotozoom 的原因是我读到图像在旋转时自动调整大小可能会出现问题。

【问题讨论】:

  • 我没有使用Pygame.transform.rotozoom 的个人经验,但是我怀疑它可能围绕 原点而不是表面的原点旋转。如果是这种情况,则曲面将围绕点 (0,0) 在“世界”中的任何位置旋转。尝试暂时将表面对象移动到世界原点,执行旋转缩放操作,然后将其移回。

标签: python rotation pygame


【解决方案1】:

你打算在这里使用这两行来实现什么?

carRect = car.get_rect()
carRect = carRect.move(200 , 200)

为什么在这里调用 Rect.move 函数?

您的问题可能是,blit 是在左上角完成的。我不知道你的图像的尺寸,但它可能是因为左上角在旋转过程中移动而“旋转”出窗口吗?

这里有点晚了,否则我会自己查找文档并给你一个更详细的答案。但在那之前:当旋转图像时,我会通过图像的中心来放置它,而不是通过它的左上角。两种方法都可以,我发现使用中心更容易。

【讨论】:

    猜你喜欢
    • 2016-07-31
    • 1970-01-01
    • 2017-01-05
    • 2013-10-19
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    • 2022-08-07
    • 2018-09-02
    相关资源
    最近更新 更多