当精灵移动时,矩形不会更新位置

问题描述 投票:0回答:1
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
时停止。对这些问题中的任何一个的任何帮助都会很棒。谢谢!

python loops pygame sprite rect
1个回答
1
投票

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))
© www.soinside.com 2019 - 2024. All rights reserved.