Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在多个对象上进行命中测试Flash AS3_Flash_Actionscript 3_Actionscript_Flash Cs5_Hittest - Fatal编程技术网

在多个对象上进行命中测试Flash AS3

在多个对象上进行命中测试Flash AS3,flash,actionscript-3,actionscript,flash-cs5,hittest,Flash,Actionscript 3,Actionscript,Flash Cs5,Hittest,我正在做一个模拟,包括动态添加到舞台上的粒子(许多圆圈)。当这些圆碰撞时(实际上是电影嘴唇),它们需要反弹(动量转换)。我对物理学并没有问题,但不知道如何有效地检查碰撞。它可以归结为:1)检查一个粒子是否发生碰撞,2)获取碰撞中涉及的其他粒子(对象) 理想情况下,我希望粒子能够检查自己的碰撞并调整自己的动量,而不仅仅是在每一帧上运行一些丰富的Render()函数。这怎么可能呢 提前谢谢。 这是提供像素完美碰撞检测的as3类的链接。下载网站上提供的链接。希望这有帮助 作者还链接到另一个解决方案:

我正在做一个模拟,包括动态添加到舞台上的粒子(许多圆圈)。当这些圆碰撞时(实际上是电影嘴唇),它们需要反弹(动量转换)。我对物理学并没有问题,但不知道如何有效地检查碰撞。它可以归结为:1)检查一个粒子是否发生碰撞,2)获取碰撞中涉及的其他粒子(对象)

理想情况下,我希望粒子能够检查自己的碰撞并调整自己的动量,而不仅仅是在每一帧上运行一些丰富的
Render()
函数。这怎么可能呢

提前谢谢。

这是提供像素完美碰撞检测的as3类的链接。下载网站上提供的链接。希望这有帮助

作者还链接到另一个解决方案:


如果您关心速度和优化,我建议您选择。有许多示例可供您开始使用,并且执行您建议的操作实际上非常简单。

要实现高效的碰撞检测,您需要使用一种称为二叉树的方法。本质上,不是检查每个圆的每个像素和每个圆的每个像素,而是首先检查两个圆是否接触是合理的。这是通过反复将地图划分为四分之一来实现的。如果两个圆圈不在屏幕的同一象限,它们将不会接触


然而,实现是困难的,除非你有意给自己一个挑战,否则就使用一个库,这样你就不会重新发明轮子。您可以使用物理引擎Box2D或游戏引擎Flixel。

如果您不想使用Box2D,您仍然可以使用递归函数进行二进制搜索,并重复将搜索拆分为象限,直到您在数组元素中发现冲突或不冲突为止

如果要使用库,这看起来是一个不错的选择。我的提示是,不要自己实现像物理行为和碰撞检测这样复杂的东西,要依靠大量开发人员使用、优化和调试的经过验证、工作优化的库。此外,你可以在你的代码中包含库的源代码,你不需要使用swc或任何东西。如果我是在合同下等,我当然会按照你的建议去做,不过我只是想玩一下flash(几天前安装的)因此,我故意按照第一原理做事——我不需要结果。如果(object.x+width>minX&&object.x-width