Воскресенье, 22 Декабря 2024, 12:09

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Положение курсора мыши на экране Unity
Teapot_ProgerДата: Пятница, 08 Марта 2013, 00:54 | Сообщение # 1
был не раз
Сейчас нет на сайте
Искал все не нашел как узнать положение курсора. Input.mousePosition находит положение курсора в игровом окне, а не на экране, а мне надо знать где находиться курсор на экране sad Пожалуйста помогите, может это можно осуществить через 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;
}
}

Ну спасите пожалуйста, половину ночи сижу уже, найти нормально не могу! cry


Сообщение отредактировал 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
был не раз
Сейчас нет на сайте
это находит положение какого-то объекта от камеры а мне надо положение курсора на экране sad

Сообщение отредактировал 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, догаливый кодер biggrin - пойми, что проблема не в том, чтобы преобразовать мировые координаты в координаты на экране, а в том, что Юнити
не возвращает координаты мышки при нахождении мышки в окне редактора сцены.
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
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг