0

今日、pygame を使い始めたばかりで、少し問題が発生しました。車の画像を回転させてみたのですが、長方形の部分が画像と完全に一致していないように見えました(写真のように、回転した画像よりも白い部分が大きくなっています)。

画像の見栄えを良くするために、長方形領域の色を透明にするか、背景と同じにすることはできますか?

ありがとう

車のイメージ

こんにちは、これは私の関連するコードです (Richard Jones による「Rapid Game Development in Python」から):

class CarSprite(pygame.sprite.Sprite):
    MAX_FORWARD_SPEED = 10
    MAX_REVERSE_SPEED = 10
    ACCELERATION = 2
    TURN_SPEED = 5

    def __init__(self, image, position):
        pygame.sprite.Sprite.__init__(self)
        self.src_image = pygame.image.load(image)
        self.src_image = self.src_image.convert()
        self.position = position
        self.speed = self.direction = 0
        self.k_left = self.k_right = self.k_down = self.k_up = 0
        self.rect = self.src_image.get_rect()
        self.rect.center = position

    def update(self, deltat):
        # SIMULATION
        self.speed += (self.k_up + self.k_down)
        if self.speed > self.MAX_FORWARD_SPEED:
            self.speed = self.MAX_FORWARD_SPEED
        if self.speed <-self.MAX_REVERSE_SPEED:
            self.speed = -self.MAX_REVERSE_SPEED
        self.direction += (self.k_right + self.k_left)
        x, y = self.position
        rad = self.direction * math.pi / 180
        x += -self.speed*math.sin(rad)
        y += -self.speed*math.cos(rad)
        self.position = (x, y)
        self.image = pygame.transform.rotate(self.src_image, self.direction)
        self.rect = self.image.get_rect()
        self.rect.center = self.position

    def draw(self,screen):
        self.image.set_alpha(150)
        screen.blit(self.image, self.rect)
4

1 に答える 1

1

なぜか画像が見えませんが、欲しいものは

Surface.set_colorkey(Color, flags=0)

背景の色を入力すると、それ(背景)が透明になります。もう 1 つのすばらしい点は、車を回転させる前にカラーキーを設定すると、背景が自動的にカラーキーに設定した色になることです。

ただ気をつけてください。image=image.convert()外部ソースから画像をインポートする場合は、カラーキーを設定する前に必ず行ってください。

于 2012-11-22T18:07:34.050 に答える