首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置碰撞检测,然后在2D游戏中处理碰撞

设置碰撞检测,然后在2D游戏中处理碰撞
EN

Stack Overflow用户
提问于 2012-04-27 16:28:37
回答 1查看 837关注 0票数 1

我搜索碰撞检测主题,但它们都是关于检测本身的。我的问题更多是关于检测过程之前和之后。我正在写我的第一场重要比赛,我想让它尽可能的高效。

游戏的前提是你驾驶一艘船绕着一个竞技场。这一领域将是环境、敌舰和飞弹在太空中飞行和漂浮所提供的各种性质的障碍。对象将能够围绕它们的中心旋转,如果它们是需要的或者想要的话。

我设置测试的想法是让对象以某种方式加载到队列和列表中。然后,游戏将获取队列前面的任何内容,并对列表中的所有内容进行测试。它将首先检查以确保列表中的东西不是它本身(这将为所有时刻的lol生成一个冲突)。接下来,游戏将检查队列中的对象与列表中的对象之间是否存在冲突。如果发生了碰撞,那么它将标记表示它们已经碰撞的对象,并保存一个引用或对象与之发生冲突的任何内容。

例如,如果A与B碰撞,游戏将告诉A运行碰撞函数,B运行碰撞函数,并将A存储到对B的引用中,B将存储对A的引用。

然后,游戏将继续检查队列中对象的碰撞,直到它在列表中运行为止,每次执行上述操作来说明一个对象被多个对象击中或被多个对象击中的原因。

例如,如果A、B和C三个球在同一帧中同时被B和C击中,则A的速度将被B修改,然后由C修改,B和C的速度将由A修正。

这样做是明智的吗?我现在并不担心碰撞的实际检测,有大量的文章或教程,加上我自己解决这个问题的想法。我从来没有遇到过任何谈论前后的事情。我不确定一个队列和列表中有多少东西会开始导致大量负载,从而使游戏慢下来。现在,我的对象都是x,y位置,x,y速度,它们所面对的方向,以及其他一些东西。

现在我想我已经开始闲谈无关的事情了。任何洞察力或智慧都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2012-04-27 16:49:44

对于许多游戏开发主题,没有通用的答案,这取决于您的游戏类型,但是在遍历对象时要记住一些事情:

  • 试着考虑如何在碰撞检测之后进行实际的反应(您会使用双重分派、访问者、下传/rtti,存储函数映射中可以使用的特征,.)。有多种技术,都有各自的优缺点。您选择的方法可以反映实际遍历的方式。
  • 试图将场景划分为对象类型。例如,如果有许多静态对象永远不会移动,那么相互测试这些对象是很荒谬的,您应该将它们分开。但根据经验,不要过于专注于这一点,像static vs dynamic这样的东西可能会带来很大的好处,拥有100种类型可能会产生一种维护效果--通常不会带来真正的好处。
  • --这可能与你的遮挡机制有关。例如,如果它是基于门户的,那么来自不同单元格的对象就不太可能发生碰撞。

我现在可能忘记了一些其他的技巧,因为这是一个复杂的话题,但我希望它能让你继续前进。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10354445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档