Рассказываю про распространенные причины, почему объекты трясутся в Unity. В основном это всегда связано с порядком вызова скриптов и интерполяцией. Строим график для того чтобы лучше понять как меняется положение объекта.
Ну ты прям нас балуешь) сразу 2 видео, с таким коротким промежутком) Контент топ) лучшие обучающие ролики какие я только видел) Ждем с нетерпением новых)
На одном дыхании просмотрел. Наиполезнейшая информация с потрясающе подробными объяснениями без воды. Подписка, лайк и коммент с меня за такую качественную работу!!❤
Отличное видео! Очень классный подход с визуализацией позиции предмета в пространстве при помощи AnimationCurve. Оно есть в Unity, добавлять значения в него легко и просто и оно прекрасно показывает суть проблемы. В общем отличная тема. Беру на вооружение. Жду следующее видео ;)
Большое спасибо за видео. Иногда сталкиваюсь с такой проблемой, но из-за непонимания причин ее возникновения начинаю наугад менять логику перемещения, что редко когда помогает. Теперь же все встало на свои места
Инпут лучше считывать в апдейте, а применять силы в фиксед апдейте - иначе в некоторых кадрах мы будем терять ввод. Задавать скорость с помощью velocity можно, если на объект не будут больше воздействовать никакие силы. Если вы захотите сделать какой-нибудь взрыв, который отталкивает игрока, или отдачу от оружия, когда игрока прям относит назад - вы не сможете это сделать, потому что у вас задается скорость определенным значением и никакие силы больше не применятся. Либо же придется городить какие-то странные конструкции, типо velocity = moveSpeed(обычная скорость передвижения) + explodeForce(отскок от взрыва) + recoilforce(отскок от отдачи ружия), где explodeForce и recoilForce большую часть времени будут нулевыми векторами, что выглядит странно. К тому же более физично и реалистичнее, когда игрок разгоняется, а не сразу приобретает всю скорость, поэтому addforce это лучший вариант. Сделать вектор, на который персонаж ускоряется, вектор максимальной скорости по xy и вектор, который будет игрока стопорить. И тогда уже логика будет такая: если ввод считан и скорость меньше максимальной, то addForce(вектор ускорения) иначе, если скорость больше 0, то addForce(-вектор стопора); Так перс будет ускоряться, но не бесконечно и сможет тормозить, если игрок ничего не вводит. Причем его движение еще и можно будет настраивать - насколько быстро ускоряется персонаж, насколько быстро тормозит. Если вы вдруг примените какую-то доп. силу, вроде взрыва, отдачи или прыжка - она нормально применится, при этом перс сохранит то направление, в котором он двигался
@@terachannel1154 звучит лучше, но куда ее применять? К velocity? Я нагородил addForce, чтобы на игрока могли внешние силы воздействовать без необходимости прописывать их в коде ходьбы.
Спасибо дружище. В ру сегменте твои уроки - лучшие. У Макса тоже хорошие, но твоя душевная подача и ламповые ништяки вроде Монголонезависемого кода - луч света на нашем долгом и тернистом пути :) Просто хотел это сказать, спасибо еще раз =)
/// SUPER /// PREMIUM /// EXCELLENT /// ULTRAHIGH !!!!! Столько полезной и важной инфы для новичков в одном видео !!! Сохранил себе в золотую коллекцию уроков по Unity !!! Спасибо !!! :))) 👍👍👍👍👍
Отличный тутор, в свое время очень много времени потратил на эти проблемы, особенно актуальны с использованием передвижения от 1 лица + IK + Puppet master, еще есть возможность перед телом класса писать атрибут [DefaultExecutionOrder(1000)], 1000 это как раз очередь обновления и таким образом задать порядок обновлений скриптов.
Видео классное, и наглядно все показываешь!!! У меня с интерполяцией персонаж во время падения начинает вести себя странно Падение осуществляется через стандарную физику(2d), только я выкрутил гравити до 100.
Спасибо) очень крутой ролик, а есть возможность проект получить?) Я не очень понял как ты так камеру закрепил, по логике вещей она должна в координаты плеера уплывать. Ну и просто покопаться, и сосисочка классная)
БЛЯТЯЬЯТТЯТЯТ Я НЕ МОГУ ОПИСАТЬ СВОИ ЭМОЦИИ Я ИСКАЛ ПРИЧИНУ ЛАГОВ В СВОЕЙ ИГРЕ ДВЕ НЕДЕЛИ ПОТРАТИЛ СТОЛЬКО ВРЕМЕНИ ТЕПЕРЬ ВСЁ ТАК ПЛАВНО АААААААААААААААААААААААААААААА ХРАНИ ТЕБЯ ГОСПОДЬ ЛУЧШИЙ ЧЕЛОВЕК МИРА!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤ ВСЕГО ЛУЧШЕГО АВТОРУ
Оптимизация в игре играет ООООЧЕНЬ важную роль. Обычно проблема оптимизации в проекте либо из - за скриптов (обычно в методе Update, т.к. вызов этого метода происходит каждый кадр), либо из - за большого количества батчеров, которые тоже нужно как можно сильнее сокращать. В общем, сам с этим постоянно сталкивался.
Если твоей игре нужна оптимизация кода, значит проектирование дно. Оптимизация кода не понадобится при правильном подходе к архитектуре проектирования.
Хм, центр массы можно оказывается задавать ниже тела объекта. Что позволяет не замораживая вращение нормально двигать объектом, плюс он будет нормально реагировать на изменение точки притяжения. Переворачиваем локацию, притягиваем контроллер к стене или потолку, и он без дополнительных приколов начинает нормально ходить по потолку, или стенам. Действительно простейший способ)
Брат ну с лейтАбдейт тебе РЕАЛЬНО ОГРОМНЕЙШЕЕ СПАСИБО, ты не представляешь как меня бомбило после того как вчера я зашел и убедился что все нормально, а сегодня зашел и ВСЕ ТРЯСЁТСЯ БЛИН! Спсспспспспс
Как на счёт движущихся с вращением платформ? Чтоб персонаж будучи на платформе мог врезаться в стены, которые-бы его сбивали с платформы. Ещё чтоб платформа держала другие объекты. Кстати, почему не поставить fixedupdate на 0.01? Будет 100 раз в секунду обрабатывать изменения. Если input считывать, или менять velocity всего 50 раз, а кадров будет больше, там 60, 120.... то мне кажется чувство контроля над персонажем будет страдать.
ты просто Гений! Илья сделай пожалуйста, продвинутый курс по C# хоть платный! не начальный, а именно углублённый-продвинутый, а то начальных курсов полно, с массивами и циклами, а серьёзного ничего нет, а если и есть то авторы так себе, объясняют на космическом языке как будто их уроки сеньоры смотрят, как скороговорку по бумажке прочтут и готово, в итоге ничего не понятно! Многие будут тебе очень благодарны, на ру просторе ты лучше всех делаешь уроки, очень доходчиво, я твои уроки лучше всего воспринимаю, думаю как и многие!
Здравствуйте, спасибо вам за урок. Но у меня почему-то остались очень небольшие подергивания. Как оказалось, проблема в камере и задержке её движения, если она как у вас 10f, то сама камера дергается при движении, и это заметно на графике для отрисовки движения камеры, если очень большое число (или просто без Lerp), то все гладенько. Печалька(
У меня возникла интересная проблема с поворотом через AngularVelocyty. Когда персонаж залазить в горку, то его нельзя повернуть пока он не поднимется или же когда он ровно бежит в стенку, его нельзя повернуть через transform.Rotate было хорошо, но из за него трясется... персонаж стоит Interpolate Возможно это из-за того что управление движения не через физику
У меня кажется не работает Rigidbody interpolate. Он включен, я в FixedUpdate двигаю персонажа через velocity, но он всё равно двигается не плавно. А на графике у меня эти ровные ступеньки, в которых координата не меняется
У меня возникла необходимость (очень-очень нужно) менять вручную transform.position в каждом кадре (или в fixedUpdate) из-за чего конечно поломалась интерполяция для камеры. Есть ли какой-то способ всё-таки это сделать? Может быть как-то хитро через физику, например применить одноразово силу через AddForce, чтобы сместить положение, а потом сделать обратный AddForce, чтобы это не изменило скорость объекта. Спасибо.
О, большое спасибо! Хотелось бы узнать почему, когда компилирую игру для телефона, запускаю, а у меня низкий FPS. Телефон мощный, на ПК при тестовом запуске всё плавно. И хотелось бы по-подробнее изучить настройки Unity, пройтись по ним. Буду очень рад, если будет урок по настройке Unity Проекта и оптимизации.
Сама по себе юнити ставит таргет фпс 30 для мобильных телефонов Поэтому ты можешь создать скрипт с таргетом фпс при старте в 60 и повесить на любой обьект)
@@EccentricGames проект небольшой. Я сделал его заново на обычном 3D. Но результат не поменялся. У меня там есть монетка и её нужно крутить пальцем, на ПК всё хорошо, на телефоне низкий FPS и если быстро пальцем свайпнуть, то монета крутится в обратную сторону, не в ту, в которую сделал свайп. Если медленно, то в правильном направлении.
Привет,у меня такая проблема,почему все 3D модели в низком разрешении,я не понимаю как в других мобильных играх,делаю гладкие 3D модели,если не секрет раскажи плиз
А вы не знаете как исправить проблему в 2д, что персонаж трясется/подпрыгивает, когда платформа, которая двигается по координате "y" вверх вниз, движется вниз?
Забыл еще момент что при движении velocity нужно умножать на массу объекта. У тебя в проекте масса была 1, а если бы она была иной - нужно было бы тогда скорость менять.
А почему бы вращение камеры на задавать просто через отдельный Update? Т-е трансформ Эйлера но не в рамках FixedUpdate. По моему от такого лесенки должны исчезнуть.
@@EccentricGames Не должна, если вращение капсулы происходит строго по вертикальной оси. Как это и происходит в случае в видео. Всм это вращение не меняет формы объекта, а значит лесенок от вращения не будет, независимо от наличия или отсутствия интерполяции.
@@TheMrKMen вот я проверил и никак не получается вращать в Update со включенной интерполяцией. Ступеньки есть и в позиции и в угле поворота transform-а
Такой контроллер разве не будет улетать в небо двигаясь по резко наклонным поверхностям? Из-за отсутствия трения тело может двигаться почти по отвестным поверхностям. По крайней мере я столкнулся с этой проблемой.
Месяц не мог исправить этот баг ,в моей мобильной гонке бот при передвижении дергался , днями искал решение в гугле на форумах,надо было на ютуб заглядывать)
Самая банальная проблема это несовпадение частоты кадров и частоты симуляции, поэтому должна применятся интерполяция, не знаю зачем здесь видео на 39 минут