2014-09-06 41 views
0

正如我的问题的标题所暗示的,我正在构建一个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

只是一个样式注释:你不需要'Loop:'标签和'break Loop'可以'break;' – JKillian 2014-09-06 22:42:07

+0

是的,我忘记了为什么我那样做了,谢谢 – DrakeTruber 2014-09-06 22:45:58

回答

1

要输入你的循环,这种情况必须是真实的:

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

在你的循环,你只有当相同的条件下是不正确的突破。由于之前的情况属实,并且我们并未在任何地方修改left_foot_pointright_foot_pointground,所以对于整个循环它仍然是正确的。因此,循环将运行所有1000次迭代,并且每次将字符向上移动1000个像素。

+1

你的权利。谢谢JKillian。当字符移动时,我将不得不重新定义这两点。谢谢你成为一对新的眼睛 – DrakeTruber 2014-09-06 22:47:51