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

Actionscript 3 AS3:具有多个形状对象的testHitObject,actionscript-3,flash-cs5,Actionscript 3,Flash Cs5,嗨,我有一个问题很难用语言来解释,所以让我画一张图,然后试着解释一下。因为我是stackoverflow的新用户,所以我无法在帖子中上传图片,所以我将添加一个链接: 我想要什么:我想要能够将我的玩家(蓝球)移动到第2点,调用函数player.hitTestObject(墙)并返回值false 所以我的问题是:当我将玩家(蓝球)移动到点1或点2并调用函数player.hitTestObject(Wall)时,它返回值true >基本上: BR>我想要这个函数播放器.HestTestObjor(W

嗨,我有一个问题很难用语言来解释,所以让我画一张图,然后试着解释一下。因为我是stackoverflow的新用户,所以我无法在帖子中上传图片,所以我将添加一个链接:

我想要什么:
我想要能够将我的玩家(蓝球)移动到第2点,调用函数player.hitTestObject(墙)并返回值false

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

<强> >基本上: BR>我想要这个函数播放器.HestTestObjor(Walk)只在触摸对象的灰色部分(形状)时返回true,并且当玩家对象位于墙对象的中间但不接触灰色部分(形状)时,它希望返回false。 一个解决方案(但不是最优的):
一个解决方案是创建3个对象,然后进行3次测试,以查看播放器对象是否接触到任何墙壁,在这个简单的示例中这是可以的,但如果创建更大的对象,代码开始看起来很混乱。


因此,如果有人知道任何其他解决方案,我将非常感激。

我相信hitTestObject使用剪辑的边界框来检查碰撞。您可能需要查看hitTestPoint

()

这里的想法是,您的墙将根据点的x/y调用hitTestPoint。确保将shapeFlag设置为true,例如

myWall.hitTestPoint(点x,点y,true)


我的两分钱--我相信这些内置的碰撞方法非常慢。如果你能把墙分解成单独的矩形,你就可以用基础数学更有效地检查碰撞。

谢谢你的回答。所以你认为用数学和x,y线来做比用hitTestPoint()和hitTestObject()更好的解决方案?是的,检查一个点是否在一个矩形内要快得多。这是我刚刚做的一个简单的速度测试——值得注意的是,使用矩形数学(rect.x+rect.width)获得矩形的右边缘要比使用flash的本机函数rect.right快得多,所以我将它包括在测试中。