矩形碰撞取决于哪一侧?

3

我对这个问题的代码不感兴趣,我只希望得到正确的方向指引。

我正在使用C# XNA。

基本上,对于我的游戏,我正在添加碰撞功能。例如,玩家不能通过石头走或掉落。我有矩形,并且我知道我需要使用.intersects命令来检查碰撞,但是我是否需要根据矩形的哪一面进行碰撞检查呢?

我知道如果玩家正在掉落,我可以在playerRectangle与stoneRectangle相交时让playerY停止下落。

但是如果矩形在玩家的侧面发生碰撞...那就不同了,对吗?


正如Duckett所指出的那样,检查Gamedev会给出很多结果。我对类似问题的回答:http://gamedev.stackexchange.com/questions/15942/2d-platformer-collision-physics-problems/15968#15968 - Elideb
2个回答

3

处理这个问题的一个简单方法是找出主要的渗透轴,即玩家在矩形内部是水平方向还是垂直方向。然后,根据此信息将玩家移动,使其仅接触矩形。

例如,玩家撞墙了,在他的右侧。

主轴是水平的,并且他在矩形中心的左侧,因此我们知道要将他向左移动。


gamedev.stackexchange.com上搜索将给您提供许多不同的碰撞检测/响应选项。


3
如果你的游戏是2D的,我建议使用类似于FarSeer Physics这样的东西,而不是自己实现。
如果你对算法感兴趣,它是开源的,你可以浏览代码来看他们如何实现碰撞检测。

对于非常简单的2D游戏,Farseer可能有点过于复杂了。如果游戏不涉及离散运动(即没有Flashback或波斯王子后代),我仍然建议使用它。并且始终创建一个快速原型来检查Farseer是否增加了太多的复杂性。 - Elideb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接