当前位置: 首页 > 知识库问答 >
问题:

libGDX,检测矩形之间的侧面接触(侧面碰撞)

谭京
2023-03-14

我在游戏中使用libGDX库。I用于检测两个矩形之间碰撞检测的用户重叠方法

...
if (r1.overlaps(r2)) collisionTest();
...

我想检测矩形上的触摸侧(顶部、底部、左侧或右侧):

r1 overlap r2 on the left side

谁能给我这个代码,但这需要快速的方法。

谢啦

共有1个答案

钮兴安
2023-03-14

可以使用Intersector类中提供的方法来确定两个矩形是否重叠,如果重叠,则确定重叠的位置。您可以使用此信息来确定它们是否与左侧、右侧、顶部和/或底部重叠。

Rectangle r1 = /*Initialize*/;                             
Rectangle r2 = /*Initialize*/;                             
Rectangle intersection = new Rectangle();                  
Intersector.intersectRectangles(r1, r2, intersection);     
if(intersection.x > r1.x)                                  
    //Intersects with right side                              
if(intersection.y > r1.y)                                  
    //Intersects with top side                                
if(intersection.x + intersection.width < r1.x + r1.width)  
    //Intersects with left side                               
if(intersection.y + intersection.height < r1.y + r1.height)
    //Intersects with bottom side    
 类似资料:
  • 我花了数小时寻找解决方案:我正在用libgdx开发一个自上而下的小游戏(可能这与我使用的引擎有关)。现在我必须在我的角色(圆形)和墙(矩形)之间实现碰撞检测。如果可以滑动,我希望角色在碰撞时沿着墙滑动。让我解释一下: 如果我向上移动45度,我可能会撞到墙的下面、左边或角落。 如果我与左边相撞,我想停止x运动,只向上移动。如果我离开墙壁,那么我想继续向上移动。与下侧相同(停止y运动) 如果我与角落相

  • 我已经在这里呆了2-3周了,我仍然无法进行适当的碰撞检测。我用矩形创建了一个迷宫。我希望我的对象(在矩形中)每当我的对象与任何墙壁碰撞时停止,并能够移动到任何地方(或滑下墙壁)。我的墙壁(矩形)具有负坐标,如下所示: 我目前正在使用SO中发现的重叠方法。以下是我的CollisionManager类中的方法: 我有一个功能可以保存对象所做的所有位置移动。因此,当发生碰撞时,对象会恢复到最后一次移动之

  • 我正在尝试做一个平台游戏,其中没有斜坡。我正在尝试将碰撞检测降下来,但是我在pygame中找不到一种方法来获得哪一边与另一个Sprite发生了碰撞。有没有人能给我一个好的方法来做到这一点,那不是太庞大,但也能很好地工作在我的情况? 下面是我的玩家类: 我已经将它添加到我的player类中,每次播放器更新时我都运行它,并且它工作...差一点。 在平台顶部的碰撞起作用,在侧面的碰撞几乎总是起作用,除非

  • 在我的自上而下游戏中,当我的玩家通过婴儿床时,我该如何让他发生碰撞?我用的是交叉矩形。 这是我的密码 更新方法 在渲染方法中 这是完整的代码 谁能告诉我矩形碰撞检测的正确实现是什么?没有重叠,我是这个框架的新手。致谢和预付款:)

  • 我目前正在开发一款2D无休止跑者,用Swift3编写,并使用Spritekit。 简短的问题: 有没有办法只检查我的角色的矩形物理体右侧的碰撞? 更多信息: 角色运行的平台由拼图块组成,用户在游戏进行时在此基础上进行构建。角色从左到右,相对于背景(从右到左)。 我希望角色在与右侧的棋子相撞时自动跳跃。然而,玩家放在他右边的任何棋子(与角色的Y值相同)都与他下面的棋子属于同一等级。 因此,只要游戏检

  • 这是我检测碰撞的代码,但它只适用于矩形: }