c# - 关于平台游戏 Actor /背景碰撞解决的意见

标签 c# xna collision-detection

想象一下以下场景:我有一个关卡,其物理结构是由一组边界矩形与预渲染位图背景组合而成的。我的 Actor ,包括玩家角色,都有自己的边界矩形。 如果一个 actor 设法卡在关卡 block 内,部分或其他,它需要再次移出,以便它与 block 齐平。

我在 bio break 想出的未经测试的技巧如下:

If an actor's box is found to intersect a level box, determine where the centerpoints of each rect are. If the actor's center is higher than the level box's, move the actor so that the bottom of the actor's rect is flush with the top of the level's rect, and vice versa if it's lower. Then do a similar thing horizontally.

对此有何看法?关于更好方法的建议?

实际上,边界矩形是 XNA BoundingBoxes,它们的 Z 范围从 -1 到 1,但它仍然是 2D 游戏。

最佳答案

你读过N Tutorials吗? ?它们是关于 Separating Axis Theorem 的精彩介绍,并附有小演示。基于碰撞检测和简单的投影响应。 (它们实际上在 N game 中使用,效果很好。)教程涵盖的内容超出您的需要,但它们非常笼统(可扩展到许多其他形状),并开始涉及快速移动物体的问题和其他响应技术。

即使您决定采用比 SAT 实现更简单的方法,这也可能会给您很多好主意。

(当你完成这些之后,如果你想让自己的头脑大开眼界,请尝试查看游戏开发者大会物理教程日的一些演示文稿,包括 realtimecollisiondetection.net publicationsessentialmath.com tutorial slides ,这两本书,和/或从这些网站链接的其他东西。我也强烈推荐 GDC session 本身。虽然我们仍然不需要或特别想要在我们使用的手持游戏平台上的后掠船体上花哨的 GJK,但一些更简单的“配置空间”和闵可夫斯基和与差等概念极大地影响了我对物理学和碰撞检测的看法以及我们如何实现它。)

关于c# - 关于平台游戏 Actor /背景碰撞解决的意见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3056671/

相关文章:

c# - 如何获取xamarin.android中的音乐文件夹路径?

c# - 在 C# 中使用反射创建菜单

c# - 如何翻转内存中的图像?

java - 尝试从 Java 中的方法返回 float[]

c# - .NET Core 添加/注册一个类作为自身到服务集合

c# - 如何在 C# 中从 TKey 获取字典 TValue?

c# - 无法在 XNA4 中加载 spriteFont

c# - XNA - 关于本地(改变)船轴的 3D 旋转 - 我错过了什么?

algorithm - 圆圈碰撞

Java 2D Platformer 多个矩形的碰撞检测