我正在开发一个Java游戏,正在尝试使用我的图块贴图进行碰撞检测,但是我并没有按照我的意愿进行操作。我在角色上制作了4个矩形。一个在顶部,底部,左侧和右侧。矩形均为宽度速度的2倍。

要检查矩形是否与图块上的矩形相交,我使用以下代码

if(LeftSide.intersects(Map.colRect[i])){
            MovingLeft = false;
            x_pos+=vel;

        }


为了定义矩形,我使用以下代码

LeftSide = new Rectangle(x_pos,y_pos+(vel*2),(vel*2),spriteHeight-1-(vel*4));
    RightSide = new Rectangle(x_pos+spriteWidth-1,y_pos+(vel*2),(vel*2),spriteHeight-(vel*4)-1);
    UpSide = new Rectangle(x_pos+(vel*2),y_pos,spriteWidth-(vel*4)-1,(vel*2));
    DownSide = new Rectangle(x_pos+(vel*2),y_pos+spriteHeight-1,spriteWidth-(vel*4)-1,(vel*2));


发生的情况是,玩家击中墙壁,以与速度一样多的速度进入墙壁,然后以一定的速度从墙壁中推出。这样一来,只要您碰到墙壁并按住键,角色就只会来回移动以产生模糊的动作。

我可以使用一种算法来解决此问题吗?或其他方法?

字符上的矩形如下所示:

任何帮助将不胜感激。我真的很想解决这个问题

谢谢

最佳答案

您可能想对弹性碰撞建模,在here中进行了讨论并在here中进行了说明。

09-17 11:09