Java游戏中的边界,"专业人士"如何做到这一点?

Exi*_*kle 3 java boundary 2d-games

专业人士如何在2D游戏中做界限?我的方式是说我不希望精灵进入某个区域:

//Example
if ((playerPosX >= 825) && (playerPosX  <= 910)&& (playerPosY >= 170) && (playerPosY <= 255)) {
    //do nothing
}else{
    //move
}
Run Code Online (Sandbox Code Playgroud)

但是那里的一些游戏有很多界限,所以我想知道,有没有更简单的方法.我不认为有人会在整个游戏中使用上述方法,只是为了阻止移动.

编辑: 我的问题主要是关于一个你可以四处走动的游戏,类似于口袋妖怪或最终幻想

mik*_*era 7

这取决于游戏.

  • 在基于网格的游戏中,每当精灵移动以检查它是否已移动到"阻塞"区域时,您经常会对网格进行查找.如果是,则检测碰撞和/或执行精灵的一些校正运动.这是简单而有效的,唯一的问题是它限制您在网格结构周围设计关卡/场景.
  • 在具有非常动态环境(例如大量移动小行星)的游戏中,您通常会有一个基于空间分区的碰撞检测系统(例如四叉树),用于检测任意对象之间的碰撞.每个对象通常都有一个边界框.
  • 在由向量定义的复杂但固定几何的游戏中,您可以预先计算BSP树并使用它来快速检测与场景的碰撞.这种技术在3D FPS游戏中很常见,但它也适用于2D.

许多游戏实际上将使用上述的组合:例如,用于固定场景的BSP树和用于由物理子系统管理的动态对象的四叉树.