我一直在试验 Pygame,遇到了一个我找不到答案的问题。在本贴中,展示了我的基本游戏框架。我怎样才能完成我的ballSnapLeft()
定义?
编辑:我不是在寻找要完成的代码,而是在寻找人来解释“矩形”类(?)是如何工作的,以及如何应用它。
Edit2:我尝试使用 x 和 y 坐标来这样做,但我认为有一种更简单的方法可以实际工作,而不是使用蛮力坐标。
myRect.left矩形左侧 X 坐标的 int 值。
myRect.right 矩形右侧 X 坐标的 int 值。
myRect.top 矩形顶部 Y 坐标的 int 值。
myRect.bottom 底部 Y 坐标的 int 值。
因为所有这些属性都返回整数,这可能就是您的代码无法正常工作的原因。
此外,如果您的目标ballSnapLeft()
是将球移动到远离玩家的位置,则ballRect.right = playerRect.left - distance
只会更改矩形的 X 坐标。要使球也在 Y 坐标中移动,您可以执行以下操作
def ballSnapTop():
ballRect.top = playerRect.bottom - distance
执行时是否出现错误ballRect.right = playerRect.left - (0, 1)
?
ballRect.right
和ballRect.left
以及相关的top
, bottom
, width
,height
值是int
类型,不能从它们中添加或减去元组。
您可能想查看pygame.Rect文档,并考虑使用pygame.Rect.move(x,y)
which 将为您移动矩形的坐标。
还值得注意的是,例如,如果您更改 ,myRect.topleft
则相应top
的 、left
、bottom
等值也会更改,以便rect
翻译并保留其大小。