我正在使用Unity3D中的ARKit开发用于房间测量的应用程序,它是一种尺子。为此,我使用射线投射将物体(球体)靠在墙上,并通过获取ARKit生成的可识别墙壁的位置来计算这些物体之间的距离。
我遇到的问题:
代码(摘要):
// generate first point
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);;
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
if (!arModeWall)
{
if (!continueMeasure)
{
if (!firstTouch)
{
//Debug.Log("FirstDot");
firstTouch = true;
doLine = true;
if (fromToCalculation != 1)
fromToCalculation = 1;
//continueMeasure = true;
Vector3 cameraPos = new Vector3(Camera.main.transform.position.x, Camera.main.transform.position.y, +10);
//Create first sphere (nessacary for position)
GameObject newPoint = Instantiate(distanceMeasuringSphere, hit.point, Quaternion.identity);
newPoint.transform.parent = distanceMeasuringSphereContainer.transform;
distanceMeasuringSphereArray.Add(newPoint);
//Create first LineRenderer (nessacary for Visuals)
GameObject newLR = Instantiate(distanceMeasuringLr, distanceMeasuringSphereArray[distanceMeasuringSphereArray.Count - 1].gameObject.transform.position, Quaternion.identity);
newLR.transform.parent = distanceMeasuringLrContainer.transform;
newLR.GetComponent<LineRenderer>().SetPosition(0, distanceMeasuringSphereArray[distanceMeasuringSphereArray.Count - 1].gameObject.transform.position);
distanceMeasuringLineRendererArray.Add(newLR);
//Create first Text (nessacary for Distance)
GameObject newDistanceText = Instantiate(distanceMeasuringText, hit.point, Quaternion.identity);
newDistanceText.transform.parent = distanceMeasuringTextContainer.transform;
distanceMeasuringTextArray.Add(newDistanceText);
}
这是我想到的最好的解决方案。
但我也有进步的余地,也有建议