Actionscript 2 - hitTesting多个实例

时间:2014-05-22 21:54:46

标签: actionscript actionscript-2 gravity hittest

我使用Actionscript 2制作平台游戏。我得到了跳跃和重力,一切都在进行,但我只限于一个地面"。正如人们可能想象的那样,平台游戏需要多个场地和#34;跳跃和脱落。我尝试编辑"地面"影片剪辑是这样的几个块,它们之间没有任何东西,但是当我尝试这个时,我的角色会跳跃,落在它跳跃的顶峰,并重复这个过程直到它落在地面影片剪辑的顶部,然后表现定期,跳跃和降落在地面的电影剪辑上,即使没有地面电影剪辑的一部分也可以登陆。

这是我的地面引力代码。

if(this.hitTest(_root.ground))
{
    this._y -= gravity;
    gravity = 0;
    jumping = false;
}

1 个答案:

答案 0 :(得分:0)

当你在两个MovieClip之间使用hitTest时,如果影片剪辑中没有任何内容,只要测试影片剪辑位于边界框内(当你在影片剪辑的蓝色外部矩形中)时,它并不重要选择其他动画片段。

要解决您的问题,但在同一个MovieClip中仍有许多理由,您必须使用hitTest的第二次使用,hitTest(x, y, shapeFlag) - 这不会检查两个动画片段是否相互测试,而是一个MovieClip正在触摸一个POINT(只是一个x和y坐标)。但使用它的真正好处是第三个参数 shapeFlag ,它是一个布尔值( true false ) - 如果它& #39; s false ,然后hitTest会将整个动画片段考虑在内,这意味着即使有空格,这些也将包含在hitTest中,WHILE,如果它是< em> true ,那么在hitTest期间只会考虑MovieClip的实际形状。

首先,你必须进入角色的MovieClip并移动他,以便动画片段的注册点(你知道那个小号加号)位于角色的底部。然后,将您的代码更改为:

if(_root.ground.hitTest(this._x, this._y, true))
{
    this._y -= gravity;
    gravity = 0;
    jumping = false;
}

这将检查 ground MovieClip的SHAPE(仅表示平台,而不是它们之间的空白区域)是否正在触摸位于底部的MovieClip的注册点,脚,你的性格。因此,只要角色的脚触及地面动画片段内的任何平台,代码就会被执行,你的角色就会停止。

希望这会有所帮助:)