所以我试图让它正确地与 AABB 相撞。但由于某种原因,它只会发生在 AABB 的一侧。所有其他方面都表现得好像没有碰撞一样。
float dmin;
float r2 = pow(m_Radius, 2);
dmin = 0;
if (m_Center.GetX() < other.GetMinExtents().GetX())
dmin += pow(m_Center.GetX() - other.GetMinExtents().GetX(), 2);
else if (m_Center.GetX() > other.GetMaxExtents().GetX())
dmin += pow(m_Center.GetX() - other.GetMaxExtents().GetX(), 2);
if (m_Center.GetY() < other.GetMinExtents().GetY())
dmin += pow(m_Center.GetY() - other.GetMinExtents().GetY(), 2);
else if (m_Center.GetY() > other.GetMaxExtents().GetY())
dmin += pow(m_Center.GetY() - other.GetMaxExtents().GetY(), 2);
if (m_Center.GetZ() < other.GetMinExtents().GetZ())
dmin += pow(m_Center.GetZ() - other.GetMinExtents().GetZ(), 2);
else if (m_Center.GetZ() > other.GetMaxExtents().GetZ())
dmin += pow(m_Center.GetZ() - other.GetMaxExtents().GetZ(), 2);
if (dmin < r2)
{
return true;
}