2013-11-28 80 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