问题标签 [collision-detection]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
8648 浏览

collision-detection - 如何测试两个移动的二维方向边界框的碰撞?

OBB 具有位置(x,y)、速度(x,y)和方向(矩阵)。鉴于定期更新,OBB 必须相互碰撞,返回被认为成功的移动部分。

我查看了 GPWiki 上的多边形测试 - http://gpwiki.org/index.php/Polygon_Collision - 但它没有考虑移动对象或完全在 OBB 内的对象。

Real Time Collision Detection 一书在第 4 章:包围体中介绍了 3D OBB,但在 3 维中进行测试的方法明显比在 2D 中更复杂。

0 投票
7 回答
18757 浏览

python - 如何为我的弹跳球创建碰撞检测?

我为三个沙滩球在屏幕上弹跳编写了一个动画(在 python 中)。我现在希望它们全部碰撞并能够相互反弹。我真的很感激可以提供的任何帮助。

0 投票
3 回答
1671 浏览

python - 如何反转矩形行进的方向?

我对编程很陌生,因为它只是作为一门学科引入我的学校,我需要一些帮助。我的任务是制作三个球(矩形图像)在屏幕周围弹跳并相互弹开的动画。我的三个球和墙壁的反弹都很好,但我不知道如何让它们相互反弹。任何帮助将不胜感激,我当前的代码如下:

0 投票
3 回答
2861 浏览

c# - C#中的每像素碰撞问题

为了我自己的目的,我正在用 C# 编写一个小型 2d 游戏引擎,除了精灵碰撞检测之外它工作正常。我决定将其设为逐像素检测(对我来说最容易实现),但它并没有按照预期的方式工作。代码在碰撞发生之前很久就检测到它。我已经检查了检测的每个组成部分,但我找不到问题所在。

碰撞检测方法:

图像旋转方法:

像素获取方法:

像素检索方法有效,旋转方法也有效,因此代码可能出错的唯一地方是碰撞检测代码,但我真的不知道问题可能出在哪里。

0 投票
2 回答
968 浏览

collision-detection - Pygame - 不同侧面碰撞问题!


我正在制作一个“Breakout”的 Pygame。
我正在使用碰撞,并且想要一种简单的方法来对一个矩形的不同边产生不同的反弹效果。
我目前对球与球棒的碰撞是这样的:
“点”=球;“蝙蝠”=蝙蝠;所以你们都明白。

我想要与每一侧相互作用的东西,因此可以在球击中球棒一侧时反转球的 self.dx 值,并且仅在击球顶部时反转 self.dy 值。

谢谢!!!:D

0 投票
1 回答
145 浏览

c++ - C++ 中的平铺运动

这就是我现在正在使用的东西

我已经决定让每个精灵都是 32x32,所以碰撞可能更适用

通过 lokiare1,您仍然需要检查与瓷砖的碰撞。进行碰撞的最彻底的方法是检查一个精灵的每个可见像素的位置与每个其他精灵的每个其他像素的位置,然后返回一个指向与之碰撞的精灵的指针。这会很慢。我描述的方法应该是一个缓慢而肮脏的工作碰撞检测。如果我错了,请告诉我我错了。

这是我难以想象的部分(我喜欢在我尝试之前确保事情在我的脑海中运作,这样我不会随意跳到一些东西上)我已经花了几个晚上坐在淋浴间试图想到一种检查是否有东西的方法

我在想一些预设瓷砖 x,y 是实心的东西,所以如果一个实心物体在它前面不要移动,否则移动我在我的帖子中工作>。>

但话又说回来,我怎么能通过问(y+1 ==solid)来缩短代码量,我不知道该怎么做

0 投票
4 回答
2783 浏览

algorithm - 将圆插入 2D 平面的快速碰撞检测

我知道有很多关于碰撞检测的帖子,通常是针对在 2D 平面上移动的精灵,但我的问题略有不同。

我正在将圆圈插入 2D 平面。这些圆具有可变半径。我正在尝试优化我在平面内找到一个随机位置的方法,我可以在其中插入一个新圆圈,而不会与飞机上已经存在的任何其他圆圈发生碰撞。现在我正在使用一种非常“未优化”的方法,它只是在平面内生成一个随机点,然后将其与平面上的所有其他圆圈进行检查。

有没有办法优化这个?对于这个特定的应用程序,平面的边界一次只能容纳 20-25 个圆圈,通常存在 5-10 个。如您所料,当圆圈数接近可以容纳的最大值时,您必须测试许多点才能找到一个有效的点。它变得非常缓慢。

注意:safeDistance 是我要添加到平面的圆的半径。

这是代码:

0 投票
5 回答
11549 浏览

xna - 在连续二维空间中进行避障的基本寻路

我正在编写一个模拟,其中一个生物对象应该能够向环境中的其他任意对象移动,在障碍物周围滑动而不是进行任何智能寻路。我不想让它规划一条路径——只是朝着一个大方向移动,并绕过障碍物。

这是一个 2D 环境(俯视图),每个对象都有一个用于碰撞检测的边界矩形。没有网格,我不是在寻找 A* 解决方案。

我还没有找到任何关于这种“愚蠢的”基于碰撞的寻路的教程,所以我可能没有使用最常用的术语来描述这一点。

关于如何实现这个(或教程链接)的任何建议?

0 投票
3 回答
3511 浏览

objective-c - Ball to Ball Collision - 在碰撞时获得显着的速度

我在 Objective-C 中实现了问题“ Ball to Ball Collision - Detection and Handling ”中的代码。然而,每当球以一定角度碰撞时,它们的速度就会急剧增加。所有的向量数学都是使用cocos2d-iphone完成的,头文件为 CGPointExtension.h。这种不希望的加速的原因是什么?

下面是一个提高速度的例子:

输入:
质量 == 12.56637
速度.x == 1.73199439 速度.y
== -10.5695238

ball.mass == 12.56637
ball.velocity.x == 6.04341078
ball.velocity.y == 14.2686739

输出:
质量 == 12.56637
速度.x == 110.004326 速度.y
== -10.5695238

ball.mass == 12.56637
ball.velocity.x == -102.22892
ball.velocity.y == -72.4030228

0 投票
5 回答
8469 浏览

data-structures - 如何细分 2d 游戏世界以获得更好的碰撞检测

我正在开发一款具有相当大的方形 2d 游戏区域的游戏。游戏区没有瓷砖,有边界(没有环绕)。我试图弄清楚如何最好地划分这个世界以提高碰撞检测的性能。我不想检查每个实体是否与所有其他实体发生碰撞,我只想检查附近的实体是否有碰撞和避障。

我对这个游戏世界有一些特别的担忧……

  • 我希望能够同时使用游戏世界中的大量实体。但是,有 % 的实体不会与相同类型的实体发生冲突。例如射弹不会与其他射弹发生碰撞。

  • 我希望能够使用大范围的实体大小。我希望最小的实体和最大的实体之间有很大的尺寸差异。

  • 游戏世界中很少有静态或不动的实体。

我有兴趣使用类似于此处答案中描述的内容:Quadtree vs Red-Black tree for a game in C++?

我担心的是世界的树细分能够如何处理实体中的大尺寸差异?要为较小的实体划分足够多的世界,较大的实体将需要占据大量区域,我担心这将如何影响系统的性能。

我的另一个主要问题是如何正确更新被占用区域的列表。由于有很多移动的实体,而且有一些非常大,似乎将世界划分为跟踪哪些实体占据哪些区域会产生大量开销。

我主要在寻找任何有助于减少碰撞检测和避障计算的好算法或想法。