Тёмный

Управление Свайпами на Unity / Unity Swipe Controls 

def1NeX
Подписаться 8 тыс.
Просмотров 22 тыс.
50% 1

В этом видео я покажу как добавить управление свайпами в свою игру на Unity. Таким образом мы реализуем Swipe Detection, который будет запускать событие, когда произойдет свайп. Также в этом видео мы рассмотрим события и делегаты, а также сигнатуры методов (C# event and delegate).
✅ Исходники доступны споносорам
На RU-vid - bit.ly/def1NeXSponsorshipYT
👉🏼 Подписаться на канал: bit.ly/defStudiosSubscribe
👉🏼 Telegram - bit.ly/defStudios_TG
👉🏼 Discord - bit.ly/defStudios_Discord
👉🏼 Twitter - bit.ly/defStudios_Twitter
00:00 - Hello, world!
00:35 - События и делегаты (сигнатуры методов) / events and delegates
01:23 - Собственно код
02:12 - Алгоритм определения свайпов
02:44 - Собственно код
05:39 - Подписываемся на событие свайпа
06:22 - Необычный баг Visual Studio
06:53 - Итоговый результат
Можешь также чекнуть мои другие видео:
def1NeX - Универсальная Система Сохранений
• Система Сохранений на ...
def1NeX - 2048 на Unity [#1] / Игровое поле
• 2048 на Unity [#1] / И...
def1NeX - Кликер на Unity [#1] / Деньги за клик, Улучшения, Пассивный заработок
• Кликер на Unity [#1] /...
def1NeX - Кликер на Unity [#2] / Прогресс когда игрок офлайн
• Кликер на Unity [#2] /...
def1NeX - Object Pooling в UNITY / Пул Объектов
• Object Pooling в UNITY...
def1NeX - Локализация приложения на Unity
• Локализация приложения...
def1NeX - Мультиплеер на Unity (Firebase Realtime Database)
• Мультиплеер на Unity (...
def1NeX - Minecraft Система Крафта на Unity
• Minecraft Система Краф...
#unity​ #юнити​ #swipecontrol #swipedetection #свайп

Опубликовано:

 

30 июл 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 63   
@AleksandrFoman
@AleksandrFoman 3 года назад
Одно из лучших твоих видео, молодец!
@gamedevGod
@gamedevGod 2 года назад
Хороший урок! Спасибо большое за труд!
@user-re5bc5bk9t
@user-re5bc5bk9t 2 года назад
Большое спасибо!!!
@user-bs6xt7yn8w
@user-bs6xt7yn8w Год назад
не понял как этот код должен работать, tapPos = Input.mousePosition; swipeDelata = (vector2)Input.mousePosition - tapPos; //всегда = 0
@Vegon550
@Vegon550 3 года назад
А как сделать чтобы шарик перемещался пока ты держишь палец на экране?
@user-tm2hi8xk1n
@user-tm2hi8xk1n 3 года назад
Лайк поставил. Норм кино 👍 и тема мне нужная сейчас. Но вот говоришь ты очень быстро. 🙂 Я слышать успеваю, а осознать нет. Опыта копейки у меня. Около полгода. Думаю было бы больше, и соображал бы быстрее.
@user-jp4ng2mp6k
@user-jp4ng2mp6k Год назад
а как предыдущее видео называеться где куб двигается?
@user-yl2vi7cz4f
@user-yl2vi7cz4f 3 года назад
мы обязательно дождемся продолжения мультиплеера
@user-ub4kz8gr1c
@user-ub4kz8gr1c 3 года назад
Perfect tutorial please more about android touching okey
@user-or1ok1sp5j
@user-or1ok1sp5j 2 года назад
def1Nex, спасибо за урок, и основу в коде, я её редактировал и слелал движение игрока вслед за пальцем по x и y одновременно, у меня игрок телепортировался на нулевые координаты, и я это исправлял где-то 2 недели!, и ура я всё сейчас сделал), кому надо могу скинуть код
@Natharcheck
@Natharcheck Год назад
Привет, можешь скинуть, было бы не плохо посмотреть)
@justdot5085
@justdot5085 2 года назад
А какой должен быть ForceValue?
@zheka4tv209
@zheka4tv209 Год назад
Привет. А как сделать так, чтобы вызывать событие можно было только тогда, когда палец именно на той или иной области экрана?
@sleepless6740
@sleepless6740 4 месяца назад
кнопка в юи
@ravenempty3562
@ravenempty3562 2 года назад
ничего непонятно, но очень интересно
@qw1dy
@qw1dy Год назад
У меня ничего не работает, видимо потому что ты не показал скрипт под названием Finish который у тебя в проекте, мог ли бы ты показать его как нибудь?
@blahdogh7304
@blahdogh7304 Год назад
Коммент для продвижения
@pro100tut2
@pro100tut2 2 года назад
После рестарта сцены, вылезает ошибка, чтобы не пытался сделать. Поможешь? MissingReferenceException: The object of type 'PlayerController' has been destroyed but you are still trying to access it. Your script should either check if it is null or you should not destroy the object.
@def1NeX
@def1NeX 2 года назад
В объекте в котором ты подписываешься на ивент свайпа (а это PlayerController, я так понимаю) в OnDestroy отписывайся от ивента
@pro100tut2
@pro100tut2 2 года назад
@@def1NeX Спасибо, ты не только помог с проблемой , а еще и дал мне новую тему для изучения
@kenny_mccorm1ck
@kenny_mccorm1ck 3 года назад
этот мастер заслужил свои 300 баксов
@rajpolinovsky8350
@rajpolinovsky8350 3 года назад
Хорошее видео! Спасибо! Появилась новая версия input system. Вы сделаете пример этого урока с его использованием?
@def1NeX
@def1NeX 3 года назад
Да, есть такое в планах
@crazy_way_s
@crazy_way_s Год назад
Цей код-свайп буде працювати на андроїді? Бо я ще початківець у цьому.
@def1NeX
@def1NeX Год назад
Так
@Саммер_Стандофф2
@Саммер_Стандофф2 9 месяцев назад
как сделать какое то любое событие свайпом
@makxi3795
@makxi3795 3 года назад
Круто конечно, но погугли про IPointClickHandler, iBeginDragHandler, IdragHandler, IEndDragHandler они все из пространства имен UnityEngine.EventSystems, их там еще много но это основные, они сделаны как раз что бы ты не писал Input.gettouch или тоже самое с мышкой, это же мрак, эти интерфейсы дают тебе все нужное и работают как на мобилке, так и на пк.
@def1NeX
@def1NeX 3 года назад
Да ты что?)) Эти интерфейсы работают при взаимодействии с UI элементами только. Но зачем перед тем как что-то советовать, проверять информацию, да?)
@Fa1ust
@Fa1ust 2 года назад
@@def1NeX И все же, зачем городить огород, когда можно воспользоваться более простыми иснтрументами, или у тебя какая-то особенная неприязнь к UI?
@kelafac6261
@kelafac6261 2 года назад
@@Fa1ust Это в корне не верно и глупо :DDDDDD Насмотрятся туториалов :D как минимум сцену гавном засрете :) ну вы поймете когда будете ( если будете ) работать в команде или там где есть код ревью, либо когда будете делать свой проект средних размеров и наткнетесь на кучу гавнища лишнего :)
@ginner9635
@ginner9635 2 года назад
а почему не public event Action OnSwipeInput; ?
@def1NeX
@def1NeX 2 года назад
Можно и так, я сделал через свой делегат. Вдруг ты захочешь добавить больше передающихся параметров, так удобнее как по мне
@ginner9635
@ginner9635 2 года назад
@@def1NeX ну там можно также чз запятую их перечислить) ну это так - придирка, сорри) Так просто проще) и на инвоуке можно так писать Invoke?. что проверку не делать. А по теме - впервые делаю тач контроллер и уже употел. Твой урок очень логичный, хорошо структурирован и понятен. И код должен работать. НО он не работает. Я двигаю игрока чз Vector3.MoveTowards, т.к. у меня нет физики в игре. Но проблема в том, что он неправильно считает магнитуду. Постоянно нули выдает. Это может быть связано с тем, как юнити считывает точки касаний с Не ортографической камерой?
@ginner9635
@ginner9635 2 года назад
@@def1NeX а и кстати: лучше отписываться от подписок в OnDestroy, чтобы память не текла)
@def1NeX
@def1NeX 2 года назад
@@ginner9635 и что бы Null Referenc'ы не ловить, да. Но я думаю, что это очевидно и люди сами это понимают
@def1NeX
@def1NeX 2 года назад
@@ginner9635 а я в видео Invoke без ? закастил? Значит ошибся, я всегда его с проверкой юзаю, видимо проглядел). По твоему вопросу сложно сказать в чем дело. Можешь в дискорд скрин с частью кода скинуть, посмотрю
@crystalsix9014
@crystalsix9014 3 года назад
Спасибо! только одна проблема основной код работает(проверял через дебаг и точки остановки) но вот когда делаю управление для гг он не реагирует на щелчки(подписался на ивент) всё вроде правильно сделал
@aleksandranikin7811
@aleksandranikin7811 2 года назад
аналогично
@limon4ikplay747
@limon4ikplay747 Год назад
Кто может подсказать как сделать чтоб куб по свайпам прыгал?
@user-qu3xn6uc9o
@user-qu3xn6uc9o Год назад
можно через RigidBody добавлять силу в направлении делаем поле _rb с типом Rigidbody в старте _rb = GetComponent(); ну а дальше при свайпе вверх _rb.AddForce(Vector3.up) Вроде как то так
@artemmanzyuk4497
@artemmanzyuk4497 2 года назад
ошибка Index out of bounds
@graffaress2243
@graffaress2243 2 года назад
как увеличить скорость ???
@unoveb-1394
@unoveb-1394 2 года назад
Когда ты сделал переменную "public float speed;" в юнити будет переменная speed и там сдела хоть 5000
@Ilone345
@Ilone345 Год назад
как определить направление свайпа и конвертировать его в string?
@def1NeX
@def1NeX Год назад
Зачем тебе направление в виде строки? О_О
@Ilone345
@Ilone345 Год назад
@@def1NeX я хочу сделать карту которая будет следовать за мышкой. Если повести в право то заюзаеться анимация и карта наколоситься вправо
@def1NeX
@def1NeX Год назад
@@Ilone345 ну так передавай направление вектором, зачем строкой
@Ilone345
@Ilone345 Год назад
@@def1NeX мне нужно заюзать анимацию смотря в какую сторону, как сделать проверку этого направления?
@zahpotter
@zahpotter 3 года назад
А мне вот этот код нужно переделать на unity bolt, потому что это обязательное правило геймджема в котором я учавствую
@lives6033
@lives6033 3 года назад
когда там продолжение 2048?)
@def1NeX
@def1NeX 3 года назад
Осталось только смонтировать. Завтра-послезавтра
@veiterio
@veiterio 3 года назад
Не понял, а 2048 где? 🥺
@def1NeX
@def1NeX 3 года назад
В 3 части мы прикрутим свайпы к управлению, поэтому нужно было выпустить сперва этот видос.
@veiterio
@veiterio 3 года назад
@@def1NeX кхм, справедливо 👀
@viktorzeiger127
@viktorzeiger127 3 года назад
@@def1NeX круто что ты об этом подумал
@user-op8fo9bn8j
@user-op8fo9bn8j Год назад
Привет помоги мне ошибка Assets/SwipeDeyection.cs(53, 33): error CS1002: ; expected Assets/SwipeDeyection.cs(79, 5): error CS0106:The modifier 'private' is not valid for this item Assets/SwipeDeyection.cs(100, 2): error CS1513:} expected
@Atlas-st1yt
@Atlas-st1yt 3 года назад
что делать если после меню высвечивается ошибка: MissingReferenceException: The object of type 'Rigidbody' has been destroyed but you are still trying to access it. Your script should either check if it is null or you should not destroy the object. UnityEngine.Rigidbody.AddRelativeForce (UnityEngine.Vector3 force, UnityEngine.ForceMode mode) (at :0) UnityEngine.Rigidbody.AddRelativeForce (UnityEngine.Vector3 force) (at :0) player.Move (UnityEngine.Vector3 direction) (at Assets/Scripts/player.cs:53) player.OnSwipe (UnityEngine.Vector2 direction) (at Assets/Scripts/player.cs:27) SwipeDetection.CheckSwipe () (at Assets/Scripts/SwipeDetection.cs:70) SwipeDetection.Update () (at Assets/Scripts/SwipeDetection.cs:50)
@def1NeX
@def1NeX 3 года назад
В ошибке же написано, юнити не видит rigidbody на объекте. Ты либо его дестройнул, либо не инициализировал и т.д. В общем, ищи проблему в этом.
@johnrif2531
@johnrif2531 3 года назад
попробуй решить добавлением проверки !null в скрипте player private void Move(Vector3 direction) { if (this != null) { if (this.GetComponent()) { _rb.AddRelativeForce(direction * Speed); } Debug.Log("-"); } }
@Atlas-st1yt
@Atlas-st1yt 3 года назад
@@johnrif2531 спасибо, получилось
@dinarshagidullin3669
@dinarshagidullin3669 3 года назад
У кого не работает: В скрипте SwipeDetection нужно добавить ?.Invoke: 72-74 строчка SwipeEvent?.Invoke(_swipeDelta.x > 0 ? Vector2.right : Vector2.left); SwipeEvent?.Invoke(_swipeDelta.y > 0 ? Vector2.up : Vector2.down);
@kelafac6261
@kelafac6261 2 года назад
if(swipeDelta.magnitude > _deadZone) { if (SwipeEvent != null) SwipeEvent?.Invoke(swipeDelta); ResetSwipe(); } -,-
Далее
Документы для озокомления😂
00:24
⚡ Всё про события в Unity 3D
21:38
Просмотров 103 тыс.
Namespaces in Unity
7:05
Просмотров 61 тыс.
Документы для озокомления😂
00:24