Получить Vector3 позиции, нажатой на плоскости

Я хочу щелкнуть мышью по 3D-плоскости. Когда я это делаю, я хочу, чтобы он возвращал Vector3 того места, где я щелкнул. Когда я использую:

Vector3 point = Camera.main.ScreenToWorldPoint(Input.mousePosition);

затем он дает мне Vector3 центра плоскости. Не то, что я хочу. Я хочу, чтобы он был в том месте, где я нажимаю.

Я пытаюсь создать Ray (Camera.ScreenPointToRay) и работать с Physics.Raycast, но это просто возвращает bool, а не там, где он на самом деле попадает.

Я провел последние 3 часа, читая вопросы всех остальных ... что мне здесь не хватает?


person Evorlor    schedule 16.05.2014    source источник


Ответы (2)


Ну, ты почти у цели! Вам нужно использовать Plane.Raycast.

Редактировать

Plane plane = blablabla;
Ray ray = blablabla;
float distance;
Vector3? intersectionPoint = null;
if (plane.Raycast(ray, out distance))
    intersectionPoint = ray.GetPoint(distance);
person Sergey Krusch    schedule 16.05.2014
comment
Нет, это не так. Я не ищу логическое значение, я ищу Vector3. - person Evorlor; 16.05.2014
comment
Да, это. Пожалуйста, будьте так добры и внимательно прочитайте эту страницу: docs.unity3d.com/ Документация/Справочник по сценариям/ - person Sergey Krusch; 16.05.2014

Вот это должно вам помочь…

Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition); //Convert mouse position to raycast
RaycastHit hit; //Create a RaycastHit variable to store the hit data into
Vector3 clickedPosition; //Create a vector3 variable to store the clicked position in

if (Input.GetMouseButtonDown (0) && Physics.Raycast (ray, out hit, 1000)) //If the user clicks the left mouse button and we hit an object with our raycast then
{
    clickedPosition = hit.point; //Store the hit position into the clicked position variable
}

Это так просто :)

person Savlon    schedule 17.05.2014