问题标签 [collision]

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 回答
4533 浏览

c++ - 如何编写优雅的碰撞处理机制?

我有点纠结:假设我正在制作一个简单的 2D 类塞尔达游戏。当两个对象发生碰撞时,每个对象都应该有一个结果动作。然而,当主角与某物发生碰撞时,他的反应完全取决于他所碰撞的物体的类型。如果是怪物,他应该反弹,如果是墙,什么都不应该发生,如果是一个带有缎带的神奇蓝色盒子,他应该治愈,等等(这些只是例子)。

我还应该注意,这两件事都是碰撞的一部分,也就是说,碰撞事件应该同时发生在角色和怪物身上,而不仅仅是其中之一。

你会怎么写这样的代码?我可以想到许多非常不优雅的方法,例如,在全局 WorldObject 类中使用虚函数来识别属性 - 例如,GetObjectType() 函数(返回整数、char*s、将对象标识为 Monster 的任何内容、Box 或 Wall),然后在具有更多属性的类中,比如 Monster,可能会有更多的虚函数,比如 GetSpecies()。

但是,这变得很烦人,并导致碰撞处理程序中的大型级联 switch(或 If)语句

还有使用文件的选项,文件将包含以下内容:

然后代码可以检索属性,而无需虚拟函数将所有内容弄得一团糟。但是,这并不能解决级联 If 问题。

然后可以选择为每种情况提供一个函数,比如 CollideWall()、CollideMonster()、CollideHealingThingy()。这是我个人最不喜欢的(尽管它们都远非讨人喜欢),因为它似乎维护起来最麻烦。

有人可以对这个问题的更优雅的解决方案提供一些见解吗?感谢您的任何帮助!

0 投票
4 回答
3466 浏览

hash - 为 UTF16 中的文件路径寻找一个好的 64 位散列

我有一个 Unicode/ UTF-16 编码路径。路径分隔符是 U+005C '\'。路径是以 null 结尾的根相对 Windows 文件系统路径,例如“\windows\system32\drivers\myDriver32.sys”

我想将此路径散列为64 位无符号整数。它不需要“加密健全的”。哈希应该不区分大小写,但能够处理非 ascii 字母。显然,散列也应该很好地分散。

我有一些想法:

A) 使用 Windows 文件标识符作为“哈希”。在我的情况下,如果文件被移动,我确实希望哈希值发生变化,所以这不是一个选项。

B) 只需对整个字符串使用常规的 sting 散列:散列 += 素数 * 散列 + 代码点。

我确实觉得可以利用路径由“段”(文件夹名和最终文件名)组成的事实。

总结一下需求:

1) 64 位哈希
2) 文件系统路径的良好分布/很少冲突。
3) 高效
4) 不需要安全
5) 不区分大小写

0 投票
1 回答
160 浏览

computer-science - 如何编写哈希码以最大程度地减少冲突?

我知道理想的哈希码算法是一个研究领域,但是我可以做些什么明智的事情来最大程度地减少冲突以及它们为什么会起作用?

例如,我见过使用素数的哈希码函数,但我不清楚它的好处是什么......

0 投票
2 回答
391 浏览

silverlight - 移动矩形的碰撞处理

在我的 Silverlight 3 应用程序中,我显示了一棵树。一个自制的用户控件用于树节点,LineArrow 对象用于连接。初始显示树后,我希望节点按以下“物理属性”移动

  • 有一种引力,将节点拉下
  • 有一个力向量到它的父级
  • 是孩子们把它拉到他们中间

自然,我的用户控件很快就会重叠。但我不希望它们重叠。用物理术语来说,我希望它们是固体物体,并强制执行物理规则,即没有两个物体可以居住在同一个空间中。

任何建议如何解决这个问题?我不想为此使用像 farseer 这样的物理引擎,因为所描述的部分是我项目中唯一使用的物理引擎。

提前致谢,
弗兰克

0 投票
4 回答
4330 浏览

