2012-04-20 89 views
1

即时通讯开发一个java游戏即时尝试使用我的瓦片地图进行碰撞检测,但它不能工作,我不想如何操作。我在角色上做了4个长方形。一个在顶部,底部,左侧和右侧。矩形的宽度都是速度的2倍。Java游戏 - 使用矩形的墙壁碰撞检测

要检查是否矩形在地砖上的矩形相交,我用这个代码

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)); 

会发生什么事是玩家击中当矩形墙壁与速度一样进入墙壁,然后被推回到墙壁之外的速度。这导致角色只要来到墙上并按住键,就会来回移动模糊的动作。

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

上的字符的矩形是这样的:Rectangles

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

感谢

+0

嗯..当弹出墙壁时,为什么不把速度设置为零? – JustJeff 2012-04-20 01:39:29

+0

我该怎么做? – grimrader22 2012-04-20 01:48:30

回答

2

你可能要建模弹性碰撞,讨论here和说明here

+1

这是一个好主意,但我14岁,我不知道什么意思:/ – grimrader22 2012-04-20 01:52:35

+0

我怀疑你应该看看使用游戏API,它会为你做这种类型的东西。它也将有助于解决一般帧速率和图形绘制的(几乎不可避免的)问题。游戏开发是一个非常专业的领域,所以它不会很容易。 – 2012-04-20 01:57:06

+0

是否有任何API知道我应该使用?我已经知道slick2D这看起来不错 – grimrader22 2012-04-20 01:58:56