【发布时间】:2017-07-23 08:23:11
【问题描述】:
我在 android studio 中使用SurfaceView 开发了一个 2d 游戏,
它在碰撞的情况下并不复杂,只需要检查一个移动点和一些静态圆之间的碰撞,为了检测一个圆的碰撞,我只需检查if X of the point is between circle minX and maxX && point Y is between minY and maxY of circle。
所以为了检查整个游戏中的碰撞,我重复检查每一帧中所有圆圈的上述代码。
例如,当我有 10 个圆圈时,游戏运行良好,但如果我添加 30 个圆圈,它的 FPS 会下降很多,我会面临很多延迟!
这个问题我该怎么办?我应该使用 Box 2d 物理吗?它对碰撞检测有什么作用,即使有这么多物体碰撞在一起,游戏也不会面临延迟问题?
请帮我提供更多细节,因为我想知道游戏引擎是如何工作的,并决定制作一个简单的引擎,而不仅仅是想制作和发布游戏(否则我可以使用现成的游戏引擎)。
提前致谢
【问题讨论】:
-
所以你有圆形物体,但它们的碰撞框是矩形?
-
是的,因为我检查了 if(circle.minX 时我得到了滞后
-
你有什么样的地图?或者是什么类型的游戏?是横向卷轴还是类似的东西?
-
不,它是一个简单的游戏,具有恒定的表面(地图),没有可用的滚动。你认为我的算法没有问题,我应该检查我游戏的其他部分吗?不是消耗在每帧中检查上述代码 30 圈吗? @AppPhil
-
@MehDi 您需要创建一个由圆点组成的二进制地图,其中 1 和其他点为零,然后很容易找到一个对象在圆的内部或外部。但是,我实际上并没有理解你的问题,你是想防止物体进入圆圈还是别的什么?
标签: java android collision-detection game-physics physics-engine