【发布时间】:2021-04-04 00:20:23
【问题描述】:
在过去的几周里,这一直困扰着我。在这段时间里,我一直在网上研究,甚至在 Borders 的计算机部分阅读书籍试图找到答案,但我没有太多运气。
我为横向卷轴视频游戏编写了一个 2D 关卡编辑器。现在我想把它变成一个游戏,我有一个可以跑跳来探索关卡的玩家,类似于“马里奥”。
真正给我带来麻烦的是碰撞响应(不是检测:我已经知道如何判断两个块是否正在碰撞)。以下是我将要说明的一些场景,以便您了解我的问题(阴影块是地面,箭头是玩家的速度矢量,虚线是玩家的投影路径)。
查看此碰撞响应场景图片:
http://dl.dropbox.com/u/12556943/collision_detection.jpg
假设场景 (1) 和 (2) 中的速度向量相等(方向和大小相同)。然而,在场景 (1) 中,玩家正在撞到块的侧面,而在场景 (2) 中,玩家正在降落在块的顶部。这让我得出结论,确定碰撞响应不仅取决于玩家的速度矢量,还取决于玩家与碰撞块的相对位置。这引出了我的第一个问题:知道玩家的速度向量和相对位置,我如何确定玩家从哪个方向(左侧、右侧、顶部或底部)与块碰撞?
我遇到的另一个问题是,如果玩家与同一帧中的多个块发生碰撞,如何确定碰撞响应。例如,假设在场景 (3) 中,玩家同时与这两个块发生碰撞。我假设我将不得不遍历玩家正在碰撞的每个方块,并相应地调整每个方块的反应。总结一下,这是我的第二个问题:如果玩家与多个方块发生碰撞,我该如何处理碰撞响应?
请注意,我从未透露我正在使用的编程语言;这是因为我希望你不知道(虽然不是私人的:])。我对伪代码比查看特定语言的代码更感兴趣。
谢谢!
【问题讨论】:
-
您是否使用基于图块的世界(类似于 2D 马里奥游戏)?你的形象让我相信你是,但我不确定。
-
是的,我有一个二维数组,用于存储关卡中每个块的类型。
标签: 2d collision-detection game-engine