我想检查精灵组中的哪些对象与另一个对象发生碰撞,然后在该位置创建一个新的精灵(如爆炸)。
在一个while循环中,我移动对象然后检查碰撞。
if not game_over:
move_coins()
move_pointer()
if pygame.sprite.spritecollideany(pointer, coin_group):
print_text(pygame.font.Font(None,16), 0, 0, "Collision!")
check_collision()
这里的碰撞是成功的,因为它将文本打印到屏幕上。然后它继续检查_collision()。
def check_collision():
for coin in coin_group:
if pygame.sprite.collide_rect(coin, pointer):
create_newcoin()
def create_newcoin():
bcoin = Coin()
bcoin.load("coin1s.png", 32, 32, 1)
bcoin.position = 0,0
collected_group.add(bcoin)
create_newcoin() 函数在 check_collision() 之外正常工作,但是当它通过这个循环运行时,我得到一个属性错误。
Coin() has no attribute 'image'
谁能解释我为什么会收到此错误以及我需要做些什么来解决它?如有必要,我可以提供更多代码,但我认为我已将其范围缩小到导致错误的这一部分。谢谢。
嗯,我只会粘贴我正在使用的代码。 http://pastebin.com/TuAZxUkq和http://pastebin.com/kmYytiYV
和错误:
Traceback (most recent call last):
File "C:\Users\User\Desktop\Coins!\Coins!.py", line 129, in <module>
collected_group.draw(screen)
File "C:\Python32\lib\site-packages\pygame\sprite.py", line 475, in draw
self.spritedict[spr] = surface_blit(spr.image, spr.rect)
AttributeError: 'Coin' object has no attribute 'image'