我使用Actionscript 2制作平台游戏。我得到了跳跃和重力,一切都在进行,但我只限于一个地面"。正如人们可能想象的那样,平台游戏需要多个场地和#34;跳跃和脱落。我尝试编辑"地面"影片剪辑是这样的几个块,它们之间没有任何东西,但是当我尝试这个时,我的角色会跳跃,落在它跳跃的顶峰,并重复这个过程直到它落在地面影片剪辑的顶部,然后表现定期,跳跃和降落在地面的电影剪辑上,即使没有地面电影剪辑的一部分也可以登陆。
这是我的地面引力代码。
if(this.hitTest(_root.ground))
{
this._y -= gravity;
gravity = 0;
jumping = false;
}
答案 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的注册点,脚,你的性格。因此,只要角色的脚触及地面动画片段内的任何平台,代码就会被执行,你的角色就会停止。
希望这会有所帮助:)