Как сделать виртуальный джойстик (iOS, Android)?
|
|
kvestpro | Дата: Суббота, 07 Декабря 2013, 12:44 | Сообщение # 1 |
заслуженный участник
Сейчас нет на сайте
| У меня есть спрайт джойстика. Мне нужно его поворачивать вправо и влево (как руль, штурвал). Соответственно, требуется брать угол поворота и производить нужные действия с объектом. Внимание, вопросы: Как нацепить спрайт на экран? Как поворачивать спрайт при взаимодействии с пальцами? Как выводить данные поворота, скажем, в переменную?
Инверсная кинематика в Unity Алгоритм поиска пути Jump Point Search
|
|
| |
JHawk | Дата: Суббота, 07 Декабря 2013, 13:08 | Сообщение # 2 |
めゃくちゃちゃ
Сейчас нет на сайте
| input.GetTouch вроде Google в помощь!
|
|
| |
kvestpro | Дата: Суббота, 07 Декабря 2013, 14:33 | Сообщение # 3 |
заслуженный участник
Сейчас нет на сайте
| JHawk, опять гугл. Там только для шутеров. Мне то нужно поворот считывать.
Инверсная кинематика в Unity Алгоритм поиска пути Jump Point Search
|
|
| |
NEBR | Дата: Суббота, 07 Декабря 2013, 15:53 | Сообщение # 4 |
почти ветеран
Сейчас нет на сайте
| Цитата kvestpro ( ) Как нацепить спрайт на экран? 1) Можно использовать плагин NGUI. 2) Если версия юньки 4.3 - там встроенная система спрайтов. 3) Да и необязательно именно спрайт - можно плейн разместить и материал на него.
Цитата kvestpro ( ) Как поворачивать спрайт при взаимодействии с пальцами? не смотрел эти уроки на ютубе? Если нет, то не поленись, глянь, поможет понять в целом систему нажатий, что и как работает. А конкретно в твоем случае - нужно условие if(Touch.phase == stationary) (если удерживаем палец на экране) и позиция нажатия на левой половине {поворачиваем штурвал на определенное количество градусов влево * time.deltaTime (последняя команда для того чтобы поворот был гладким, не рывками). Иначе если на правой половине - поворачиваем вправо.
Цитата kvestpro ( ) Как выводить данные поворота, скажем, в переменную?
Код public GameObject steerengWheel; // сюда перетаскиваем объект "руль" float rotationValue;
void Update() { rotationValue = steerengWheel.transform.rotation; Debug.Log(rotationValue); }
King Size #Gamiron12
Сообщение отредактировал NEBR - Суббота, 07 Декабря 2013, 15:53 |
|
| |
kvestpro | Дата: Суббота, 07 Декабря 2013, 20:49 | Сообщение # 5 |
заслуженный участник
Сейчас нет на сайте
| NEBR, спасибо, буду пробовать. Добавлено (07.12.2013, 20:49) --------------------------------------------- NEBR, твой алгоритм немного не тот, который нужен. Мне нужно что-то типа этого http://www.youtube.com/watch?v=SBMjGqQslwo или http://www.youtube.com/watch?v=LLYZIEA1EhE (верхний телефон).
Инверсная кинематика в Unity Алгоритм поиска пути Jump Point Search
|
|
| |
NEBR | Дата: Суббота, 07 Декабря 2013, 21:27 | Сообщение # 6 |
почти ветеран
Сейчас нет на сайте
| kvestpro, вот нужный тебе тутор там показано как нажатием пальца поворачивать объект. Правда, там в 3d , но по аналогии можно и для 2d текстурки сделать. А привязку угла поворота к переменной - примерно как я описал выше
King Size #Gamiron12
Сообщение отредактировал NEBR - Суббота, 07 Декабря 2013, 21:27 |
|
| |
kvestpro | Дата: Воскресенье, 08 Декабря 2013, 20:29 | Сообщение # 7 |
заслуженный участник
Сейчас нет на сайте
| NEBR, то, что надо, спасибо большое! Добавлено (08.12.2013, 20:29) --------------------------------------------- NEBR, так и не могу понять.
Инверсная кинематика в Unity Алгоритм поиска пути Jump Point Search
|
|
| |
NEBR | Дата: Воскресенье, 08 Декабря 2013, 20:47 | Сообщение # 8 |
почти ветеран
Сейчас нет на сайте
| kvestpro, в чем проблема?
King Size #Gamiron12
|
|
| |
kvestpro | Дата: Воскресенье, 08 Декабря 2013, 20:56 | Сообщение # 9 |
заслуженный участник
Сейчас нет на сайте
| NEBR, как крутить его. Урок немного не понял, так как английский я не знаю вообще. Моделированию несложно научится просто повторяя действия учителя (Digital Tutors), а программирование не могу. Как мне кажется, нужно ограничить активную область уравнением окружности. Если координаты нажатия внутри круга, тогда, если в прошлом кадре было нажатие и если координаты в прошлом кадре тоже внутри круга, тогда мы, мы.... Не могу придумать!
Инверсная кинематика в Unity Алгоритм поиска пути Jump Point Search
|
|
| |
fessman | Дата: Воскресенье, 08 Декабря 2013, 20:59 | Сообщение # 10 |
участник
Сейчас нет на сайте
| kvestpro, сделайте проще, если вы моделлируете, вам это понятней, найдите программиста.
|
|
| |
kvestpro | Дата: Воскресенье, 08 Декабря 2013, 21:16 | Сообщение # 11 |
заслуженный участник
Сейчас нет на сайте
| fessman, я не люблю моделировать. Вынужден его изучать, так как моделлер за спасибо не будет работать. А вот программировать люблю, но именно эту задачу решить пока не могу. Кажется, что решение где-то рядом, но пока результата нет.
Инверсная кинематика в Unity Алгоритм поиска пути Jump Point Search
Сообщение отредактировал kvestpro - Воскресенье, 08 Декабря 2013, 21:16 |
|
| |
allods | Дата: Воскресенье, 08 Декабря 2013, 21:33 | Сообщение # 12 |
почти ветеран
Сейчас нет на сайте
| Цитата kvestpro ( ) моделлер за спасибо не будет работать. Дружбан будет
А что именно не понятно? поскольку я уже давно програмлю на андроид возможно смогу помочь
|
|
| |
kvestpro | Дата: Воскресенье, 08 Декабря 2013, 22:06 | Сообщение # 13 |
заслуженный участник
Сейчас нет на сайте
| allods, я решил эту задачу, когда сейчас шел домой :). Пока без сенсора, но потом можно и перенести. Значит руль у нас окружность. Ограничим ее двумя уравнениями: (1-x)^2+(1-y)^2<1 И (1-x)^2+(1-y)^2>0.1
Естественно, окружность должна быть гораздо больше, так как пикселы маленькие, но для теста сойдет. Итак, если игрок тыкает в экран и координаты подходят к уравнениям, тогда берем координаты нажатия за прошлый кадр (если нажатие было) и если эти координаты тоже входят в эту область, тогда все отлично, и можно крутить руль.
Нужно представить себе треугольник. Первая точка A - координаты за прошлый кадр, вторая B - центр руля (большой окружности) и третья C - координаты за текущий кадр. Нужно методом координат решить этот треугольник и найти угол ABC. Этот угол и будет углом поворота.
Тригонометрия рулит, как всегда.Добавлено (08.12.2013, 21:54) --------------------------------------------- На андроид можно перенести заменив клик мышкой на касание пальцем. Добавлено (08.12.2013, 22:06) --------------------------------------------- Исправьте, если неверно, пожалуйста.
Инверсная кинематика в Unity Алгоритм поиска пути Jump Point Search
Сообщение отредактировал kvestpro - Воскресенье, 08 Декабря 2013, 21:54 |
|
| |
NEBR | Дата: Вторник, 10 Декабря 2013, 09:11 | Сообщение # 14 |
почти ветеран
Сейчас нет на сайте
| kvestpro, как успехи, реализовал штурвал?
King Size #Gamiron12
|
|
| |
Левша | Дата: Вторник, 10 Декабря 2013, 10:13 | Сообщение # 15 |
почти ветеран
Сейчас нет на сайте
| Цитата kvestpro ( ) На андроид можно перенести заменив клик мышкой на касание пальцем. Исправьте, если неверно, пожалуйста. На андроиде метод OnMouseDown() срабатывает на касание пальцем.
X.cor.R (Prologue)
|
|
| |
kvestpro | Дата: Вторник, 10 Декабря 2013, 11:44 | Сообщение # 16 |
заслуженный участник
Сейчас нет на сайте
| NEBR, столкнулся с проблемой, что поворот будет всегда в одну сторону. Сегодня уже проработал алгоритм вычисления направления (вправо или влево), так что вечером сяду и напишу.
Инверсная кинематика в Unity Алгоритм поиска пути Jump Point Search
|
|
| |
NEBR | Дата: Вторник, 10 Декабря 2013, 12:16 | Сообщение # 17 |
почти ветеран
Сейчас нет на сайте
| kvestpro, я написал небольшую статью на эту тему, сейчас оформляю.
King Size #Gamiron12
|
|
| |
kvestpro | Дата: Вторник, 10 Декабря 2013, 12:43 | Сообщение # 18 |
заслуженный участник
Сейчас нет на сайте
| NEBR, с использованием тригонометрии?
Инверсная кинематика в Unity Алгоритм поиска пути Jump Point Search
|
|
| |
NEBR | Дата: Вторник, 10 Декабря 2013, 12:50 | Сообщение # 19 |
почти ветеран
Сейчас нет на сайте
| kvestpro, нет, просто поворот штурвала в обе стороны.
King Size #Gamiron12
|
|
| |
NEBR | Дата: Вторник, 10 Декабря 2013, 14:52 | Сообщение # 20 |
почти ветеран
Сейчас нет на сайте
| вот эта статья
King Size #Gamiron12
|
|
| |