您好,我是AR开发的新手,我尝试制作一个简单的脚本,该脚本将摄像机的位置和某个对象在世界上的位置,然后使用LineRenderer在它们之间绘制一条简单的线。
该对象与imagetarget绑定,并且以FIRST_TARGET设置运行(因此世界应该在imagetarget上具有其原点(0,0,0))
但是相机的位置对我来说似乎是错误的,我也不是很清楚为什么。我想要的是一条从移动(相机)屏幕的中心到使用imagetarget查看的世界上某个对象的直线。我希望我的问题有所帮助。我的脚本的代码在这里:
public class POILine : MonoBehaviour
{
//Camera
private GameObject camera;
//Gameobject of interest to point the user towards
public GameObject to;
private GameObject toParent;
private LineRenderer line;
public float lineWidthMultiplier = 0.5f;
private float distance;
public float distanceMin = 50f;
void Start ()
{
camera = GameObject.FindGameObjectWithTag("MainCamera");
line = this.gameObject.AddComponent<LineRenderer>();
line.positionCount = 2;
//Thickness of the line
line.widthMultiplier = lineWidthMultiplier;
}
// Update is called once per frame
void Update ()
{
TrackableBehaviour.Status toStatus = to.transform.parent.GetComponent<TrackableBehaviour>().CurrentStatus;
if (toStatus == TrackableBehaviour.Status.TRACKED || toStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
{
distance = Vector3.Distance(camera.transform.position, to.transform.position);
if (distance > distanceMin)
{
line.enabled = true;
if (to != null)
{
//I think the error is here
line.SetPosition(0, camera.transform.position);
line.SetPosition(1, to.transform.position);
}
}
else
{
line.enabled = false;
}
}
}
答案 0 :(得分:0)
设法使其工作,我所做的是,将一个空的游戏对象从小放置到当前正在跟踪的Imagetarget上,然后使其遵循了ARCamera变换位置。
然后代码通过渲染从该空游戏对象到感兴趣对象的直线来工作。