我最近重新创建一个版本的月球着陆器在Python 3和pygame的(要知道,老复古游戏):我的着陆器移动(rect.move)一起由于重力的y轴每一帧\。
rect.move
问题: 在我达到1 m / s之前,添加到rect.move的y值是一个小于1的浮点数int(),因为pygame不喜欢浮点数,所以我必须使用它对它进行四舍五入。 在Tkinter的先前版本中,着陆器的y坐标是这样的:
int()
0.01 0.02 ... 0.765 1.03 1.45 ...
在pygame中
0 0 0 ... 1 1 1 2 2 ...
这真的很烦人,因为运动并不流畅。有人知道如何解决吗?像,输入浮点到rect.move?提前致谢!
由于pygame.Rect应该代表屏幕上的某个区域,因此pygame.Rect对象只能存储整数数据:
pygame.Rect
Rect对象的坐标都是整数。[…]
如果要以浮点精度存储对象位置,则必须将对象的位置存储在单独的变量或属性中,并进行pygame.Rect对象同步。round坐标并将其分配给.topleft矩形的位置(例如):
round
.topleft
x, y = # floating point coordinates rect.topleft = round(x), round(y)