碰撞取决于矩形的边

本文关键字:取决于 碰撞 | 更新日期: 2023-09-27 18:17:16

我对这个问题的代码不感兴趣,我只是想指出正确的方向。

如果有帮助的话,我正在使用c# XNA。

在我的游戏中,我添加了碰撞元素,例如玩家不能行走或穿过石头。我有一个矩形,我知道我使用了。intersects命令,但是我需要根据矩形的边长来检查碰撞吗?

我知道如果玩家正在下落,我可以使如果playerRectangle与stoneRectangle相交playerY = stopFalling.

但是如果矩形在玩家的一侧发生碰撞……那就不一样了,不是吗?

碰撞取决于矩形的边

处理这个问题的一个简单方法是计算出穿透的主轴,即玩家是水平还是垂直进入矩形。然后,使用这些信息,你可以移动玩家,让他们正好碰到矩形。

。玩家撞上了他右边的一堵墙。

主轴是水平的,他在矩形中心的左边,所以我们知道把他移到左边。


搜索gamedev.stackexchange.com会给你很多不同的碰撞检测/响应选项

如果你的游戏是2D的,我建议你使用FarSeer Physics之类的东西,而不是自己执行。

如果你对算法感兴趣,它是开源的,你可以看看代码是如何实现碰撞检测的