Image showing rectangles used for collisions.
我正在制作一个街机风格的游戏,其中涉及移动屏幕上的精灵。由于游戏中的墙壁是背景图像的一部分,我设置了矩形以测试精灵何时与墙壁碰撞(例如阻止它移动)。但是我想知道是否有一种方法可以让玩家看不到或看不到矩形(但仍然使用它们进行碰撞)。我刚刚使用pygame.draw.rect()函数来创建矩形:
zone1rect = pygame.draw.rect(SURF, (0,0,0), (200, 418, 52, 188), 1)
编辑:是否可以在主要表面下创建一个表面来添加这些表面?如果是这样,它仍然允许精灵(在不同的表面上)之间的碰撞?
我不是在问阿罗哈颜色,所以请不要再用另一个问题来解决这个问题。这个问题还谈到了部分透明的矩形,而不是我想知道的。
答案 0 :(得分:1)
你需要pygame.Rect()
每个人都用来保持玩家位置,检查碰撞并在屏幕上显示玩家。
球员位置和大小
player_image = ...
player_rect = pygame.Rect(p_spritex, p_spritey, 30, 40)
检查碰撞
player_rect.colliderect(enemy_rect)
吸引球员
SURF.blit(player_image, player_rect)
您不必使用draw.rect
prect = pygame.draw.rect(SURF, (0,0,0), (p_spritex, p_spritey, 30, 40), 1)
因为它无用
doc:pygame.Rect
教程:Program Arcade Games With Python And Pygame
答案 1 :(得分:-1)
管理让它最终发挥作用,以为我会发布这里以帮助其他人解决同样的问题。
我在"之前设置矩形变量,而True" line(如果你不确定我的意思是它是设置代码在游戏窗口实际打开时运行的行)。然后我把' blit'所有图像都设置在曲面上的部分,一直运行到一个函数中。我将矩形变量设置为全局,并在背景图像之前简单地在此函数中调用它们,它们覆盖了它们:
mocha --require ./testHelper.js '+(test)/**/*Spec.js'
(^表面功能)
正如您所看到的那样,玩家矩形(围绕主精灵)是全局的,并且已经创建了'在这个功能中,仅仅因为坐标根据玩家的动作而变化,所以我不得不稍微区别对待它们。
希望这可以帮助其他任何人解决这个问题,特别是那些不确定alpha颜色等的人:)