我正在编程一个平板电脑,并试图检查播放器是否在空中。如果是这样的话,它们会下降直到碰到平台,然后上升直到不再碰到平台(这样它们就不会下沉)。要做到这一点,我要检查玩家的y位置(加上高度)是否大于平台的位置(指整个“平台”级别),但这不起作用:
以下是平台的初始化代码:
class platform(object):
def __init__(self, x, y, size):
self.x = x
self.y = y
self.size = size
我指的是:
def touchGround(self):
while self.hitbox[1] + self.hitbox[3] > platform.y:
self.speedY -= 1
self.y += speedY
def fall(self):
while self.hitbox[1] + self.hitbox[3] < platform.y:
self.speedY += 1
self.y += speedY
touchGround()
但是,我得到一个错误:
AttributeError: type object 'platform' has no attribute 'y'
您需要创建
platform
的实例,以便它具有y
属性。下面是一个简单的例子来说明为什么会出现这种情况:根本没有定义任何值,因此进行任何形式的比较都是不合理的。我们可以用以下方法解决这个问题:
或者,您可以通过定义类变量来修复它:
在您的例子中,我假设您将有多个平台,因此在类级别定义
x
和y
可能没有意义,因为您需要具有不同属性的多个实例另外,有关命名约定,请参见PEP8。这些对于清楚地理解人与人之间的代码非常重要
相关问题 更多 >
编程相关推荐