自上而下的2d精灵与移动精灵的碰撞处理

本文关键字:精灵 碰撞 处理 移动 自上而下 2d | 更新日期: 2023-09-27 18:22:17

我正在用xna 4.0在c#中制作一个简单的自上而下的2d游戏,我使用的是AABB碰撞检测方法。我绝对是一个编程初学者,所以如果这个问题很基本,我很抱歉。

我想让多个敌人向玩家移动来攻击他,但每当我添加多个敌人时,我都很难管理它们之间的碰撞和处理。我应该如何管理我正在使用的简单矩形相交碰撞?如果碰撞再次发生,我试着将敌人设置到以前的位置,但这做了很多奇怪的事情。

谢谢你的帮助!

自上而下的2d精灵与移动精灵的碰撞处理

在处理多个职位时,前一职位通常不会起到最好的作用,因为即使是"前一职位"也可能开始变得无效。

相反,您可以考虑将一个对象推到碰撞对象之外。

这篇文章是在OpenTK中发表的,它不是基于XNA的,但非常相似,应该很容易适应:

http://www.opentk.com/node/869

将AABB从另一个AABB的方式中推出需要最少的翻译。这必须在多个过程中完成,以确保没有两个对象发生碰撞。然而,从技术上讲,例如,如果你已经使用了玩家,你就不需要检查敌人与玩家的对比。相反,你可以更通用地处理这个问题,使用一种算法来遍历所有需要比较的AABB,并知道哪些已经进行了比较。这部分可以进入优化阶段。

也要注意秩序;这就是你对碰撞优先级的控制发挥作用的地方。当你的玩家的AABB与另一个发生碰撞时,你宁愿你的玩家先被"推"还是被敌人"推"?这些细节可以由您在实现中决定。

为什么不使用自动处理碰撞(和其他物理)的Farseer物理引擎?Farseer物理引擎是一个具有真实物理响应的碰撞检测系统。

Farseer可以处理每一次碰撞,你可以专注于你的游戏设计!(不要重新发明轮子:)

这是一个开源项目,应用广泛!有很多样品

您可以从下载http://farseerphysics.codeplex.com/