Tag: 碰撞检测

在重叠时,玩家会被卡住libgdx矩形

所以我正在研究碰撞检测代码,我所做的是当用户矩形与不能移动的矩形重叠时,我阻止他们移动。 因此,如果我向右移动,我撞墙,我不能前进。 这很有效。 然而,如果在我撞到那堵墙之后,我想向下或向上移动那个点,我会卡住。 这就是我检查用户是否已经进行了整理的方法 private void checkCollision() { for (int x = 0; x < amount; x++) { if (collsionRect[x].overlaps(user)) { Gdx.app.log(ChromeGame.LOG, "Overlap"); xD = 0; yD = 0; } } } 这就是我移动用户的方式 private void moveUser() { // camera.translate(xD, yD); player.translate(xD, yD); camera.position.set(player.getX(), player.getY(), 0); // Gdx.app.log(ChromeGame.LOG, player.getX() + “,” + player.getY()); user = […]

旋转矩形碰撞检测

我正在创造一个乒乓球比赛。 然而,在我的游戏中,桨叶能够绕其中心旋转。 这些桨由rectangle2D对象表示。 现在,这些矩形应该在它到达时击中球。 球由circle2D对象表示,并且当球击中球拍时(这通过使用矩形的交叉方法完成),球反转方向。 当桨叶未旋转时,这可以正常工作,但是当它们旋转时,交叉方法不起作用。 当我使用这个声明时: paddle2.intersects(xLocation, yLocation, diameter, diameter) (其中paddle2是其中一个矩形的名称,传递给它的参数代表x坐标,y坐标和圆的半径) 圆圈的作用就像矩形没有旋转一样。 也就是说,它将从矩形原始位置反弹。 我应该提一下,我正在使用仿射变换旋转矩形。 这是我用来使矩形显示为旋转的命令: g2.rotate(Math.toRadians(angle), xLocation+(width/2), yLocation+(height/2)); (其中参数是矩形的旋转角度,以及中心的x和y坐标)。 然后,我将我的g2对象的仿射变换重置为常规仿射变换。 我一直在研究这个问题,我已经找到了几个关于这个问题的讨论。 然而,它们似乎超出了我的想象,它们似乎处理矩阵数学(并且作为一个从未学过必要数学的人,我会迷失方向)。 所以,我希望有人可以提供一个简单的解决方案,或者指导我完成所需的数学运算。 谢谢!

libgdx中BoundingBox和Sphere之间的碰撞检测

在我的libgdx游戏中,我有3D BoundingBoxes和Spheres用于地图和玩家对象。 我想计算它们是否相互碰撞,以便正确模拟这些物体的运动。 我可以用什么方法来计算这些物体是否碰撞/交叉?

制作pacman有些问题?

编辑:完全忘了提到我用Java编码 我真的很难制作某种检测系统或某种方式让我的pacman精灵/角色在游戏中顺利通过我的棋盘。 我没有把它作为一张图片。 我曾经尝试过色彩检测,它起到了最好的作用,但根本不光滑而且相当不稳定。 然后我尝试手动输入不允许输入的位置坐标。 这也没有那么好用。 我现在正在尝试让程序使用颜色检测并检查一个单独看不见的板,看看我是否还在路上。 到目前为止,这已经失败了。 它看起来似乎是最聪明的,但角落只是通过调整图像而难以修复。 我想知道你们会为这样的任务建议什么样的方法。

2D游戏中碰撞的高效算法?

我正在按照教程编写一个用Java编写的炸弹人 (这是我的第一个游戏)。 本教程建议使用以下代码来检测冲突。 for (int p=0; p<entities.size(); p++) { for (int s=p+1; s<entities.size(); s++) { Entity me = (Entity) entities.get(p); Entity him = (Entity) entities.get(s); if (me.collidesWith(him)) { me.collidedWith(him); him.collidedWith(me); } } 到目前为止, 实体是一个包含敌人和玩家的数组列表。 由于我还想检测玩家与墙壁发生碰撞,我是否应该将每个墙壁或砖块放入实体arraylist中? 如果是这样,这个算法效率不高吗? 这些瓷砖不会与其他瓷砖碰撞,所以我想在不同的列表中管理游戏实体。 你有什么建议? 有没有更有效的算法呢? 注意:我已经阅读了与2D游戏中的碰撞有关的其他问题。 非常感谢。

2d球没有正确碰撞

我只是想编写一个漂亮的物理游戏。 球碰撞看起来不错,但如果球碰撞得太慢,它们会互相“粘”。 我不知道他们为什么这样做。 这是我的碰撞function: private void checkForCollision(ArrayList balls) { for (int i = 0; i < balls.size(); i++) { Ball ball = balls.get(i); if (ball != this && ball.intersects(this)) { this.collide(ball, false); } } } public boolean intersects(Ball b) { double dx = Math.abs(b.posX – posX); double dy = Math.abs(b.posY – posY); double d = […]

LibGDX – 正确使用Polygon类

我创建了Polygon对象来包裹我的飞机(飞机的TextureRegion大小是256×74,但是这个游戏的大小是70×20)。 所以: TextureRegion[] texRegsAirplane = TextureRegion.split(textureAirplane, 256, 74); Rectangle bounds = new Rectangle(0, 0, 70, 20); Polygon polygon = new Polygon(new float[]{0,0,bounds.width,0,bounds.width,bounds.height,0,bounds.height,0,0}); 在我的updatefunction之后,我update它的位置: public void update(float delta){ Vector2 v = getPosition(); v.add(velocity); polygon.setPosition(vx, vy); } 然后我渲染多边形以了解它的位置: public void render(SpriteBatch spriteBatch, float pixelPerUnitX, float pixelPerUnitY){ spriteBatch.draw(testTexture,polygon.getX()*pixelPerUnitX, polygon.getY()*pixelPerUnitY, polygon.getBoundingRectangle().width*pixelPerUnitX,polygon.getBoundingRectangle().height*pixelPerUnitY); } 最后,我创建了2架飞机,让它们相互飞行,每次迭代我都会尝试检测碰撞,如下所示: public void detectCollision(){ for(Airplane airplane1 : […]

Java游戏中的碰撞检测?

我正在开发一种游戏,其中我有运动图像的碰撞检测问题。 游戏中有一个宇宙飞船和数量的小行星(障碍物)。 我想检测它们之间的碰撞。 我怎样才能做到这一点?

开源,纯Java物理/动态库

我正在寻找一个轻量级的纯Java物理引擎来进行机器人运动控制的模拟。 我的要求: 刚体物理学 联合约束和力量 凸面物体碰撞检测 轻量级,纯Java,因此可以嵌入我的应用程序中 能够快速运行模拟 舒适地处理50-100个物体 开源 您是否可以推荐任何适合该法案的现有图书馆,而不是重新发明轮子? ps我已经使用Google搜索了 – 我只是希望得到那些已经使用或实施过此类内容的人的诚实意见!

我在屏幕上绘制了两个正方形,如何检测两个对象边缘的碰撞?

现在,我可以比较X和Y来检查碰撞,但这只是两个物体在完全相同的X和Y位置上正好穿过彼此。 由于缺乏更好的术语,我需要更准确地检查碰撞,检查撇渣。 我有X,Y,X和Y标度的变量以及X和Y的速度。非常感谢任何帮助:D 编辑:广场!