我认为标题是不言自明的,但只是为了澄清我试图弄清楚如何判断碰撞发生在哪一侧。
对于更多细节,我正在尝试制作一个类似迷宫的游戏,所以我不能简单地在碰撞时停止所有运动。相反,我需要能够判断碰撞发生在哪一侧,这样我才能阻止那个方向。
任何帮助表示赞赏,如果有更好的方法来解决这个问题,我全力以赴。
我希望这是足够的详细信息,但如果您需要更多信息,请询问,我会进行编辑。提前致谢。
[编辑] @viggity - 不,我没有使用任何特定的游戏引擎,我会发布当前的“检测”代码,但它有点,荒谬,强大。
@Streklin - 我正在使用 this.Paint 事件来绘制表单本身,因为建议我首先这样做以更好地实时绘制。我还使用了一个位置,每次计时器根据我按下的内容(左、右、上、下)滴答作响时都会更新。是的,迷宫是基于瓷砖的。目前它甚至只包含 3 种颜色。我不是一个非常高级的程序员。
@Eric - 绝对是一维游戏。同样,我只有 3 种颜色,线条为黑色,背景为白色,正方形(用户)为绿色。我正在使用带有位图的 DrawImage() 在屏幕上绘图。
[编辑伪代码摘要]
foreach(Wall _wall in wall) if(player.intersectsWith(_wall)) 停止移动;
@JeffH - 我不太确定你在问什么,因为除了我用来尝试让它工作的测试代码之外,这几乎就是所有东西。我唯一遗漏的是 if 语句来检查它是否是 x 轴,以便 x 和 y 可以彼此独立移动。因此,您可以靠着墙壁滑动,而不是因为您碰到墙壁而“卡住”。我没有看到包含这一点的意义,因为问题发生在此之前。