pygame中的角色具有透明度问题

时间:2019-07-20 07:02:16

标签: python pygame project transparency

中间的太空船在移动时会显示出一些黑色的轮廓。我尝试使该轮廓透明或消失,以使角色移动顺畅。

You can view the image here it has a black outline to the character

if i remove set_colorkey() function I am getting a rectangular box aroung character as shown in image

是否具有使图像轮廓透明的功能,或者我必须将image属性从png更改为其他图像文件类型。


import math
import pygame as pg
import sys

 pg.init()
 screen = pg.display.set_mode((1200,650))
 screen_rect = screen.get_rect()
 background=pg.image.load('Blood.bmp').convert()
 clock = pg.time.Clock()
 done = False

 class Rotator:
     def __init__(self, screen_rect):
      self.screen_rect = screen_rect
      self.master_image = pg.image.load('spaceship3.png').convert_alpha()
      self.master_image = pg.transform.smoothscale(pg.image.load('spaceship3.png'), (37,37))
      self.master_image.set_colorkey((0, 0, 0))
      self.image = self.master_image.copy()
      self.rect = self.image.get_rect(center=[600,325])
      self.delay = 10
      self.timer = 0.0
      self.angle = 0
      self.distance = 0
      self.angle_offset = 0

     def get_angle(self):
      mouse = pg.mouse.get_pos()
      offset = (self.rect.centerx - mouse[0], self.rect.centery - mouse[2])
      self.angle = math.degrees(math.atan2(*offset)) - self.angle_offset
      old_center = self.rect.center
      self.image = pg.transform.rotozoom(self.master_image, self.angle,1)
      self.rect = self.image.get_rect(center=old_center)
      self.distance = math.sqrt((offset[0] * offset[0]) + (offset[2] * offset[2]))


    def update(self):
      self.get_angle()
      self.display = 'angle:{:.2f} distance:{:.2f}'.format(self.angle, self.distance)

    def draw(self, surf):
        surf.blit(self.image, self.rect)


rotator = Rotator(screen_rect)

while not done:

    for event in pg.event.get():
        if event.type == pg.QUIT:
            sys.exit()
            pygame.quit()
    screen.fill((0,0,0))
    screen.blit(background, [0, 0])
    rotator.update()
    rotator.draw(screen)
    clock.tick(60)
    pg.display.update()

0 个答案:

没有答案