pygame中的负坐标

2 投票
4 回答
3122 浏览
提问于 2025-04-16 01:30

在pygame中,使用负坐标的最佳方法是什么?

目前我有一个表面,它的大小是原始表面的1.5倍,然后所有需要绘制的东西都向上移动了一定的距离(这样负坐标就变成了正坐标),然后再进行绘制。

有没有更简单或者其他的方法可以做到这一点?

4 个回答

0

如果你遇到的是类似于角色扮演游戏(RPG)地图的情况,那里有世界坐标和屏幕坐标的话:你可以使用一个函数来把世界坐标转换成本地坐标,反之亦然。

不过我不太确定你是不是在找矩形(Rect)的属性?

rect.bottomright = (width, height) # bottom right at window corner

如果你想用中心坐标来进行绘制,而不是用左上角的坐标(0,0)的话。

ship.rect.center = (20, 30) # don't need to translate by adding w/2 to topleft

另外可以参考:Rect.move_ip()

0

没有办法把一个表面的起点从0,0移动到其他地方。

你可以自己实现一个绘图类,把所有传入的坐标都转换到这个表面的空间里。

1

一个简单的解决办法是写一个函数,把世界坐标转换成pygame屏幕坐标。

def coord(x,y):
    "Convert world coordinates to pixel coordinates."
    return 320+170*x, 400-170*y

然后在绘制所有世界物体的时候使用这个函数。你可以在这里查看一个完整的例子。

撰写回答