【问题标题】:Need help detecting collision between two objects需要帮助检测两个对象之间的碰撞
【发布时间】:2013-03-24 03:46:45
【问题描述】:

我在制作的游戏中遇到了一些关于碰撞检测的问题。我有这两个对象之间的距离:

    double b1Dist = Math.sqrt((obOneX - obTwoX) * (obOneX - obTwoX)
            + ((obOneY - obTwoY) * (obOneY - obTwoY)));
    double b1DistTwo = b1Dist - objectOneRadius;
    b1DistFinal = b1DistTwo - objectTwoRadius;

我试图用这个进行碰撞检测:

  if (b1DistFinal <= objectOneRadius && b1DistFinal <= objectTwoRadius ) {
            return false;
        }
         else
            return true;

    }

我是 java 新手,所以我确信可能有更好/更有效的方法来编写上述内容,但是有人可以帮助我或指出正确的方向吗?

谢谢

【问题讨论】:

    标签: java collision-detection


    【解决方案1】:

    这样做的效率并没有错。但是,如果obOneX、obOneY 等是物体中心的 x 和 y 坐标,那么您的公式是错误的。

    变量b1DistFinal 是两个对象外边缘之间的距离。如果为零,则这些对象发生了碰撞。

    试试:

    if (Math.abs(b1DistFinal) < 0.001) {
        return true;
    } else {
        return false;
    }
    

    注意:我不是检查它是否完全为零,而是检查它是否接近到零,以允许在双算术期间出现一些舍入误差。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-19
      • 1970-01-01
      • 2018-01-08
      • 1970-01-01
      • 2015-02-18
      • 1970-01-01
      相关资源
      最近更新 更多