クラスPlayerとスプライトグループMudballGroupの間の衝突を検出する方法についてのチュートリアルに続きます。ステートメントpg.sprite.spritecollide(Player、mudballGroup、False)で衝突を設定すると、エラータイプオブジェクト 'Player'に属性 'rect'がありません。私はPlayerのスプライトのコードをここにrectを次のステートメントで定義しています:self.rect = self.image.get_rect()。なぜこのエラーが出るのか分かりません。もし誰かが助けてくれたらどうぞ。プレイヤーとスプライトグループmudballGroup間のPygameでの衝突検出
class Player(pg.sprite.Sprite):
def __init__(self, game):
pg.sprite.Sprite.__init__(self)
self.game = game
self.walking = False
self.jumping = False
self.current_frame = 0
self.last_update = 0
self.load_images()
self.image = self.girl_standing[0]
#Isn't this my rect attribute for Player?
self.rect = self.image.get_rect()
self.rect.center = (WIDTH/2, HEIGHT/2)
self.pos = vec(WIDTH/2, HEIGHT/2)
self.vel = vec(0, 0)
self.acc = vec(0, 0)
self.screen = pg.display.set_mode((WIDTH, HEIGHT))
self.clock = pg.time.Clock()
def shoot(self):
mudball = MUDBALL(self.rect.centerx, self.rect.centery)
print("SHOOT function")
self.game.all_sprites.add(mudball)
mudballGroup = pg.sprite.Group()
mudballGroup.add(mudball)
# Me attempting collision
hits = pg.sprite.spritecollide(self.player, mudballGroup, False)
if hits:
print("HITS!!!!!!!!", hits)
def hailing(self):
jets = JETS()
print("FLYOVER")
self.game.all_sprites.add(jets)
jetsGroup = pg.sprite.Group()
jetsGroup.add(jets)
class MUDBALL(pg.sprite.Sprite):
def __init__(self, x, y):
pg.sprite.Sprite.__init__(self)
self.image = pg.image.load("SLIMEballGREEN.png")
# self.mudballGroup = pg.sprite.Group()
self.rect = self.image.get_rect()
self.rect.bottom = y
self.rect.centerx = x
self.speedx = -30
def update(self):
self.rect.x += self.speedx
#kill if moves off screen
if self.rect.centerx < 0:
self.kill()
class JETS(pg.sprite.Sprite):
def __init__(self):
pg.sprite.Sprite.__init__(self)
self.image = pg.image.load("JETSscaled.png")
#self.jetsGroup = pg.sprite.Group()
self.rect = self.image.get_rect()
self.rect.x = 1366
self.rect.y = 0
self.speedx = -70
def update(self):
self.rect.x += self.speedx
#kill if moves off screen
if self.rect.x + 848 < 0:
self.kill()
'' Player''はクラスです。あなたは実際にそれを使用するために、そのインスタンスを作成する必要があります。プログラム。 https://learnpythonthehardway.org/book/ex40.html –
を参照してください。Program Arcade Games [クラスとスプライトについての章](http://programarcadegames.com/index.php?chapter=introduction_to_classes&lang=de#section_12 )(12および13)。 – skrx
ここに[完全ではあるが最小限の例](http://stackoverflow.com/help/mcve)を掲載してください。コピー、貼り付け、実行できるコードが必要です。 – skrx