PyGame 与 Tile 渲染地图发生碰撞?

发布于 2025-01-07 10:22:46 字数 434 浏览 0 评论 0原文

我的图块渲染器遇到问题,它会遍历文本文件并查找字符,然后将它们转换为矩形。我的问题是,只有最近的图块/矩形才会被计算为碰撞。

我的问题的视频: http://youtu.be/7wAHp-vgrLU

我的代码工作原理如下:

wall = pygame.draw.rect(screen, (40,40,40), (current_tile_x,current_tile_y,tile_size,tile_size), 0)
if wall.colliderect(collision) == 1:
print "Collision!"

玩家的矩形被定义为碰撞。我认为的问题是,对于每块墙砖,var 墙都会被覆盖,那么我将如何解决这个问题呢?

I'm having problems with my tile renderer, which goes through a text file and finds characters, converting them into rects. My problem is that only the most recent tile / rect is counted for collisions.

A video of my problem: http://youtu.be/7wAHp-vgrLU

My code works like this:

wall = pygame.draw.rect(screen, (40,40,40), (current_tile_x,current_tile_y,tile_size,tile_size), 0)
if wall.colliderect(collision) == 1:
print "Collision!"

The player's rect is defined as collision. The problem I think is that for every wall tile, the var wall gets overwritten, so how would I go about fixing this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

掩耳倾听 2025-01-14 10:22:46

您刚刚回答自己,您应该使用所有要测试的矩形进行迭代:

 #load all the rects in one list for example
 walls = get_wall_list() #returns a list [rect0,rect1,rectn]
 for wall in walls:
   if wall.colliderect(collision): #'if True == 1:' works as the same 'if True:'
     print "Collision!"

You just answered yourself, you should make a iterable with all rects to be tested:

 #load all the rects in one list for example
 walls = get_wall_list() #returns a list [rect0,rect1,rectn]
 for wall in walls:
   if wall.colliderect(collision): #'if True == 1:' works as the same 'if True:'
     print "Collision!"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文