我对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!,当我站在一个实体旁边时(它是一个立方体,所以没什么大不了的。)
答案 0 :(得分:0)
你的第二个条件是错的。第一行:
pos.x - xscale < TimeToKill.player.position.x
第二行相当于:
pos.x < TimeToKill.player.position.x
所以你需要翻转比较。您应该将其重构为hitTest
方法或其他内容。您当前的代码非常冗长和令人困惑。