Тёмный

Простой Character Controller в Unity. Как сделать простое управление персонажем? 

Лавка Разработчика
Подписаться 12 тыс.
Просмотров 8 тыс.
50% 1

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

 

28 сен 2024

Поделиться:

Ссылка:

Скачать:

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

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 36   
@gamedevGod
@gamedevGod 2 года назад
Хорошее видео! Спасибо!) Можно еще после считывания инпута нормализовывать вектор направления движения, так как это же на скорость будет перемножаться и скорость будет чутка непостоянной
@StratoCatster
@StratoCatster 2 года назад
Тоже подумал об этом, но тут движение вправо влево и нормализовать по сути нечего))
@gamedevlavka
@gamedevlavka 2 года назад
Нормализоыать можно, все зависит от задумки автора игры) ведь если игра на консоль или мобилку, то логично предположить, что персонаж будет двигаться тем быстрее чем дальше от центра положение стика. А так как Input.GetAxis() возвращает от -1 до 1, то и проблем никаких не будет. Некоторым играм нужен только бег и стояние, тогда лучше вектор нормализовать)
@gamedevGod
@gamedevGod 2 года назад
@@gamedevlavka про стик не подумал) точно!
@АртемЗайцев-к9щ
@АртемЗайцев-к9щ 2 года назад
У Вас очень интересный канал по разработке, сам работаю на unity около 5 лет,переодически смотрю Ваши видео чтобы узнать что-то новое для себя, желаю успехов в развитии канала!!!
@TheNopoizoron
@TheNopoizoron 8 месяцев назад
Спасибо) Подписался)
@StratoCatster
@StratoCatster 2 года назад
Заморочененько 😀 Но хоть где то на русскоязычном ютюбе наконец то мелькнула формула прыжка зависящая от указанной высоты!) А не просто AddForce Impulse и тд и тп. Не зря я её в чатик кидал 😉
@MrThrash90
@MrThrash90 Год назад
Формула обычно мелькает в иностранных видео, посвященных контроллеру персонажа)
@Nik-cv5bi
@Nik-cv5bi Год назад
У меня вопрос, я так понимаю нет какого то "правильного" способа написать передвижение для персонажа. Но все же интересно какой более предпочтителен и выглядит "правильнее", будь то банальное изменение Trasform.position, взаимодействие через Rigitbody с рассчетом нормали поверхности и т.д (как у Сакутина в видео), или как здесь с помощью Character Controller. Интересно было бы узнать.)
@gamedevlavka
@gamedevlavka Год назад
Предпочтителен тот, что подходит для решения задачи) Движение через трансформ самое топорное, ибо оно совсем не учитывает физику. CharacterController не всегда может дать то, что требуется, ну а через RigidBody - менее быстрый, но самый гибкий вариант.
@feroindiary346
@feroindiary346 Год назад
не советую использовать черектер контроллер если ты двигаешь объекты в игрока, а не наоборот. В этом случае лучше rigidbody
@Skorpiontracer
@Skorpiontracer 2 года назад
Простой - слишком просто. Нужно что-нибудь посложнее.
@gamedevlavka
@gamedevlavka 2 года назад
В следующий раз будет посложнее. Хотя правильнее сказать - поинтереснее
@anotherworld-69
@anotherworld-69 2 месяца назад
Из все что просмотрел этот урок с применение character controller'a самый быстрый и понятный!
@Veles017
@Veles017 11 месяцев назад
Отличный урок! Большое спасибо!
@MrThrash90
@MrThrash90 Год назад
А почему движение через Character Controller нужно реализовывать именно в Fixed Update, это же не движение через просчет физики, это ведь тоже самое, что и через какой-нибудь transform.Translate делать, который тупо объект телепортирует? А считывать в Update input в данном случае разве корректно? За 30 кадров input может поменяться 3 раз и игрок может ощутить некорректное поведение контроллера, нет? И зачем делай рейкаст для определения земли, если у Character Controller есть стандартное свойство isGrounded?
@gamedevlavka
@gamedevlavka Год назад
1. Нет, CharacterConroller использует физику, поэтому лучше их синхрониировать выполнение кода. 2. Инпут в принципе работает в апдейте. И как раз если считывать в FixedUpdate, он может проскакивать и будешь получать некорректные данные. 3. Кастомная проверка через рейкаст, на земле ли контроллер позволяет сделать галочку "на земле", когда коллайдер ещё не коснулся земли. Стандартный флажок ставится только при колизии с землёй. Но управление отзывчивей, когда мы ещё не докасаемся до земли, но уже можем совершить прыжок. Рекомендую поиграться с этим и убедиться на опыте
@gazeepukolshik
@gazeepukolshik 2 года назад
Можно поинтересоваться: почему вы не используете новую input system в ваших видео? Или же это для простоты видео?
@gamedevlavka
@gamedevlavka 2 года назад
Конечно для простоты, новую систему надо объяснять) до этого тоже дойдем
@talisman1104
@talisman1104 Год назад
Очень нравится движение из вов. Везде и в юнити при остановке героя после движения имеется малое скольжение. В вов такого нет. Есть ли метод как сделать управление персонажем без скольжения? Если это очень сложное решение, то было бы интересно послушать хотя бы общее решение
@СветозарБоголюбов
Только это не гравитационная постоянная, а ускорение свободного падения на Земле. Гравитационная постоянная это фундаментальная константа и немного из другой формулы.
@gamedevlavka
@gamedevlavka Год назад
Точняк!
@AltoDuce
@AltoDuce Год назад
Почему нужно заморачиваться с рейкастами, когда они имеют баги с реализацией контроллера, если можно взять controller.isGrounded и он будет работать благодаря тому что мы всегда войдействуем гравитацией
@gamedevlavka
@gamedevlavka Год назад
Рейкасты не имеют багов, если ими правильно пользоваться. А controller.IsGrounded работает на колизии, это зачастую мешает динамике игры, т.к. персонаж должен полностью приземлиться перед след прыжком. Это ощущается плохо
@dogmaruz
@dogmaruz Год назад
В официальной документации сказано что CharacterController не использует Rigidbody, т.е. оно не физично. Тогда зачем FixedUpdate(), не путайте людей.
@requiem_for_a_dream5463
@requiem_for_a_dream5463 2 года назад
А почему ты в Awake пишешь а не в Start _character = GetComponent()? А так за видосик большое спасибо!
@gamedevlavka
@gamedevlavka 2 года назад
В данном случае нет никакой разницы, где кешировать контроллер. Но очень часто инициализация должна произойти раньше, чем объект впервые будет включён, поэтому есть привычка писать инициализацию в Awake().
@ImyaFamiliya64689
@ImyaFamiliya64689 10 месяцев назад
имба. спасибо за формулу прыжка
@stplay4625
@stplay4625 11 месяцев назад
У меня почему-то капсула проваливается через другие объекты, на объектах со слоями Ground она только замедляется
@aliaksandrparetski1538
@aliaksandrparetski1538 2 года назад
Расстроил , я думал как положено с интерфейсом хоть у кого то увижу а тут снова все в одно напихано ((
@gamedevlavka
@gamedevlavka 2 года назад
Я это запланировал в отдельно ролике, понимаю о чем ты. Об IControllable и инпуте извне
@aliaksandrparetski1538
@aliaksandrparetski1538 2 года назад
@@gamedevlavka 🙏 молю, теперь я ждун ...
@talisman1104
@talisman1104 Год назад
@@aliaksandrparetski1538 теперь ты джун
@nikshet4057
@nikshet4057 2 года назад
Урааа! СПАСИБО!
@domiurk
@domiurk 2 года назад
А чем плох CharacterController.isGrounded??? 17:09 Как устранить проблему застревания обектов??
@StratoCatster
@StratoCatster 2 года назад
как вариант создать материал, убрать у него трение и повесить на коллайдер(вроде)
Далее
pumpkins #shorts
00:39
Просмотров 12 млн
Это нужно попробовать
00:42
Просмотров 334 тыс.
Сохранение игры в файл в Unity
20:13