Я пытаюсь создать редактор уровней для игры, которую пишу в Python, используя Pyglet. Я хочу иметь возможность изменять темноту любого блока, который я размещаю. Поэтому я добавил атрибут darkness
в класс Block
. Вот этот класс:
class Block:
def __init__(self, name, image, wall):
self.name = name
self.image = image
self.wall = wall
self.darkness = 0
def set_darkness(self, darkness):
self.darkness = darkness
def draw(self, x, y):
self.image.blit(x, y)
pyglet.graphics.draw(4, GL_QUADS, ('v2i', (x, y, x + block_width, y, x + block_width, y + block_height, x, y + block_width)), ('c4B', (0, 0, 0, self.darkness) * 4))
Я пытаюсь затемнить изображение, рисуя поверх него черный прямоугольник, а затем настраивая прозрачность этого прямоугольника. Однако независимо от того, что я установил для self.darkness
в __init__
, прямоугольник остается полностью непрозрачным. Я попытался включить смешивание цветов с помощью pyglet.gl, добавив этот код в начало моей программы:
from pyglet.gl import *
glEnable(GL_BLEND)
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
Это ничего не изменило. Я также пытался использовать класс SolidColorImagePattern
Пиглета для создания черного прямоугольника с альфа-каналом, установленным на self.darkness
, но это тоже ничего не дало. Как сделать этот прямоугольник прозрачным?