#4 - Простой прыжок в Unity 2D + фикс мультипрыжка и прилипаний

Поділитися
Вставка
  • Опубліковано 4 січ 2025

КОМЕНТАРІ • 404

  • @gorchezza2480
    @gorchezza2480 2 роки тому +5

    По моему это лучший тутор для новичков, в твоем плейлисте есть все необходимое для базы, не представляешь как я благодарен, ведь именно найдя твои видосы процесс пошел куда быстрее!!))

  • @bogdan9423
    @bogdan9423 Рік тому +1

    Спасибо большое, очень полезный и очень интересный урок! Прям реально без преувеличения, очень хорошие объяснения, мало кто так подробно останавливается на отдельных важных моментах. Спасибо)

  • @sensei7059
    @sensei7059 2 роки тому +2

    Отдельное спасибо за то, что выкладываешь код!

  • @hakloi
    @hakloi 8 місяців тому +5

    Ребят, у кого прыжок все еще бесконечный - внимательно посмотрите на layer. он везде по default должен быть, кроме объекта Ground
    я на этом стопорилась и искала баги в коде
    да прибудет с вами геймдев сила ))

  • @papytoncatleta8753
    @papytoncatleta8753 Рік тому

    прошло много времени с выхода видео, но вы всё ещё отвечаете на комментарии, спасибо вам за туториалы

  • @ma_liberta
    @ma_liberta Рік тому +1

    вы просто лучший, всё работает!!!
    спасибо огромное! столько разборов посмотрела

  • @lidjest9888
    @lidjest9888 3 роки тому +1

    Спасибо.. Спасибо. Буду вас везде рекомендовать, где только можно.

  • @gamecreature8263
    @gamecreature8263 2 роки тому +1

    Спас братишка Одинцовский респект!

  • @Madl_Madl
    @Madl_Madl 4 роки тому

    Вот бы такого учителя в колледже, не то что мои учителя в 3-ем курсе все еще дают уроки по Microsoft World.
    Спасибо большое дальше буду смотреть тебя)

    • @NoobGameDev
      @NoobGameDev  4 роки тому

      Я рад) Видел Вы там писали, что что-то не получалось... Не успел ответить( Разобрались?

    • @Madl_Madl
      @Madl_Madl 4 роки тому

      @@NoobGameDev Да, во всем разобрался. Оказывается я какие-то строки в скриптах я пропускал, поэтому не работало прыжок. Спасибо большое, буду дальше смотреть твои видео

    • @Madl_Madl
      @Madl_Madl 4 роки тому

      @@NoobGameDev Можно было бы записать урок как прицепить камеру к персонажу или как создавать уровни и врагов. Надеюсь в будущем у вас будет такое. Желаю тебе удачи)

    • @NoobGameDev
      @NoobGameDev  4 роки тому +1

      @@Madl_Madl Есть такое в мыслях) В идеале, я планировал писать игру и после добавления в неё какой-то "возможности", делать на эту тему урок) Чтобы и самому не забыть и с людьми поделиться.
      Т.е. на выходе должна получиться игра из данных уроков... Или уроки из игры) Только из-за этих видео, время создания самой игры увеличится раз в 10-15, видимо...
      В общем, задумка такая. Спасибо за поддержку!) Будем делать дальше)

    • @Madl_Madl
      @Madl_Madl 4 роки тому +1

      @@NoobGameDev Это правильно, чтобы потом не забыть что в прошлом изучать. А так то это полезно не только тебе, но и простым людям которые в этом интересуются. Но все равно желаю тебе удачи, буду дальше смотреть твои видео)

  • @oldborodach
    @oldborodach 3 роки тому +7

    Прикольно спс за урок, но можно в следующий раз для чайников по медленнее и так норм контент такой можно и продлить в минутах я думаю все досмотрят!🤝

    • @NoobGameDev
      @NoobGameDev  3 роки тому +1

      Спасибо, учту на будущее!)

    • @karliknos8704
      @karliknos8704 3 роки тому +4

      Дело вкуса. Мне наоборот, нравится когда побыстрее. Если что-то не разглядел, ставлю скорость на 0.5 и пересматриваю. Так удобнее: пробегаться по общей информации и заострять внимание на важной, а то недавно смотрел урок по блендеру, семь минут кулстори от автора, чтоб показать где включается одна галочка.
      И вроде бы спасибо ему, смог закрыть свой вопрос, но чёт выбесил))

  • @MapperoftheHorde
    @MapperoftheHorde 4 роки тому +1

    Как же хорошо всё и понятно!

    • @NoobGameDev
      @NoobGameDev  4 роки тому

      Спасибо! Стараемся)

  • @danyasklyanichenko817
    @danyasklyanichenko817 3 роки тому +1

    Спасибо была проблема с анимацией прыжка, а теперь я знаю как её решить.

  • @MrSleepydragon
    @MrSleepydragon 2 роки тому

    Привет!
    Отличные уроки! Объясняешь такие мелкие детали, которые даже на форумах толком не найти.
    И уж тем более не сравнить со всякими "онлайн-университетами", в один из которых я вляпался по незнанию.
    Спасибо :)

    • @Jetbullet777
      @Jetbullet777 2 роки тому

      Привет, а не подскажешь какой университет? Сейчас сам раздумываю пойти на курсы по геймдизайну. Но столкнулся с такой забавной темой... Noob Game Dev объясняет в разы лучше, чем преподаватель одного из университетов, записи уроков которого у меня есть. Тут все структурировано, четко и без лишней воды. За 5-10 мину объясняет то, на что тому преподавателю понадобилось полтора часа. Вот теперь не уверен...

    • @MrSleepydragon
      @MrSleepydragon 2 роки тому

      @@Jetbullet777 , дабы избежать рекламы, намекну - "коробка навыков".
      Касательно обучения - если есть деньги (это главное), если нужен порядок (систематизация) обучения, если нужен диплом, если нужны преподаватели - смело приобретай курс.
      Но. Почти всё, что я знаю, в конечном итоге получено из UA-cam. Преподаватели - среднячок, один норм попался ("вот тут и тут скрипт поправить, тут отлично сделано, тут посмотри, как лучше сделать"), второй откровенный раздолбай ("а ну норм идём дальше"). Систематизация обучения есть, но в ней много дыр для перфекционистов. И пока неясно, где и как пригодится упомянутый диплом. В IT-компаниях его не жалуют, это точно.

    • @Jetbullet777
      @Jetbullet777 2 роки тому

      @@MrSleepydragon диплом, понятно, что никому не нужен. Важнее портфолио и реальные знания. Мне бы с программированием сейчас разобраться…

  • @Raikis11
    @Raikis11 2 роки тому +6

    Все написал правильно. Ошибку не выдает у обоих способов. Прибавил высоту прыжка и все ровно когда я нажимаю на пробел ничего не происходит

  • @godfather7695
    @godfather7695 Рік тому +5

    В методе addforce надо добавлять forcemode.impuls и делать проверку на velocity по вертикали, чтоб она была меньше скажем 0,1f тогда не будет даблджампа

  • @egorbragin3191
    @egorbragin3191 2 роки тому

    Уроки замечательные! Я ими иногда пользуюсь, когда делаю платформеры и т.п.

  • @mtythere
    @mtythere 3 роки тому

    Огромное спасибо за видео, объясняете довольно доходчиво, а самое главное - кратко.))

    • @NoobGameDev
      @NoobGameDev  3 роки тому +1

      Спасибо)

    • @blackmercy-il9me
      @blackmercy-il9me 3 роки тому

      @@NoobGameDev видео неплохое, но за такой код и по рукам могут ударить

    • @NoobGameDev
      @NoobGameDev  3 роки тому +2

      ​@@blackmercy-il9me
      Я знаю (( Я не Сакутин, чтобы ревьюшить код сеньёров... Мой уровень довольно любительский... Я никогда себя не позиционировал, как профи, не преподносил свои видео, как истину в первой инстанции, и уж тем более никогда не продавал данные уроки, обещая что люди после них смогут работать в крупных компаниях) Потому и название у канала такое) Изначально это всё планировалось, как заметки для себя, чтобы не забыть, что и как я сделал в проекте...
      Поэтому считаю, что такие косяки в коде в моём случае допустимы (по крайней мере, на данном этапе развития канала, да, и меня, как программиста-любителя). Но могу Вам обещать, что я буду стараться выйти на адекватный уровень, так как знаю, что мои знания достаточно далеки от идеала и мой код далёк от приемлемого уровня.
      Каждый день я узнаю, что-то новое и всё больше замечаю пробелов в различных областях.
      Спасибо Вам за этот "шлепок по заднице", уверен, он меня подстегнёт к детальному изучению основ) Так же, если Вас не затруднит, то буду благодарен, если дадите несколько ссылок на годных авторов или на какие-либо ресурсы, которые смогут подтянуть меня в кодинге на C# под Unity!)

  • @zuba_tv
    @zuba_tv 10 місяців тому +3

    Какой способ лучше 1 или 2 в плане правильности и в дальнейших изменениях

  • @denis_na_yuge
    @denis_na_yuge 10 місяців тому +2

    Автор! Чтобы AddForce работал нормально нужно дописать в скобках ForceMode2D.Impulse т.е.:
    rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
    и тогда он нормально прыгает при обычных значениях jumpForce

    • @NoobGameDev
      @NoobGameDev  10 місяців тому +2

      Есть такое. Не помню с какой версии движка прям стало необходимо явно указывать ForceMode. Видео устарело) Надо переделывать 👍

  • @devrimport
    @devrimport 2 роки тому

    Спасибо, у тебя самый понятный код :)

  • @shushard
    @shushard 4 роки тому

    очень приятно слушать)

    • @NoobGameDev
      @NoobGameDev  4 роки тому

      Аххах!)) Спасибо) Правда, я не доволен ни звуком, ни дикцией, но буду работать над этим... Надеюсь, будет становиться только лучше)

  • @fasbodeveloper8170
    @fasbodeveloper8170 Рік тому

    спасибо большое до тебя у меня не получалось

  • @leg0redd0
    @leg0redd0 2 роки тому

    Большое спасибо! Очень помог!

  • @minoddein7205
    @minoddein7205 4 роки тому

    1)Вроде всё нормально,но прыжок получается слишком резким(ForceMode2D.Impulse вообще отключает прыжок по каким-то причинам)
    2)Есть ли какая-нибудь документация с разбором методов и классов unity?Просто новичок в этой теме,раньше писал чисто на C#,а ,перейдя сюда,словно очутился в другой вселенной.
    3)Неописуемо рад,что наткнулся на твой канал,один из лучших по обучению,а таких мало.Вот что мне нравится - постепенно,структурировано и подмечаешь все детали,спасибо!

    • @NoobGameDev
      @NoobGameDev  4 роки тому +1

      1. При использовании AddForce нужно значительно увеличить силу прыжка (jumpForce) так как "velocity" задаёт конечную величину и направление ускорения объекта, а AddForce прикладывает силу к объекту, которая должна задать ему такой импульс, который и силу гравитации преодолеет и ускорение задаст...
      Поэтому при использовании AddForce и маленьком значении величины jumpForce, может казаться, что прыжка не происходит.
      Так же у компонента Rigidbody2D, есть такое свойство, как "Gravity Scale" (можно и в Инспекторе изменять), которое является множителем гравитации. При резком прыжке попробуйте поиграться с этим значением (увеличьте раза в 1.5 - 2)
      2. Есть официальная документация, на которую все в основном и ссылаются:
      docs.unity3d.com/Manual/index.html
      Она довольно обширная, но очень малая её часть переведена на русский, что вызывает сложность при её использовании. А, к сожалению, каналов или ресурсов с хорошим объяснением и широким спектром обозреваемых возможностей Unity, я не встречал. Так же больше всего материала по Unity связано именно с разработкой в 3D.
      3. Большое спасибо, рад, что мой контент пришёлся Вам по вкусу))

    • @minoddein7205
      @minoddein7205 4 роки тому

      @@NoobGameDev , спасибо.
      Касательно первого, изменение гравитации сказывается на скорость падения - да,а вверх прыжок происходит,как будто телепортация.
      AddForce сам по себе работает,но при добавлении аргумента ForceMode2D.Impulse - прыжок не работает,вот в чем проблема.Из-за этого я не могу оценить влияние данного параметра,может именно он позволит плавнее выполнять прыжок.
      rb.AddForce(Vector2.up * jumpforce(3000 стоит)); - работает,но телепортируется вверх
      rb.AddForce(Vector2.up * jumpforce(3000 и более),ForceMode2D.Impulse); - не работает вовсе

  • @zungzao
    @zungzao Рік тому +1

    при добавлении Physics Material 2D персонаж, как бы это странно не звучало, перестал останавливаться, то есть даже при отпущенной кнопке движения продолжал двигаться. исправил пока что увеличением Linear Drag, дальше будем посмотреть

  • @sapfi1495
    @sapfi1495 4 роки тому +1

    У меня вечная проблема с вашими уроками. Вроде логически код у вас верен. Но юнити не принимает его вообще. Что с хождением(исправила потом самостоятельно), что с прыжками. Я пытаюсь в дебри не заходить и остановилась на самом начале - до 0:53. И персонаж не прыгает. Просто не реагирует никаким боком.

    • @NoobGameDev
      @NoobGameDev  4 роки тому

      Может, Вам мой метод преподнесения информации не подходит... Попробуйте ещё кого-нибудь из авторов посмотреть, я и сам всегда ищу, как минимум две точки зрения на решение проблемы.
      Но если хотите - можем попробовать разобраться, что не так)
      Скиньте в комментарий (или в vk.com/evgen_orlov ) код, с которым Вы сейчас мучаетесь.
      И скажите, что именно Вы исправляли в "ходьбе", чтобы код заработал так, как Вы хотели?

  • @feroindiary346
    @feroindiary346 2 роки тому +1

    а как вы узнали о значении -30 для 2д платформеров? Я бы почитал сайт где об этом написано, наверное много полезного будет.
    2:23

    • @NoobGameDev
      @NoobGameDev  2 роки тому +1

      На самом деле я слышал это в нескольких уроках на данную тему... Потом попробовал сам и мне это значение тоже понравилось (похоже на большинство динамичных платформеров). Насколько это истина я не знаю и точного источника, к сожалению, сказать не могу)

  • @kot4624
    @kot4624 3 роки тому

    я чуток пакапался и все понял
    теперь все работает

  • @xaos8192
    @xaos8192 Рік тому +4

    Почему я не могу добавить PhysicMaterial2D, мне предлагает только PhysicMaterial

    • @NoobGameDev
      @NoobGameDev  Рік тому +2

      После нажатия Create выберите пункт 2D, в нём будет PhysicsMaterial2D

  • @phoenix2810
    @phoenix2810 10 місяців тому +2

    Я сделал все как на видео и персонаж прыгает но высота прыжка постоянно разная в зависимости от силы нажатия на пробел как это исправить?

    • @zuba_tv
      @zuba_tv 10 місяців тому +1

      Попробуй в Void Jump в if заменить getkeydown, на getkeyup

  • @I_ne_rei
    @I_ne_rei 2 роки тому +4

    У меня персонаж прыгает от стены , объект для определения на стену не залазит, радиус в скрипте а на объекте равны, но on Ground у стены равняется true

    • @NoobGameDev
      @NoobGameDev  2 роки тому +3

      Скорей всего, радиус проверки земли выходит за границы коллайдера перса. Другими словами шире, чем перс. Это от части моя вина, что запутанно объяснил... Но попробуйте дописать эти строки перед последней фигурной скобкой " } " в скрипте:
      private void OnDrawGizmos()
      {
      Gizmos.color = Color.red;
      Gizmos.DrawWireSphere(GroundCheck.position, GroundcheckRadius);
      }
      В результате появится красная полая сфера, которая будет истинным радиусом проверки (ориентируйтесь на неё) и изменяйте радиус через Инспектор (GroundcheckRadius) таким образом, чтобы упёршись персом в стену, данная сфера не доставала до стены.
      Если будет непонятно или если я не правильно понял суть вопроса, то можете зайти к нам на Дискорд сервер (ссылка есть в шапке канала) - там проще объяснить и показать)

    • @I_ne_rei
      @I_ne_rei 2 роки тому

      @@NoobGameDev Спасибо

  • @538h
    @538h 3 місяці тому +1

    Спасибо большое, но у меня появился баг при котором прыгать бесконечно можно стоя в плотную к стене. Как это можно исправить?

  • @nobodyhome9383
    @nobodyhome9383 3 роки тому

    спасибо тебе ты лучший=)

  • @LYONID
    @LYONID 4 роки тому +3

    для тех, кто использует этот код для 3D
    public bool onGround = true;
    public LayerMask Ground;
    public Transform GroundCheck;
    public float GroundCheckRadius;
    void CheckingGround()
    {
    onGround = Physics.CheckSphere(GroundCheck.position, GroundCheckRadius, Ground);
    }

    • @4orniy468
      @4orniy468 4 роки тому +1

      Спасибо тебе большое

    • @LYONID
      @LYONID 4 роки тому

      @@4orniy468 пожалуйста)

    • @yaLolliHokage
      @yaLolliHokage 2 роки тому

      Блин, чукак ты гений! Спасибо тебе большое! У меня именно эта ситуация, давно была проблема с мультипрыжком, всё откладывал её решения уже не в первом своём мини проекте, никак не мог найти нужного решения на просторах ютуба, но вот посмотрел это видео (хотя у автора много интересных и познавательных видео, спасибо ему за это), всё логично и должно работать, применил у себя, но облом, не зря я листал столько комментов дабы наткнуться на тебя)

    • @LYONID
      @LYONID 2 роки тому

      @@yaLolliHokage желаю удачи с проектом)

  • @fentan6806
    @fentan6806 Рік тому

    Спасибо за урок без говнокода

  • @ПавелЗалётин-я7р
    @ПавелЗалётин-я7р 3 роки тому

    Спасибо,все работает!

  • @saytamaaw
    @saytamaaw Рік тому +2

    после того как написала код для чекера-пустышки в плейере , мой перс перестал прыгать , вроде все написала правильно , нигде нету ошибок , он по просту не прыгает . Помогите

    • @ВасилийМоисеев-ж6у
      @ВасилийМоисеев-ж6у Рік тому

      void ChekingGround()
      {
      OnGround = Physics2D.OverlapCircle(GroundCheck.position, checkRadius, LayerMask.GetMask("Ground"));
      }
      Попробуй написать код так, у меня получилось

    • @saytamaaw
      @saytamaaw Рік тому

      @@ВасилийМоисеев-ж6у премного благодарна !!

  • @dpomopomokae
    @dpomopomokae Рік тому +2

    чел ультрагипермегасуперхорош

  • @YmeUla
    @YmeUla 3 роки тому +1

    Я не уверен но мне кажется проверка касания усложнена. Почему не сделать через OnCollisionEnter() или OnTriggerEnter() ?
    Серия видео конечно зачетная .

    • @NoobGameDev
      @NoobGameDev  3 роки тому

      Спасибо, приятно) Можно сделать и так, но в таком случае, персонаж будет думать, что он на земле даже если он головой или любой другой частью коллайдера коснётся платформы. Или, например, встанет около стены (со слоем или триггером типа ground) и сможет прыгать, как и до проверки земли.
      Поэтому именно для проверки "на земле ли стоит перс" подходит либо доп. объект (GroundCheck), либо Raycast. По крайней мере, лично я так считаю)

    • @YmeUla
      @YmeUla 3 роки тому

      @@NoobGameDev А почему не вынести саму проверку в отдельный скрипт который бы крепился к дочернему объекту(тригеру)

    • @NoobGameDev
      @NoobGameDev  3 роки тому

      @@YmeUla
      Ну, тут, как говорится "хозяин - барин". Конечно, можно и так. Можно и управление вынести в отдельный класс и прыжок, и отражение спрайтов. В будущем я так, вероятнее всего, и переделаю +/- , чтобы можно было прикрутить одно и то же и для перса и для enemy, но для уроков (особенно начальных) мне показалось, что так будет проще и понятнее) Как лучше сделать, буду разбираться после добавления всех основных механик)

    • @bymajkakryta1474
      @bymajkakryta1474 3 роки тому

      @@NoobGameDev , у меня собственно и присутствует данная проблема, хотя метод такой же как и у вас, не знаете почему такое возможно?

    • @NoobGameDev
      @NoobGameDev  3 роки тому

      @@bymajkakryta1474
      Какая именно?
      Если стена имеет слой земли и когда перс подходит к ней вплотную, то может совершать кучу прыжков?
      Если так, то нужно уменьшить радиус GroundCheck, чтобы он не выходил за пределы коллайдера перса, другими словами он должен быть немного уже персонажа (не должен выходить за его границы, чтобы не пересекаться со стеной)

  • @zk2empiregames
    @zk2empiregames 2 роки тому

    4:20 Граунд граунд и еще раз граунд)

    • @NoobGameDev
      @NoobGameDev  2 роки тому +1

      Ахахах) Есть такое)

  • @vasyanya2611
    @vasyanya2611 2 роки тому +1

    Делал прыжок через AddForce. Помещая метод прыжка в Update, персонаж на огромные расстояния одним прыжком улетал(Со значением прыжка 4 улетал до 46 унитов вверх). Помещая метод в Fixed Update прыжок стал адекватным, но не равномерным и каждый третий/четвёртый выходит будто с умноженной высотой. Не могу понять в чём проблема.

    • @tozen450
      @tozen450 2 роки тому

      Может ты считывал нажатие кнопки с помощью GetButton? Для прыжка лучше ставить GetButtonDown

  • @darktermux2932
    @darktermux2932 4 роки тому

    Привет, не нашел твой телеграм, напиши пожалуйста свой, у меня одна МЕГА проблема, когда увидишь у тебя тоже глаза на выкате будут, как мне кажется, это по юнити

  • @glebmatusevich6190
    @glebmatusevich6190 2 роки тому +1

    0:11 мне кажется лучше писать не "public" а "[SerializeField] private

  • @ИлонМаск-р9у
    @ИлонМаск-р9у Рік тому +1

    Скажите а можно так же сделать рывок по свайпу как в катана зеро и чтоб можно было свайпом задавать направление?

    • @yourpast1494
      @yourpast1494 Рік тому

      Можно, не знаю, как свайпы обнаруживать, но думаю, труда это не составит

  • @dokers2084
    @dokers2084 2 роки тому

    Можно ли сделать прыжок векторным? Типо не импульс будет его толкать, а он будет более "картонным". Классический вариарнт с импульсом может очень много багов образовать, например если очень быстро в прыжке допрыгнуть до земли и прыгнуть еще раз значения приумножатся и прыжок будет очень большим)

    • @NoobGameDev
      @NoobGameDev  2 роки тому +1

      Ну, как по мне, так самым простым, настраиваемым и стабильным вариантом является задание скорости. Т.е. что-то типа:
      rb.velocity = new Vector2(rb.velocity.x, Y);
      где вместо Y указывается скорость (типа сила) прыжка.
      Вполне себе рабочий и удобный вариант)
      Но стоит учитывать, что в таком случае скорость с которой перс падает и скорость для прыжка суммироваться не будут. Другими словами персонаж может падать с небоскрёба, а перед землёй, нажав прыжок, подпрыгнет вверх и мягонько приземлится...
      Если это позволяет геймплей, то всё ок))

  • @ilexsander6412
    @ilexsander6412 Рік тому

    Что делать если на 0:51 пишет: Assets\movePlayer.cs(32,13): error CS0103: The name ‘onGround’ does not exist in the current context.? Помогите пожалуйста.

    • @NoobGameDev
      @NoobGameDev  Рік тому +1

      Пишет, что Вы не объявили переменную 'onGround', но при этом пытаетесь её использовать, т.е. пропустили строку:
      private bool onGround = false;
      Добавьте её где-нибудь вне метода, там где другие переменные объявляются и должно заработать)

  • @fnafut
    @fnafut Рік тому +2

    Почему красным подчёркивает rb и jumpForce ? Из первого способа

    • @zuba_tv
      @zuba_tv 10 місяців тому +1

      Если проблема все еще актуальна добавь в скрипт Rigidbody2
      Private Rigidbody2d rb;
      И в void Start
      Напиши
      Rb = getcomponent();

    • @fnafut
      @fnafut 10 місяців тому

      @@zuba_tv уже нет, но спасибо

  • @izvestb9949
    @izvestb9949 2 роки тому +1

    Проблема такая: при соединении jump, к например idle, только один переход к обоим анимациям могу сделать и все(
    Пытался сделать переход через any state, а там тоже такой прикол с одним переходом. Вроде все как у тебя

    • @decsu
      @decsu 2 роки тому +4

      У меня была такая же проблема, а заключается она в косяке работы определённой версии Unity
      Полазал на форумах и нашёл вот это: Problems with States and Transitions in the Animator и Unable to make State transitions in Animator (Это названия статей),(если интересно там на английском челики сообщили о этой проблеме).
      Самих решений 2.
      Первое взять и установить новую версию Unity я поставил 2021.2.17f1 и она работает. (2020.3.32f1 - не работала)
      Второй вариант (For people not looking to change Unity version we used a workaround : put the inspector in Debug Mode and then right click works as intended.) -
      Перевод .
      Для тех, кто не хочет менять версию Unity, мы использовали обходной путь: переведите инспектор в режим отладки, а затем щелкните правой кнопкой мыши, чтобы все работало по назначению.
      Ну вообщем вот так может что-то поможет

  • @Gnek69
    @Gnek69 2 роки тому

    0:51 - скрин кода
    вопрос: что делать если unity говорит:The type or namespace name 'Vector2' could not be found (are you missing a using directive or an assembly reference?) вместо Вектора там ещё и другие переменные.

    • @NoobGameDev
      @NoobGameDev  2 роки тому +1

      Обычно при создании нового скрипта через Unity, к нему сразу подключаются самые используемые (а порой и необходимые) директивы:
      using System.Collections;
      using System.Collections.Generic;
      using UnityEngine;
      Они прописываются в самом начале, перед описанием класса.
      Думаю, что Вы их просто удали)
      Верните хотя бы using UnityEngine;
      Хотя лучше бы все три. А после того, как закончите писать скрипты, можно будет неиспользуемые (они будут иметь более тёмный вид) удалить.

    • @Gnek69
      @Gnek69 2 роки тому

      @@NoobGameDev Я уже даавно решил эту ошибку, вы оказались правы, посмотрел на ваш код и всё понял, видео классное, завтра буду смотреть следующие части. 👍

  • @МаксимЗахаров-х8у1е
    @МаксимЗахаров-х8у1е 2 роки тому +1

    Здравствуйте, в новой версии Unity не смог найти physics material 2d. Обычный есть, а 2d нет. Может вы знаете другой способ как убрать прилипания или как исправить проблему с physics material 3d?

    • @NoobGameDev
      @NoobGameDev  2 роки тому +1

      Да, они его перепрятали немного: Create -> 2D -> Physics Material 2D

  • @gandonius_me
    @gandonius_me 3 роки тому +1

    Здравствуйте, сделал как все надо, только вот запускаю. Персонаж запускает анимацию и застыват в анимации прыжка и двигается так же, + к этому и пробел не тыкается. В чем может быть проблема? Цикл на jump еще застрял

    • @NoobGameDev
      @NoobGameDev  3 роки тому

      Очень похоже на то, что перс не "видит" землю... И считает, что он постоянно падает, ну, поэтому и не прыгает соответственно)
      Попробуйте увеличить размер коллайдера объекта GroundCheck. Или ещё лучше, сперва попробуйте дописать эту строку в функцию Start (как в коде под видео):
      GroundCheckRadius = GroundCheck.GetComponent().radius;
      Она автоматически будет вписывать радиус коллайдера в переменную GroundCheckRadius.
      А так же перепроверьте выбрали ли Вы слой Ground в поле Ground в Инспекторе и находится ли платформа, на которой стоит перс, на слое Ground.

    • @gandonius_me
      @gandonius_me 3 роки тому

      @@NoobGameDev Спасибо огромное" Проблема была в слоях, не прикрепил. Теперь проблема осталась другая, как найти physics material 2D? у меня отображается просто physics material

  • @KapSined
    @KapSined 2 місяці тому

    Для таких же гениев как и я, в объекте GroundCheck коллайдер двигать НЕНУЖНО, нужно двигать сам объект с коллайдером

  • @ROBLOX_NOOBIK284
    @ROBLOX_NOOBIK284 Рік тому +1

    Можете помочь с тем что-бы чел не прыгал в воздухе. Скрипт дайте пж

  • @geba3596
    @geba3596 2 роки тому +1

    Привет, я на моменте где добавил onGround и он появился в inspector
    но когда запускаю и 2 прыжок все равно работает + все время стоит галочка на onGround
    где допускаю ошибку ?

    • @geba3596
      @geba3596 2 роки тому +1

      Все разобрался, я не туда добавил Layer

    • @11_1o9
      @11_1o9 Рік тому

      @@geba3596 Расскажи как ты исправил Layer? У меня сейчас так же

  • @Данил-г7ъ
    @Данил-г7ъ Рік тому +2

    Здравствуйте можете помочь у меня пишет в Unity, Animator is not playing an AnimatorController

    • @Данил-г7ъ
      @Данил-г7ъ Рік тому +2

      вот мой код
      using System.Collections;
      using System.Collections.Generic;
      using UnityEngine;
      public class Прыжок : MonoBehaviour
      {
      public Rigidbody2D rb;
      public Animator anim;
      void Start()
      {
      rb = GetComponent();
      anim = GetComponent();
      }
      void Update()
      {
      Walk();
      Reflect();
      CheckingGround();
      }
      public Vector2 moveVector;
      public float speed = 2f;
      void Walk()
      {
      moveVector.x = Input.GetAxis("Horizontal");
      anim.SetFloat("movex", Mathf.Abs(moveVector.x));
      rb.velocity = new Vector2(moveVector.x * speed, rb.velocity.y);
      }
      public bool faceRight = true;
      void Reflect()
      {
      if ((moveVector.x > 0 && !faceRight) || (moveVector.x < 0 && faceRight))
      {
      transform.localScale *= new Vector2(-1, 1);
      faceRight = !faceRight;
      }
      }
      public float jumpFource = 7f;
      void Jump()
      {
      if (Input.GetKeyDown(KeyCode.Space) && onGround)
      {
      //rb.velocity = new Vector2(rb.velocity.x, jumpFource);
      rb.AddForce(Vector2.up * jumpFource);
      }
      }
      public bool onGround;
      public Transform GroundCheck;
      public float checkRadius = 0.5f;
      public LayerMask Ground;
      void CheckingGround()
      {
      onGround = Physics2D.OverlapCircle(GroundCheck.position, checkRadius, Ground);
      }
      }

    • @NoobGameDev
      @NoobGameDev  Рік тому +2

      Здравствуйте) В коде ничего необычного не вижу. Скорей всего, у вас либо выключен компонент Animator (в Инспекторе), либо сам объект находится в неактивном состоянии, либо у компонента Animator нет ссылки на AnimatorController. Но думаю, что без сриншотов будет сложновато объяснить. Посетите наш Дискорд сервер (ссылка есть в шапке канала). Можете заскринить этот комментарий и попросить помощи там. Со скриншотами всяко понятнее и быстрее получится)

  • @_annihilator_an
    @_annihilator_an 3 роки тому

    Здравствуйте, нужна помощь,выдает ошибку : 'Rigidbody2D' does not contain a definition for 'AddForse' and no accessible extension method 'AddForse' accepting a first argument of type 'RigidBody2D' could be found

    • @NoobGameDev
      @NoobGameDev  3 роки тому +1

      Всё верно) Метода "AddForse" не существует, есть метод "AddForce"... (вместо буквы "s" буква "c")
      Обычно (если всё правильно настроено), то когда Вы начинаете писать имя метода, то VS предлагает варианты из списка доступных и похожих. А значит, если Вам VS такого списка не предлагает, то советую разобраться с настройками и посмотреть вот это вот видео: ua-cam.com/video/w8J-srV9uzw/v-deo.html
      Это поможет Вам в дальнейшем не допускать подобных опечаток, да, и новые методы можете узнать)

    • @_annihilator_an
      @_annihilator_an 3 роки тому

      @@NoobGameDev понял,спасибо Вам большое!

  • @mrdred2697
    @mrdred2697 3 роки тому +1

    Здравствуйте, делал все по вашему видео (посмотрел и написал код из: 2, 3 и 4 видео). А сейчас я немогу вставить этот скрипт на персонажа. Выдаёт ошибку вроде этой: -
    Can't add script
    Please fix compile errors before creating new script components.
    Прошу, пожалуйста, помогите!!!

    • @NoobGameDev
      @NoobGameDev  3 роки тому +1

      Сорри, поздно увидел сообщение... Проблема в том, что Вы пытаетесь "повесить" скрипт в котором есть синтаксические ошибки. Если проблема актуальна, то перепроверьте новый скрипт (возможно, где-то пропущен символ ";" ) VisualStudio такое должен подчёркивать. А если он этого не делает, то есть подозрения, что он у Вас и с Unity не связан... Поэтому ещё рекомендую глянуть вот это видео (лишним точно не будет): ua-cam.com/video/w8J-srV9uzw/v-deo.html

    • @mrdred2697
      @mrdred2697 3 роки тому

      @@NoobGameDev Хорошо, спасибо, проверю, но хочу уточнить что я работаю на юните которая идет на 32битную windows 7 (то есть Unity 5.6.7f1). И VisualStudio у меня нет. Я подключил к Unity Visual Studio Code (и скачал все что связано с C# и с самим Unity)

    • @NoobGameDev
      @NoobGameDev  3 роки тому

      @@mrdred2697 Ну, VS Code, если правильно настроен (указан в Unity, как редактор кода хотя бы), то тоже должен выделять подобные ошибки...

  • @spidyblog
    @spidyblog Рік тому +1

    а что делать у меня кргда я написал скрипт скрипт остался стандартным а в редактаре скрипта он тот который я написал и когда я добавляю его на персонажа он ничего не делает

    • @NoobGameDev
      @NoobGameDev  Рік тому

      Стандартный - это имеется ввиду пустой шаблон, где всего два пустых метода, Start и Update?
      И если в IDE он был изменён и сохранён, то почему ты решил, что он не изменился?
      Unity в консоли какие-то ошибки выдаёт? Или при добавлении скрипта к персонажу?

  • @Henesy_69
    @Henesy_69 3 роки тому

    Здравствуйте как вы научились так кодить дайте советов смотрю видео ролики пишу повторяю за ними и когда сам пытаюсь получается хрень.

  • @dansatora3150
    @dansatora3150 4 роки тому

    Знаю вопрос не по теме но. Как вы считаете что правильнее, переписывать готовы код и редактировать его или все же писать весь код самому?

    • @NoobGameDev
      @NoobGameDev  4 роки тому +2

      Сложный вопрос... Если Вы новичок, то априори не сможете написать код самостоятельно, - Вы, в любом случае будете сначала переписывать примеры, потом поймёте как они работают, а потом придёт осознание того, что нужно поменять, чтобы что-то работало так, как Вам хочется и вот уже после этого сможете написать свой код опираясь на свой опыт.
      Если у Вас есть свободное время и желание разобраться в том, что Вы делаете, то, конечно же, пробуйте писать код самостоятельно - это полезнее и интереснее, чем бездумно переписывать...
      Но! Я так же считаю, что иногда можно взять и готовый рабочий скрипт, чтобы сэкономить время и сократить кол-во ошибок (но это уже когда будете примерно понимать, как этот скрипт работает).
      В общем и целом:
      - если новичок - переписывать примеры и гуглить, какое слово в коде что значит;
      - почувствовал в себе уверенность - пытаться изменять чужие примеры под свои нужды;
      - стал ещё круче - изучать, создавать и применять новые (свои) методы под старые задачи;
      - почувствовал себя программистом - к этому времени и сам разберёшься, что дальше делать)

    • @dansatora3150
      @dansatora3150 4 роки тому

      @@NoobGameDev благодарю за ответ)

  • @buhgalter7574
    @buhgalter7574 4 роки тому

    Все прекрасно работает, но есть один момент, не подскажите как можно его решить? У меня анимация прыжка состоит как бы из трёх этапов, присед - прыжок - приземление (присед после прыжка), так вот, после нажатия пробела, персонаж приседает уже в воздухе, а приземление совсем не проигрывается, так как анимация прыжка прерывается после пересечения колайдера GroundCheck с объектами слоя Ground, можно это как-то пофиксить? И еще один момент, можно каким-то обраpом регулировать длину прыжка?

    • @NoobGameDev
      @NoobGameDev  4 роки тому

      Я с конца начну)
      О контролируемом прыжке есть видео (буквально следующий урок, 5-й), но в нём происходит контроль времени увеличения силы прыжка... Т.е. он будет прыгать дальше за счёт того, что прыгает выше. Есть так же видео об ускорении (беге, 10-й урок), в нём увеличение длины прыжка происходит за счёт увеличения скорости движения во время прыжка. Посмотрите оба видео, может, их комбинация даст, то, что Вам нужно.
      А вот с прыжком всё не так однозначно...
      Если Вы хотите анимацию перед прыжком, то придётся делать задержку на время проигрывания анимации (т.е. нажали клавишу прыжка, а перс прыгнул через ~0.5 сек.).
      А при приземлении, нужно будет на время проигрывания анимации отключать управление героем (чтобы, например, при зажатой клавише управления, анимация не переходила резко из прыжка в ходьбу, или перс не перемещался влево вправо во время проигрывании анимации приземления...)
      Получится перед прыжком 0.5 сек., после те же 0.5 сек... и уже секунда (примерно) задержки. А эти все моменты очень ощущаются в игре. Можно ускорить анимацию, но тогда она становится почти не заметной...
      Если сделать всё, что я тут предложил, то получится примерно так:
      ua-cam.com/video/_unKY_IqiAQ/v-deo.html

  • @waxxer9036
    @waxxer9036 Рік тому

    А если он теперь прыгает только на определённой части карты?

  • @four8772
    @four8772 2 роки тому +1

    что делать если выдаёт ошибку Assets\Scripts\Player.cs(43,25): error CS0117: 'Physics2D' does not contain a definition for 'OverLapCircle' помогите! прошу!

    • @NoobGameDev
      @NoobGameDev  2 роки тому

      Если проблема ещё актуально, то C# чувствителен к регистру букв. В данном случае в "OverLapCircle" написана "L", а должна быть "l", т.е. вот так: "OverlapCircle"

  • @Vnucheck
    @Vnucheck 2 роки тому

    ЧЕЛ - МЕГАХОРОШ!!!

  • @people278
    @people278 Рік тому

    UnassignedReferenceException: The variable GroundCheck of PlayerMovement has not been assigned.
    You probably need to assign the GroundCheck variable of the PlayerMovement script in the inspector.
    Что делать?

    • @people278
      @people278 Рік тому

      Я справился

    • @Lamo1992
      @Lamo1992 Рік тому

      @@people278 подскажи пожалуйста как ? нет понимания что не так

    • @people278
      @people278 Рік тому

      @@Lamo1992 привет, всё что я помню с того времени - я всё начал заново, и всё вышло, я уже не помню что я точно делал, извини, это было 3 месяца назад

    • @Гыгы
      @Гыгы Рік тому

      Там же всё написано. В инспекторе не выбрали Граунд чек, видимо в ячейку забыли перетащить тот объект, который под персонажем создавался. Это было на моменте 4:14

  • @ZabavaTV
    @ZabavaTV Рік тому

    Хорошо объясняешь! Но я правда не могу разобраться - у меня игрок прыгает с какой-то периодичностью чтоли. Грубо говоря, не всегда срабатывает пробел. В апдейте функция джамп есть...

    • @NoobGameDev
      @NoobGameDev  Рік тому

      Прыжок разной высоты? Или иногда не срабатывает при нажатии пробела?

    • @ZabavaTV
      @ZabavaTV Рік тому

      @@NoobGameDev да, иногда не срабатывает пробел. Грубо говоря, через раз

    • @ZabavaTV
      @ZabavaTV Рік тому +1

      Ладно, решил проблему ЭдФорсом) Через велосити почему-то такие траблы...

  • @stanislavshestak2571
    @stanislavshestak2571 3 роки тому

    Здравствуйте, такой вопрос. Почему при нажатии кнопки пробел персонаж может улетать в космос? То есть он не падает обратно, а просто начинает подниматься по оси у до бесконечности.

    • @NoobGameDev
      @NoobGameDev  3 роки тому +1

      Приветствую)
      А сколько Вы его ждали с орбиты?
      В теории - это может произойти при Gravity Scale = 0 (в Инспекторе в Rigidbody), либо при ошибке в коде (если, к примеру ускорение персу придаётся не один раз при нажатии кнопки, а каждый кадр).
      Но, скорей всего, если вы делали по уроку, то для условий вашей сцены, у вас слишком большое значение JumpForce.
      Как Вы, кстати, делали (через velocity или AddForce)?
      Попробуйте его запустить к Зевсу и пойти попить чаю, посмотреть какой-нибудь видосик, и если минут через 10-15 значения по Y не начнут уменьшаться, то есть большая вероятность, что ошибка в коде. Если же цифры начнут возвращаться к нулю, то проблема в сильно большем, чем нужно значении силы прыжка)

    • @stanislavshestak2571
      @stanislavshestak2571 3 роки тому

      @@NoobGameDev большое спасибо за ответ, буду пробовать) Делал через AddForce

  • @Tikarr0
    @Tikarr0 3 роки тому +1

    я 80-тый который прокомментировал еее)

  • @semzero277
    @semzero277 3 роки тому +1

    Когда я запускаю и пробую прыгать в инспекторе показывается что On ground всегда с галочкой и мульти прыжок все еще есть, помогите как это пофиксисть?

    • @NoobGameDev
      @NoobGameDev  3 роки тому

      Это значит, что перс постоянно "видит" землю, а это, скорей всего означает, что у Вас слишком большое значение в поле GroundCheckRadius. Значение должно быть равным радиусу коллайдера объекта GroundCheck.
      Так же чтобы не проверять это при каждом изменении можно в ф-ю Start дописать эту строку:
      GroundCheckRadius = GroundCheck.GetComponent().radius;
      Она автоматически при запуске игры будет вписывать значение радиуса коллайдера GroundCheck в поле GroundCheckRadius

    • @semzero277
      @semzero277 3 роки тому

      @@NoobGameDev Я и поставил радиусы одинаковыми но все равно мульти прыжок есть

    • @NoobGameDev
      @NoobGameDev  3 роки тому +2

      ​@@semzero277 Тогда такое ещё предположение: в Инспекторе в поле Ground должны быть выбраны только слои, на которых может стоять перс (например Ground, Platform). А если там будет выбран слой, на котором находится сам персонаж (Player) или все слои (Everything), то как раз и будет такое поведение.
      Или если сам объект GroundCheck находится на слое Ground - он должен быть на том же слое, что и персонаж (например Player) или на каком-нибудь нейтральном (например Default)
      UPD: ещё одна мысль. Точно ли GroundCheck дочерний для персонажа объект? Должна быть такая структура:
      Player:
      - GroundCheck
      Т.е. GroundCheck нужно перетащить В персонажа.
      Для таких вопросов скриншоты очень хорошо подходят, поэтому если есть Дискорд, то присоединяйся к серверу, там гораздо быстрее и проще можно помочь: discord.gg/AHpWFBAJJr

  • @artemspyglass
    @artemspyglass 3 роки тому

    Большое спосибо за видео, но только персонаж у меня тоже не прыгал. Наверное из-за того, что слой GroundCheck у меня был чуть выше ног игрока(возможно не я один сделал эту ошибку). Опустив GroundCheck ниже ног, мой персонаж смог запрыгать.

  • @t4shok628
    @t4shok628 3 роки тому +1

    У меня проблема ,не работает анимация .
    В аниматоре при срабатывании OnGround состояние прыжка мигает(шкала снизу )
    В параметрах в аниматоре OnGround работает стабильно
    скорость анимации менял ,сама анимация из 2 кадров

    • @NoobGameDev
      @NoobGameDev  3 роки тому

      Нужно проверить переход от прыжка к покою (и к ходьбе). Есть подозрение, что там ошибка типа: в условии onGround = false вместо true.
      Как раз в таком случае анимация может из покоя быстро переключиться на прыжок и тут же переключиться обратно.

    • @t4shok628
      @t4shok628 3 роки тому

      @@NoobGameDev я проверил ,со скриптом и переходами всё ок

    • @NoobGameDev
      @NoobGameDev  3 роки тому

      @@t4shok628
      Тогда можно попробовать добавить кадров к анимации (любых), чтобы их не 2 было, а скажем 10. И посмотреть, если анимация будет воспроизводиться как надо, то проблема в анимации, а если и с 10-ю кадрами она будет всего лишь "промаргивать" то проблема либо в коде, либо в Аниматоре (что скорее всего).
      В идеале записать бы видео с проблемой, пощёлкать переходы, код промотать и скинуть мне в ВК или Телегу, что бы не гадать)

    • @t4shok628
      @t4shok628 3 роки тому

      @@NoobGameDev скорее всего я понял в чём проблема ,у меня вместе с Jump мигает и idle

  • @NIGHTMAREMINECRAFT_
    @NIGHTMAREMINECRAFT_ 9 місяців тому +1

    у меня почему то персонаж вообще не прыгает(( вот если что код:using UnityEngine;
    public class MovePlayer : MonoBehaviour
    {
    public float speed = 30.0f;
    public float jumpForce = 350.0f;
    private Rigidbody2D rb;
    void Start()
    {
    rb = GetComponent();
    }
    void Update()
    {
    Jump();
    float moveX = Input.GetAxis("Horizontal");
    rb.MovePosition(rb.position + Vector2.right * moveX * speed * Time.deltaTime);
    }
    void Jump()
    {
    if (Input.GetKeyDown(KeyCode.Space))
    {
    rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
    }
    }
    }

  • @keirill
    @keirill 2 роки тому

    Assets\Scripts\PlayerController.cs(20,9): error CS1955: Non-invocable member 'PlayerController.jumpForce' cannot be used like a method.

    • @NoobGameDev
      @NoobGameDev  2 роки тому

      Вы пытаетесь jumpForce использовать как метод... Что у Вас в 20-й строке?

  • @Mitya2087
    @Mitya2087 3 роки тому

    У меня вопрос на счёт строчки
    public Animator anim;
    У меня в инспекторе написано что "None (Animator)"
    Что именно мне туда перетянуть?

    • @NoobGameDev
      @NoobGameDev  3 роки тому

      А вы ещё ни одной анимации не делали для персонажа?
      Там нужен компонент Animator Controller, если не ошибаюсь, то при создании первой анимации, автоматически создаётся контроллер для того объекта которому была создана анимация.
      Но можно его создать и добавить вручную, почти так же, как и скрипт создавали: правой кнопкой -> Create -> Animator Controller -> можно его переименовать -> и перетащить в поле Controller блока Animator (или нажать на кружок справа от поля и выбрать нужный контроллер)

    • @Mitya2087
      @Mitya2087 3 роки тому

      @@NoobGameDev я это уже исправил, но в любом случае спасибо

  • @unkablekraken7786
    @unkablekraken7786 2 роки тому

    Использовать public чтоб просто работать в инспекторе так себе идея, есть такая вещь как [SerializeField] стоило сказать это, хотя бы просто сказать и использовать дальше public

  • @kolyaalekseev409
    @kolyaalekseev409 4 роки тому

    Все норм, но не понимаю пару вещей:
    1) Когда персонаж упирается в стену его начинает трести.
    2) не совсем понял про прыжок, т.е. я поставил гравитацию на 30 (у всех объектов), но падать быстрее он не стал, а идёт обычный прыжок( он занимает много времени и позволяет банихопить)
    Подскажите как исправить :D

    • @NoobGameDev
      @NoobGameDev  4 роки тому +1

      Начну со второго: нужно -30 (минус 30), а то он вообще как на Луне должен скакать) И насколько я знаю, то BHOP - это тема 3D игр (особенно CS, Doom) суть которой перемещаться быстрее при помощи распрыжки. Или имеется ввиду, что персонаж прыгает над землёй? Если да, то нужно уменьшить значение переменной CheckRadius в Инспекторе или коде.
      А вот с тряской у стены, это не совсем понятно... Происходит быстрое переключение анимаций или небольшое подпрыгивание или наоборот проваливание? Просто звучит знакомо, что-то похожее было у меня, но проблема была в быстром переключении анимаций из-за неправильных условий в переходах в Аниматоре.

  • @crazydevil3460
    @crazydevil3460 2 роки тому

    вот у меня вопрос, мне не нужен будет прыжок от стен и коллайдер персонажа у меня квадратный, соответственно ему нужна другая проверка земли, иначе он сможет прыгать только из середины блока, как мне сделать нормальный триггер земли, ведь если я попытаюсь увеличить радиус, то он начнёт считать стены за землю и отпрыгивать от них, как сделать триггер либо хитбоксом самого персонажа и сделать отдельный слой для стен, либо сделать как в обучение юнити и добавить разных состояний прыжка и не используя слои. Можете рассказать про 2 этих способа или рассказать про другие варианты ?

    • @NoobGameDev
      @NoobGameDev  2 роки тому

      Совсем не понял про прыжок из середины блока... ) Данный вариант, на мой взгляд, наиболее универсален. Согласен, что он немного запутан (всё-таки одно из первых видео - буду переделывать), но он прекрасно работает и с квадратными персами и с круглыми, так как это по сути значения не имеет. Есть просто куча способов проверки:
      1. Кастами (лучами, лучами похожими на квадрат, круг или произвольный коллайдер) - самый популярный Raycast
      2. Областями (кругами, квадратами, коллайдерами, точкой) - популярный OverlapCircle (как в видео)
      3. Контактами коллайдеров (через оnTrigger и onCollision, либо при помощи методов getContacts или isTouching)
      И для всех этих способов можно применять ещё и ContactFilter2D, в котором можно настроить направления нормали для считывания, слой для считывания и пр.
      Из того, что Вы хотите, больше всего подходит использовать проверку контакта коллайдера вместе с фильтром контактов... Что-то типа этого:
      _onGround = _mainCollider.isTouching(_contactFilter);
      Естественно сделав поля для основного коллайдера и фильтра (и настроив его).
      Каждый из способов имеет свои преимущества и недостатки. Что-то можно просто и наглядно отобразить, что-то из этого остаётся только представлять в голове. В видео что-то среднее))
      Я понимаю, что от моего ответа Вам вряд ли стало легче)) Потому что для начинающих слишком много информации, поэтому можете посетить Дискорд сервер (ссылка есть в шапке канала) там можно это всё показать более подробно, а так же посмотреть короткое видео по тому же способу, что и в данном видео, только чуть проще (возможно Вы его и оставите): ua-cam.com/users/shortsM0F-XIxdKIU

    • @arnaydohneh864
      @arnaydohneh864 Рік тому

      в таком случае ты создаешь 2 слоя коллайдеров. 1 - для onGround. Чтобы персонаж ходил.
      Другой слой - чтобы ты строил стены и.т.п
      С тайлмапами так же. Создаешь композит коллайдер для персонажа, чтобы он ходил .и.тп.
      2й - для стен.

    • @arnaydohneh864
      @arnaydohneh864 Рік тому

      и еще, можешь настроить в анимациях, Чтобы CheckGround - дчоерний объект персонажа, тоже двигался и был всегда впереди.

  • @Krukwa-o7g
    @Krukwa-o7g Рік тому

    Мне почему-то пишет "Parameter 'onGround' does not exist.

  • @poli_merniy
    @poli_merniy 2 роки тому +1

    6:51 почему " SetBool" выдаёт ошибку?

    • @NoobGameDev
      @NoobGameDev  2 роки тому +1

      Без кода ошибки непонятно...
      Вот несколько причин:
      1. Ошибка в написании.
      2. Вы передаёте в Аниматор не логическое значение (true / false), а, например int.
      3. В самом Аниматоре нет логической переменной с таким именем.

    • @poli_merniy
      @poli_merniy 2 роки тому +1

      @@NoobGameDev Спасибо я уже все исправил :)

  • @Bee_Fed
    @Bee_Fed 3 роки тому

    У меня такая проблема: при прикосновениях к стенкам, мой персонаж может прыгать как ему вздумается, а сделать слой Wall я не могу, т.к я делаю через tilemap. Как мне это исправить?

    • @NoobGameDev
      @NoobGameDev  3 роки тому

      Вам нужно сделать поменьше сферу проверки земли, чтобы она не выходила за бока перса. Другими словами сейчас (скорей всего) когда перс упирается в стену, то сфера проверки земли касается стены, поэтому нужно её уменьшить. Вам бы это показать на картинке, но тут нет такой возможности... Поэтому, если не поняли о чём я, то можете зайти к нам в Дискорд (ссылка в шапке канала), там можно наглядно объяснить)

  • @rim7358
    @rim7358 Рік тому +1

    4:57 все сделал в точности так, персонаж больше не прыгает

    • @rim7358
      @rim7358 Рік тому

      using UnityEngine;
      public class Player : MonoBehaviour
      {
      public float speed;
      public float jumpForce;
      public Rigidbody2D rb;

      private void Update()
      {
      ChekingGround();
      if (Input.GetKey(KeyCode.D))
      {
      rb.velocity = new Vector2(speed,rb.velocity.y);
      }
      if (Input.GetKey(KeyCode.A))
      {
      rb.velocity = new Vector2(-speed,rb.velocity.y);
      }
      if (Input.GetKeyDown(KeyCode.Space) && onGround)
      {
      // rb.velocity = new Vector2(rb.velocity.x, jumpForce);
      rb.AddForce(Vector2.up * jumpForce);
      }
      }

      public bool onGround;
      public Transform groundchek;
      public float checkRadius = 0.5f;
      public LayerMask ground;
      private void ChekingGround()
      {
      Physics2D.OverlapCircle(groundchek.position, checkRadius, ground);
      }
      }

    • @meowmooor
      @meowmooor Рік тому +1

      добавь больше знаечение в jumpforce примерно 250-350

  • @BiChezGame
    @BiChezGame 3 роки тому

    Что за обьект Ground?? от куда он взялся? что с ним делать?

    • @NoobGameDev
      @NoobGameDev  3 роки тому +1

      1. Ground - это объект группировки для платформ (т.е. если его развернуть, то в нём будут находиться платформы)
      2. Взялся он из первого урока: ua-cam.com/video/T79gLl5Dljg/v-deo.html
      3. В него нужно перемещать платформы, как для порядка в Иерархии, так и для того, чтобы иметь возможность группировки платформ и создания для них композитного (одного общего) коллайдера, а также данный объект со всеми дочерними объектами (т.е. платформами) стоит перенести на слой Ground, чтобы иметь возможность определять стоит ли персонаж на земле.

  • @Virfi_
    @Virfi_ 2 роки тому

    Можете, пожалуйста, объяснить: когда я даю полу слой ground, пол пропадает, но только в режиме конструирования, а если запустить игру, то всё появляется как было. Да, при этом ничего не портится, но приносит это малейшие неудобства, но можно ли это чуть-чуть исправить?

    • @NoobGameDev
      @NoobGameDev  2 роки тому +1

      Боюсь, что я с подобным не сталкивался... Единственное, что приходит в голову - это то, что Вы могли отключить видимость Gizmos в окне Scene, а при запуске в окне Game всё видно. Либо что-то не так с осью Z. Например слой земли находится слишком близко к камере или за ней, проверьте этот момент. В 2D хорошей практикой будет следить за тем, что по оси Z объекты были в нуле (кроме камеры). И что-то больше идей нет... Советую, зайти к нам на Дискорд сервер (ссылка есть в шапке канала и описании) и задать данный вопрос в соответствующем канале. В идеале записать видео проблемы. И либо я, либо кто-то из ребят попробуем в этом разобраться)

    • @Virfi_
      @Virfi_ 2 роки тому

      @@NoobGameDev хорошо, спасибо. Не то чтобы это прям сильно замедляло процесс, но доставляет неудобство

    • @enafings9625
      @enafings9625 2 роки тому +1

      @@Virfi_ попробуй нажать f мне помогло

  • @FINE356
    @FINE356 3 роки тому +1

    Сделал все как на видео, пересмотрел раз 10, у меня не работает анимация прыжка, и мульти прыжок и onGround вкл постоянно в чем может быть проблема?

    • @NoobGameDev
      @NoobGameDev  3 роки тому

      Вероятнее всего, это всё из-за слишком большого значения переменной "Check Radius". Основную роль играет именно это значение в поле Инспектора (не в коде)
      Сделайте так: подберите радиус Circle коллайдера у объекта Ground Check (он должен быть немного меньше границ коллайдера перса, чтобы если упереться в стену, то круглый коллайдер для проверки земли её не касался). После того как настроили размер, скопируйте значение радиуса этого зелёного круга и вставьте это значение в поле Check Radius.
      И попробуйте снова.
      Если не хотите каждый раз изменять значение Check Radius вручную, то в ф-и Start можете дописать такую строку:
      GroundCheckRadius = GroundCheck.GetComponent().radius;
      Она это будет делать автоматически при старте игры.
      Ах, да! Ещё на всякий случай проверьте, чтобы GroundCheck был дочерним объектом перса (вложенным в него).
      Т.е. чтобы в Иерархии была такая структура:
      ПЕРС-|
      - GroundCheck

    • @FINE356
      @FINE356 3 роки тому

      @@NoobGameDev Строчка автоматического радиуса - есть, дочерним тоже он является, но не работает, не понимаю в чем проблема, (Сделал так что бы круг не выходил за пределы границ персонажа, но мульти прыжок все равно есть)
      И еще сделал в анимации все как у вас на видео, персонаж прыгает, бегает (с анимацией из прошлого видео) но в прыжке анимации нет, в аниматоре просто ничего не происходит, не знаю что делать, все настройки onGround точно так же как на видео- а не работает.

    • @NoobGameDev
      @NoobGameDev  3 роки тому

      @@FINE356
      Ну, с анимацией прыжка всё ясно - она и не будет работать, если перс всё время детектит землю. А вот почему это происходит - это надо выяснять...
      Скинь код сюда или в ВК, я посмотрю на всякий случай...

  • @ДимаЛаврентьев-в7д

    Когда сделал анимацию прыжка моделька перестала поворачиваться, подскажите в чем может быть дело?

    • @NoobGameDev
      @NoobGameDev  2 роки тому

      Ну, единственное, что приходит в голову - это вы записали Flip в анимации... Попробуйте пересоздать новую и следить за этим моментом. Хотя, в таком случае, если во время прыжка понажимать влево-вправо, то он должен поворачиваться...
      Или перс перестал поворачиваться даже, когда просто ходит? Я бы советовал к нам в Дискорд заглянуть (ссылка есть в шапке канала). Просто там всё наглядно можно показать, понять и вычислить причину.

  • @Tikarr0
    @Tikarr0 3 роки тому

    помогите пожалуйста если такая ошибка
    4:55 что делать если перс не делает мультипрыжок но и не ходит!(((

    • @NoobGameDev
      @NoobGameDev  3 роки тому +1

      Ошибок Unity не выдаёт? Если нет, то скиньте код, возможно где-то там логическая ошибка.
      UPD: или попробуйте скопировать код из под видео.

  • @bingogame225
    @bingogame225 5 місяців тому

    У меня анимация прыжка обратно в анимацию покоя не переходит

  • @Metteam142
    @Metteam142 3 роки тому +1

    Помогите пожалуйста у меня горой(Character) улетает наверх

    • @NoobGameDev
      @NoobGameDev  3 роки тому

      Этому 2 основные причины:
      1. Слишком большое значение JumpForce
      2. В коде (в методе Jump) допущена ошибка (многие пишут Input.GetKey(KeyCode.Space), что значит "клавиша ЗАжата", а нужно Input.GetKeyDown(KeyCode.Space), что значит "клавиша была НАжата")
      Если это не решит Вашу проблему, то советую зайти на наш Дискорд сервер (ссылка есть в шапке канала), там можно и код и скрины скинуть)

    • @Metteam142
      @Metteam142 3 роки тому

      @@NoobGameDev Спасибо)

  • @zinya328
    @zinya328 2 роки тому

    А что делать, если во вкладе Create нету Physics Material 2D, а только Physics Material ?

    • @NoobGameDev
      @NoobGameDev  2 роки тому

      Он немного поглубже спрятан (может, кстати, от версий Unity отличается - нужно проверить).
      Попробуй тут поискать:
      Create -> 2D -> Physics Material 2D

  • @Slava.Hizhnyak
    @Slava.Hizhnyak Рік тому

    Я конечно понимаю, это типа простой способ, все дела, но он же прыгает с рандомной силой, в зависимости от того в какой момент падения снова нажмешь прыжок, он прыгнет или на высоту 2, или на высоту 4, и это непредсказуемый рандом. Это так работает AddForce или я где-то напартачил?
    P.s. В игре также есть платформы, и если персонаж подпрыгивает на платформу и в этот момент зажат пробел, а над платформой еще платформы, он разгоняется до орбитальных скоростей

    • @MeNoxy
      @MeNoxy Рік тому

      у него 5 урок это "Контролируемый прыжок" Если ты имеешь это ввиду

  • @aynmax
    @aynmax 3 роки тому

    у меня проблема, маленькая, есть задержка перед переходом из анимации прыжка в любое другое состояние, с каким то шансом, а в большинстве прыжков переход происходит мгновенно

    • @NoobGameDev
      @NoobGameDev  3 роки тому +1

      Скорей всего, в переходах от прыжка к другим анимациям у Вас включен выход из анимации по её завершению (стоит галочка Has Exit Time - уберите её). Ещё могут быть не корректно заданы (или не заданы вовсе) условия перехода (onGround = true / onGround = false).
      Из-за Has Exit Time анимация сменится только тогда, когда закончится текущая. Т.е. в вашем случае зачастую анимация успевает проигрываться за время вашего прыжка. А иногда (допустим при запрыгивании на платформу) может доигрываться анимация прыжка, когда по логике должна идти анимация покоя, к примеру)

    • @daniilgorin5380
      @daniilgorin5380 3 роки тому

      @@NoobGameDev Спасибо, помог)

  • @Quat846
    @Quat846 Рік тому +1

    Смотрю уже 4 ролик ну походу не починю(

  • @igoryan6175
    @igoryan6175 3 роки тому

    Привет, сделал все как у вас, всё работает, все отлично, но если поиграться персонажем, то бывает, что при прыжке в сторону и приземлении на землю, персонаж улетает в указываемую сторону со скоростью света, троит в стене и проваливается под землю. Это так и должно быть?)

    • @NoobGameDev
      @NoobGameDev  3 роки тому +1

      Да, это вполне адекватное поведение - скоро он устанет так быстро бегать и начнёт передвигаться нормально) Ну, а если серьёзно, то я даже не знаю, чем это может быть вызвано... Я его по всякому мучал, но такого эффекта, как Вы описываете ни разу не наблюдал. Перемещение как делали? если через AddForce, то ещё могу понять, он порой непредсказуемо себя может вести... Ну, а так нужно смотреть код, а если там ничего подозрительного, то в сцену тыкать...
      В идеале бы записать это на видео (чтобы увидеть сие безобразие) и к нам в Дискорд кинуть, может, кто-нибудь из ребят сталкивался)

    • @igoryan6175
      @igoryan6175 3 роки тому

      @@NoobGameDev Поковырялся в Unity, нужно было поставить в риджитбоди параметр Collision Detection на Continuous. Вы вроде это в видео показывали, подвела моя невнимательность)

    • @NoobGameDev
      @NoobGameDev  3 роки тому +2

      @@igoryan6175 Так это, вроде в Рывке было, а не в Прыжке... У меня поэтому даже и не мелькнуло.
      А для рывка есть один нюанс: если будете использовать наклонные поверхности, то если "рвануть" прямо на них - перса вверх отбросит, поэтому, если перс в состоянии рывка и касается земли, то нужно нулить ему скорость. Можете в комментах под видео с Рывком посмотреть, я там это несколько раз расписывал, вроде бы)

    • @Omegon1235
      @Omegon1235 3 роки тому

      @@NoobGameDev автор, помоги плиз.
      Я написал всё точно как в видео
      Через velocity то у меня выбивает ошибку CS1061

    • @NoobGameDev
      @NoobGameDev  3 роки тому

      @@Omegon1235 CS1061 - Эта ошибка возникает при попытке вызвать несуществующий метод или получить доступ к несуществующему члену класса.
      Обычно дальше в описании ошибки идут подробности, по которым и вычисляется проблема.
      Наверное, вы уже её решили... Но в следующий раз присылайте текст ошибки полностью - это ускорит "диагностику")

  • @MeNoxy
    @MeNoxy Рік тому +1

    у меня вообще персонаж не прыгает, хоть скрипт взял из описания

  • @flynntaggart9973
    @flynntaggart9973 2 роки тому +1

    а что делать если персонаж медленно падает ?

    • @NoobGameDev
      @NoobGameDev  2 роки тому

      Обычно такое происходит, если где-то обнуляется скорость, например в управлении:
      rb.velocity = new Vector2(inputVector.x * speed* Time.deltaTime, 0f);
      И вот медленное падение будет как раз-таки из-за нуля по Y вот здесь : " 0f);"
      Там необходимо передавать текущую скорость по Y:
      rb.velocity = new Vector2(inputVector.x * speed* Time.deltaTime, rb.velocity.y);
      Тогда падение будет происходить адекватно.
      Так же нужно иметь ввиду, что если управление сделано через Input.GetAxis, то когда не происходит нажатия на клавиши управления, то и по X и по Y значения будут равны нулю.

    • @flynntaggart9973
      @flynntaggart9973 2 роки тому

      @@NoobGameDev спасибо

    • @comachine
      @comachine 11 місяців тому

      гравитацию можно еще увеличить

  • @vlandarin6196
    @vlandarin6196 3 роки тому

    привет почему когда персонаж прыгает то на земле анимация не заканчивается?

    • @NoobGameDev
      @NoobGameDev  3 роки тому +1

      Видимо, та же проблема с переходами. Просмотрите их все, у них в настройках не должно быть галочки Has Exit Time.
      Или анимация зацикливается (по кругу играет). В таком случае в Аниматоре дважды кликните по интересующей Вас анимации и уберите галочку с поля Loop (оно отвечает за зацикливание анимации)

    • @vlandarin6196
      @vlandarin6196 3 роки тому

      @@NoobGameDev спасибо

  • @whitenight7399
    @whitenight7399 2 роки тому

    А что делать если попробовал 2 способа прыжка,но персонаж летит наверх,вроде в коде всё правильно написал.Заранее спасибо!

    • @NoobGameDev
      @NoobGameDev  2 роки тому

      Скорей всего нужно лишь подобрать нужное значение силы прыжка. Попробуйте прыгнуть и подождать минуту, а в это время смотрите за положением перса по Y (в Инспекторе). Если оно будет расти, а потом через какое-то время (10 - 30 сек. - минуту) значение начнёт уменьшаться, то проблема в очень высоком значении силы прыжка - нужно уменьшать (через Инспектор)

    • @whitenight7399
      @whitenight7399 2 роки тому

      @@NoobGameDev Спасибо!

  • @Zero-jo7hp
    @Zero-jo7hp 4 роки тому

    Допустим, но почему-то прыжок очень резкий( персонаж резко полетает вверх и медленно падает). Делал через AddForce.

    • @NoobGameDev
      @NoobGameDev  4 роки тому

      Именно резкий, или сильный, высокий? Просто звучит очень знакомо, но, возможно, это не то о чём я подумал.
      В общем, для начала посмотрите из какой функции у Вас вызывается функция прыжка? Что-то мне подсказывает, что из FixedUpdate... Попробуйте удалить её из FixedUpdate и вызвать через Update (или наоборот).
      Если это не даст результата, то попробуйте добавить ещё один аргумент (ForceMode2D.Impulse) в метод AddForce, чтобы получилось следующее:
      rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);

  • @okurokokurok6997
    @okurokokurok6997 Рік тому

    Блин, почему-то у меня пробел срабатывает через раз и игрок прыгает не всегда. Не знаете что могло вызвать данную проблему?(Код прыжка такой же как у Вас)

    • @NoobGameDev
      @NoobGameDev  Рік тому +1

      Это один из минусов, когда нажатие клавиши считывается в FixedUpdate. Все нажатия от игрока лучше читать в обычном Update.
      Типа этого:
      void Update()
      {
      if (Input.GetKeyDown(KeyCode.Space)) { /* вызов метода прыжка */; }
      }

    • @okurokokurok6997
      @okurokokurok6997 Рік тому +1

      ​@@NoobGameDev Спасибо Вам огромное за ответ, я Вам очень сильно благодарен)

  • @НикитаСолонский-я1р

    Почему у меня исчезли из вида земля, она как бы есть(когда нажимаешь Play), но в редакторе её нет

    • @NoobGameDev
      @NoobGameDev  4 роки тому +1

      Т.е. нет картинки Земли? Её не видно ни в окне "Game", ни в окне "Scene"? А если нажимаете "Play", то перс падает и стоит, как бы в воздухе? Если ответы на все вопросы "Да", то 90%, что у вас на объекте отключен компонент "Sprite Renderer". Выберите в Иерархии объект (Землю) и в Испекторе поставьте галочку у компонента "Sprite Renderer"... Помогло? Или я что-то не так понял?

    • @НикитаСолонский-я1р
      @НикитаСолонский-я1р 4 роки тому

      @@NoobGameDev спасибо