0

嗨,我有一个很难用语言解释的问题,所以让我放一张图片然后试着解释一下。由于我是stackoverflow的新用户,我无法在帖子中上传图片,所以我会放一个链接:http ://tinypic.com/r/kbrpt2/6

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

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

所以基本上:
我希望函数 player.hitTestObject(Wall) 仅在触摸对象(形状)的灰色部分时返回 true,我希望它当玩家对象位于墙对象中间但不接触灰色部分(形状)时返回 false。

一种解决方案(但不是最佳的):
一种解决方案是您创建 3 个对象,然后测试 3 次以查看玩家对象是否接触了任何墙壁,在这个简单的示例中这没问题,但如果您创建更大的对象,代码开始看起来很乱。

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

4

1 回答 1

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);

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

于 2012-12-02T18:49:23.983 回答