Понедельник, 25 Ноября 2024, 09:48

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Помогите понять в чем проблема! С#. 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" или как-то так :D
Ну а конкретно эту тему по-хорошему надо было в разделе 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
был не раз
Сейчас нет на сайте
Почему её вообще сразу не перенесли.
  • Страница 1 из 1
  • 1
Поиск:

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