问题标签 [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.
c# - 现实世界应用程序中的碰撞
这是我的问题。我正在创建一个游戏,我想知道如何进行碰撞。我有几个案例要分析并找到最佳解决方案。
我会提前说,我没有使用任何第三方物理库,但我会在内部进行。(因为这是一个教育项目,我没有时间表,我想学习)
我有 2 种类型的网格,我必须为它们进行碰撞:
1) 静态网格体(在屏幕上移动,但没有任何动画)
2)蒙皮/骨骼网格(动画)
其实我有这个解决方案(很hacky :|)
首先,我对包含完整网格(在我的情况下为胶囊)的一些边界体积进行了测试,之后:
1)对于静态网格,我将它们手动划分为块(在建模器上),对于每个块,我使用球体/AABB 测试。(工作正常,但是切割每个网格有点混乱:P)(我尝试了一个自动系统将网格划分为平面,但它给出了不好的结果:()
2) 对于动画网格 ATM,我在运行时将网格划分为 x 个块(其中 x 是骨骼数)。每个块都包含该骨骼是主要影响因素的顶点。(有时有效,有时会产生非常糟糕的结果。:|)
请注意,网格的划分是在加载时完成的,而不是每次都完成(否则它会像幻灯片一样运行:D)
这是问题:
对于这两种情况,最明智的想法是什么?有什么材料可以让我学习这些方法吗?(有一些源代码和解释会更好(语言不重要,当我理解算法时,实现很容易))你能论证为什么这个解决方案比其他解决方案更好吗?我听到很多关于 kd-tree、octree 等的讨论。虽然我了解它们的结构,但我想念它们在碰撞检测场景中的实用性。
非常感谢解答!!!
编辑:试图在网上找到一个带有一些解释的 K-Dop 示例。仍然没有找到任何东西。:( 有什么线索吗?我对如何使用其他类型的包围盒等有效地测试 K-Dop 很感兴趣……但是网上的文档似乎非常缺乏。:(
c# - 不同 K 和 Volumes 之间的 K-Dop 碰撞
现在经过一些工作,我终于了解了 KDop 包围体是如何创建的以及碰撞是如何相交的,并且我对它们进行了工作实现。现在问题是另一个。:D
我如何相交(必须有可能,否则没有任何意义)不同 K 值的 2 K-Dop?(显然我们事先知道哪个轴被用来创建那些 2 K-Dop。)
就像我怎样才能使 DOP6 (AABB) 和 DOP14 (AABB + 切角) 相交?还是 DOP14(AABB + 切角)和 DOP26(AABB + 切角 + 切边)?
简单的方法(在具有相同 K 的 KDOP 之间)是
另一个问题是。如何在 KDOP 和说 Sphere 之间进行交集?KDOP 和胶囊?KDOP和OOB?KDOP和AABB?(如果我们知道如何处理不同的 K(因为 AABB 基本上是 DOP6),这应该会更容易)我的意思是在这些简单结构之间进行交集的常用方法是什么?
非常感谢解答!!!
编辑:从网上的一些搜索看来,分离轴是要走的路,但我找不到任何关于如何在 K-DOP 上实现它的详细信息。:P
编辑 2:有人在 KDOP 上实现了分离轴定理吗?:|
flash - 使用盒子碰撞碰撞
我正在尝试使用盒子进行碰撞。我想精确地处理碰撞,所以我正在考虑制作多个小盒子并以这种方式检查碰撞。这可能是一个愚蠢的想法或一个聪明的想法。谁知道,这就是我问你们的原因。如果我这样做会影响游戏的性能,即使盒子是不可见的并且不会在舞台上绘制。
另一个想法是从中心向外绘制对象。像右,左,上和下。我正在创建一个飞行射击游戏,因此飞机的翼展很长。我还可以绘制出机翼跨度和机尾等。
c# - 在屏幕上绘制碰撞
在这里,我们要问另一个问题。
在上一个之后,我终于完成了kDop系统和相关的一切。(kDop 的层次结构树等。)一切正常。
现在我想在屏幕上绘制碰撞以进行调试并查看工作结果。(查看我在特定模式下所做的分层选择是否正常)
对于 AABB/Sphere 没问题,它非常容易创建。问题出在kDOP...
我有 :
轴
(1,0,0)(0,1,0)(0,0,1)(1,1,1)(-1,1,1)(1,-1,1)(1,1, -1)(1,1,0)(1,0,1),(0,1,1),(1,-1,0),(1,0,-1),(0,1,- 1)
和使用轴计算的最小值/最大值。
我如何用这些数据创建一系列多边形(实际上是一个简单的网格)?(我不关心实现,我只是想从理论上理解它,以便我可以实现它)
非常感谢解答!!!
编辑:我可以轻松计算网格的法线,因为我已经有了轴。问题是计算顶点位置...
编辑2:我在网上发现这段代码似乎很有用(或者至少在文档中说它用于创建调试网格),但我不知道如何使用它来查找顶点位置:
编辑 3:我想并且有法线和一个点(原点,我确定飞机经过),我可以构建与操作相关的所有飞机......现在我需要更多......
geometry - 如何检查一个点(int - 坐标)是否在三角形的斜边内
我有一个直角三角形,我想检查给定点是否在该三角形的斜边上。所有点都是纯整数,而不是浮点变量。
(残破的图像,原始位置https://tape.bplaced.net/dl/example2.png
)
编辑: 所有绿色方块都在斜边上,白色方块不在。我知道 x、y、角坐标和要测试的点的坐标。所有坐标都是整数(y 在图中有点偏离,抱歉)。
reflection - XNA 碰撞检测 - Vector2.Reflect - 帮助计算圆形精灵的法线 - C#
我无法思考如何计算二维空间中移动圆的法线。我已经达到了我想计算物体速度(方向速度)的法线的程度,但这就是我的大学代数头脑过热的地方,我正在使用的任何二维圆中心点、半径、速度和位置。
最终,我想使用 Vector2.Reflect 方法从这个练习中获得更真实的物理效果。
提前谢谢。
编辑:添加了一些代码尝试建议(无济于事),可能误解了建议。在这里,我使用篮球和棒球,因此使用了底座和篮筐。我还有位置和速度,它们被添加到位置以创建运动。
c# - XNA C# 2D 平台游戏
我正在尝试在 XNA 中制作(弄清楚如何......)一个 2d 平台游戏。
我知道如何创建平铺网格以及如何执行碰撞检测。我对玩家的 9 个边界图块执行碰撞检测,但我想知道是否有更好的方法来执行碰撞检测。
我读过 Braid 不使用瓷砖,而是使用拼凑的图像或其他东西,你如何对这些进行碰撞检测?这比使用瓷砖更好吗?
math - 是否有一个矩阵数学库可以很好地与 OpenGL 一起使用来跟踪原始坐标以进行碰撞检测
矩阵数学库,可与 OpenGL 一起使用以跟踪原始坐标。
这样的事情存在吗?这是跟踪我的对象以用于碰撞检测的最佳方式吗?
c# - XNA 中基于瓦片的碰撞
我在我的 XNA 游戏中绘制了瓷砖并加载了我的角色。然而,我的角色并没有移动——地图会移动,这让它产生了移动的错觉。现在我想知道如何实际测试它们的碰撞。我的意思是,碰撞代码去哪里了,我如何让所有的瓷砖都代表“一件大事”?
flash - 帮助进行闪光碰撞检测。同时旋转和打击
我想要做的是旋转对象并让它的碰撞盒随之旋转。我希望矩形旋转,使其看起来像钻石,并且它的一侧以每像素的方式撞击对象。从我对一些书籍和网站的阅读来看,正常的矩形碰撞和 hitTestObject 碰撞似乎无法解决这个问题。我搜索了高低,想知道是否有人有解决方案来检测移动和旋转的物体。这是我当前与矩形的碰撞代码
我想要发生的是当它发生碰撞时,机器人会从盒子上弹开。它有效,但只有当它正面撞到它时。我希望它旋转并能够击中。我基本上正在寻找与此等效的闪存。 http://creators.xna.com/en-US/tutorial/collision2dperpixeltransformed
我怎样才能做到这一点?