正如我的问题的标题所暗示的,我正在构建一个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;
}
}
}
这段代码的目标是将角色拉出地面,然后将他放下,这样他就几乎不会碰到地面了。不幸的是,这段代码不起作用,并将角色飞向天空。当角色不再触地时,代码似乎拒绝承认。任何人都知道我在这里做错了什么?
答案 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_point
,right_foot_point
或ground
,对于整个循环,它将继续成立。因此,循环将运行所有1000次迭代,并且角色每次将向上移动1000个像素。