algorithm - 滑动 AABB 碰撞 - 卡在边缘

我正在开发基于 3D 瓷砖的游戏,并且正在使用 AABB 碰撞检测。对于玩家相交的每个立方体,我找到玩家与立方体相交最少的轴,然后沿着该轴将玩家推出立方体。

根据签入多维数据集的顺序,当沿多个多维数据集的边缘滑动时,这可能会导致问题。我创建了一个应该解释问题的图表:

http://imgur.com/mmK0W.png

  • 箭头 #1 是玩家的尝试移动。其他箭头是碰撞响应。
  • 在左图中,首先测试与右侧立方体的碰撞,导致玩家被推向左侧,然后向上推。(
  • 在右图中,首先测试与左侧立方体的碰撞,导致玩家被向上推,此时玩家不再与另一个立方体相交。(

关于解决此问题的最有效方法的任何想法可能是什么?或者有什么更好的方法来处理碰撞响应?

谢谢你。

0 投票
2 回答
1605 浏览

iphone - 如何在iphone上用cocos2d + Box2d创建带有曲线的关卡?

我想创建一个具有以下级别的游戏:http: //img169.imageshack.us/img169/7294/picdq.png

玩家在关卡中移动“苍蝇”,并且不能与墙壁发生碰撞。我怎样才能创建这样的关卡?

我找到了那个软件: http: //www.sapusmedia.com/levelsvg/

没那么便宜,不知道有没有其他方法可以制作出如上图这样的关卡……?

0 投票
2 回答
1417 浏览

scroll - 用物理学滚动二维世界

我正在写一个带有物理的横向滚动游戏。在动手之前,我开始专注于物理和渲染图形。最初我想保持一切静态(非滚动)。在参考了许多教程后,我最终来到了这里http://www.tonypa.pri.ee/vectors/tut08.html. 这套教程涵盖了简单游戏所需的大部分基本/高级物理。通过遵循本教程,我创建了我的 2d 世界,其中包含三角形、盒子等对象......每个不同的对象顶点都保存为用于计算碰撞、反弹、....... 如果我的响应非常好只要每个可碰撞的物体都是静态的,在 x/y 中施加力就可以完美地工作。现在我正在努力研究如何根据方向(右/左)移动所有矢量,同时更新矢量的新变化以进行碰撞。我对这种翻译如何在基于瓷砖的环境中工作有一些基本的了解。但是对于非基于瓷砖的世界,最佳实践是什么。提前致谢。

0 投票
5 回答
2481 浏览

algorithm - 求解谜题的算法

我正在尝试制作一款游戏,玩家必须在游戏板上从头到尾找到自己的方式。

如您所见,此游戏板包含一堆红色圆形障碍物。为了赢得比赛,玩家必须消除最少数量的障碍。所以我的问题是,我如何以编程方式找出要移除的最少障碍物,以释放路径?自由路径将被视为圆圈之间的空间,圆圈不重叠且不接触。

所以我真正需要的是要删除的最小圆圈数量,我不需要实际路径。是否有捷径可寻?

并且为了补充对这个棋盘的理解,每个圆都有相同的半径,并且受到黑线的限制。

此外,不必沿直线移动。

0 投票
1 回答
87 浏览

iphone - Iphone - CGPointIntersectsRect 碰撞问题?

问题是当玩家与 blackB 碰撞时,玩家不会停下来。它缓慢地继续穿过黑色B。IBAction 与游戏循环一起使用。我需要一种在播放器与 blackB 碰撞时完全冻结播放器的方法。欢迎任何帮助,我是初学者程序员。谢谢!

player 和 blackB 都是 UIImageViews

0 投票
1 回答
685 浏览

c++ - Box2D 矩形碰撞

我正在为我正在制作的游戏使用 Box2D 进行物理处理,我想看看是否有一种方法可以使用 Box2D,以便 a 可以获取一个矩形并查看它是否与另一个矩形发生碰撞,而无需执行任何实际的物理操作。例子:

提前致谢!