【发布时间】:2018-01-13 04:04:16
【问题描述】:
这是我正在制作 2D 迷宫游戏(XNA 4.0)的情况。我发现进行碰撞检测的最佳方法是使用逐像素检测。在互联网上搜索时,我发现人们解释或显示两个碰撞的代码(即鼠标和播放器、播放器和播放器、两个形状)。我想要做的是让这种碰撞检测玩家是否与墙壁碰撞(背景是黑色但迷宫墙壁是白色的)。有人可以解释如何做到这一点,或者用代码给出某种起点。非常感谢。
附:指向网站的链接或与我的问题相关的任何内容也会有所帮助
【问题讨论】:
-
真的需要像素完美碰撞吗?这确实是检查碰撞的资源昂贵的方法。使用矩形-多边形-圆碰撞。
-
这是什么游戏?你怎么走动?那样走动很重要吗?
-
@Steven 这是一个 2D 迷宫游戏(整个迷宫本身就是一个图像)。我使用两个浮点变量 xSpeed、ySpeed 移动,然后使用代码 walkRec.X += xSpeed 行。用户只能在四个方向(左、右、上、下)移动,没有对角线移动。我会说这非常重要。
-
@DavorMlinaric 是的,因为我的 PNG 图像是迷宫,所以我使用的迷宫是生成的,然后我继续使用 piskel 更改颜色以适合我的主题(墙壁是白色的,背景是透明的,游戏画面设置为黑色)。因此,由于玩家总是会与图像发生碰撞,因此不可能进行您所说的碰撞
-
@TaricDF (理论上,不确定是否有内置的 GetPixelColor 纹理函数)而不是检查整个迷宫和对象中每个像素的像素碰撞,您可以检查颜色是否在上方,下方,左侧,对象的右侧是“白色”...如果对象上方 1-2 个像素是白色的,那么就是一堵墙。
标签: c# xna collision-detection