AR相机与目标物体在一个平面上的角度信息(度)



我有一个问题,请帮忙,谢谢!我想知道如何在平面上显示AR相机与目标物体之间的角度信息(度)。(使用智能手机)我想知道如何"编码"使用Unity和AR Foundation。

我尝试使用一些代码(下面),但它似乎只对距离工作,不工作的角度…

谢谢了!

void Start ()
{
//get the components
private ARRaycastManager RayManager;
private GameObject visual;
public Camera CameraStart;
public Text textField2;
public Text textField;
float distance;
float angle;
RayManager = FindObjectOfType<ARRaycastManager>();
visual = transform.GetChild(0).gameObject;
}

void Update ()
{
// shoot a raycast from the center of the screen
List<ARRaycastHit> hits = new List<ARRaycastHit>();
RayManager.Raycast(new Vector2(Screen.width / 2, Screen.height / 2), hits, TrackableType.Planes);
RaycastHit hit;
//Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
// check if we hit an AR plane, update the position and rotation 
if(hits.Count > 0)
{
transform.position = hits[0].pose.position;
transform.rotation = hits[0].pose.rotation;
distance = Vector3.Distance(CameraStart.transform.position, transform.position);
textField.text = distance.ToString("N2") + "meter"; 
Physics.Raycast(transform.position, out hit);
angle = Vector3.Angle(hit.normal, transform.forward);            
textField2.text = angle.ToString("N2") + "degree";
if(!visual.activeInHierarchy)
visual.SetActive(true);

}
}

}

我会检查光线是否击中:

if (Physics.Raycast(transform.position, out hit)) {
angle = Vector3.Angle(hit.normal, transform.forward);            
textField2.text = angle.ToString("N2") + "degree";
} else {
Debug.LogError("Did not hit")     
}

我也会确保目标有一个碰撞器和图层蒙版是正确的。

最新更新