AS3:具有多个形状对象的testHitObject

时间:2012-12-02 12:25:08

标签: actionscript-3 flash-cs5

您好我有一个难以用语言解释的问题,所以让我只是张贴一张图片然后尝试解释。由于我是stackoverflow的新用户,因此无法在帖子中上传图片,因此我将添加一个链接:http://tinypic.com/r/kbrpt2/6

我想要什么:
我希望能够将我的播放器(蓝色球)移动到第2点并调用函数player.hitTestObject(Wall)并获取值false

所以我的问题是
当我将玩家(蓝球)移动到第1点或第2点并调用函数player.hitTestObject(Wall)时,它返回值为真

基本上是这样的:我希望函数player.hitTestObject(Wall)仅在触摸对象的灰色部分(形状)时返回true,并且我希望它在播放器对象为时返回false在Wall对象的中间,但不接触灰色部分(形状)。

一个解决方案(但不是最佳):
一个解决方案是你创建3个对象而不是测试3次以查看玩家对象是否触摸了任何墙壁,这在这个简单的例子中就可以了但如果你创建更大的对象代码开始看起来很乱。

所以如果有人知道任何其他解决方案,我会很感激。

1 个答案:

答案 0 :(得分:0)

我相信hitTestObject使用剪辑的边界框来检查碰撞。你可能想看看hitTestPoint而不是

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/DisplayObject.html#hitTestPoint()

这里的想法是你的墙会针对点的x / y调用hitTestPoint。确保将shapeFlag设置为true,例如

myWall.hitTestPoint(point.x,point.y,true);

我的两分钱 - 我相信这些内置的碰撞方法非常慢。如果您可以将墙壁分成单个矩形,您可以以更高效的方式检查基本数学的碰撞。

相关问题