2013-11-28 106 views
0

我有我的3D碰撞檢測問題的探析,這裏是代碼:LWJGL 3D碰撞檢測

private void checkHit() { 

    if(ishitable){ 

    if(pos.x-xscale < TimeToKill.player.position.x){ 
     if(TimeToKill.player.position.x > pos.x){ 
      if(TimeToKill.player.position.y < pos.y){ 
       if(TimeToKill.player.position.y > pos.y-yscale){ 
        if(TimeToKill.player.position.z > pos.z-zscale){ 

         if(TimeToKill.player.position.z < pos.z){ 
         System.out.println("HIT!" + pos + TimeToKill.player.position); 
      } 

     }} 
    } 

}} 
} 

所以doesen't工作得很好,它說HIT!就當我站在旁邊的一個實體(它是一個立方體,所以沒什麼大不了的)。

回答

0

你的第二個條件是錯誤的。第一行:

pos.x - xscale < TimeToKill.player.position.x 

下聯是等價於:

pos.x < TimeToKill.player.position.x 

所以你需要翻轉的比較。你應該真的重構這個到hitTest方法什麼的。你目前的代碼真的很冗長而且令人困惑。

+0

這是很多測試的結果,通常我的代碼並不困惑。謝謝你的幫助。 – TheCoder