#2 - Как научить персонажа двигаться в Unity 2D

  Рет қаралды 82,592

Noob Game Dev

Noob Game Dev

3 жыл бұрын

Уроки по созданию 2D платформера на Unity.
Как перемещать персонажа? Как написать скрипт управления персонажем?
Код из урока: drive.google.com/file/d/1oemi...
Discord: / discord
Вконтакте: noob_game_dev
Телеграм: t.me/Noob_Game_Dev

Пікірлер: 486
@themegajediOBVM
@themegajediOBVM 3 жыл бұрын
Как хорошо, когда человек всё показал и объяснил... А кто же автору это показал и объяснил? Самому же очень тяжело всё это разобраться.
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Ну, так я и не первый)) Просто пытаюсь не тупо копировать, а разобраться какие есть варианты, почему одни лучше других, как-то их упростить, выявить самые рабочие и осветить те моменты, которые на мой взгляд заслуживают внимания...
@pulsar1934
@pulsar1934 3 жыл бұрын
Лучшие уроки, вы действительно как толковый преподаватель объясняете, особенно нравится как вы уделяете внимание мелочам и особенностям движка.
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Огромное спасибо! Стараемся стараться))
@hicomputergamesyt2.014
@hicomputergamesyt2.014 Жыл бұрын
Первый автор который РЕАЛЬНО научил меня нормальному движению! Огромное спасибо! Прям РЕАЛЬНО ОГРОМНОЕ СПАСИБО!!!
@exesnik3491
@exesnik3491 2 жыл бұрын
Конкретно и по теме, без воды и лишний ненужной информации,спасибо большое ^3^
@dichay
@dichay 3 жыл бұрын
Ты единственный человек который пояснил как надо.. Лайк, подписку оформил)
@YuriyN_002
@YuriyN_002 2 жыл бұрын
Огромное человеческое спасибо, видео очень хорошее и понятное, понятно и с методом и со скриптом ) подписка лайк, продолжай в том же духе
@sensei7059
@sensei7059 2 жыл бұрын
Самые полные и развернутые объяснения. Лайк!
@lidjest9888
@lidjest9888 3 жыл бұрын
Спасибо , большое из нескольких уроков , что я нашла в инете, это самый лучший, другие то не досказанные, но в основном код не работает, а тут все получилось. Спасибо! Пожалуйста делай больше уроков.
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Спасибо) Хотя видео одно из первых в очереди на перезапись (особенно касается первых 3-4 видео - много чего забыл сказать ещё, да и косяки присутствуют)
@DS-lx9xz
@DS-lx9xz 2 жыл бұрын
Большое спасибо за видео) кратко и понятно! Удачи в продвижение канала
@Jetbullet777
@Jetbullet777 2 жыл бұрын
О, отличное видео, все коротко и по делу. По другим видео у "профессиональных" учителей, столько строчек кода и такой сложный код писали, что хотелось все бросить. У тебя - коротко и по делу. Лайк, подписка, колокольчик!)
@egorbragin3191
@egorbragin3191 Жыл бұрын
Это один из самых лучших уроков на ютубе!
@flood9048
@flood9048 3 жыл бұрын
Спасибо) В последнем гайде, который я смотрел (по движению во все оси) было всё очень сложно, писал код около часа. Тут всё реально просто :)
@hellina_girlie
@hellina_girlie 3 жыл бұрын
Все информативно и нет урока про ходьбу на 20+ минут. Ставлю класс
@kostyakrabik4529
@kostyakrabik4529 3 жыл бұрын
Это видео пригодится и через 10 лет, ты очень хорошо объясняешь)
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Вряд ли) Но, спасибо))
@kimuri_team
@kimuri_team 3 жыл бұрын
Воу! Это действительно лучший урок! Спасибо большое! Не останавливайся, у твоего канала большое будущее!!!)))
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Спасибо, приятно слышать) Значит и дальше будем двигаться в таком же темпе)
@zaya2868
@zaya2868 3 жыл бұрын
Канал и видео очень классные!!! Подписка с двух акуантов сразу. Спасибо за такое видео!!!
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Спасибо!) Очень Вам благодарен!
@user-eh8hy8hg9c
@user-eh8hy8hg9c 3 жыл бұрын
Просто спасибо. Всё понял и даже получилось)
@hasanboyhakimov9144
@hasanboyhakimov9144 2 жыл бұрын
Спасибо вам, таких как вы немного
@gopasran4ik
@gopasran4ik 2 жыл бұрын
Чувак ты золото, подписка и лайк, за такое количество уроков!!!!
@NoobGameDev
@NoobGameDev 2 жыл бұрын
Спасибо) Но, на мой взгляд, их ещё маловато... По плану должно быть как-то так: vk.com/@noob_game_dev-plany-kanala-noob-game-dev
@gopasran4ik
@gopasran4ik 2 жыл бұрын
@@NoobGameDev круто запланировал!!!
@oldborodach
@oldborodach 2 жыл бұрын
Вот кстати за небольшие, но очень нужные тонкости спс я про изменения имени файла скрипта не многие это говорят и у новичка ошибки. Вот у меня лично по началу так и было 🤝 Досмотрел, законспектировал все топ все работает! Пару разных примеров с скрипте тоже зачет!
@NoobGameDev
@NoobGameDev 2 жыл бұрын
Спасиб) Правда, чем больше я вникаю в геймдев на C# под Unity, тем сильнее мне хочется переделать первые уроки) Ибо код там примитивный (явно не для корпоративной разработки в больших студиях)), а так... по вечерам поковыряться).
@oldborodach
@oldborodach 2 жыл бұрын
@@NoobGameDev не норм для таких как я новичков все норм!
@dansatora3150
@dansatora3150 3 жыл бұрын
Благодарю тебя. Обьяснил все ясно и понятно)
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Спасибо) Это радует)
@user-dh9sh9hv2b
@user-dh9sh9hv2b 3 жыл бұрын
Я вижу у вас много материала для просмотра, подписку оформил, сейчас начну впитывать контент.
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Рад, что Вы к нам присоединились) Контента на данный момент, если честно, не так уж и много... Но планы грандиозные, идей на годы вперёд, так что будет интересно) По крайней мере, я постараюсь))
@user-ow6zc8rg2p
@user-ow6zc8rg2p 3 жыл бұрын
Огромное спасибо, это первый способ контроля игрока который у меня получился!
@bac3k573
@bac3k573 3 жыл бұрын
Очень хорошо, спасибо, странно что так мало просмотров
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Спасибо, большое!) Ну, канал молодой ещё совсем, надеюсь, что из-за этого)
@haveNoFuture
@haveNoFuture 3 жыл бұрын
@@NoobGameDev а как сделать реалистично движимого перса. Чтобы нажатие клавиши отображались адекватно с движением. Например удержать клавишу перс идёт вперёд, но на середине шага опускаем, нога перса в воздухе, анимация не кончились, но резко жмём назад и? Как сделать движение перса в соответствии с физикой, учитывая все моменты инерции, если это часть механики?
@tessplaja679
@tessplaja679 2 жыл бұрын
Привет, мне 14 лет, и я решил начать изучать программирование. Думаю, твои уроки мне будут полезны. Пока попробую написать какую-нибудь простую 2д. игру с легкими квестами, уже есть маленький 2д. мир и персонаж,, который умеет ходить благодаря тебе).
@NoobGameDev
@NoobGameDev 2 жыл бұрын
Привет! Это круто - молодцом!) Если прям совсем нет опыта в программировании, то советую тебе пройти несколько бесплатных курсов, чтобы не просто символы переписывать, но и примерно понимать, что происходит: 1. geekbrains.ru/courses/754 2. geekbrains.ru/courses/87 3. geekbrains.ru/courses/70 А потом начинать читать что-то типа руководства по языку: metanit.com/sharp/tutorial/ Будет гораздо легче двигаться дальше)
@tessplaja679
@tessplaja679 2 жыл бұрын
@@NoobGameDev Спасибо за советы)
@mityasha11
@mityasha11 Жыл бұрын
Если что на моем канале как раз выходит серия уроков по созданию простой 2д игры
@piwerm1737
@piwerm1737 3 жыл бұрын
Я искал такой гайд 10 ЧАСОВ!
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Странно, это довольно часто-встречающаяся тема уроков... Но я рад что Вам оно понравилось) И спасибо за подписку! Надеюсь, Вы найдёте ещё видео на канале, которые Вам понравятся! ;)
@stmsblue
@stmsblue 2 жыл бұрын
Спасибо большое, познавательно
@user-sj9wl1oe8n
@user-sj9wl1oe8n 3 жыл бұрын
Ураааа, огромное спасибо!!!! Скопировал код, и понял что что то не так было в меня, думал забросить, вы ищменили мне настроение!
@NoobGameDev
@NoobGameDev 3 жыл бұрын
А я Вам только хотел перечень писать того, что нужно проверить)) Рад, что у Вас получилось)
@user-sj9wl1oe8n
@user-sj9wl1oe8n 3 жыл бұрын
@@NoobGameDev уже пробую учить персонажа прыгать
@ainsoulgorn8521
@ainsoulgorn8521 3 жыл бұрын
Очень нравятся твой уроки. Понятно и просто для понимание. Хотел спросить ты будешь снимать видео про добавление навыков? Например при получении навыка открывается возможность мульти прыжка или карабканье по стенам
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Спасибо, я рад, что нравятся) Да, буду в плане по видео есть даже пункт такой... Но когда оно выйдет я даже боюсь представить(( В принципе, я планировал ещё 3-4 видео по механике (чтобы основное закрыть), а потом как раз про организацию кода, объединение скриптов и переключение между механиками (отключение/включение) это не совсем система навыков (и она будет не оформлена), но принцип работы тот же: галочку поставил - навык включился)
@valerastah9757
@valerastah9757 3 жыл бұрын
Спасибо огромное!
@nikto_hin897
@nikto_hin897 2 жыл бұрын
смог исправить код , спасибо , теперь ты будешь меня обучать вместо прошлого "учителя"
@NoobGameDev
@NoobGameDev 2 жыл бұрын
Тогда тебе нужно к нам в Дискорд (ссылка есть в шапке канала) - там и вопросы можно позадавать и других коллег послушать)
@mixof1477
@mixof1477 3 жыл бұрын
Ох я нашел вас, вы едиственный человек который объяснил,да и еще скинул код Можно спросить,а как сделать так что бы при ходьбе в вашем коде персонаж поворачивался в зависимости в какую сторону идет?
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Да, это следующий урок в плейлисте: kzfaq.info/get/bejne/ip1pmq-dmqrQmps.html :)
@themegajediOBVM
@themegajediOBVM 3 жыл бұрын
А поставить на компьютер Юнити и всё для этого необходимое тяжело, или все делается в два клика? Отдельного гайда не требуется?
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Просто, главное не упустить пару моментов... Сделаем!)
@mandarin7716
@mandarin7716 3 жыл бұрын
Блин, друг... Спасибо реально, лайк заслужен 👍
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Спасибо! Приятно) Будем стараться и дальше ;)
@mandarin7716
@mandarin7716 3 жыл бұрын
@@NoobGameDev, а есть видосы по OnCollision и OnTrigger ?
@NoobGameDev
@NoobGameDev 3 жыл бұрын
1000 извинений, но пока нигде не затрагивал... Если отдельно сейчас делать видео по методам, то я вообще буду медленно продвигаться в основном направлении. Но осветить эту тему я однозначно хотел (вполне возможно, что со временем появится целый плейлист по методам), поэтому, возможно, в одном из следующих видео использую OnCollision или OnTrigger, но даты или сроки сказать не могу... ((
@mandarin7716
@mandarin7716 3 жыл бұрын
@@NoobGameDev, а, ну ладно. И так очень помог👍. Я просто, относительно недавно решил попробовать себя в этом направлении, ибо школьная программа по "программированию" давалась очень легко, а это вроде и интересно, и полезно:)
@NoobGameDev
@NoobGameDev 3 жыл бұрын
@@mandarin7716 Очень поддерживаю такие мысли! Если ещё и английский неплохо даётся, то рекомендую поковыряться в Руководстве Unity. Там очень много полезной инфы (в том числе и о том, что ты спрашивал), только на русский переведено процентов 15 всего.
@okrime5809
@okrime5809 3 жыл бұрын
Спасибо
@geomigames3198
@geomigames3198 6 ай бұрын
Спасибо большое, за скрипт
@Kratos770
@Kratos770 10 ай бұрын
Спасибо мужик
@Onran0
@Onran0 2 жыл бұрын
То чувство, когда умеешь делать мультиплеер и прочую синхронизацию между игроками, анимации модели и прочее, но даже не умеешь делать передвежение объектам) 0)
@nembus5009
@nembus5009 Жыл бұрын
благодарю
@serser3946
@serser3946 Жыл бұрын
Лучший
@shushard
@shushard 3 жыл бұрын
класс
@ka5il
@ka5il Жыл бұрын
код на движение using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerMove : MonoBehaviour { public Rigidbody rb; public Vector2 moveVector; public float speed = 2f; void Start() { rb = GetComponent(); } void Update() { walk(); } void walk() { moveVector.x = Input.GetAxis("Horizontal"); rb.velocity = new Vector2(moveVector.x * speed, rb.velocity.y); } }
@Ap4kg
@Ap4kg Жыл бұрын
У него была ошибка, он не поставил как 2D она может быть не у всех! using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerMove : MonoBehaviour { public Rigidbody2D rb2D; public Vector2 moveVector; public float speed = 2f; void Start() { rb2D = GetComponent(); } void Update() { walk(); } void walk() { moveVector.x = Input.GetAxis("Horizontal"); rb2D.velocity = new Vector2(moveVector.x * speed, rb2D.velocity.y); } }
@fentazu
@fentazu 5 ай бұрын
Благодарен)
@maniso23
@maniso23 4 ай бұрын
Огромное тебе спасибо!@@Ap4kg
@ilayusachev212
@ilayusachev212 2 жыл бұрын
Здравствуйте! Хочу создать 2д игру с видом сверху, поэтому немного подкорректировал Ваш скрипт и добавил в него вертикаль, но вот не задача - стрелки и васд некорректно задают направление. Как можно задать каждой стрелке свое направление? Заранее спасибо!
@NoobGameDev
@NoobGameDev 2 жыл бұрын
Обычно создают переменную типа Vector2: Vector2 inputDirection; а потом в Update записывают ввод по осям: inputDirection.x = Input.GetAxisRaw("Horizontal"); inputDirection.y = Input.GetAxisRaw("Vertical"); В таком случае в inputDirection каждый кадр будут записываться значения ввода (от WASD и Стрелок), если по оси ввода не будет, то будет записываться ноль. А для движения уже используют вектор направления, скорость и время, прошедшее между обновлениями кадров: transform.Translate(inputDirection.normalized * speed * Time.deltaTime);
@ilayusachev212
@ilayusachev212 2 жыл бұрын
@@NoobGameDev спасибо!
@mrsidrgames
@mrsidrgames 2 жыл бұрын
Ничего не понял, но за код спасибо!
@NoobGameDev
@NoobGameDev 2 жыл бұрын
Ещё втянетесь!)) Пожалуйста)
@KrayL1
@KrayL1 3 жыл бұрын
А для того чтобы писать скрипт нужна какая либо дополнительная программа? Просто когда я 2 раза кликаю по скрипту мне предлагают открыть Microsoft Store чтобы найти предложение которое может его найти.
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Да, конечно нужна. Не смотря на то, что редактировать скрипт можно и в блокноте, Вам стоит установить какую-нибудь IDE навроде Visual Studio 2019 Community (она бесплатная и при установке Unity, если не ошибаюсь, она устанавливается автоматически). При установке Вам предложат выбрать компоненты - установите галочку на "Разработка игр с помощью Unity". После этого нужно будет ещё настроить Unity: Edit -> Prederences -> External Tools -> в поле External Script Editor выберите Visual Studio 2019 (Community). Некоторые моменты из того, что я перечислил можете посмотреть в этом видео: kzfaq.info/get/bejne/rZ56YNaju5_Zqqs.html
@KrayL1
@KrayL1 3 жыл бұрын
@@NoobGameDev Спасибо
@user-cb4hn7gz3i
@user-cb4hn7gz3i 9 ай бұрын
Эта прога сможет управлять персом в кс го?
@user-dy8hk8of9q
@user-dy8hk8of9q Жыл бұрын
Добрый вечер! Выдает такую ошибку Assets\Scripts\PlayerMove.cs(26,12): error CS1061: 'Rigidbody2D' does not contain a definition for 'AddForse' and no accessible extension method 'AddForse' accepting a first argument of type 'Rigidbody2D' could be found (are you missing a using directive or an assembly reference?) В чем проблема?
@etbepka8167
@etbepka8167 Жыл бұрын
AddForce нужно написать, а не AddFor's'e
@user-dy8hk8of9q
@user-dy8hk8of9q Жыл бұрын
@@etbepka8167 Ох, спасибо большое. Надо же, не увидела такую ошибку.
@sailaostudio3133
@sailaostudio3133 3 жыл бұрын
Добрый день, отличное подача информаци, а где изучали язык c#?
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Спасибо!) Даже не знаю, как Вам ответить... Одновременно и нигде, и везде... Все языки программирования до безобразия похожи (особенно семейство "С": JavaScript, C++, C#...), - достаточно разобраться в одном, а в остальных только названия методов меняются (и то очень похожие обычно), да синтаксис немного отличается. Поэтому я и сейчас его изучаю, а точнее знакомлюсь с новыми для меня методами в библиотеках Unity. Поэтому если Вам C# нужен только для кодинга в Unity, то не стоит с головой уходить в изучение языка, там ОЧЕНЬ много того, что вам не понадобится при разработке простых игр, так как Unity делает за Вас 90% работы, если не больше. Глубокое изучение C# может запросто отбить охоту заниматься разработкой игр) Главное: изучите Основы программирования (на GeekBrains, вроде, есть неплохой бесплатный курс) и попытайтесь понять ООП, хотя бы структуру и этого Вам хватит, чтобы понимать, что и благодаря чему происходит в коде.
@egorbragin3191
@egorbragin3191 Жыл бұрын
шифры, шифры........... только посвященные могут понять, о чем мы :)
@NoobGameDev
@NoobGameDev Жыл бұрын
😎
@whysl
@whysl Жыл бұрын
Привет! Не можешь подсаказать, что делать, если я хочу сделать иннерцию игроку, но он слишком сильно воспроизводит эту иннерцию (разгоняется быстро, так ещё и летит со скоростью света).
@NoobGameDev
@NoobGameDev Жыл бұрын
Привет) У компонента Rigidbody2D в Инспекторе есть много всяких интересных параметров. Например , коэффициент гравитации, масса, а так же коэффициенты линейного и углового ускорения (Linear Drag и Angular Drag). Два последних, как раз отвечают за замедление движения - их стоит "покрутить", чтобы подобрать то, что тебя устроит. Так же в Unity можно создать материалы и добавить их к Rigidbody, а материалам можно задать, так скажем, силу трения, что тоже может тебе пригодиться.
@whysl
@whysl Жыл бұрын
@@NoobGameDev Спасибо! :)
@dodo3884
@dodo3884 3 жыл бұрын
Привет , а можно ли как-нибудь сделать так чтобы при повороте персонажем поворачивались и обьекты привязанные к нему? И если можно то как?
@dodo3884
@dodo3884 3 жыл бұрын
все разобрался)
@radalert5533
@radalert5533 3 жыл бұрын
Добрый вечер, такая вот проблема. Всё в скрипте написал как на видео, но в самом Юнити, снизу, вылетает красная запись ArgumentException: Input Axis Horisontal is not setup. Сам скрипт прикреплен к "персонажу", различия цветовые в скрипте есть. Подскажите, в чём проблема? Спасибо.
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Приветствую!) Вам Unity сообщил, что он не может найти ось "Horisontal", что логично, потому что в видео используется ось "Horizontal" - Вы просто допустили опечатку) Замените "s" на "z" и всё должно заработать (при условии, что больше ошибок не допущено). Но если что - пишите)
@user-cf9ih6mo1m
@user-cf9ih6mo1m 3 жыл бұрын
я очень часто делаю опечатки и потом не понимаю в чем дело )) . была такая же проблема
@radalert5533
@radalert5533 3 жыл бұрын
@@NoobGameDev всё получилось. Я просто скрипт сам не сохранил, а в видео об этом не говорилось, и он у меня начал ходить. В общем, первый шаг сделан благодаря Вам. Огромное спасибо!
@SaPmont
@SaPmont 2 жыл бұрын
У меня юнити пишет что ошибка в переменной RigitBody2D: Исключение Missingcomponentexception: К игровому объекту "Персонаж" не прикреплен "Rigidbody2D", но скрипт пытается получить к нему доступ. Вероятно, вам нужно добавить Rigidbody2D в игровой объект "Персонаж". Или вашему сценарию необходимо проверить, подключен ли компонент, прежде чем использовать его. что делать?
@SaPmont
@SaPmont 2 жыл бұрын
ошибку исправил)
@user-sd2jl4ks1p
@user-sd2jl4ks1p 7 ай бұрын
А как сделать анимацию в игре при ходьбе игрока?
@dymok_iz_kotelka
@dymok_iz_kotelka 2 жыл бұрын
как сделать движение с помощью мышки, как в квестовых играх? к примеру петька и василий иванович и т.п.?
@NoobGameDev
@NoobGameDev 2 жыл бұрын
К сожалению, у меня пока об этом видео нет и в комментариях это проблемно объяснить. Поэтому поищите информацию/видео по скрипту "Click To Move". Это неплохо себя зарекомендовавшее (можно даже сказать стандартное) решение Вашей задачи (если я правильно её понял)
@lykantrobekiz4979
@lykantrobekiz4979 2 жыл бұрын
что делать если пишет all compiler errors have to be fixed before you can enter playmode?
@user-gw8qn5ik8b
@user-gw8qn5ik8b Жыл бұрын
значит у тебя есть ошибка из за которой нельзя начать игру просто исправь ее
@comrader9409
@comrader9409 2 жыл бұрын
А подскажите пожалуйста, если я хочу сделать игру типа двойной дракон на денди, там надо чтобы перс мог ещё по оси z перемещаться или как в денди условно вверх вниз должно быть, псевдо z, как это лучше реализовать?
@NoobGameDev
@NoobGameDev 2 жыл бұрын
Я сомневаюсь, что там есть (нужна) третья ось - это просто перемещение вверх/вниз. Вам нужно будет изучить реализацию движения в TopDown играх. Там всё проще, чем кажется: inputVector.x = Input.GetAxisRaw("Horizontal"); inputVector.y = Input.GetAxisRaw("Vertical"); А у самого перса в компоненте Rigidbody меняете поле GravityScale с 1 на 0 (чтобы перс вниз не падал). И двигать его так: rb.velocity = new Vector2(moveVector.x * speed, moveVector.y * speed); Также для создания глубины поищите видео на тему реализации такого эффекта как Parallax. Можно, конечно, совсем заморочиться и прописать уменьшение перса и врагов при перемещении вверх, чтобы казалось, что они вдаль уходят, но даже в том же Double Dragon, если я правильно помню, это не реализовано)
@comrader9409
@comrader9409 2 жыл бұрын
@@NoobGameDev А как реализовать ограничение, чтобы персонаж в небо не уходил, в мог двигаться в рамках дорожки?
@NoobGameDev
@NoobGameDev 2 жыл бұрын
@@comrader9409 Обычно для этого используют коллайдеры. Очень хорошо подходит EdgeCollider - это прямая линия, которую можно ломать в нужных местах. Таким образом можно очень точно построить необходимые ограничения (грубо говоря нарисовать границы "дозволенного" для перса)
@comrader9409
@comrader9409 2 жыл бұрын
@@NoobGameDev Спасибо, у меня получилось! Перс ходит как в двойном драконе) Но зато перестал работать прыжок, получается прыжок толкает перса вверх, а перс бьется головой о невидимую стену. Как в таком случае лучше поступить?
@NoobGameDev
@NoobGameDev 2 жыл бұрын
@@comrader9409 Ох, да... Этот вариант прыжка вам теперь вообще ни чем не поможет: перс просто будет улетать вверх, так как отключена гравитация. Сам же прыжок будет только номинально... Вам фактически нужно имитировать прыжок. Т.е. делать расчёты траектории "вручную". Я такое один раз только делал, поэтому сходу не скажу. Можете вот это видео посмотреть: kzfaq.info/get/bejne/sNailbKZ3a60iHk.html Если не получится, то приходите в Дискорд: discord.gg/AHpWFBAJJr Будем что-нибудь придумывать)
@valdemarissakov9365
@valdemarissakov9365 3 жыл бұрын
Хеллоу, у меня возник такой вопрос. Почему Walk() прописывается в Update, а не в FixedUpdate?
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Привет) Ну, во-первых, потому что никто не запрещает так делать) Во-вторых, объяснять разницу между Update и FixedUpdate в первых уроках не самая лучшая идея (на мой взгляд). Никому не хочется с самого начала вникать в тонкости, все хотят результата. Ну, и, в-третьих, получаются более точные результаты, нет такого, что в момент отрисовки кадра просчиталось какое-то новое столкновение, а на картинке этого результата ещё нет. Разница в том, что Update вызывается каждый кадр, а FixedUpdate через определённые промежутки времени (по умолчанию это 0.02 с.) Т.е. при FPS = 100, вызов Update будет происходить каждые 0.01 сек. А на моём далеко не самом мощном ноуте подобная сцена выдаёт около 500 fps (0.002 сек.) Да, возможно, что на разных компьютерах какие-то моменты будут работать по разному (быстрее двигаться, выше прыгать и т.п.). Но если взять пример с Time.deltaTime, допустим такой - к переменной "a", дельта прибавляется каждый кадр, а к переменной "b" каждые 0.02 сек.: float a; float b; void Update() { a += Time.deltaTime; } void FixedUpdate() { b += Time.deltaTime; } В итоге получится, что (допустим, при 100 fps) через секунду "a" и "b" будут равны, потому что в "a" залетит 100 раз по 0.01, а в "b" 50 раз по 0.02, но в итоге и там и там будет единица. И даже если в это время первые 0.4 сек. fps будет 50 (20 кадров по 0.02 сек), а потом 0.6 сек. - 100 (60 кадров по 0.01 сек.), то в итоге через секунду "a" всё равно будет равно "b"... Поэтому лично для себя я никаких конкретных правил не определил. Но тема определённо интересная - я планировал по возможности в неё углубиться и осветить, поэтому может позже такое видео и появится) И я заодно определюсь в каких случаях, какой метод корректнее использовать)
@valdemarissakov9365
@valdemarissakov9365 3 жыл бұрын
@@NoobGameDev Спасибо за хороший ответ. Да если использовать Update + Time.deltaTime , то получится тоже самое что и в FixedUpdate. Я просто к тому ,что многие говорят о том ,как FixedUpdater подходит для работы с физикой и что этот метод является более оптимизированным. Буду с удовольствием ждать новое видео)
@NoobGameDev
@NoobGameDev 3 жыл бұрын
@@valdemarissakov9365 Да, тоже много где слышал что физику в FU считают... Поэтому ни в коем случае не говорю, что я прав в этом моменте) Но что точно, так это то, что в данном вопросе стоит покопаться и разобраться, так что скорей всего когда-нибудь у меня появится видео с на эту тему) Спасибо, постараюсь с ним не затягивать!)
@Closemyheart
@Closemyheart 3 жыл бұрын
Здравствуйте, у меня вот такая проблема возникла, что при запуске игры ходит не персонаж а земля тоесть поверхность по которой должен ходить игрок.
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Приветствую) Очень вероятно, что Вы прицепили скрипт управления персом к объекту земли (Ground) вместо объекта персонажа. Попробуйте при остановленной игре выбрать тот объект, который перемещается (землю) и в Инспекторе посмотрите, есть ли там блок типа: "Имя вашего скрипта (Script)" Если есть, то нажмите на три точки справа от названия блока и выберете Remove Component (тем самым Вы уберёте привязку скрипта к земле). А так же после этого перепроверьте, висит ли Ваш скрипт на персе.
@ALEX.AB12
@ALEX.AB12 2 ай бұрын
что делать когда при запуске персонаж падает как будто он с парашютом без скрипта он падал норм но со скриптом началась такая фигня вот скрипт: using System.Collections; using System.Collections.Generic; using UnityEngine; public class player : MonoBehaviour { private Rigidbody2D rb; private Vector2 moveInput; public float Speed = 2f; public float jumpFors = 7f; void Start() { rb = GetComponent(); } void Update() { Playerwalk(); Playerjump(); } void Playerwalk() { moveInput.x = Input.GetAxis("Horizontal"); rb.velocity = new Vector2(moveInput.x * Speed, moveInput.y); } void Playerjump() { if(Input.GetKeyDown(KeyCode.Space)) { rb.AddForce(Vector2.up * jumpFors); } } } помогите пожалуйста
@comrader9409
@comrader9409 2 жыл бұрын
А у меня public Rigidbody2D rb; зеленым не подсвечивается, это значит библиотек не хватает? не подгружены? И скрипт что на персту перетаскиваю не сохраняется на нем.
@comrader9409
@comrader9409 2 жыл бұрын
Короче разобрался, режим play был, потому не сохранялось. А сами скрипты сработали, хотя автокомплит не работает.
@NoobGameDev
@NoobGameDev 2 жыл бұрын
@@comrader9409 Судя по комментариям, Вы уже посмотрели видео, которое я хотел Вам порекомендовать)
@comrader9409
@comrader9409 2 жыл бұрын
@@NoobGameDev да спасибо, вы гений, мысли прочли прям!)
@2dtp199
@2dtp199 2 жыл бұрын
Привет, а как сделать передвижение по оси Y? Допустим у меня игра pixelart с видом сверху. Как сделать передвижените не только по иксу?
@NoobGameDev
@NoobGameDev 2 жыл бұрын
Привет) Это конечно бы в видео показать (обязательно сделаю), но его пока нет... А нужно следующее: на персонаже есть компонент Rigidbody2D, чтобы перс не падал вниз нужно либо установить GravityScale равным нулю, либо BodyType установить Kinematic. А в коде отвечающем за управление нужно изменять и горизонталь и вертикаль. Т.е. вместо: rb.velocity = new Vector2(moveVector.x * speed, rb.velocity.y); писать: rb.velocity = new Vector2(moveVector.x * speed, moveVector.y * speed); или и вовсе: rb.velocity = moveVector * speed;
@comrader9409
@comrader9409 2 жыл бұрын
@@NoobGameDev возьму на вооружение)
@terraider7314
@terraider7314 Жыл бұрын
Если использовать первый вариант хоть бы, то если зажать в полёте кнопку в одну сторону и при это врезаться в стену, то игрок просто прилипнет к ней. Как исправить?
@user-yf3xi1on6l
@user-yf3xi1on6l Жыл бұрын
у компонента Rgidbody2D, который висит на персонаже есть Material, тебе нужно: создать новый Material2D -> Установить Friction на 0 -> накинуть Material2D на Rgidbody2D персонажа
@terraider7314
@terraider7314 Жыл бұрын
@@user-yf3xi1on6l спасибо
@mityasha11
@mityasha11 Жыл бұрын
Залетай на мой канал, там выходят уроки по Юнити для начинающих
@whats9681
@whats9681 3 жыл бұрын
Привееет! А если хочешь например что бы персонаж бежал в одном направлении как в мобильных раннерах, как это сделать? И да, уроки топчик, подписка+лайк+колокольчик)
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Спасибо) В таком случае достаточно в методе Update или FixedUpdate (лучше! её можно добавить после Update) задать персу движение через скорость: void FixedUpdate() { rb.velocity = new Vector2(speed, rb.velocity.y); } или при помощи перемещения: void FixedUpdate() { transform.Translate(Vector2.right * speed * Time.fixedDeltaTime); }
@dilaxidgames8757
@dilaxidgames8757 2 жыл бұрын
Что делать если когда я начинаю писать код и потом заканчиваю половина того что я написал и то что должно подсвечиваться не подсвечивается а также скрипт сам по себе не работает хотя я его привязал к моему персонажу Не подсвечиваться: MonoBehaviour, Rigidbody2D, Vector2 и Input
@NoobGameDev
@NoobGameDev 2 жыл бұрын
Привет! Сталкивался с таким) Вот глянь: kzfaq.info/get/bejne/rZ56YNaju5_Zqqs.html
@user-bp1cf4rn7f
@user-bp1cf4rn7f 2 жыл бұрын
что делать есле кнопки движения не работают
@geeksspider
@geeksspider Жыл бұрын
почему при запуске игры значение "у" стремится к бесконечности? сами движения при этом работают. подскажите что делать, пожалуйста
@NoobGameDev
@NoobGameDev Жыл бұрын
Если к минус бесконечности, то, возможно, что у вас на сцене один лишь персонаж, но на котором есть Rigidbody и у которого камера является дочерним объектом, и так как "земли" под ногами нет, то он постоянно падает. Но в этом версии слишком много условий, поэтому, скорей всего, проблема где-то в коде. Можете скопировать вставить его сюда - гляну)
@geeksspider
@geeksspider Жыл бұрын
@@NoobGameDev разобрался в проблеме. Сам персонаж был в папке в иерархии, из за этого происходили сбои. пришлось папку удалять, а самого персонажа "вызволить" как отдельный элемент. надеюсь понятно объяснил
@user-zn1rx9xy3x
@user-zn1rx9xy3x 3 жыл бұрын
А как сделать перемещение в 2D только по нажатию на определённую точку? И желательно, чтобы координаты были целыми числами
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Мне кажется, что я в комменте это не смогу объяснить. Есть скрипт ClickToMove, который хорошо себя зарекомендовал. Поищи его - попробуй. Ещё полезным будет посмотреть это видео: kzfaq.info/get/bejne/m5dkfaVmqs-anXU.html И целые числа дадут тебе очень большую погрешность... Для чего они нужны, по клеткам прыгать?
@fronziy8091
@fronziy8091 2 жыл бұрын
я переименовал код как надо как и в скрипте я не могу его поставить на персонажа там пишит типо что название не совпадают хотя одно и тоже?
@NoobGameDev
@NoobGameDev 2 жыл бұрын
Возможно речь о том, что имя файла в проводнике Unity должно совпадать с именем класса в скрипте. Например, если Вы переименовали скрипт как TralalaScript, то в самом скрипте, обычно в 3 или 5 строке: public class XXXXX: MonoBehaviour вместо XXXXX должно быть TralalaScript, т.е. вот так: public class TralalaScript: MonoBehaviour
@sorlox2415
@sorlox2415 2 жыл бұрын
Почему у тебя персонаж перемещается плавно, а у меня резко (резко начинает идти, резко останавливается)? Может нужно включить что-то?
@NoobGameDev
@NoobGameDev 2 жыл бұрын
Ну, он, по идее, так и должен двигаться... Иначе управляемость (отзывчивость) снижается и не комфортно играть. Т.е. кнопку нажал - движется, отпустил - остановился. Можно конечно сделать и так, чтобы перс продолжал немного двигаться, после того как будет отпущена кнопка и набирал скорость так же медленно (это используя AddForce). Но такой вариант больше подходит для кораблей, к примеру. А возможно имеется ввиду вот это: есть 2 метода получения значений с осей ввода. 1-й - это если кнопки не нажаты, то будет ноль, если кнопка нажата, то сразу будет 1 (или -1) - Input.GetAxisRaw(); 2-й - это когда после нажатия кнопки управления значение ввода будет расти от 0 к 1 (0.1, 0.4, ... , 0.7, 0.95) или к -1, а при отпускании от 1 (-1) значение будет изменяться к нулю - Input.GetAxis();
@sorlox2415
@sorlox2415 2 жыл бұрын
@@NoobGameDev понятно, спасибо за ответ!
@kerber9274
@kerber9274 3 жыл бұрын
Спасибо большое за видео. Только у тебя нормальние видео по обьяснению даной теми, в руском сегменте ютуб я не нашел ничего подобного. Много видео (Давайте напишем ето и получим то)
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Спасибо!) Очень радует, что Вам нравятся мои видео)
@sashikshik
@sashikshik 3 жыл бұрын
приветик, подскажи, пожалуйста, возникла следующая проблема: чувак, когда ходит по платформе из блоков, может внезапно остановиться на стыке платформ, при этом, если отойти в другую сторону и идти обратно с разбегу, то он нормально пройдёт
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Вот, чтобы избежать таких проблем часто делают составной коллайдер (сверху квадрат, снизу круг) или сразу делают Circle или Capsule коллайдеры. Так же лучше выстраивать блоки по координатам в Инспекторе, чтобы не было "ступенек" на стыках. Ещё, как вариант, можно выставить платформы без коллайдеров, а потом при помощи Polygon Collider 2D сделать для всех платформ в куче единый коллайдер. Ну, а если уверены, что платформы выставлены по координатам на одной высоте, но перс всё равно спотыкается, то можно использовать свойство Composit Collider. Например создать пустой объект Ground, в него перетащить несколько платформ со своими коллайдерами и у каждого поставить галочку напротив Composit Collider - это объединит их коллайдеры. з.ы. Collider - это зелёная (обычно) граница взаимодействия объектов. На всякий случай)
@sashikshik
@sashikshik 3 жыл бұрын
@@NoobGameDev спасибо, завтра вечером попробую!
@sashikshik
@sashikshik 3 жыл бұрын
@@NoobGameDev у меня что-то не очень получилось с Composit Collider, мне выдаёт ошибку "this collider will not function is a CompositeCollider2D on the GameObject that the attached Rigidbody2D is on", я думаю, можно ли просто брать коллайдер одного блока и растягивать на остальные, в то время как у остальных удалить?
@NoobGameDev
@NoobGameDev 3 жыл бұрын
@@sashikshik Ой, это потому, что я забыл сказать, что для родительского объекта (к примеру Ground) нужно добавить сам компонент Composit Collider 2D (так же, когда добавите Composit Collider 2D, автоматически добавится Rigidbody 2D и нужно будет изменить свойство Body Type на Static)... В принципе, можно и так (растянуть один коллайдер на все платформы), но я бы в таком случае всё равно сделал бы один объект, в него перенёс все необходимые платформы, а потом для этого родительского объекта сделал бы один большой коллайдер на все платформы.
@sashikshik
@sashikshik 3 жыл бұрын
@@NoobGameDev Всё работает! Спасибо! С меня лайк и подписка!
@dirkpro6039
@dirkpro6039 2 жыл бұрын
Здравствуйте, у меня возникает вот такая ошибка: The variable rb of Hero has not been assigned. You probably need to assign the rb variable of the Hero script in the inspector. Не понимаю как с ней справится. Можете подсказать решение этой проблемы? Делал всё так, как вы показывали на видео.
@dirkpro6039
@dirkpro6039 2 жыл бұрын
Эту проблему получилось решить, но возникла другая: персонаж во время передвижения в одну сторону может остановится и в ту сторону больше не идёт, при нажатии в другую сторону всё начинает работать, но через некоторое время он опять может остановиться.
@NoobGameDev
@NoobGameDev 2 жыл бұрын
@@dirkpro6039 Приветствую) Давайте по порядку. Как решили первую проблему. Мне казалось, что вы пропустили строку в Start: rb = GetComponent; Я прав? Теперь вторая: это довольно не типично... Обратите внимание он останавливается всегда в одном и том же месте? И перс ходит по одной большой (возможно растянутой) платформе или, по состоящей из нескольких отдельных частей, платформе (или может вовсе по созданной при помощи тайлов)?
@dirkpro6039
@dirkpro6039 2 жыл бұрын
@@NoobGameDev На счёт первой проблемы: я просто забыл Rigidbody в инспектор перенести. Глупо конечно. На счёт второй: У меня поверхность из тайлов состоит. Исправить получилось написав по другому код: public bool faceRight = true; public Vector3 moveVector; public float speed = 4f; void run() { moveVector.x = Input.GetAxisRaw ("Horizontal"); anim.SetFloat ("moveX", Mathf.Abs (moveVector.x)); transform.position = Vector2.MoveTowards (transform.position, transform.position + moveVector, speed * Time.deltaTime); }
@NoobGameDev
@NoobGameDev 2 жыл бұрын
@@dirkpro6039 Интересное решение) Но проблема обычно в том, что тайлы имеют стыки, в которые может иногда упираться перс. И в таком случае используют Composite Collider. Если будет интересно, то я для Дискорда когда-то памятку делал на эту тему: kzfaq.info/get/bejne/aNJ7n6qkmqenp5c.html
@iuan4392
@iuan4392 3 жыл бұрын
Будут разборы других классов Юнити?
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Извините, скорей всего, я некорректно понял вопрос, но в Unity около 1120 классов, среди которых GameObject, Transform, Behaviour, Camera, Material, Renderer, Rigidbody2D, Collider2D... И многие другие. На данном этапе я не планировал делать видео прям по разбору классов, но в каждом видео, в коде задействованы несколько основных классов. Но, кажется, Вы о другом спрашивали, я прав?
@angrycatstudio2816
@angrycatstudio2816 2 жыл бұрын
Лучше конечно физику. А то будут проблемы с застреваниями в стенах. Имхо
@mfngnjkjbjbwef14
@mfngnjkjbjbwef14 3 жыл бұрын
Знаю что не ответите, но всё же у меня проблема. Когда я перетаскиваю скрипт на персонажа, то юнити пишет что "скрипт не наследует собственный класс, который может управлять скриптом."
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Приветствую! Проверьте: совпадают ли имя файла скрипта и имя основного класса в скрипте. Т.е. если скрипт в Unity назван "Player.cs", то в самом скрипте при объявлении класса (обычно пятая) строка: public class Player : MonoBehaviour Имя класса тоже должно быть "Player"
@user-oi8vm1mb7v
@user-oi8vm1mb7v 3 жыл бұрын
Добрый день, Visual Studio не воспринимает Rigidbody2D и Vector2, почему такое может быть?
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Приветствую!) Если я правильно понял, то Вам может помочь это видео: kzfaq.info/get/bejne/rZ56YNaju5_Zqqs.html
@user-oi8vm1mb7v
@user-oi8vm1mb7v 3 жыл бұрын
@@NoobGameDev Спасибо, помогло))
@Rafael-br2iz
@Rafael-br2iz 3 жыл бұрын
все сделал как написано в видео но при перетаскивании скрипта в персонажа невозможно увеличить скорость, все так же как если запихнуть в персонажа пустой скрипт, а при запуске выдает ошибку, помогите пожалуйста
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Здравствуйте) Давайте разбираться) Для начала сравните мой пример и свой скрипт... Бывает такое, что "глаз замыливается" и просто что-то не дописали. Я так понял, что нет нужного поля в Инспекторе? Найдите строку, где Вы объявляете переменную, что-то типа: public float speed = 2f. Слово "public" позволяет как раз-таки увидеть и изменить переменную в Инспекторе. Если вы написали просто "float speed = 2f", то ей присвоен модификатор доступа "privat" и вне класса вы её не измените.
@Rafael-br2iz
@Rafael-br2iz 3 жыл бұрын
@@NoobGameDev спасибо большое,помогло
@NoobGameDev
@NoobGameDev 3 жыл бұрын
@bleyser bs Хм... Ну, как один из вариантов, может вы не сохранили изменения в скрипте. Они (изменения) применяются (появляются) в Unity только после сохранения кода. Т.е. что-то в код дописали, -> нажали Ctrl+S, -> перешли в Unity -> пользуетесь изменениями.
@rzet777
@rzet777 8 ай бұрын
Я хз, но персонаж сразу начинает идти, почему не пойму.
@quryyy
@quryyy Жыл бұрын
КАК ИСПРАВИТЬ ОШИБКУ- All compiler errors have to be fixed before you can enter playmode???????
@quryyy
@quryyy Жыл бұрын
помогите
@mityasha11
@mityasha11 Жыл бұрын
Залетай на мой канал и смотри видос
@ka5il
@ka5il Жыл бұрын
у меня тоже так было но я открыл другой урок и получилось
@Imudonnn
@Imudonnn 6 ай бұрын
через переводчик блин переведи. Это значит, что ты не можешь играть, пока не исправишь все ошибки. Зайди в консоль и посмотри ошибку, напиши мне
@Metteam142
@Metteam142 2 жыл бұрын
У меня проблема. Я написал код который должен двигать персонажа влево, вправо, потом запускаю игру жму на стрелки или A D но ничего не происходит. Возможно я допустил ошибку когда переписывал но я все просмотрел, вот код на всякий случай: using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerMove : MonoBehaviour { public Rigidbody2D rb; public Vector2 moveVector; void Start() { rb = GetComponent(); } void Update() { walk(); } void walk() { moveVector.x = Input.GetAxis("Horizontal"); rb.velocity = new Vector2(moveVector.x, rb.velocity.y); } }
@Metteam142
@Metteam142 2 жыл бұрын
Проблему решил) я добавил компонент Scripts для Character
@zhoraa
@zhoraa 3 жыл бұрын
А что делать если он не определяет (Behavior, Rigidbody2d и т. д) как (PlayerMove он только это и выделяет зелёным)
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Это Вам вот это kzfaq.info/get/bejne/rZ56YNaju5_Zqqs.html видео нужно посмотреть. Или на канале поищите, называется "Ошибка #2 - Visual Studio не подсвечивает код из Unity".
@Tikarr0
@Tikarr0 3 жыл бұрын
Всё круто но! я скопировал и вставил скрипт но после запуска игры я не понял как передвигать персонажа((( на какие кнопки там нажимать или код я как-то испортил(
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Есть ли какие-нибудь ошибки (красный, жёлтый текст в Unity)? Перемещение должно происходит по стрелкам влево/вправо или клавишам "A", "D". Посмотрите так же при выбранном персонаже на сцене в окне Инспектора в блоке Transform в поле Position по X меняется ли значение, при нажатии на клавиши управления. Если изменения есть, то попробуйте увеличить значение переменной speed в Инспекторе. А если изменений по X нет, то проверьте "повесили" ли вы сам скрипт на объект персонажа.
@virk71
@virk71 2 жыл бұрын
У меня не получается сделать поворот персонажа, изменял координаты не помогло подскажите пожалуйста.
@NoobGameDev
@NoobGameDev 2 жыл бұрын
Извиняюсь, что поздно отвечаю... Нужно изменять не координаты (это transform.position), а масштаб (это transform.scale) по иксу с 1 на -1. Проблема ещё актуальна на данный момент?
@user-pd5fd8gy5k
@user-pd5fd8gy5k 3 жыл бұрын
Блин, все хорошо, но я очень хочу чтобы персонаж двигался с постоянной скоростью, а не разгонялся, не подскажешь, пожалуйста, как это сделать? Лайк уже поставил!
@NoobGameDev
@NoobGameDev 3 жыл бұрын
За лайк спасибо!) Персонаж будет разгоняться, если Вы используете "AddForce", делайте через "velocity". Так же измените строку: moveVector.x = Input.GetAxis("Horizontal"); на такую: moveVector.x = Input.GetAxisRaw("Horizontal");
@user-pd5fd8gy5k
@user-pd5fd8gy5k 3 жыл бұрын
@@NoobGameDev Спасибо!
@wlesll117
@wlesll117 3 жыл бұрын
а в видео показано как повернуть игрока?просто сделала все как сказано но игрок не поворачивается :\
@NoobGameDev
@NoobGameDev 3 жыл бұрын
:)) Нет, это в следующем видео (в плейлисте): #3 - Анимация персонажа в Unity (kzfaq.info/get/bejne/pL6qg7uTmamlYGg.html) Так что Вы всё правильно делаете ;)
@SryVPadikahBespaltno
@SryVPadikahBespaltno 3 жыл бұрын
Сначала с рабочим скриптом персонаж не двигался, а потом дошло.
@vladimirvetchinnikov6916
@vladimirvetchinnikov6916 3 жыл бұрын
Добавил в скрипт ограничения по X через Mathf.Clamp за которые перс не должен выходить, а он как дойдёт до лимита начинает биться в истерике и пытается прорваться пока не отпустишь кнопку. Как научить его останавливаться в конкретной точке?
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Это наверное из-за того, что в данном примере управление персом происходит при помощи придания ему ускорения, у него как бы и сила есть которая его толкает и ограничение, потому и дёргается. Вам нужно делать через transform и желательно через Translate, т.е. код метода ходьбы будет примерно такой: moveVector.x = Input.GetAxisRaw("Horizontal"); transform.Translate(moveVector.x * speed * Time.fixedDeltaTime, 0, 0); float X = Mathf.Clamp(transform.position.x, -1, 1); // -1 - минимальный позиция по X, 1 - максимальная transform.position = new Vector3(X, transform.position.y, transform.position.z); Возможно, можно и проще написать... UPD: Ах, да, поделитесь реализацией, которую Вы использовали, - интересно посмотреть.
@vladimirvetchinnikov6916
@vladimirvetchinnikov6916 3 жыл бұрын
@@NoobGameDev спасибо большущее) Теперь работает как надо. Я делал так: moveVector.x = Input.GetAxisRaw("Horizontal"); rb.velocity = new Vector2(moveVector.x * speed, rb.velocity.y); GetComponent().position = new Vector2( Mathf.Clamp(GetComponent().position.x, -2.1f, 2.1f), -0.67f);
@user-ce1ud5kp5w
@user-ce1ud5kp5w 3 жыл бұрын
А что делать если скрипт не открывается? Я нажимаю двойным кликом и ничего не происходит, только пишет в консоли "Unable to open Assets/Scripts/PlayerMode.cs: Check external application preferences." Помогите пожалуйста!
@NoobGameDev
@NoobGameDev 3 жыл бұрын
У Вас, скорей всего, не указан редактор кода в настройках Unity. Нужно перейти в Edit -> Preferences -> External Tools -> и в поле External Script Editor выбрать установленную у Вас IDE (Visual Studio, Visual Studio Code, MonoDevelop...) Так же очень вероятно, что у вас и компоненты для работы выбранной среды c Unity могут быть не установлены, поэтому рекомендую ещё посмотреть это видео: kzfaq.info/get/bejne/rZ56YNaju5_Zqqs.html
@saur0n_
@saur0n_ 2 жыл бұрын
народ, помогите пожалуйста, весь код переписал, вроде работает, ходит влево и вправо, НО если резко нажимать A и D, то персонаж падает на бок, помогите пжжжжжжж
@NoobGameDev
@NoobGameDev 2 жыл бұрын
Посмотрите предыдущий урок. У перса в Инспекторе у компонента Rigidbody2D есть раскрывающийся блок Constraints, раскройте его и установите галочку напротив Freeze Rotation Z. Это заблокирует вращение с использованием физики движка.
@kirillvpgames4932
@kirillvpgames4932 2 жыл бұрын
а как заморозить, чтобы объект не поворачивался и был зафиксированным в перевороте?
@NoobGameDev
@NoobGameDev 2 жыл бұрын
Это предыдущее видео. Нужно у объекта в компоненте Rigidbody2D, во вкладке Constrains, включить Freeze Rotation Z ☑
@kirillvpgames4932
@kirillvpgames4932 2 жыл бұрын
спасибо, я уже до вашего ответа увидел, просто функция скрыта была.
@ameenmurky228
@ameenmurky228 2 жыл бұрын
Здравствуйте, извините за беспокойство но не могли бы вы помочь мне с моей проблемой, я скопировал код с описания сохранил включил игру персонаж ходит но его скорость мала и в настройке speed когда я меняю скорость скорость персонажа не меняется и так же мала. Надеюсь кто то знает в чем может быть проблема.
@NoobGameDev
@NoobGameDev 2 жыл бұрын
Приветствую) Единственное, что приходит на ум, так это то, что Вы изменяете скорость в коде. Но Unity так устроен, что из кода он считывает значение только первый раз после объявления поля. А в последующие разы он уже берёт значение из Инспектора (из поля Speed). К примеру, у Вас стоит в коде скорость 2, она записывается в Инспектор, Вы меняете её на 5 в коде, но в Инспекторе она также остаётся 2. Т.е. нужно при остановленной игре (чтобы при остановке игры значения не сбрасывались) изменять скорость в Инспекторе в поле Speed. К сожалению, других мыслей пока нет)
@Harvizz911
@Harvizz911 3 жыл бұрын
Смотрю уже какое видео, пишу в точности как на видео, несколько раз сверял, персонаж просто отказывается ходить, скрипт на персонажа наложил, RigidBody2D тоже поставил
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Я надеюсь что "Rigidbody2D", а не "RigidBody2D", так как ригистр букв играет роль)) Ошибок никаких? (жёлтых, красных текстов в Unity?). Имя класса в коде (5-я строка) совпадает с тем, как Вы назвали файл скрипта? Скиньте код в комментарий.
@user-go4yk7ow9j
@user-go4yk7ow9j 2 жыл бұрын
А какая может быть причина того, что персонаж не двигается вообще? Всё сделал как в видео. Проверил несколько раз, всё отлично, ошибок не выдаёт, но при запуске игры, персонаж никак не реагирует на нажатие клавиш.
@Tumbler_edit
@Tumbler_edit 2 жыл бұрын
Глянь в настройках Rigidbody2D Mass и Gravity Scale может у тебя слишком большое значение выставлено.
@NoobGameDev
@NoobGameDev 2 жыл бұрын
Почему-то только сейчас увидел комментарий... Проблема ещё актуальна? Или получилось?
@user-go4yk7ow9j
@user-go4yk7ow9j 2 жыл бұрын
@@NoobGameDev получилось
@eduard-punk3076
@eduard-punk3076 2 жыл бұрын
@@NoobGameDev У меня проблема ещё актуальна, при чём через transform.position, взятый из другого гайда, работало, но с moveVector почему-то не хочет
@NoobGameDev
@NoobGameDev 2 жыл бұрын
@@eduard-punk3076 У тебя проблема не с кодом, а с пониманием. Это нормально. Но через комментарии я не смогу что-то показать и нормально объяснить. Вижу два варианта: 1. Создай несколько проектов под каждого автора и начинай прям с нуля (с самых первых уроков). И на данном этапе, пока не начнёшь понимать, что к чему НЕ СМЕШИВАЙ инфу из одного урока с инфой из другого урока разных авторов, так как даже минимальные отличия могут повлиять на результат. Таким образом ты и различные варианты реализаций посмотришь и быстрее всё поймёшь. 2. Если же хочешь, чтобы у тебя всё заработало, то можешь присоединиться к нашему дискорд серверу ( discord.gg/AHpWFBAJJr ), всё что не работает, мы поможем починить, но насколько хорошо ты это поймёшь очень сильно будет зависеть от тебя. Главное: точно следовать тому что в видео (влево-вправо не шагать), начинать с самых первых видео (а не делать сразу прыжок, как только ты Unity открыл), ну, и не торопиться (не пытаться "Сделать игру за 5 минут" - это ролик столько длится, а игру автор, почти всегда, оттачивал, урезал, мозговал над ней несколько дней)
@hostkiller3070
@hostkiller3070 3 жыл бұрын
Эмм .. Я скопировал скрипт (вдруг я с ошибками написал), но я уже смотрю 3-й ролик, и у меня персонаж просто отказывается ходить! Что мне делать? Или на какие кнопки нажимать?
@NoobGameDev
@NoobGameDev 3 жыл бұрын
А сам скрипт добавили к персонажу? (Выберите перса в Иерархии или на сцене и перетащите скрипт в свободное место окна Инспектор, оно обычно справа) Так же посмотрите изменяется ли переменная Position по X в Инспекторе? Или вовсе ошибки какие-нибудь Unity выдаёт? (красный, жёлтый текст в консоли)
@user-bg9oi5gj1z
@user-bg9oi5gj1z 3 жыл бұрын
@@NoobGameDev у меня не работает, потому что вижуал почему-то не видит Rigidbody2D и юнити выдает ошибку изза этого. У персонажа ригидбоди и скрипт есть, 3ий гайд уже смотрю и не могу найти решение проблеме
@NoobGameDev
@NoobGameDev 3 жыл бұрын
@@user-bg9oi5gj1z Если VS не видит методы Unity, то Вам может помочь это видео: kzfaq.info/get/bejne/rZ56YNaju5_Zqqs.html Но лучше скиньте ещё текст ошибки
@t4shok628
@t4shok628 3 жыл бұрын
у меня одна проблема, после сохранения скрипта у меня не отображается переменная скорости и векторов ,так-же весь код скрипта отображается в инспекторе (при нажатии на скрипт)
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Код и должен отображаться в Инспекторе, если его выделить в проводнике - это как предпросмотр работает. А чтобы увидеть необходимые переменные в Инспекторе, можно добавить им модификатор доступа "public". Например, если переменная записана так: float Peremennaya_1 = 0.5f; или так: private float Peremennaya_2 = 0.4f; То они НЕ будут видны в окне инспектора. А если же переменная будет объявлена так: public float Peremennaya_3 = 0.3f; То её значение можно будет изменять в Инспекторе и из других скриптов (классов). Самым же правильным будет такой вариант: [SerializeField] private float Peremennaya_4 = 0.2f; Тогда переменную можно будет изменять в Инспекторе при отладке и доступ к ней от других скриптов будет ограничен.
@t4shok628
@t4shok628 3 жыл бұрын
@@NoobGameDev спасибо!!!
@podcast5387
@podcast5387 3 жыл бұрын
Привет! Не знаю ответишь ты или нет но у меня такая проблема что персонаж двигается, но он сначала падает на бок а потом ползет, а так же двигается медленно. Скажи пожалуйста что с этим делать
@podcast5387
@podcast5387 3 жыл бұрын
так же скрипт при каждом заходе в unity слетает и его приходится заново "вешать" его на персонажа
@VAINTUBER0608
@VAINTUBER0608 3 жыл бұрын
@@podcast5387 привет у тебя есть дискорд??
@VAINTUBER0608
@VAINTUBER0608 3 жыл бұрын
@@podcast5387 все это можно сделать легко но только на дискорд сервере
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Привет! По поводу "заваливания" перса, если я правильно понял, то нужно заблокировать вращение объекта персонажа по оси Z. Для этого выбираешь в Иерархии персонажа, в Инспекторе, в компоненте Rigidbody2D, во вкладке Constraints, ставишь галочку в чек-боксе Freeze Rotation ☑ Z
@NoobGameDev
@NoobGameDev 3 жыл бұрын
​@@podcast5387 Не совсем понял, но возможно, ты вешаешь скрипт после запуска игры... Т.е. заходишь, запускаешь игру, а потом делаешь изменения. В таком случае, как только игра остановится, - все изменения не касающиеся Аниматора сбросятся. Изменения нужно делать перед запуском игры. А во время можно подбирать подходящие значения. Поэтому попробуй, как только откроешь проект (зайдёшь в Unity) сразу же повесить скрипт на персонажа, сохранить изменения сцены (Ctrl + S), а уже после запустить игру. Так же при закрытии Unity, если появляется диалоговое окно с предложением сохранить изменения - сохраняй. Или делай это перед закрытием через File -> Save Project.
@rok1et74
@rok1et74 2 жыл бұрын
почему у меня не выводится компонент ригитбоди, хотя все пишу правильно, но он даже в скрипте не подсвечивается? кто знает пожалуйста скажите
@NoobGameDev
@NoobGameDev 2 жыл бұрын
Либо нет необходимых компонентов в VS, либо некорректно настроен Unity. Гляньте это видео: kzfaq.info/get/bejne/rZ56YNaju5_Zqqs.html&pp=sAQA
@gurev1chchannel741
@gurev1chchannel741 2 жыл бұрын
Здраствуйте, я скрипт скопировал но когда перехожу в режим game то он пропадает, ошибок нет
@NoobGameDev
@NoobGameDev 2 жыл бұрын
Здравствуйте! Проблема ещё актуальна? Если нет, то опишите свои действия подробнее, пожалуйста. И с чего Вы решили, что скрипт пропадает? Он удаляется из проводника в Unity?
@user-eg7be2wy6d
@user-eg7be2wy6d 3 жыл бұрын
у меня ошибка ArgumentException: Input Axis horizontal is not setup. Как решить пожалуйста помоги
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Очень похоже, что имя горизонтальной оси написано с маленькой буквы "horizontal", а должно быть с большой "Horizontal". Если я "промазал" и у Вас всё написано правильно, то нужен код...
Balloon Stepping Challenge: Barry Policeman Vs  Herobrine and His Friends
00:28
FOOLED THE GUARD🤢
00:54
INO
Рет қаралды 51 МЛН
ИРИНА КАЙРАТОВНА - АЙДАХАР (БЕКА) [MV]
02:51
ГОСТ ENTERTAINMENT
Рет қаралды 1,9 МЛН
A pack of chips with a surprise 🤣😍❤️ #demariki
00:14
Demariki
Рет қаралды 41 МЛН
Создавать Игры ПРОЩЕ, чем ты думаешь
9:56
Daru - Разработка игр
Рет қаралды 151 М.
I Made the Same Game in 8 Engines
12:34
Emeral
Рет қаралды 3,9 МЛН
Управление персонажем в Unity 2021
24:41
Maximple
Рет қаралды 124 М.
6 Years of Learning Game Development
9:02
Codeer
Рет қаралды 2,3 МЛН
Every 2D Node Explained in 9 Minutes !
9:19
Lukky
Рет қаралды 262 М.
How to make a BOSS in Unity!
21:54
Brackeys
Рет қаралды 661 М.
How to Animate Characters in Unity 3D | Animator Explained
7:51
iHeartGameDev
Рет қаралды 755 М.
Движение персонажа Unity 2D с нуля
13:34