LWJGL 3D碰撞检测

时间:2013-11-28 18:11:23

标签: java 3d lwjgl collision

我对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);
            }

        }}
    }

}}
}

所以它确实没有用,它说HIT!,当我站在一个实体旁边时(它是一个立方体,所以没什么大不了的。)

1 个答案:

答案 0 :(得分:0)

你的第二个条件是错的。第一行:

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

第二行相当于:

pos.x < TimeToKill.player.position.x

所以你需要翻转比较。您应该将其重构为hitTest方法或其他内容。您当前的代码非常冗长和令人困惑。