如何解决Pygame不允许我将float用于rect.move,但是我需要它
我最近在Python 3和Pygame中重新创建了Lunar Lander(旧的复古游戏)版本:由于以下原因,我的着陆器沿y轴每帧移动(̀̀̀ {rect.move
)重力。\
问题:
在我达到1 m / s之前,添加到rect.move的y值是1以下的浮点数。由于pygame不喜欢浮点数,我必须使用int()
对其进行舍入。
在Tkinter的先前版本中,着陆器的y坐标是这样的:
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
对象只能存储整数数据:
Rect对象的坐标都是整数。 [...]
如果要以浮点精度存储对象位置,则必须将对象的位置存储在单独的变量或属性中,并同步pygame.Rect
对象。 round
坐标并将其分配给矩形的位置(例如.topleft
):
x,y = # floating point coordinates
rect.topleft = round(x),round(y)
,
我还没有亲自测试过,所以很抱歉,如果这不起作用,但是我认为python会将数字作为字符串使用,所以不是
int(variable)
您应该float(variable)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。