平台游戏角色直接在上面

时间:2014-09-06 18:55:55

标签: actionscript-3 flash

正如我的问题的标题所暗示的,我正在构建一个2D平台游戏。我设置了我的代码,以便当角色击中地面时重力停止以拉动角色。现在,虽然这样可以防止角色掉落在地面上,但它并不会使角色完全停留在平台的顶部。我尝试使用这个解决方案:

if(ground.hitTestPoint(left_foot_point.x,left_foot_point.y,true)||ground.hitTestPoint(right_foot_point.x,right_foot_point.y,true)){
    Loop: for(var i:int=0;i<1000;i++){
        if(ground.hitTestPoint(left_foot_point.x,left_foot_point.y,true)||ground.hitTestPoint(right_foot_point.x,right_foot_point.y,true)){
            char.y-=1;
        }else{
            char.y+=1;
            break Loop;
        }
    }
}

这段代码的目标是将角色拉出地面,然后将他放下,这样他就几乎不会碰到地面了。不幸的是,这段代码不起作用,并将角色飞向天空。当角色不再触地时,代码似乎拒绝承认。任何人都知道我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

要输入for循环,此条件必须为true:

ground.hitTestPoint(left_foot_point.x,left_foot_point.y,true) || 
ground.hitTestPoint(right_foot_point.x,right_foot_point.y,true)

在for循环中,只有在相同条件不成立时才会中断。如前所述,我们不会在任何地方修改left_foot_pointright_foot_pointground,对于整个循环,它将继续成立。因此,循环将运行所有1000次迭代,并且角色每次将向上移动1000个像素。