你好,所以我最近学习了 Java,我正在制作一个基于 2D 瓷砖的游戏。我已经设置了游戏循环和所有基于瓷砖的东西,没有任何问题,但我一直在用头撞墙......这看起来很容易,但我最难过。我希望能够停止四个方向的运动,但它似乎无法正常工作。如果我以这种方式使用它,它将停止上下,但是一旦我添加侧面碰撞,它就会向上移动,因为 x < x 如果有人对此有更好的解决方案甚至算法,请告诉我!谢谢!
这是有关我的设置的更多信息
我有我的主线程午餐我的游戏线程(游戏循环)。游戏循环产生了一个“房间”,这个房间是为我的屏幕管理器准备的。我有一个名为 MapScreen 的类,它扩展了房间这个“房间”包含我的瓷砖数组和一个 Player 类。碰撞是在 MapScreen 中以覆盖房间更新方法的方法处理的,因此主游戏循环会全部更新。播放器时刻在播放器类中的一个方法中控制,我知道我可以将数组的引用传递给播放器,然后只需检查移动是否瓷砖没有被阻塞我已经做了类似的事情,然后我只是想尝试一些新的东西。
这是我当前的代码:
for (int x = 0; x < 50;x++){
for (int y = 0; y < 50; y++){
if (player.rect.intersects(tiles[x][y].rect) && tiles[x][y].blocked == true ){
//Top
if (player.rect.y < tiles[x][y].rect.y){
player.rect.y -= 10;
}
if (player.rect.y > tiles[x][y].rect.y){
player.rect.y += 10;
}
}
}
}
例如,当我尝试在此处添加边(左)时:
if (player.rect.y < tiles[x][y].rect.y){
player.rect.y -= 10;
}
if (player.rect.y > tiles[x][y].rect.y){
player.rect.y += 10;
}
if(player.rect.x < tiles[x][y].rect.x ){
player.rect.x -= 10;
}
上面的代码有点工作然后它只是把它推到顶部。-_-