我们正在制作2D侧滚动游戏,游戏中的项目将成为火炬。我们有一个手臂可以旋转的球员,我们可以采取手臂角度。我们正在寻找具有三角形梁的形状,遵循手臂的角度。我们有一些想法,比如在整个屏幕上都有一个alpha图像,并根据手臂角度单独从每个像素中删除alpha,但我们认为这会过于强烈。任何想法将不胜感激。 感谢。
答案 0 :(得分:4)
单独更改像素非常慢;它只适用于你使用例如numpy
来操作图像数据,从那时起,大多数工作将在优化的,编译的C代码中完成,而不是在python运行时中完成。
一种简单的方法是使用另一个Surface
来使用不同的渲染模式进行此操作,例如BLEND_RGBA_SUB
。
以下是最小示例:
import pygame
pygame.init()
screen=pygame.display.set_mode((640, 480))
light=pygame.image.load('circle.png')
while True:
for e in pygame.event.get():
if e.type == pygame.QUIT: break
else:
screen.fill(pygame.color.Color('Red'))
for x in xrange(0, 640, 20):
pygame.draw.line(screen, pygame.color.Color('Green'), (x, 0), (x, 480), 3)
filter = pygame.surface.Surface((640, 480))
filter.fill(pygame.color.Color('Grey'))
filter.blit(light, map(lambda x: x-50, pygame.mouse.get_pos()))
screen.blit(filter, (0, 0), special_flags=pygame.BLEND_RGBA_SUB)
pygame.display.flip()
continue
break
<强> circle.png:强>
<强>截图:强>