2012-04-10 172 views
2

我对这一切都很陌生,但我试图让自己成为一个简单的2D游戏。 我决定做一种迷宫类型的游戏,我正在为此做的是绘制迷宫作为纹理,然后有另一个纹理作为我的角色在这迷宫中移动。简单的二维碰撞检测C++

但是,我非常努力的碰撞检测,使我的角色不只是穿墙而过。我被告知我可以使用glReadPixels来查找背景的颜色,但是每当我尝试这个时,它都会忽略颜色并继续穿过墙壁。

任何人都可以请帮助我,告诉我如何做到这一点,因为我找不到任何有用的东西。 在此先感谢。

回答

1

根据迷宫类型的不同,如果您只有单位长度的垂直和水平墙,您可以在2D数组/矩阵中表示迷宫和当前位置,并根据迷宫矩阵中新位置的内容。

你将不得不做一些翻译/从矩阵坐标和屏幕坐标

优点:

  • 你不需要从屏幕读取
  • 迷宫可大于什么适合屏幕上 - 绘制相关部分只

缺点:

  • 您只能拥有“bolck”类型的地形(例如,垂直/水平墙)
  • ,如果你想添加movign敌人,碰撞检测可太粗(你无法躲避怪物“只是一个头发/像素”)
+0

他们只是垂直和水平壁但它都在一个大质地上。我将如何去创建数组/矩阵并更新它?我对此很不好,我很抱歉。 – user1324894 2012-04-10 19:31:57

+0

我会将大的纹理分解成小的统一大小的瓷砖(例如墙壁,通道,门等),然后根据迷宫矩阵中的值动态地将其分配到屏幕上(例如,矩阵中的值0代表路径可行走,1代表挡墙)。然后,您可以对矩阵进行所有计算,并将迷宫的状态呈现在屏幕上 - 优点是它比一个大质地更灵活。 YOu可以重复使用相同的磁贴,(节省磁盘空间);动态地改变迷宫(例如,关门与开门);等等。 – Attila 2012-04-10 19:39:52

+0

啊我想我已经开始明白你来自哪里,所以它会是一个更小的纹理的正方形阵列,这些纹理都可以放在一起来制作地图?因为我现在正在做的是将其作为一个纹理绘制,并将角色移动到一个方向上,同时将地图朝相反的方向移动以便能够在其周围移动。如果我将它改为瓦片阵列,情况仍然如此吗? – user1324894 2012-04-10 19:51:02