Python 需要帮助实现简单碰撞检测(PYGAME)

Python 需要帮助实现简单碰撞检测(PYGAME),python,windows,pygame,2d,collision,Python,Windows,Pygame,2d,Collision,我是pygame的新手,我正在努力在我的游戏中实现“laserblast”和“tarantula”之间的碰撞检测。我在pygame.org以及其他网站(包括stack overflow)上读过关于Surface和Sprite的各种文档,但不幸的是,我无法理解它们的概念 另外,我想远离课堂,因为我对它们不是很熟悉,我计划在以后的项目中发展我对它们的知识 我经常遇到的错误是 Traceback (most recent call last): File "C:\Python27\jetfight

我是pygame的新手,我正在努力在我的游戏中实现“laserblast”和“tarantula”之间的碰撞检测。我在pygame.org以及其他网站(包括stack overflow)上读过关于Surface和Sprite的各种文档,但不幸的是,我无法理解它们的概念

另外,我想远离课堂,因为我对它们不是很熟悉,我计划在以后的项目中发展我对它们的知识

我经常遇到的错误是

Traceback (most recent call last):
  File "C:\Python27\jetfighterx.py", line 44, in <module>
    if pygame.sprite.collide_rect(laserblast.rect, tarantula.rect):
AttributeError: 'pygame.Surface' object has no attribute 'rect' 

你可能应该仔细阅读pygame课程。可以使用Surface.get_clip()返回可以检查碰撞的矩形。此外,考虑使用Rec.CulrDebug()方法代替SpRITE。使用它,您的代码将

if(laserblast.get_clip().colliderect(tarantula.get_clip()))

就像Thedudxo所说的,你应该考虑为你的游戏元素使用类。

你需要上课。没有它们,代码将非常混乱和复杂。除非你想创建大量变量,否则在没有类的情况下创建子弹和敌人之类的东西是很难实现的。干杯,你的解决方案正是我想要的,但现在我有另一个问题,我希望它打印“碰撞检测”一旦激光尖端与敌人接触,而不是反复打印它,甚至在激光到达敌人之前…你有什么想法我可以解决这个问题吗?另外,我意识到课程很重要,所以我会读更多关于课程的内容。一旦我整理好碰撞检测的内容,顺便说一句,如果不是因为我的低代表性,我会投票支持你的评论haha@thebaldhen杰出的我想你应该能够接受我的回答作为你问题的答案,tho:)
if(laserblast.get_clip().colliderect(tarantula.get_clip()))