小编典典

Pygame不允许我将float用于rect.move,但我需要它

python

我最近重新创建一个版本的月球着陆器在Python
3和pygame的(要知道,老复古游戏):我的着陆器移动(rect.move)一起由于重力的y轴每一帧\。

问题:
在我达到1 m /
s之前,添加到rect.move的y值是一个小于1的浮点数int(),因为pygame不喜欢浮点数,所以我必须使用它对它进行四舍五入。
在Tkinter的先前版本中,着陆器的y坐标是这样的:

0.01
0.02
...
0.765
1.03
1.45
...

在pygame中

0
0
0
...
1
1
1
2
2
...

这真的很烦人,因为运动并不流畅。有人知道如何解决吗?像,输入浮点到rect.move?提前致谢!


阅读 263

收藏
2020-12-20

共1个答案

小编典典

由于pygame.Rect应该代表屏幕上的某个区域,因此pygame.Rect对象只能存储整数数据:

Rect对象的坐标都是整数。[…]

如果要以浮点精度存储对象位置,则必须将对象的位置存储在单独的变量或属性中,并进行pygame.Rect对象同步。round坐标并将其分配给.topleft矩形的位置(例如):

x, y = # floating point coordinates
rect.topleft = round(x), round(y)
2020-12-20