当从中取出的精灵移动时,Rect 不会更新位置
Rect won't update position when the sprite it is taken from moves
player_rect = Pfront_n.get_rect()
这里 'Pfront_n' 是一个精灵,我正在为那个精灵获取一个矩形。这是在主循环之外。在主循环中,print(player_rect)
显示当我的播放器移动时,矩形不跟随。我的球员运动系统是基于速度的,如果这有什么不同的话。我怎样才能让 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
块的矩形?
上下文的相当不相关的旁注 - 最终目标是使用我的玩家 rect,并且 grass
rect 所以我的玩家在击中 grass
时停止。对这些问题中的任何一个的任何帮助都会很棒。谢谢!
classSprite
没有方法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
是一个 class。如果你想附加一个 pygame.Rect
对象,它表示 tile_rects
的一个图块,那么它必须是:
tile_rects.append(pygame.Rect(r_x*40, r_y*40, 40, 40))
player_rect = Pfront_n.get_rect()
这里 'Pfront_n' 是一个精灵,我正在为那个精灵获取一个矩形。这是在主循环之外。在主循环中,print(player_rect)
显示当我的播放器移动时,矩形不跟随。我的球员运动系统是基于速度的,如果这有什么不同的话。我怎样才能让 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
块的矩形?
上下文的相当不相关的旁注 - 最终目标是使用我的玩家 rect,并且 grass
rect 所以我的玩家在击中 grass
时停止。对这些问题中的任何一个的任何帮助都会很棒。谢谢!
classSprite
没有方法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
是一个 class。如果你想附加一个 pygame.Rect
对象,它表示 tile_rects
的一个图块,那么它必须是:
tile_rects.append(pygame.Rect(r_x*40, r_y*40, 40, 40))