我有一个AR场景,其中有一个AR摄像头,一个图像目标和下面的3d对象 .
我创建了一个 .cs
文件并附加到ARCamera . 我想将AR对象移动到鼠标单击位置 . 我尝试了很多代码 . 但我无法成功 .
我知道 Input.mouseposition
返回屏幕位置 . 我转换为 ScreenToWorldPosition
并将3d对象放在此位置 . 移动3d对象,但不移动鼠标单击位置 . 我不知道它在哪里移动 .
如何移动到鼠标点击位置?我的代码在这里:
Camera cam;
Vector3 target = new Vector3(0.0f, 10f,0.5f);
// Use this for initialization
void Start () {
if (cam == null)
cam = Camera.main;
}
void Update()
{
if (Input.GetMouseButtonDown(0)) {
Debug.Log("MouseDown");
Vector3 mousePos = Input.mousePosition;
mousePos = cam.ScreenToWorldPoint(mousePos);
GameObject.Find("Car1").gameObject.transform.position = mousePos;
}
}
EDIT 1 如果我向场景添加平面,我可以移动到仅在平面上鼠标点击的位置 . 代码取自here . 但飞机阻止显示AR摄像机视图 . 截图如下:
2 回答
您应该使用针对飞机的光线投射,而不是使用
ScreenToWorldPoint
,请参阅以下答案:https://stackoverflow.com/a/29754194/785171 .飞机应该连接到您的AR标记 .
ScreenToWorldPoint
需要Vector3
,mousePosition
基本上是Vector2
(具有0 z轴值) . 您需要将mousePosition.z
值设置为某个位置才能将其置于可查看的位置 . 例:这会将位置设置为距离相机10个单位 .