我正试图在一个没有箱斗或刚体的立方体前面探测到地面。我可以检测到它,但距离永远不会改变。我可以使用非常大数量或非常小但它仍能在相同距离检测地面。
调试线工作正常,在地面之前没有检测到任何东西。即使尝试没有距离的光线投射也能使检测保持相同的距离。 我尝试了使用相同结果的方法Raycast的其他一些变体。
这是我的剧本:
Ray ray = new Ray(transform.position, transform.forward);
RaycastHit hitInfo;
Debug.DrawRay(pos, transform.forward * detectDistance, Color.green);
if (Physics.Raycast(ray,out hitInfo, detectDistance)) {
Debug.Log(hitInfo.transform.name);
Debug.DrawRay(pos, transform.forward * detectDistance, Color.red);
}
答案 0 :(得分:2)
如果你的主要目标是计算两个游戏对象(立方体和地面)之间的距离,那么使用Raycast不是必须的。您可以采用其他方法:
Vector3 dist = Vector.distance(cube.transform.position, ground.transform.position);
Debug.Log(string.Format("Distance between {0} and {1} is: {2}", cube, ground, dist));
但是如果您想继续使用Raycast,而没有关于您的场景如何以及游戏对象如何定位的所有信息,我只建议您尝试以下方法:
1-像这样计算雷的方向:
Vector3 direction = ( cube.transform.position - ground.transform.position ).normalized;
Ray ray = new Ray( cube.transform.position, direction );
2-计算距命中的距离:
if (Physics.Raycast(downRay, out hit)) {
float distance = hit.distance;
}
3-以防万一计算void FixedUpdate()
答案 1 :(得分:0)
问题是其他地形块没有生成对撞机网格,直到你真正接近它。 我确实找到了一种远远生成它的方法。