Java游戏中的边界,How do“;“专业人士”;怎么办?

Java游戏中的边界,How do“;“专业人士”;怎么办?,java,boundary,2d-games,Java,Boundary,2d Games,专业人士如何在2D游戏中设置边界?我的做法是说我不希望精灵移动到某个区域: //Example if ((playerPosX >= 825) && (playerPosX <= 910)&& (playerPosY >= 170) && (playerPosY <= 255)) { //do nothing }else{ //move } //示例 如果((playerPosX>=825)&&(play

专业人士如何在2D游戏中设置边界?我的做法是说我不希望精灵移动到某个区域:

//Example
if ((playerPosX >= 825) && (playerPosX  <= 910)&& (playerPosY >= 170) && (playerPosY <= 255)) {
    //do nothing
}else{
    //move
}
//示例

如果((playerPosX>=825)&&(playerPosX=170)&&(playerPosY我想到两种可能性

  • 首先用多边形描述阻塞区域,并在polygone中进行点测试,以确定精灵是否可以移动到此位置

  • 第二,就像在图像处理程序中一样,创建某种遮罩(层),其中零位表示可以移动的位置,一位表示被阻挡区域。这可以扩展到指定的深度。请参见部分隐藏精灵

编辑:


假设所有变量都是int,掩码是2d int数组。

这取决于游戏

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

许多游戏实际上会结合使用上述内容:例如,固定场景的BSP树和物理子系统管理的动态对象的四叉树。

这实际上是一个设计问题,而不是其他任何问题。@fge所以这都是你设计它的方式。那么,设计一个2D程序来实现它的最佳方式是什么呢更容易建立边界?Christer Ericson的实时碰撞检测是2d和3d碰撞检测的一个很好的概述。你是说,我想我在口袋妖怪身上看到了这一点,但是每个25x25正方形都有一个值,精灵只能在值为0的情况下移动到该点,但是如果值为1,它就不能移动,等等?我该怎么做?所以我不知道uld必须为整个棋盘/竞技场/地图创建一个遮罩,并在每次移动时进行检查?@exike如果您已经有一个棋盘(25x25),它描述了在每个棋盘位置放置的图像(或纹理),您不需要遮罩。只需检查棋盘[y][x]我没有一个板,它是25x35,它只是我在图形面板上画一个图像,所以我想使用我们的面具想法,每5 x,Y分配值,因为我的精灵移动5。因此,我可以为移动0和不可移动的1分配。你认为这能起作用吗?@ Exikle考虑一个小的块100x4像素/单位,如果你的位置是RIGH。如果你一步一步走5步,你需要测试你当前位置和下一个位置之间的所有位置都是“可移动的”。那么它会起作用。口袋妖怪会属于哪一类,因为我想做一个运动类似的游戏。非常确定的是,口袋妖怪是基于网格的。很多2D g艾姆斯是!
if ( mask[ nextY ][ nextX ] == 0 ) {
   currX = nextX;
   currY = nextY;
}