2015-04-29 4 views
0

У меня есть сцена AR, у которой есть одна AR-камера, цель изображения и 3d-объект внизу. enter image description hereЕдинство - перемещение трехмерного объекта в AR-сцену

Я создаю файл .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-камеры. Скриншот ниже:

enter image description here

+2

Попробуйте спросить на http://gamedev.stackexchange.com/ тоже. –

ответ

0

Вместо того, чтобы играть с ScreenToWorldPoint, вы должны использовать raycast против самолета, см. Этот ответ: https://stackoverflow.com/a/29754194/785171.

Самолет должен быть прикреплен к маркеру AR.

+0

Спасибо. оно работает. Если я не хочу изменять размер объекта, как я могу это сделать? Я хочу перемещать объект, но не масштабировать. – zumma

0

ScreenToWorldPoint принимает Vector3, mousePosition в основном Vector2 (со значением 0 г-оси). Вам нужно установить значение mousePosition.z, чтобы оно было размещено в видимой позиции. Пример:

Vector3 mousePos = Input.mousePosition; 
mousePos = cam.ScreenToWorldPoint(mousePos); 
mousePos.z = 10; 
GameObject.Find("Car1").gameObject.transform.position = mousePos; 

Это установит положение на расстоянии 10 единиц от камеры.

+0

Должен ли я устанавливать значение единиц перед вызовом этого кода? Я пробовал этот путь, но я не мог видеть объект в позиции щелчка мыши? – zumma

+0

Я не знаю, что вы имеете в виду, просто настройте 10 на фигуру, которая работает для вашего сценария. Если вы ищете динамическое расстояние от камеры, тогда требуются другие функции, но поток те же. Причина, по которой вы не видите 3D-объект, заключается в том, что он не находится перед камерой. – anothershrubery