1

我正在开发一个 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)); 

发生的情况是,当玩家撞到墙壁时,进入墙壁的速度与速度相同,然后被推回墙壁的速度与速度相同。这导致角色在你撞到墙上并按住键时只是来回做一个模糊的动作。

有没有我可以用来解决这个问题的算法?或不同的方法?

角色上的矩形如下所示:矩形

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

谢谢

4

1 回答 1

2

您可能想要对弹性碰撞进行建模此处讨论和说明。

于 2012-04-20T01:46:29.277 回答