Положение курсора мыши на экране Unity
|
|
Teapot_Proger | Дата: Пятница, 08 Марта 2013, 00:54 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Искал все не нашел как узнать положение курсора. Input.mousePosition находит положение курсора в игровом окне, а не на экране, а мне надо знать где находиться курсор на экране Пожалуйста помогите, может это можно осуществить через dll библиотеки?
Добавлено (07.03.2013, 23:45) --------------------------------------------- Я нашел вот это: [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] static extern bool GetCursorPos();
как я понял он берет от user32.dll положение курсора на экране (GetCursorPos();) для его последующего изменения, а мне надо его считать.
Добавлено (08.03.2013, 00:54) --------------------------------------------- Я нашел на сайте : http://vbbook.ru/visual-c.net/api-v-c/ это (чуток модифицировал) но x выдает 0!!
using UnityEngine; using System.Collections; using System.Runtime.InteropServices;
public enum Point{ X,Y }
public class MouseTexture : MonoBehaviour {
int i=1; public int x;
[DllImport("user32.dll")] static extern bool GetCursorPos(ref Point ip);
Screen.showCursor = false; }
void Update () { x=(int)Point.X; } }
Ну спасите пожалуйста, половину ночи сижу уже, найти нормально не могу!
Сообщение отредактировал Teapot_Proger - Пятница, 08 Марта 2013, 00:56 |
|
| |
KamiRonin | Дата: Пятница, 08 Марта 2013, 10:13 | Сообщение # 2 |
почти ветеран
Сейчас нет на сайте
| может так: Код //from Unity Script Reference
var target : Transform;
function Update () { var screenPos : Vector3 = camera.WorldToScreenPoint (target.position); print ("target is " + screenPos.x + " pixels from the left"); }
Мыслю - значит программирую... Конструктивная критика - умных ведет к совершенству... Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
|
|
| |
Teapot_Proger | Дата: Понедельник, 11 Марта 2013, 00:01 | Сообщение # 3 |
был не раз
Сейчас нет на сайте
| это находит положение какого-то объекта от камеры а мне надо положение курсора на экране
Сообщение отредактировал Teapot_Proger - Понедельник, 11 Марта 2013, 00:15 |
|
| |
Syberex | Дата: Понедельник, 11 Марта 2013, 14:58 | Сообщение # 4 |
почетный гость
Сейчас нет на сайте
| Тоже перепробовал много способов, но не решил проблему - стала не актуальна потом ...
Наверное единственно верный способ как подсказывали мне: Цитата Кажется в Gizmos надо текстуру нарисовать и тогда на нее можно будет жать. Не знаю есть ли лучше способ, чтобы не рисовать текстуру.
В ассет сторе можно попробовать что нибудь качнуть для редактора и посмотреть решение...
Adventure Knight Max and Zombies (в разработке)
|
|
| |
KamiRonin | Дата: Вторник, 12 Марта 2013, 18:41 | Сообщение # 5 |
почти ветеран
Сейчас нет на сайте
| Цитата (Teapot_Proger) это находит положение какого-то объекта от камеры а мне надо положение курсора на экране
сорри, на форумах все время задают этот вопрос - "зачем?". т.е. ожидается что задача поставлена не совсем корректно.
например: если говорим о Юнити - то В ЛЮБОМ СЛУЧАЕ ___БУДЕТ___ какая либо камера! т.е. достаточно получить и конвертировать положение мыши в поле КАМЕРЫ, внутри игры. но допустим игра идет в окне, и мышь вышла за её пределы, и нужно определить, что мышь именно за её пределами. но это потеря фокуса для приложения! и все. поэтому вопрос "ЗАЧЕМ?" - иногда многое решает.
ну так как?! ЗАЧЕМ? а?!
а так - вместо target.position догадливый кодер просто ставит INPUT.MOUSEPOSITION в тот код, который я прислал ранее и через простую команду получает КООРДИНАТЫ внутри системы координат СКРИНА, т.е. экрана.
Мыслю - значит программирую... Конструктивная критика - умных ведет к совершенству... Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
Сообщение отредактировал KamiRonin - Вторник, 12 Марта 2013, 18:46 |
|
| |
Syberex | Дата: Вторник, 12 Марта 2013, 20:38 | Сообщение # 6 |
почетный гость
Сейчас нет на сайте
| KamiRonin, догаливый кодер - пойми, что проблема не в том, чтобы преобразовать мировые координаты в координаты на экране, а в том, что Юнити не возвращает координаты мышки при нахождении мышки в окне редактора сцены. INPUT.MOUSEPOSITION в этом случае всегда 0,0
Adventure Knight Max and Zombies (в разработке)
|
|
| |
seaman | Дата: Вторник, 12 Марта 2013, 21:24 | Сообщение # 7 |
старожил
Сейчас нет на сайте
| Тут с Вами станешь догадливым! Вот почему бы сразу не написать, что надо позицию мыши в окне редактора? Вот зачем было мозги компостировать? 1. В скрипт редактора вставляешь OnInspectorGUI() 2. В нем анализируешь Event.mousePosition
|
|
| |
Syberex | Дата: Вторник, 12 Марта 2013, 21:31 | Сообщение # 8 |
почетный гость
Сейчас нет на сайте
| А OnInspectorGUI() точно сработает в окне редактора сцены, а не в окне инспектора?
Adventure Knight Max and Zombies (в разработке)
|
|
| |
seaman | Дата: Вторник, 12 Марта 2013, 21:46 | Сообщение # 9 |
старожил
Сейчас нет на сайте
| А неважно где она работает. Просто в ней Event.mousePosition верно. Во всяком случае так пишут на офсайте. Проверьте. Ну или попробуйте OnSceneGUI
Сообщение отредактировал seaman - Вторник, 12 Марта 2013, 21:51 |
|
| |