【问题标题】:Change the position of the origin in PyGame coordinate system改变 PyGame 坐标系中原点的位置
【发布时间】:2020-02-23 03:58:24
【问题描述】:

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

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

【问题讨论】:

    标签: python coordinates pygame


    【解决方案1】:

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

    def to_pygame(coords, height):
        """Convert coordinates into pygame coordinates (lower-left => top left)."""
        return (coords[0], height - coords[1])
    

    这将获取您的坐标并将它们转换为 pygame 的绘图坐标,给定窗口的高度 height 和对象的左上角 coords

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

    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)
    

    【讨论】:

      【解决方案2】:

      如果您尝试渲染的对象是垂直对称的(如矩形),您只需翻转屏幕以使坐标系位于左下角,如下所示:

      display_surface = pygame.display.get_surface()
      display_surface.blit(pygame.transform.flip(display_surface, False, True), dest=(0, 0))
      

      您可以在水平顶部/右下角做同样的事情。此处记录了重要的方法:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-09
        • 2011-03-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多