python - Pygame Breakout 中的 AttributeError
问题描述
我收到此错误:“球”对象没有属性“精灵”
发生错误的部分:
brick_collision_list = pg.sprite.spritecollide(brick, ball, False)
for brick in brick_collision_list:
print("collision")
球和砖类:
class Ball:
def __init__(self):
self.ball_img = pg.image.load("D:/MeineProgramme/Texturen/ball.png")
self.x = 395
self.y = 530
self.speed = [0.12, -0.12]
self.rect = self.ball_img.get_rect()
def bounce(self):
self.speed[0] = -self.speed[0]
self.speed[1] = -0.12
class Brick(pg.sprite.Sprite):
def __init__(self, color, width, height):
super().__init__()
self.image = pg.Surface([width, height])
self.image.fill(BLACK)
self.image.set_colorkey(BLACK)
pg.draw.rect(self.image, color, [0, 0, width, height])
self.rect = self.image.get_rect()
def destroy(self):
pass
请帮助我,我是初学者,不知道出了什么问题
解决方案
sprite.spritecollide
是找到一个pygame.sprite.Sprite
和一个pygame.sprite.Group
精灵的碰撞。要找到 2 个Sprite
之间的碰撞,您必须使用:pygame.sprite.collide_rect
if pygame.sprite.collide_rect(brick, ball):
print("collision")
另外Ball
应该来自pg.sprite.Sprite
:
class Ball(pg.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = pg.image.load("D:/MeineProgramme/Texturen/ball.png")
self.rect = self.image .get_rect(center = (395, 530))
self.speed = [0.12, -0.12]
推荐阅读
- javascript - 如何在没有外部库的情况下在浏览器中发送带有标头的 GET 请求
- oracle-sqldeveloper - 如何防止连接在 SQL Developer 中被重置/强制关闭?
- java - Netty HTTP/2 客户端在连接到 https://http2.golang.org/ 时失败
- html - 在 HTML 中制作两行表头
- c++ - 括号内的标题是否必须始终高于 C++ 的引用标题?
- nuget - NuGet 包在错误的文件夹中寻找依赖项
- html - 将 routerLInk 放在标签上,但标签不可点击 angular 6
- c++ - 根据变量在 Qt UI 中选中/取消选中复选框
- javascript - Bootstrap Modal中的JQuery验证表单在验证后不会提交
- python - 你如何逃避这个while循环?