Не могу получить позицию курсора в 3д.

Визуальный редактор логики Universe (VIZIO)

Не могу получить позицию курсора в 3д.

Сообщение Sirius 03 ноя 2012, 22:10

Достаточно долго пытал гугл и несколько сайтов на эту тему.
Задача достаточно простая. Есть камера, у неё вид на плоскость под 80 градусов, то есть - почти топ-даун.
Есть объект (Обычный куб, бегает по нажатию wasd), который необходимо поворачивать на то место, что находится под курсором.

Как достать позицию курсора я понял(InputGet.MousePosition), что позиция курсора идёт относительно GUI, тоже. Как перевести позицию с экрана в формат 3д пространства тоже как бы понятно (CameraDo.ScreenToWorldPoint) - к логическому блоку указал камеру, позицию мыши подвел.
Только, вот даже не думает работать это дело, на выходе получаю вектор3 никак не реагирующий на положение мыши, хотя при передвижении камеры(За движущимся кубом) - исходящий вектор3 меняется.

Вот скрин. Я надеялся попробовать вывести луч из точки курсора - вниз к плоскости, а дальше брать точку пересечения, именно на неё и должен был постоянно любоваться куб. Вроде, всё достаточно просто, однако на практике не выходит и я что-то делаю не так.

Заранее извиняюсь, за вероятно глупый вопрос, понимаю, что упустил какую-то маленькую мелочь, либо сделал какую-то большую глупость. Если не затруднит, поясните - как решать вот такие простые задачи. Или, конечно - ткните в какую-нибудь тему, где это наглядно разбиралось. Спасибо.
Аватара пользователя
Sirius
UNец
 
Сообщения: 1
Зарегистрирован: 03 ноя 2012, 21:01
Откуда: Ростов-На-Дону
  • Сайт

Re: Не могу получить позицию курсора в 3д.

Сообщение Сылдыс 15 окт 2014, 16:06

Вот пример с двумя способами.
Надеюсь понятный скрипт :D
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class Cursor3Dposition : MonoBehaviour {

        public Vector3 CursorPosition_001; // С помощью ScreenPointToRay (Позиция от пересечения луча с коллайдером)
        public float distanceRay ;  //Длина луча
        public Vector3 mousePos ;
        public Vector3 CursorPosition_002 ; // С помощью ScreenToWorldPoint (Как бы позиция от конца луча)



        void Update () {
                Ray ry = Camera.mainCamera.ScreenPointToRay(new Vector3(Input.mousePosition.x,Input.mousePosition.y,0));
                RaycastHit hit_01;
                Physics.Raycast(ry,out hit_01,distanceRay);
                CursorPosition_001 = hit_01.point ;
                OnDrawGizmosSelected() ;
               

        }
        void OnDrawGizmosSelected() {
                mousePos = Input.mousePosition;
                mousePos.z = distanceRay;
                CursorPosition_002 = Camera.main.ScreenToWorldPoint(mousePos);
        }
}
Изображение
Сылдыс
UNец
 
Сообщения: 1
Зарегистрирован: 15 окт 2014, 15:57


Вернуться в Antares Universe (VIZIO)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2