2014-09-06 23 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