【问题标题】:Collision Detection in Flash Functionalities? (hitTestObject)Flash 功能中的碰撞检测? (命中测试对象)
【发布时间】:2014-01-11 23:02:26
【问题描述】:
  • 你好,所以我最近一直在使用hitTestObject 来检测我正在制作的安卓应用程序中的碰撞。经过一番测试,我意识到游戏正在检测“假”碰撞。我的意思是,当对象的像素接触时,它会检测到碰撞不是,但是(经过一些研究后)我发现 boxes 发生碰撞的对象。所以我让游戏因碰撞而停止,这就是它的样子:

为了清楚起见,我尝试勾勒出两个对象的框。正如你所看到的,他们的盒子很感人。有没有办法让它检测到像素何时发生碰撞?

  • 我认为网上会有一些东西,但我不知道是什么。游戏是通过动作窗口编程的,不是类文件,所以没有包,也没有类,任何需要类才能工作的在线碰撞检测“功能”,可能在这里不起作用。

无论如何: 在 actionscript-3 中是否有任何方法可以检测 像素 碰撞,如果有的话。我可以为此使用什么功能和/或命令?

【问题讨论】:

标签: actionscript-3 flash actionscript adobe collision-detection


【解决方案1】:

如您所见,hitTestObject 中的命中区域默认为矩形,因为它们使用边界框。

您可以使用...逐点测试对象的实际形状

hitTestPoint(someobject.x, someobject.y, true);

(见documentation。)

对于自定义形状的命中区域,您还可以使用位图命中测试。 (See accepted answer here.)

【讨论】:

  • 使用 hitTestPoint 对象,它不只检查 x 和 y 坐标吗?所以就像如果一个盒子的边缘碰到一个圆的边缘,如果我将 .x 和 .y 坐标设置为圆的中心,它就不会检测到它?
  • 这是逐点的。没什么。如果效果更好,您也可以使用我链接到的第二种方法。除此之外,这就是命中测试所能做的一切。
  • 谢谢!我做了一些研究,似乎位图对我来说很棒,虽然我不明白:3
【解决方案2】:

多年来,碰撞检测一直是编码人员面临的主要障碍。检测碰撞的方法有很多种:

我发现 hitTestPoint 是最实用的。但是,在您的情况下,您可能希望遵循 BitmapData 的行: http://www.freeactionscript.com/2011/08/as3-pixel-perfect-collision-detection/

干杯, 德雷克·斯沃兹

【讨论】:

  • 我之前尝试过freeactionscript的检测包,但出现了一些错误。不过感谢您的信息!
【解决方案3】:

你可以这样做 if(instanceName1.hitTestObject(instancename2) == true) { //execute the code you want } instanceName1 和 2 是 porgram 中的给定名称

【讨论】:

  • 这行不通,因为 hitTestObject 总是测试边界框。
  • 这就是我一直在做的。这就是我得到该错误的方式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多