我正在为本地比赛制作MMORPG游戏,我已经开始在服务器上工作了,我遇到的问题是我想要一种方法来检测每个玩家看到的其他玩家,以便我可以发送有关的信息他们周围的球员对特定球员。
首先,我想到将2d圆形对象附加到Player对象并对数据结构中的每个玩家进行碰撞检查,但是这将是非常高性能的,是否有适合的算法?请帮帮我!
答案 0 :(得分:1)
您可以使用矩形进行手动检查,而不是使用圆形和碰撞检测库,这很好,因为您的屏幕和游戏区域可能是矩形的:
int dist = 100;
if (Math.abs(a.x - b.x) < distX && Math.abs(a.y - b.y) < distY) {
// send player b to player a
您也可以手动检查两点之间的距离,这就像使用圆圈一样,但会消除碰撞检测库的开销。
如果您的玩家移动速度不是很快,您可以每10个刻度执行此检查,而不是每个刻度。