Java 如何修复在碰撞中卡住的对象

Java 如何修复在碰撞中卡住的对象,java,collision-detection,Java,Collision Detection,在我正在制作的一个java游戏中,我有一个玩家和一块墙砖。当玩家向前移动时,它会检查是否与此代码中的墙发生碰撞: player.moveForward2(playerSpeed); //moves player forward for (int i = 1; i <=100; i++) { for (int j = 1; j <=50; j++) { map1.map[(int) (i-1)][(int) (j-1)].getRect

在我正在制作的一个java游戏中,我有一个玩家和一块墙砖。当玩家向前移动时,它会检查是否与此代码中的墙发生碰撞:

player.moveForward2(playerSpeed); //moves player forward
            
for (int i = 1; i <=100; i++) {
    for (int j = 1; j <=50; j++) {
        map1.map[(int) (i-1)][(int) (j-1)].getRect(); //gets rectangle from object on screen
        player.getRect();
        
        if (player.r.intersects(map1.map[(int) (i-1)][(int) (j-1)].r)) { //checks if player is intersecting rectangle after moving
            if (map1.map[(int) (i-1)][(int) (j-1)].id == 3) { //checks that player isn't able to pass through this tile
                player.moveBackward2(playerSpeed); // moves back if space cannot be moved into
            }
        }
        
    }
}

player.moveForward2(playerSpeed)//向前移动球员

对于(int i=1;i)这里有很多未知数。请分享方法的详细信息,他们正在做什么,以及nit:why you's typecasting
(int)(i-1)
i
j
都已经定义为
int
@roottraveler它首先运行
moveForward2()
player中的方法,该方法更改播放器中存储的坐标,从而影响绘制瓷砖的位置。它对每个瓷砖重复代码的其余部分,首先获取播放器周围的矩形和for循环指定的瓷砖,然后测试矩形是否相交。如果相交,则将播放器移动到opp至于类型转换,这是一个错误,我从以前的方法中复制了循环,但仍然不太清楚。
player.getRect()
它做什么?它返回一些值吗?你能用一个适当的问题陈述来更新吗?这里有很多未知数。请分享他们正在做的方法的详细信息和nit:你为什么打字
(int)(i-1)
i
j
都已定义为
int
@roottraveler,它首先运行
moveForward2()
player中的方法,该方法更改播放器中存储的坐标,从而影响绘制瓷砖的位置。它对每个瓷砖重复代码的其余部分,首先获取播放器周围的矩形和for循环指定的瓷砖,然后测试矩形是否相交。如果相交,则将播放器移动到oppPosite way。至于类型转换,这是一个错误,我从以前的方法复制了循环,它们是必需的。仍然不是很清楚。
player.getRect();
它做什么?它返回一些值吗?你能用正确的问题陈述更新吗?