正如我问题的标题所暗示的,我正在构建一个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;
}
}
}
这个代码的目标是把角色从地面上拉出来,然后把他放下来,这样他就几乎没有接触到地面。不幸的是,这段代码不起作用,并使字符飞向天空。当字符不再触地时,代码似乎拒绝承认。有人知道我在这里做错了什么吗?
发布于 2014-09-06 14:45:33
若要输入for循环,此条件必须为真:
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个像素。
https://stackoverflow.com/questions/25703680
复制相似问题