player_rect = Pfront_n.get_rect()
这里“Pfront_n”是一个精灵,我正在获取该精灵的矩形。这是主循环之外的。当在主循环内时,
print(player_rect)
显示当我的玩家移动时,矩形不会跟随。我的球员移动系统是基于速度的系统,如果这有什么区别的话。我怎样才能让矩形留在玩家周围?
接下来,我还有一个类似的问题...
for layer in room2:
r_x = 0
for tile in layer:
if tile == '2':
bat_create()
if tile == '1':
screen.blit(grass, (r_x*40, r_y*40))
if tile != '0':
tile_rects.append(pygame.Rect)
r_x += 1
r_y += 1
在主循环之外,我为
grass
创建了一个矩形,与我为播放器创建的矩形相同。我在上面的代码中使用的方法有多个 grass
块出现在数组预先确定的位置。如何获取每个单独 grass
块的矩形?
与上下文相当不相关的旁注 - 最终目标是使用我的玩家矩形和 grass
矩形,以便我的玩家在击中 grass
时停止。对这些问题中的任何一个的任何帮助都会很棒。谢谢!
类
Sprite
没有方法 get_rect
。可能 Pfront_n
是 Surface
。一个表面没有位置,不是,一个表面在另一个表面上的位置blit
。 get_rect()
返回的 x 和 y 坐标为 (0, 0)。但你可以设置位置。 get_rect
的关键字参数设置为 pygame.Rect
的相应虚拟属性。例如:player_x
,player_y
应该是玩家的位置)
player_rect = Pfront_n.get_rect(topleft = (player_x, player_y))
tile_rects.append(pygame.Rect)
应该做什么? pygame.Rect
是一个类。如果您想将一个 pygame.Rect
对象(代表一个图块)附加到 tile_rects
,那么它必须是:
tile_rects.append(pygame.Rect(r_x*40, r_y*40, 40, 40))