您的问题存在于代码的这四行中,您在这四行中检查移动和相应的边界冲突:
class Character():
# Other methods...
def update(self):
# Other if clauses...
if self.moving_up and self.rect.up < self.screen_rect.up:
self.center1 += self.ai_settings.char_speed_factor
if self.moving_down and self.rect.down > 0:
self.center1 -= self.ai_settings.char_speed_factor
# ...
请注意,您正在比较
up
和
down
的属性
Rect
实际上不存在的对象。也许你是说
top
和
bottom
?
此外,代码的逻辑不正确。您正在检查
self.rect.bottom
当它向下移动时大于零,但是,为了正确实现边界碰撞机制,您应该检查它是否小于屏幕的高度(我假定为
self.screen_rect.bottom
)当它向下移动时。反之亦然
self.rect.top
–您应该检查它是否大于零。
已更正
if
声明:
# Replaced .up with .top and .down with .bottom
# Corrected .top and .bottom comparison
if self.moving_up and self.rect.top > 0:
self.center1 -= self.ai_settings.char_speed_factor
if self.moving_down and self.rect.bottom < self.screen_rect.bottom:
self.center1 += self.ai_settings.char_speed_factor