2013-04-10 96 views
-2

我正在制作一个Java 3D游戏,你可以在其他球上跳球。除了球员球和敌人球之间的碰撞之外,我已经找到了一切。我发现我可以检查球体中心之间的距离是否小于其半径的总和,但问题是我不知道如何去做;如果有人知道我如何检查球的总和,我会非常感激你告诉我。非零半径球体之间的碰撞检测

+3

哪个部分特别是你在挣扎? – NPE 2013-04-10 13:24:31

+0

我真的不明白这个问题......你在3D空间中有两点:球体的中心。你知道他们的半径。所以问题是如何计算三维欧氏空间中两点之间的距离? – 2013-04-10 13:24:48

+1

请参阅http://mathworld.wolfram.com/Sphere-SphereIntersection.html – 2013-04-10 13:25:41

回答

0

比方说,你有球的容器类,它包含有关它们的信息:

private class Sphere{ 
     public float x; 
     public float y; 
     public float z; 
     public float radius; 
    } 

现在你必须使用毕达哥拉斯用于计算两个球体中心之间距离的3D空间定理:

public boolean areColiding(Sphere s1, Sphere s2){ 
     float dist = (float) Math.sqrt((s1.x - s2.x) * (s1.x - s2.x) + 
             (s1.y - s2.y) * (s1.y - s2.y) + 
             (s1.z - s2.z) * (s1.z - s2.z)); 
     if(dist <= s1.radius + s2.radius) 
      return true; 
     else 
      return false; 
    }