pygame中的负坐标
在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
然后在绘制所有世界物体的时候使用这个函数。你可以在这里查看一个完整的例子。