如何知道我的一个子弹精灵是否与我的 enemy/boulder 精灵碰撞? - pygame
How to know if one of my bullet sprites collided with my enemy/boulder sprite? - pygame
我有一款游戏,玩家可以向所有 4 个方向发射子弹。当我的任何一个子弹精灵碰到它时,我想删除我的 boulder/enemy 精灵。我该怎么做?
相关代码-
子弹精灵:
class Bullet(pygame.sprite.Sprite):
def __init__(self, bulletdir1):
super().__init__()
self.bulletdir = bulletdir1
self.image = pygame.Surface((30, 10))
self.image.fill((195, 222, 18))
if self.bulletdir == "N" or self.bulletdir == "S":
self.image = pygame.transform.rotate(self.image, 90)
else:
pass
self.rect = self.image.get_rect(
center=(playerpos.x + 53, playerpos.y + 27))
def update(self):
if self.bulletdir == "N":
self.rect.y -= 10
if self.bulletdir == "S":
self.rect.y += 10
if self.bulletdir == "W":
self.rect.x -= 10
if self.bulletdir == "E":
self.rect.x += 10
if self.rect.y <= 0 or self.rect.y >= 600 or self.rect.x <= 0 or self.rect.x >= 998:
self.kill()
巨石精灵:
class Boulder(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image= pygame.image.load("PS/boulder.png")
self.rect= self.image.get_rect(center=(100,100))
if self.rect.colliderect()
boulder_grp.add(Boulder())
截至目前,我的屏幕上只有一个静止的巨石,当按下特定键时,子弹精灵 called/made
你有一个boulder_grp
组,我假设你有一个bullet_grp
组。使用 pygame.sprite.groupcollide
并设置 dokill1 和 dokill2 属性来销毁 (_kill) 对象:
您只需拨打 pygame.sprite.groupcollide
:
pygame.sprite.groupcollide(boulder_grp, bullet_grp, True, True)
另见 How do I detect collision in pygame? and 。
我有一款游戏,玩家可以向所有 4 个方向发射子弹。当我的任何一个子弹精灵碰到它时,我想删除我的 boulder/enemy 精灵。我该怎么做?
相关代码-
子弹精灵:
class Bullet(pygame.sprite.Sprite):
def __init__(self, bulletdir1):
super().__init__()
self.bulletdir = bulletdir1
self.image = pygame.Surface((30, 10))
self.image.fill((195, 222, 18))
if self.bulletdir == "N" or self.bulletdir == "S":
self.image = pygame.transform.rotate(self.image, 90)
else:
pass
self.rect = self.image.get_rect(
center=(playerpos.x + 53, playerpos.y + 27))
def update(self):
if self.bulletdir == "N":
self.rect.y -= 10
if self.bulletdir == "S":
self.rect.y += 10
if self.bulletdir == "W":
self.rect.x -= 10
if self.bulletdir == "E":
self.rect.x += 10
if self.rect.y <= 0 or self.rect.y >= 600 or self.rect.x <= 0 or self.rect.x >= 998:
self.kill()
巨石精灵:
class Boulder(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image= pygame.image.load("PS/boulder.png")
self.rect= self.image.get_rect(center=(100,100))
if self.rect.colliderect()
boulder_grp.add(Boulder())
截至目前,我的屏幕上只有一个静止的巨石,当按下特定键时,子弹精灵 called/made
你有一个boulder_grp
组,我假设你有一个bullet_grp
组。使用 pygame.sprite.groupcollide
并设置 dokill1 和 dokill2 属性来销毁 (_kill) 对象:
您只需拨打 pygame.sprite.groupcollide
:
pygame.sprite.groupcollide(boulder_grp, bullet_grp, True, True)
另见 How do I detect collision in pygame? and