所以我一直在用精灵和组创建一个游戏。除了一直困扰我的一件事之外,一切都进展顺利。一张图说一千多个字:http: //i.imgur.com/S3fsone.png
如您所见,背景图像显示在十字准线中,就像它应该的那样。然而,这艘船被矩形的白色边缘切断了。十字准线和船都是精灵,其中使用的图像是透明的PNG图像。
我不知道如何删除它。目前我正在试验十字准线,所以考虑到这一点,我将发布相关代码:
#Ship class
class Ship(pygame.sprite.Sprite):
def __init__(self, position):
pygame.sprite.Sprite.__init__(self)
self.imageoriginal = pygame.image.load("ship.png")
self.image = self.imageoriginal
self.rect = self.image.get_rect()
self.rect.center = position
#Crosshair class
class Pointer(pygame.sprite.Sprite):
def __init__(self, image):
super(Pointer, self).__init__()
self.image = image.convert_alpha()
self.rect = self.image.get_rect()
def update(self):
self.rect.center = pygame.mouse.get_pos()
def main():
pygame.init()
#Window and background
window = pygame.display.set_mode((1000, 600), SRCALPHA)
background = pygame.image.load("background.png")
window.blit(background, (0, 0))
#Ship and ship group
ship = Ship((490, 500))
theship = pygame.sprite.Group(ship)
#Crosshair image and group
crosshairimage = pygame.image.load("images\\crosshair.png")
pointer = pygame.sprite.Group()
#Game loop
running = True
while running:
clock.tick(60)
#Cut out from my event loop. Creates the crosshair that follows the mouse
for e in pygame.event.get():
elif e.key == K_4:
pointer.add(Pointer(crosshairimage))
#Update and redraw methods for both
theship.clear(window, background)
theship.update(window)
theship.draw(window)
pointer.clear(window, background)
pointer.update()
pointer.draw(window)
pygame.display.flip()
应该就是这样。十字准线完美地跟随鼠标,它的非红色部分在背景上是透明的。然而,它对其他精灵并不透明,这就是问题的关键所在。其他精灵在其他精灵上移动也会导致此问题。
我可以猜测是精灵中的矩形导致了这种情况,但我不知道如何解决它。尝试使用蒙版,但我有点需要矩形才能移动我的精灵,不是吗?在掩码类中发现不等于“self.rect.center = position”方法。
非常感谢有人能告诉我我能做些什么,这已经很长时间了。