Python 更改PyGame坐标系中原点的位置

Python 更改PyGame坐标系中原点的位置,python,coordinates,pygame,Python,Coordinates,Pygame,我正在PyGame中使用向量和物理进行一些操作,默认坐标系对我来说很不方便。通常(0,0)点位于左上角,但我希望原点位于左下角。我宁愿改变坐标系,也不愿转换我要画的每一件东西 是否可以更改PyGame中的坐标系以使其像这样工作?不幸的是,PyGame不提供任何此类功能。最简单的方法是使用一个函数来转换坐标,并在绘制任何对象之前使用它 def to_pygame(coords, height): """Convert coordinates into pygame coordinates

我正在PyGame中使用向量和物理进行一些操作,默认坐标系对我来说很不方便。通常
(0,0)
点位于左上角,但我希望原点位于左下角。我宁愿改变坐标系,也不愿转换我要画的每一件东西


是否可以更改PyGame中的坐标系以使其像这样工作?

不幸的是,PyGame不提供任何此类功能。最简单的方法是使用一个函数来转换坐标,并在绘制任何对象之前使用它

def to_pygame(coords, height):
    """Convert coordinates into pygame coordinates (lower-left => top left)."""
    return (coords[0], height - coords[1])
这将获取您的坐标并将其转换为pygame的坐标,以便绘制,给定
高度
、窗口高度和
坐标
、对象的左上角

要使用对象的左下角,可以采用上述公式,然后减去对象的高度:

def to_pygame(coords, height, obj_height):
    """Convert an object's coords into pygame coordinates (lower-left of object => top left in pygame coords)."""
    return (coords[0], height - coords[1] - obj_height)

如果要渲染的对象是垂直对称的(如矩形),则只需翻转屏幕即可将坐标系设置为左下角,如下所示:

display_surface = pygame.display.get_surface()
display_surface.blit(pygame.transform.flip(display_surface, False, True), dest=(0, 0))
您可以在右上/右下水平方向执行相同的操作。此处记录了重要的方法: