Помогите понять в чем проблема! С#. Unity. Android.
|
|
raketa420 | Дата: Суббота, 05 Сентября 2020, 08:20 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Доброго времени суток, я новичок в Unity. Изучаю C#. У меня проблема. Делаю небольшой тестовый проект на Android. В нем по нажатию на экран должен, скажем, спавниться куб. Условия у меня такое: if(Input.GetMouseButtonDown(0) || Input.touchCount >0) То есть при нажатии левой кнопки мыши оно срабатывает и когда количество пальцев на экране больше ноля. На компе в Unity все работает корректно, при нажатии спавниться 1 куб. Но после компиляции и тестировании на andorid-устройстве, при касании экрана спавниться много кубов, пока я не отпущу палец, на каждый кадр по кубу, успеть отпустить палец за 1 кадр нереально. Подскажите глупцу, как правильно прописать условие касания на экран, чтоб срабатывало 1 раз до того как отпускаешь палец.
|
|
| |
drcrack | Дата: Суббота, 05 Сентября 2020, 15:59 | Сообщение # 2 |
старожил
Сейчас нет на сайте
| если touchCount > 0 делаешь GetTouch(0) получаешь Touch в нем есть phase которая в твоем случае должна быть Began — значит что в этом кадре игрок коснулся экрана https://docs.unity3d.com/ScriptReference/Touch.html
Сообщение отредактировал drcrack - Суббота, 05 Сентября 2020, 15:59 |
|
| |
Spring | Дата: Суббота, 05 Сентября 2020, 16:10 | Сообщение # 3 |
частый гость
Сейчас нет на сайте
| touchCount лишь счетчик пальцев на экране, поэтому код будет выполняться каждый кадр, а GetMouseButtonDown это отслеживание нажатия кнопки, также есть GetMouseButtonUp (отжатие) и GetMouseButton (зажатие). Для касаний есть фазы (TouchPhase): TouchPhase.Began(начало касания), TouchPhase.Moved(передвижение касания) и TouchPhase.Ended(конец касания). Чтобы сделать подобие GetMouseButtonDown для сенсора нужно использовать Began:
Код if(Input.GetMouseButtonDown(0) || Input.touchCount >0 && input.touches[0].phase == TouchPhase.Began)
|
|
| |
DESOL | Дата: Воскресенье, 06 Сентября 2020, 09:26 | Сообщение # 4 |
участник
Сейчас нет на сайте
| Ребята выше все правильно написали, единственно меня смутило почему данная тема находится в разделе "С/С++" =)
Unity, Blender, Zbrush, Substance Designer/Painter, TopoGun, RizomUV, Studio One 4
|
|
| |
raketa420 | Дата: Четверг, 10 Сентября 2020, 19:36 | Сообщение # 5 |
был не раз
Сейчас нет на сайте
| Спасибо большое! Данная тема тут, так как я не нашел C# раздела
|
|
| |
drcrack | Дата: Пятница, 11 Сентября 2020, 02:13 | Сообщение # 6 |
старожил
Сейчас нет на сайте
| Не первый раз кстати люди не находят раздел, возможно стоит переименовать "Программирование .NET" в "C# и .NET" или как-то так Ну а конкретно эту тему по-хорошему надо было в разделе Unity создать
Сообщение отредактировал drcrack - Пятница, 11 Сентября 2020, 02:13 |
|
| |
raketa420 | Дата: Среда, 16 Сентября 2020, 05:01 | Сообщение # 7 |
был не раз
Сейчас нет на сайте
| Цитата Spring ( ) Чтобы сделать подобие GetMouseButtonDown для сенсора нужно использовать Began: Код if(Input.GetMouseButtonDown(0) || Input.touchCount >0 && input.touches[0].phase == TouchPhase.Began)
Спасибо большое! Все заработало!Добавлено (16 Сентября 2020, 05:02) --------------------------------------------- Как удалить тему, подскажите? Чтоб она тут не валялась, тем более не в своем разделе.
|
|
| |
k0fe | Дата: Среда, 16 Сентября 2020, 12:29 | Сообщение # 8 |
BRONX
Сейчас нет на сайте
| Удалять тему не стоит.
Проще попросить админов/модераторов, чтобы переместили тему в соответствующий раздел.
мой стрим, который я редко включаю, но зато на нём я делаю игры
|
|
| |
GWÁLÐ | Дата: Пятница, 30 Октября 2020, 13:16 | Сообщение # 9 |
был не раз
Сейчас нет на сайте
| Почему её вообще сразу не перенесли.
|
|
| |