我搜索碰撞检测主题,但它们都是关于检测本身的。我的问题更多是关于检测过程之前和之后。我正在写我的第一场重要比赛,我想让它尽可能的高效。
游戏的前提是你驾驶一艘船绕着一个竞技场。这一领域将是环境、敌舰和飞弹在太空中飞行和漂浮所提供的各种性质的障碍。对象将能够围绕它们的中心旋转,如果它们是需要的或者想要的话。
我设置测试的想法是让对象以某种方式加载到队列和列表中。然后,游戏将获取队列前面的任何内容,并对列表中的所有内容进行测试。它将首先检查以确保列表中的东西不是它本身(这将为所有时刻的lol生成一个冲突)。接下来,游戏将检查队列中的对象与列表中的对象之间是否存在冲突。如果发生了碰撞,那么它将标记表示它们已经碰撞的对象,并保存一个引用或对象与之发生冲突的任何内容。
例如,如果A与B碰撞,游戏将告诉A运行碰撞函数,B运行碰撞函数,并将A存储到对B的引用中,B将存储对A的引用。
然后,游戏将继续检查队列中对象的碰撞,直到它在列表中运行为止,每次执行上述操作来说明一个对象被多个对象击中或被多个对象击中的原因。
例如,如果A、B和C三个球在同一帧中同时被B和C击中,则A的速度将被B修改,然后由C修改,B和C的速度将由A修正。
这样做是明智的吗?我现在并不担心碰撞的实际检测,有大量的文章或教程,加上我自己解决这个问题的想法。我从来没有遇到过任何谈论前后的事情。我不确定一个队列和列表中有多少东西会开始导致大量负载,从而使游戏慢下来。现在,我的对象都是x,y位置,x,y速度,它们所面对的方向,以及其他一些东西。
现在我想我已经开始闲谈无关的事情了。任何洞察力或智慧都将不胜感激。
发布于 2012-04-27 16:49:44
对于许多游戏开发主题,没有通用的答案,这取决于您的游戏类型,但是在遍历对象时要记住一些事情:
static vs dynamic这样的东西可能会带来很大的好处,拥有100种类型可能会产生一种维护效果--通常不会带来真正的好处。我现在可能忘记了一些其他的技巧,因为这是一个复杂的话题,但我希望它能让你继续前进。
https://stackoverflow.com/questions/10354445
复制相似问题