如何在pygame中添加一条线为精灵?
我想在我的关卡中添加一个网格,这个网格要跟随地形移动,而不是固定在屏幕上。我想到的办法是把组成网格的所有线条作为精灵(sprite)来添加,并让它们跟着地形一起移动,但我不知道怎么把线条表示成图片。
我自己尝试过,但没有成功。
编辑:这是我尝试过的内容
class Grid():
def __init__(self):
self.grid = pygame.Surface(size)
self.grid.set_colorkey((0,0,0))
def draw(self):
# DRAW TILE LINES ----------------------------------------------------------
grid_x = 0
grid_y = 0
for i in range(total_level_width // TILE_SIZE):
pygame.draw.aaline(self.grid,BLACK,[grid_x,0],[grid_x,total_level_height])
pygame.draw.aaline(self.grid,BLACK,[0,grid_x],[total_level_width,grid_y])
grid_x += TILE_SIZE
grid_y += TILE_SIZE
# tile test
pygame.draw.rect(screen,BLACK,(49*TILE_SIZE,34*TILE_SIZE,TILE_SIZE,TILE_SIZE))
screen.blit(self.grid,(0,0))
创建对象:
grid = Grid()
调用类:(在主程序循环中)
grid.draw()
1 个回答
1
我在做一个项目的时候遇到了类似的问题。我用了下面的代码来在一个表面上画一条线,然后把它显示到我的屏幕上。希望这个整个函数能对你有所帮助。
def blitBoundary(self):
""" helper function to blit boundary on screen """
# create a surface
self.boundSurf=pygame.Surface((1024,768))
self.boundSurf.set_colorkey((0,0,0))
"""
if not self.boundary.closePoly:
(x,y)=pygame.mouse.get_pos()
pointList=self.boundary.pointList +[[x,y]]
else:
pointList=self.boundary.pointList"""
if len(pointList)>1:
pygame.draw.aalines(self.boundSurf, (255,255,255),
self.boundary.closePoly , pointList, 1)
self.screen.blit(self.boundSurf,(0,0))
我当时想画一个多边形。我把那个可能对你没什么用的if语句注释掉了。我的所有线条都是在一个多边形类的对象里。你可能想看看 pygame.draw.aalines
这个函数。