#3 - Анимация персонажа в Unity 2D (знакомимся с Animation и Animator)

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

КОМЕНТАРІ • 322

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

    Спасибо вам большое! Вы мне очень помогли. Я новичок в создании игр, и я никогда не видела таких подробных туториалов! Спасибо! :D

  • @themegajediOBVM
    @themegajediOBVM 4 роки тому +6

    Как подробно автор рассказал! Самому бы разбираться намного дольше пришлось бы. Спасибо.

  • @dimidrol6937
    @dimidrol6937 4 роки тому +13

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

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

      :)) Большое спасибо!)

  • @pulsar1934
    @pulsar1934 4 роки тому +8

    И ещё, что касается Flip, функция та что покороче не совсем одно и то же, что и первый вариант. Так как второй вариант после ходьбы в лево, возвращает idle на стоковую позицию, смотреть в право, первый вариант работает как надо. В Вашем же случае, разницы нет так как перс в положении idle фронтальный, ну а если бы перс стоял бы боком, то короткая функция не подошла бы. На моём персе, который стоит полубоком это ощутимо)) А так функция Reflect супер решение!

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

    Спасибо огромное! Делал по другим гайдам, ничего не работало, сделал по твоему - всё отлично работает!

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

    Все понятно обьесняешь и все работает. Спасибо за ваш труд и удачи.

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

      Спасибо! И вам успехов)

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

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

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

      Не знаю, как другие, но я уже полгода планирую перезаписать первые 3-4 видео, потому что и сам понял чего раньше не понимал и в движке кое-что поменялось - а значит надо обновлять инфу)

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

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

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

    Бро ты волшебник , спасибо тебе очень помог , нормально обьесняешь , ты просто чудо)))

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

      :)) Спасибо! Рад, что видео помогло)

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

      @@NoobGameDev бро а как сделать по вертикали ? типо нужно писать:
      moveVector.x = Input.GetAxisRaw("Vertical");
      rb.velocity = new Vector2(moveVector.x * speed, rb.velocity.y);
      anim.SetFloat("moveX", Mathf.Abs(moveVector.x));

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

      ​@@THEMERUSH
      И да и нет, а точнее не совсем)
      Если сделать так, то по идее перс при нажатии кнопки "вверх" будет идти в право, а при нажатии "вниз" - влево)
      Input.GetAxisRaw("Vertical") - грубо говоря, это с какой оси производить считывание... вниз = -1, вверх = 1, ничего = 0.
      А вот чтобы изменять ускорение самого объекта персонажа, нужно изменять значение по игрику свойства "velocity".
      Т.е. rb.velocity.x - это текущее ускорение по горизонтали.
      rb.velocity.y - по вертикали.
      Но напрямую их можно только считывать, а вот менять их можно через вектор:
      rb.velocity = new Vector2();
      А уже в векторе указывать направление по горизонтали и вертикали:
      rb.velocity = new Vector2(X, Y);
      Текущие ускорения будут записываться так:
      rb.velocity = new Vector2(rb.velocity.x, rb.velocity.y);
      Т.е. чтобы перемещать перса по вертикали нужно сначала считать значение с оси ввода по вертикали:
      moveVector.y = Input.GetAxisRaw("Vertical");
      а после изменить ускорение только по вертикали:
      rb.velocity = new Vector2(rb.velocity.x, moveVector.y);
      ну и можно умножить направление на какой-либо коэффициент, чтобы иметь возможность изменять скорость, типа:
      rb.velocity = new Vector2(rb.velocity.x, moveVector.y * speed);
      Но двигаться вниз ему будет мешать земля, а вверх гравитация. Поэтому нужно либо изменять в Инспекторе поле "Body Type" на "Kinematic", либо обнулять гравитацию.
      В 11-м уроке эта тема затронута)

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

    Спасибо. Да хоть на пол часа видео. Для новичков самое то

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

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

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

      Это радует, надеюсь, что так и дальше будет) И спасибо за подписку!)

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

    Спасибо, я столько всего пересмотрел , помог именно ты , лайк подписка автоматом!

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

    Сейчас смотрю твои уроки и понимаю, что большую часть кодов в скрипте я знал ещё со времён информатики в школе

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

      Так и есть)

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

      Везёт, у кого-то действительно полезная информатика была...

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

    Знаете что. Я подпишусь на этот канал. Ибо тут все понятно и доходчиво объясняет автор.
    Спасибо большое! Буду дальше смотреть видео

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

      Спасибо, и добро пожаловать!)

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

      @@NoobGameDev У меня вопрос. На 4-ой минуте у тебя там компонент idle. У меня такого нету вообще, как сделать?

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

      @@Madl_Madl Упущение данного видео... Сорри! При создании первой анимации, нужно перейти во вкладку Animation и нажать на большую (серую с белыми буквами) кнопку Create, которая будет по центру окна вкладки (вместо шкалы).

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

      @@NoobGameDev Спасибо большое, по пробую я

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

    Ты очень хорошо объясняешь. Знаю, что таких роликов в инете навалом, но хотелось бы увидеть тутор по стрельбе именно от тебя:3

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

    Шедевр, особенно "дЕв", это прекрасно ( ͡◉ ͜ ʖ ͡◉)

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

      😂 Сорри, если кому-то режет слух) Просто будем считать, что я амбасадор русификации английского в России)) И борец за свободу ударений в словах)

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

    До этого видео не знал про рефлект))) Пойду испробую новый метод). Кстати, советую в конце видео говорить про свой дискорд. Если бы не посмотрел "обращение к подписчикам" так бы о нем и не узнал, а задумка очень хорошая!

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

      Используй лучше вот этот код в Reflect:
      if ((moveVector.x > 0 && !faceRight) || (moveVector.x < 0 && faceRight))
      {
      Vector3 temp = transform.localScale;
      temp.x *= -1;
      transform.localScale = temp;
      faceRight = !faceRight;
      }
      Он самый стабильный - не вызывает проблем с камерой и прочим в отличии от такого варианта ещё к примеру:
      transform.Rotate(0, 180, 0);
      А Дискорд только 2 дня назад запустился, в следующие видео уже буду вставлять об этом инфу)

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

      @@NoobGameDev Спасибо! все прекрасно работает)

  • @Алексей-и5д3в
    @Алексей-и5д3в Рік тому +2

    Уроки просто супер. Спасибо за труд. Такой вопрос: как сделать, чтобы персонаж пятился назад

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

    Простой разворот персонажа
    void Flip()
    {
    facingRight = !facingRight;
    transform.Rotate(0, 180, 0);
    }

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

      Да, спасибо! Я просто тот ещё дурень и поэтому забыл за этот вариант, когда видео делал... )) Когда буду перезаписывать первые 3-4 урока - обязательно его включу к остальным!

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

    Спасибо большое! У меня всё получилось! Круто! :)

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

    Спасибо за подробные уроки, они очень помогают! Я искал такое решение для разворота персонажа, чтобы вместе с ним поворачивались и его дочерние объекты, смотрел еще одно ваше видео про карабканья по стене и не мог понять как у вас разворачивается коллайдер wallChec вслед за персонажем, я у своего персонаже не мог этого добиться и вынужден был использовать два wallChec, для левой и правой стороны, что было не очень удобно, потому что когда персонаж спрыгивая со стены спиной все равно начинал на нее карабкаться ). Но теперь у меня другая проблема, камера сцены, является дочерним объектом персонажа, для того чтобы следовать за ним, и теперь при помощи этого метода разворота, она тоже разворачивается и моя сцена пропадает из вида камеры. У вас камера не двигается вслед за персонажем? Как бы вы решили эту проблему?

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

      Уже разобрался, уже все работает )

  • @ДядяВалерий-ц9ь
    @ДядяВалерий-ц9ь 2 роки тому

    ваще кайф, очень понятно и просто,

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

    2-ой способ почему то не получается, хотя он мне и не нужен был😅
    Очень круто объяснил! Сделал 1-вым способом и доволен.

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

      Если интересно и есть желание попробовать, то есть ещё пару вариантов, такой:
      if (!blockMoveXforJump)
      {
      if ((moveVector.x > 0 && !faceRight) || (moveVector.x< 0 && faceRight))
      {
      Vector3 temp = transform.localScale;
      temp.x *= -1;
      transform.localScale = temp;
      faceRight = !faceRight;
      }
      }
      и такой:
      if (!blockMoveXforJump)
      {
      if ((moveVector.x > 0 && !faceRight) || (moveVector.x< 0 && faceRight))
      {
      transform.Rotate(0, 180, 0);
      faceRight = !faceRight;
      }
      }

  • @МКХамелеон
    @МКХамелеон Рік тому +2

    Привет спасибо за твои ролики. Очень помогают. Делаю свою файтинг игру в стиле битемапа. Хотел бы узнать как сделать для героя атаку, блок, комбо и способности. Если умеешь пожалуйста сними видео или ответь хотя бы. Ещё хотел бы узнать как сделать анимацию поворота слева на право и справа на лево персонажа

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

    спасибо. Очень помогаешь освоиться в юнити

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

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

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

      @@NoobGameDev да, я заметил некоторые проблемы. Пока только в переходах анимации, но ничего. Самое главное такие видео хотя бы задают направление. А от него уже можно двигатся

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

    помогите пж. я добавил анимацию врагу но как мне ее в скрипт вставить, у меня враг двигается из стороны в сторону
    вот такой код:
    public class WalkBandit : Entity
    {
    public float speed = 3.5f;
    private Vector3 dir;
    private SpriteRenderer sprite;
    public Animator anim;
    private void Awake()
    {
    sprite = GetComponentInChildren();
    }

    void Start()
    {
    dir = transform.right;
    anim = GetComponent();
    }
    private void Move()
    {
    Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position + transform.up * 0.1f + transform.right * dir.x * 0.7f, 0.1f);
    if (colliders.Length > 0 ) dir *= -1f;
    transform.position = Vector3.MoveTowards(transform.position, transform.position + dir, Time.deltaTime);
    sprite.flipX = dir.x < 0.0f;
    }

    private void Update()
    {
    Move();
    }
    private void OnCollisionEnter(Collision collision)
    {
    if(collision.gameObject == Hero.Instance.gameObject)
    {
    Hero.Instance.GetDamage();
    }

    }
    я добавил метод анимации, указал его в старте,
    но куда мне вставить эту строчку
    anim.SetFloat("moveX", Mathf.Abs(moveVector.x));

    • @vertuos-the-gold-mask
      @vertuos-the-gold-mask 2 роки тому

      бля ну
      и нахер я пытаюсь научится этому
      если у меня все равно ничерта
      не выйдет
      (да я пытался сделать свое сообщение как код)

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

      Ну, смотрите... На сколько я понял, то враг вообще стоять не умеет) Поэтому в данном конкретном примере можно было бы обойтись лишь анимацией движения (сделать её дефолтной в аниматоре).
      Но если планируется добавить анимацию покоя, то я бы изменял moveX в методе Move после изменения transform.position. Но так как сейчас энеми заточен только под движение, то Вам придётся много чего переделать.
      И код немного переусложнён) Так что Вы и сами в нём начинаете запутываться (например есть переменная speed, но скорость движения врага нигде не регулируется, а так же есть сомнения, что перс нанесёт урон неподвижному игроку - скорей всего, он до него дойдёт, развернётся, и пойдёт искать стену... Я не уверен, но проверьте (: ). Конечно всегда приятно видеть, как люди сами пытаются придумывать свои решения, а не слизывают под чистую, но я бы посоветовал глянуть видео у Graphical Design на эту тему: ua-cam.com/channels/Hr72IH-33mrD2h09MR3N3Q.htmlsearch?query=патруль
      Для первых экспериментов с патрулём они неплохо подойдут)

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

      @@NoobGameDev спасибо большое, я учту, а по поводу урона, я ещё не заморачивался, решил сначала с движениями разобраться а потом уже с уороном и тд. Спасибо за совет

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

      @@NoobGameDev я занимаюсь, этим просто 3 день всего, но очень интересно, правда информацией переполнен сильно. Но затягивает невозможно просто

  • @MiDLaYn
    @MiDLaYn Рік тому +3

    Привет, помоги пожалуйста! Вылазеет ошибка: Mathf и moveVector не существует, что делать?

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

      Проверь ты правильно написал " public Animator anim; " А то у меня было, что я авто заполнением написал " public Animation anim; "

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

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

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

    Еще один способ разворота анимации он просто удобен но в нем наверно тоже есть недостатки (я пишу ротацию но можно и скеел )
    void Flip()
    {
    if (Input.GetAxis("Horizontal") > 0) transform.localRotation = Quaternion.Euler(0, 0, 0);
    if (Input.GetAxis("Horizontal") < 0) transform.localRotation = Quaternion.Euler(0, 180, 0);
    }

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

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

    • @xcledus5655
      @xcledus5655 9 місяців тому

      Спасибо огромное!

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

    Почему когда я добавляю анимацию, персонаж перестаёт двигаться, а анимация работает

  • @ОльгаСтанкул-ъ4н
    @ОльгаСтанкул-ъ4н 3 роки тому +1

    Почему когда я ствлю знак умножить в рефлекте мне выдаёт ошибку вот код
    void Reflect()
    {
    if ((moveVector.x > 0 && !faceRighte) || (moveVector.x < 0 && faceRighte))
    {
    transform.localScale *= new Vector2(-1, 1);
    faceRighte = !faceRighte;
    }
    }
    оператор"*=" не может применяться к опертандам типа "UnityEngine.Vector3" и "UnityEngine.Vector2"

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

      Странно... А какую версию Unity используете?
      Можете попробовать такой вариант:
      void Reflect()
      {
      if ((moveVector.x > 0 && !faceRight) || (moveVector.x < 0 && faceRight))
      {
      Vector3 temp = transform.localScale;
      temp.x *= -1;
      transform.localScale = temp;
      faceRight = !faceRight;
      }
      }
      или такой:
      void Reflect()
      {
      if ((moveVector.x > 0 && !faceRight) || (moveVector.x < 0 && faceRight))
      {
      transform.Rotate(0, 180, 0);
      faceRight = !faceRight;
      }
      }
      При такой реализации и с камерой проблем меньше будет. Только чтобы у Вас всё заработало нужно заменить везде в примере faceRight на faceRighte. Ну или переименовать переменную перед функцией с faceRighte на faceRight.

    • @ОльгаСтанкул-ъ4н
      @ОльгаСтанкул-ъ4н 3 роки тому

      @@NoobGameDev Большое спасибо мне помог первый случай

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

      @@NoobGameDev привет. У меня юнити 5.6.4.p2
      Это типа уже допотопная? Такая же ошибка.

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

      @@WallDiesel Привет) Ну, совет будет таким же) А версия, да - старенькая уже. Советую, если не свежие, то попробовать хотя бы до 2019 LTS обновиться (там уже большинство полезных штук имеется, типа поддержки тайлмапов, событийной системы ввода и пр.)

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

      @@NoobGameDev примного благодарен. Я первый способ сразу применил - всё работает. Буду обновляться. И спасибо за ролики. Эти уроки просто нечто. Абсолютно не зная С, при наличии фантазии уже можно что-то сделать.

  • @ДмитрийИванов-и6е9х

    6:19 подскажите что за проблема, когда нажимаю на + ничего не происходит , он просто серый

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

      Честно говоря, не сталкивался с таким (насколько я помню), но попробуйте следующее: если игра запущена, то остановите её и выделите в Иерархии объект персонажа, а уже потом попробуйте добавить переменную.

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

    6:54 - а зачем нужно выбирать значение по модулю?

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

      С Горизонтальной оси ввода может поступать либо отрицательное, либо положительное, либо нулевое вещественное (дробное) значение.
      В Аниматоре (в условиях перехода) для вещественных переменных есть только условия "больше" либо "меньше".
      Допустим, мы выбрали в условии перехода, что будем его запускать, когда значение ввода больше нуля. Тогда, если мы нажмём "вправо", то с оси ввода поступит положительное значение (допустим, единица) и сработает переход от анимации покоя к анимации ходьбы.
      Но если нажать "влево", то в аниматор поступит отрицательное значение (допустим, минус единица) и как следствие, переход настроенный на положительное значение не сработает, а значит персонаж будет перемещаться влево, но будет продолжать проигрываться анимация покоя.
      Поэтому мы можем передавать в Аниматор абсолютное значение, при котором любое число (и положительное и отрицательное) будет передаваться, как положительное. И как следствие переход к анимации ходьбы будет срабатывать при любом отличном от нуля значении.
      Можете попробовать убрать метод Mathf.Abs и наглядно увидеть, что получится)

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

      @@NoobGameDev понял, спасибо

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

    Привет очень классные видео учусь по ним спасибо большое. Как вы удаляете пустой слайд в sprite edition?

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

    у меня почемуто нет idle в анимации
    не к чему стрелку проводить idle walk(walk any srtay exit entry )только эти знаения есть хелп плиз

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

      Решил проблему?

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

      @@feelingfealty да да спасибо

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

      @@feelingfealty подскажите пожалуйста где можно получится гейм деву платно или бесплатно

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

      @@iscooiscoo5045 хах, я сам только начал по видео учиться)

  • @ArtemSharapov-y7f
    @ArtemSharapov-y7f 2 місяці тому

    Зачем присваивать значения переменным rb и anim в void Start, если в инспекторе в компоненте Script это можно сделать?

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

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

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

      А до добавления анимации он двигался?
      Если "да", то какую анимацию использовали (спрайтовую или позиционную)?
      Если не спрайтовую, то нужно смотреть на иерархию персонажа (должен быть основной объект, положение которого при анимировании изменять нельзя, а вот те объекты (руки, ноги, голова), которые находятся внутри главного - можно).
      Скорей всего, Вы, когда анимировали персонажа (нажимали кнопку "запись" и изменяли положение) изменили положение не того объекта.
      Но чтобы сказать наверняка, мне нужно видеть скриншот Иерархии и, какие параметры изменялись при анимации (выбрать анимацию в окне Animation).
      Поэтому, если есть возможность - скиньте скриншоты мне в ВК.

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

      @@NoobGameDev, у меня та же фигня, но анимация спрайтовая. Что делать?

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

      ​@@kodest8017
      1. До добавления анимации он двигался (перемещался)?
      2. В окне Иерархия или на Сцене выделить/выбрать персонажа, запустить игру. И обратить внимание меняется ли в блоке Transform в свойстве Position значение по X, когда Вы нажимаете клавиши движения?

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

      @@NoobGameDev 1. Да! 2. Нет, цифры не меняются

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

    Когда я включаю аниматор у персонажа, персонаж перестаёт двигаться, а как выключаю, сразу начинает, как решить?((((

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

      Скорее всего у тебя в основной анимации есть изменение позиции самого игрока, а не его части

  • @ВалентинКритенко
    @ВалентинКритенко 3 роки тому +1

    @Noob Game Dev, Спасибо за понятный урок. Некоторые любят растекаться мыслью по древу, у тебя этого не увидел)
    Для тех у кого вылезает ошибка (AnimationEvent has no function name specified!)
    пкм по белому штриху, в аниматоре, удалить, удалять пока полностью не избавимся от всех штрихов.
    Видео с подробностями.
    ua-cam.com/video/rwnqHEd174w/v-deo.html

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

    Здравствуйте подскажите когда создаю add tab animation то не получается сделать то что показанно на уроке все пусто

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

      Здравствуйте) Да, есть такое упущение в ролике. У Вас, скорей всего, вместо шкалы анимации (когда переходите в окно Animation) должна быть по центру серая кнопка с надписью "Create" вот для первой анимации Вам, как раз нужна она. Если я не ошибаюсь и если правильно понял Вашу проблему.

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

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

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

      Сделал анимацию как сказали все заработало спасибо!

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

    всё сделал как в видео, код написан так же и ошибок никаких не выдаёт, анимации сменяются правильно, значения по x меняются и в компоненте скрипт и в аниматоре, короче всё работает кроме самой ходьбы, помоги пожалуйста, 7:47 вот тут я остановился и понял что у тебя он ходит а у меня нет((

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

      :)) Это самое распространённое выражение среди начинающих "Всё сделал один в один, а ничего не работает". Значит не один в один, значит, что-то упустили...
      Если перс перемещался до анимации, то должен и после, - она на перемещение абсолютно не влияет в данном случае.
      Я ведь правильно понял, что при нажатии клавиши движения анимация воспроизводится, но перемещение не происходит?
      Очень похоже, что либо пропущена строка:
      rb.velocity = new Vector2(moveVector.x * speed, rb.velocity.y);
      Либо в Инспекторе в поле "Speed" стоит ноль, меняйте на 1,2,3,4...
      Если я не угадал, то скиньте сюда код)

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

      @@NoobGameDev using System.Collections;
      using System.Collections.Generic;
      using UnityEngine;
      public class PlayerMove : MonoBehaviour
      {
      public Rigidbody2D rb;
      public Animator anim;
      public Vector2 moveVector;
      public float speed = 2;
      void Start()
      {
      rb = GetComponent();
      anim = GetComponent();
      }
      void Update()
      {
      walk();
      }
      void walk()
      {
      moveVector.x = Input.GetAxis("Horizontal");
      rb.velocity = new Vector2(moveVector.x * speed, rb.velocity.y);
      anim.SetFloat("MoveX",Mathf.Abs(moveVector.x));
      }
      }
      строка была и скорость 2f стояла, но персонаж все также не двигается, единственное что отличается в моем проекте от вашего это то что у меня анимация покоя не глаза увеличиваются а персонаж уменьшается и увеличивается (типо дышит) возможно это изза этого хотя хз, спасибо за ответ. И кстати да вы все правильно поняли, анимации работают правильно но перемещения нету

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

      @@winter2021inmemory В окне Инспектора ещё посмотрите, какое значение в поле "Speed" и попробуйте изменить его прям значительно, например на 50, на 100. Именно в Инспекторе, а не в коде. Возможно, он у Вас движется, но очень медленно. Обратите внимание на поле Position по иксу в Инспекторе. Изменяется при движении или нет.
      И ещё попробуйте изменить строку:
      moveVector.x = Input.GetAxis("Horizontal");
      на следующую:
      moveVector.x = Input.GetAxisRaw("Horizontal");

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

      @@NoobGameDev ех все сделал и ничего не помогло, Position по иксу изменяется но он не движется, прийдетсся создавать новый и заново идти по вашему курсу, подскажите пожалуйста где вы изучаете юнити или C#

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

      ​@@winter2021inmemory Ой, эта фраза "Position по иксу изменяется но он не движется" противоречит сама себе... Изменение координат по икс это и есть перемещение вправо/влево)
      Т.е. по всем признакам он у Вас перемещается))
      Получается, что визуально кажется, что ничего не происходит...
      Может вы с камерой уже успели что-то сделать, например, добавить на неё скрипты для слежения за персонажем? Если да, то попробуйте их отключить или удалить.
      Начать заново оно то можно, но если не устранить проблему, не найти её причину, то она снова может появиться.
      Если есть желание, то можете мне в ВК кинуть видео или скрины и мы ещё пободаемся с этой ситуацией, ну, или можете начать заново, пока ещё слишком далеко не ушли)
      Про изучение, я напишу где-нибудь в Обсуждении или О канале, так как не первый раз уже спрашивают, ну, а вкратце - это поисковики, форумы, youtube.

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

    Приветствую! Спасибо за видео. Простой вопрос, почему после движения влево спрайт персонажа обратно разворачивается вправо в исходное положение, в инспекторе видно что Flip оси Х при нажатии влево включается а потом выключается. использовал одну строчку кода через функцию flip.

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

      Нужно код смотреть, скорей всего, где-то в условиях срабатывания ошибка и поэтому он не остаётся смотреть в ту сторону, в которую шёл. Так же, возможно, что если использовалась запись в Аниматоре, то Flip был записан и там, что и вызывает такое поведение...

    • @ВиталийИваногло-ф7в
      @ВиталийИваногло-ф7в 2 роки тому

      @@NoobGameDev у меня немного другой вопрос.У меня все так как в видео вроде,но когда я хочу при беге повернуться в другую сторону,то сначала начинается анимация покоя и лишь позже анимация бега.Незнаю важно это или нет,но заметил что x имеет всего 2 значения,это 0 и 1,хотя у вас у него значений больше.

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

      @@ВиталийИваногло-ф7в Смотрите, если у Вас moveX в Аниматоре имеет только 0 и 1, то это даже лучше (вещественные значения могут приводить в движение анимацию покоя - оно вам не нужно). Так происходит из-за использования метода GetAxisRaw вместо GetAxis.
      Поэтому советую оставить всё как есть, но вот в Аниматоре попробовать немного изменить настройки переходов:
      от Покоя к Ходьбе - HasExitTime (откл.), в условии moveX -> Greater (больше) -> 0
      от Ходьбы к Покою - HasExitTime (откл.), в условии moveX -> Less (меньше)-> 1
      Должно починиться)

    • @ВиталийИваногло-ф7в
      @ВиталийИваногло-ф7в 2 роки тому

      @@NoobGameDev не выходит,все равно при повороте на секунду moveX становится 0-из за чего проигрывается анимация покоя

    • @ВиталийИваногло-ф7в
      @ВиталийИваногло-ф7в 2 роки тому

      @@NoobGameDev я пытаюсь что то поменять,но суть не в аниматоре.Суть именно в том,что почему то moveX становится 0 даже когда я не прекращаю движение.

  • @ВсЯкаЯВсяЧиНа-ъ4о
    @ВсЯкаЯВсяЧиНа-ъ4о 2 роки тому +1

    У меня почему то вылезла ошибка, что moveVector не существует в контексте

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

      Ошиблись в коде - пропустили объявление переменной, а именно вот эту строку:
      public Vector2 moveVector;

  • @АртемКругліков
    @АртемКругліков 3 роки тому +1

    Добрый день проблема написал все прям как в видео все ошибки убрал но перс не ходит а только анимация в правый бок и все .. Помогите пожалуйста

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

      Здравствуйте! Проблема ещё актуальна? Если да, то скажите: вы код переписывали или копировали из описания? Если переписывали, то скиньте код - посмотрю. Так же проблема может быть связана с FlipX... Возможно, пробовали и забыли убрать при записи анимации.

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

      @@NoobGameDev на данный момент такая проблема, переписывал код, персонаж не двигается, но анимация есть :(

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

    Спасибооо
    у меня почему-то анимация проигрывалась с большой задержкой а оказалось что у меня была галочка на has Exit time

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

    Бротан все круто но! Как сделать этот знак палочки на 9:19 ?(

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

      :) Прямо над Enter'ом должна быть (на англ. раскладке Shift + "'эта кнопка")
      P.S. если вдруг у Вас эта кнопка залипает или ещё чего, то можете скопировать и вставить: " || "

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

      @@NoobGameDev спасибо большое )

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

    Красавчик, очень информативно хотелось еще от тебя уч.пособий! Будут?
    Главное что показываешь варианты и объясняешь ща и против 🤝
    А вот фразочка (Рисовач) меня повеселила! Вот этого точно не хватает😟

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

      Спасибо!) Будут) Куда же им деваться!? Я сейчас в геймджеме участвую до конца месяца. Так что материала много имеется, как познавательного, так и развлекательного. Джем закончится, снег выпадет и я засяду за видосы) Надеюсь))

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

      @@NoobGameDev оке ждемс у меня 14 числа начинается обучение по Unity 4 месяца и вот твой туториал прохожу, но подставляю синего челика с Assets Unity уроки 2d платформер кстати посмотри этот ассет какая у них механика в игре очень прикольно челик дохнет и появляется ну и т.д
      Ну тогда ждемс!

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

      @@oldborodach А что за обучение? Чьи курсы?)

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

      @@NoobGameDev Eccentric Games тап паренёк Илья очень интересные вещи показывает купил еще месяц или более назад за 40т.р
      Я как бы на сайте и Unity прохожу и у Вас тут на Тюбе, но захотел как говорится структурированные уроки от и до.
      Я как бы после его курса (4 месяца) пойду далее учится и учится с кем пока не знаю ,но мысли есть.
      У него на Тюбе есть канал зайди глянь !

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

      @@oldborodach Я знаю этот канал) Там и правда парень довольно умный и говорят курсы неплохие. Правда я прям буквально на днях узнал, что у него курсы есть...

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

    простите у меня проблема, там где void walk значение ads пишет якобы «Mathf не содержит определения для ads” что делать?(

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

      Всё нормально - опечатались: не "ads", а "Abs" (не "d", а "b" и с большой буквы). Если всё настроено правильно, то при вводе начала метода, VS должна предлагать Вам варианты команд (это очень помогает делать меньше ошибок), поэтому если Вам при вводе имён методов не предлагают вариантов и/или если нет подсветки кода, то ещё советую посмотреть это видео: ua-cam.com/video/w8J-srV9uzw/v-deo.html

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

    Я правильно понимаю, что в строчке:
    if ((moveVector.x > 0 && !faceRight) || (moveVector.x < 0 && faceRight))
    имеется ввиду, что за переменной(если я так понял) "moveVector" считается движение всего персонажа с прилегающими к нему вещами типа анимации и привязанных спрайтов, а условие "&& faceRight" это сторона, в которую смотрит спрайт переменной moveVector?
    UPD: после этого, анимации idle и move перестали показываться в игре, хотя в просмотре сцены все работает.
    UPD 2.0 : если убрать привязку камеры к персонажу, то анимация появляется в игре.
    UPD 3.0 : если не вызывать "transform.localScale" при привязанной к персонажу камеры, то анимация сохраняется, но если повернуться, то сразу пропадает и не возвращается. Я думаю, если как-то заставить игнорировать камеру отзеркаливание персонажа, то все наладится, но я не знаю как это сделать

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

      Да, да) Вы плюс/минус правильно мыслите)
      Я так понимаю, что Вы просто перетащили камеру на перса? Это не самый лучший вариант, к тому же накладывает некоторые ограничения. Но она должна адекватно заработать, если изменить содержимое функции для отражения спрайтов на такое:
      if ((moveVector.x > 0 && !faceRight) || (moveVector.x < 0 && faceRight))
      {
      Vector3 temp = transform.localScale;
      temp.x *= -1;
      transform.localScale = temp;
      faceRight = !faceRight;
      }
      Или на такое (лучше первый вариант):
      if ((moveVector.x > 0 && !faceRight) || (moveVector.x < 0 && faceRight))
      {
      transform.Rotate(0, 180, 0);
      faceRight = !faceRight;
      }

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

      @@NoobGameDev я сделал первый вариант и все работает, спасибо! Только один вопрос: что такое temp и Vector3, типа для камеры отдельный вектор создается, который игнорирует отражение?

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

      ​@@mukulash7865 Нет. Всё дело в том, что localScale - это масштаб и он имеет три параметра (по одному на каждую ось: X, Y, Z) и всё это хранится в переменной типа Vector3.
      В Vector2 хранится только X и Y.
      Но в Unity есть ограничения - нельзя умножить какой-то из параметров переменной localScale отдельно от других. Т.е. если сделать localScale.x * 2, то это вызовет ошибку.
      Однако если сделать так: localScale * 3, т.е. умножить вектор (а не параметр), то всё нормально. Но в таком случае на 3 умножится и значение по X, и по Y, и по Z...
      Пример на видео перемножает Vector3(localScale) на Vector2 в результате чего масштаб по оси Z обнуляется (а был равен 1). В результате чего привязанная к персонажу камера не "дотягивается" до слоев... Это можно увидеть если перевести сцену из 2D режима в 3D.
      А localScale на Vector3 Unity умножать не позволяет...
      Поэтому приходится делать временную переменную "temp", копировать в неё значение localScale, потом отдельно изменять значение по иксу, а потом уже присваивать localScale значение из временного вектора (temp) с уже изменённым параметром X.
      Кратко говоря - это особенности движка. Которым я по неопытности не предал должного значения, когда делал видео... Поэтому, скорей всего, когда руки до этого дойдут, то обязательно перезалью или дополню первые три/четыре видео)

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

      @@NoobGameDevпонял, спасибо

  • @hart-vu5cr
    @hart-vu5cr 2 роки тому

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

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

      Вам в любом случае нужна ссылка на Animator. В моих примерах это anim.
      И вы можете, либо использовать переменные в Аниматоре (в условиях переходов) и тогда изменять эти переменные примерно так (пример для float):
      anim.SetFloat('имяпеременной', значение);
      либо можете прерывать текущую анимацию и запускать какую вам нужно:
      anim.Play("имяанимации");
      Только следите за регистром букв, потому что "moveX" и "movex" будут считаться разными переменными (то же самое и с именами анимаций)

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

    Здраствуйте, у меня персонаж не поворачивается влево когда я иду влево, что мне делать? ПОМОГИТЕ ПОЖАЛУЙСТА!

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

      я сам уже исправил видео топ спасибо продолжай

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

      @@miraclebloom2744 МолодцОм!) 👍

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

    Шедевр

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

      спасибо что лайкнул

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

      ты мне очень помог

  • @файзитрек
    @файзитрек 2 роки тому +1

    что делать если ты написал код но заходя в игру пишет ошибку и не заходит в игру

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

      Что значит "заходя в игру"? Когда запускаете проект из UnityHub, или когда нажимаете кнопку "Play" в Unity. Если второе, то, скорей всего, в коде пунктуационная ошибка (пропустили ";" опечатались и пр.), либо, создали публичное поле, в которое забыли перетащить нужный объект или компонент. Такое поведение обычно сопровождается красным текстом в консоли и в левом нижнем углу Unity. В любом случае, без текста ошибки большего сказать не могу...

    • @файзитрек
      @файзитрек 2 роки тому

      @@NoobGameDev спасибо я переписал код и все работает!

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

    Когда прописываю Reflect, scale персонажа не меняется. В инспекторе вижу, что faceRight включается и отключается правильно, но персонаж не поворачивается. Почему так может быть?

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

      А вы случайно не пробовали вариант с Flip'ами, может быть, когда создавали анимации, то не обратили внимание и где-то оставили чек-бокс Flip включенным.
      Или может у вас сразу обе ф-и работают и Flip и Reflect (должна остаться только одна).
      Просто если faceRight меняется, то значит, что код работает правильно, только что-то ещё разворачивает персонажа обратно.
      Я бы искал проблему в анимациях, особенно если вы делали их процедурными - нажимали кнопку записи и что-то двигали.
      Я к сожалению больше по описанию сказать не могу, сорри...

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

      @@NoobGameDev сейчас посмотрю насчет Flip, может не заметил. А еще насчет Scale спросить хотел. Не особо разбираюсь в коде, но вы написали: изменение Scale с 1 на -1, при этом, размер вашего персонажа как раз целая единица и десятые там. А у меня размер персонажа 0.6332
      Может ли это как-то повлиять?

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

      @@alterationofficial Нет, не должно, потому что каждый раз происходит умножение значения Scale по X на -1, т.е. у Вас он когда будет смотреть вправо, то по икс будет 0.6332, а когда влево, то -0.6332.

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

      @@NoobGameDev возможно проблемы правда с анимацией были. Создал новый проект, и первым делом настроил ходьбу, прыжок и поворот, а потом уже анимации добавил - все заработало как нужно

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

    Прошу помощи, делал все как на видео, но при движение параметр moveX остается нулем, кроме того почему отображается только целое число: 0, а не 0.0

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

      Возможно, Вы в Аниматоре создали int переменную - попробуйте её удалить и заново создать float.
      Так же в коде обратите внимание, что метод у аниматора должен быть SetFloat для float переменных и SetInteger для переменных типа int.

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

      @@NoobGameDev А у меня и тот и тот метод не работает

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

    вопрос: что делать если анимация идёт только в блоке idle (даже когда я двигаюсь)
    красных ошибок нет, moveX на 0.

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

      А может есть жёлтые предупреждения? Обратите внимание, на имена и типа переменных в Аниматоре. Если Вы из кода меняете float переменную (anim.SetFloat("moveX", 2f)), а в Аниматоре она у Вас int, то работать не будет. Так же важно, чтобы совпадали регистры букв, т.е. если в Аниматоре переменная имеет имя "moveX", а в коде Вы меняете "movex", то тоже работать не будет.

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

      @@NoobGameDev Спасибо за ответ, всё работает отлично, благодарю за такой хороший ролик!

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

    Помоги пожалуйста, первый раз как я сделал анимацию она полностью работала, я вышел из юнити и сохранил все. Потом я захожу и у меня ничего не сохранилось и пишет "the animator controller (player) you have used is not valid. animations will not play". Что делать?

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

      Похоже, что не выбран (или слетел каким-то образом) контроллер Аниматора.
      Попробуйте выбрать объект персонажа в Иерархии и справа, в окне Инспектора найдите блок Animator. В этом блоке в первом поле "Controller" посмотрите, что выбрано... Если там "None", то нажмите на кружок с точкой чуть правее поля, откроется окно... выберете в нём то, что там будет.
      Если в открывшемся окне ничего кроме None, то вы удалили контроллер аниматора (в проводнике Unity, который выглядит, как два серых квадрата на фоне бирюзового).
      Тогда можете в проводнике Unity создать новый контроллер (правой кнопкой по пустому мету -> Create -> Animator Controller) и переместить его в поле Controller блока Animator в Инспекторе.
      Ну, или, если Вас запутало данное объяснение, то делайте заново с момента добавления анимации.

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

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

    • @iehtldan3669
      @iehtldan3669 9 місяців тому

      жиза почему то так же!

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

    Помогите пожалуйста. У меня выдаёт ошибку: Parametr 'moveX' does not exist. UnityEngine.Animator:SetFloat(String, Single)
    Помогите пожалуйста разобраться в этом.

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

      Unity сообщает Вам, что не может найти среди переменный в Аниматоре переменную с именем "moveX".
      Т.е. Вы либо ещё не создали переменную "moveX" (именно в окне Аnimator), либо неправильно указали её имя (обратите внимание на регистр букв в имени переменной, т.к. "moveX", "MoveX", "MOVEx" - это три разных переменных)

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

      Спасибо огромное

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

    Привет вот вопрос как пофиксить чтобы в анимации walk синяя линия не останавливалась в конце, а начинала с начала идти. Поросто она у меня до конца доходит и все.

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

      Привет) Если я правильно понял, то нужно включить для анимации зацикливание.
      Для этого в Аниматоре дважды нужно щёлкнуть по нужному блоку анимации (по walk) и после этого в Инспекторе (обычно справа) появится поле (а точнее чек-бокс) "Loop" - нужно в нём поставить галочку.

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

    Только недавно начал изучать Unity, и возник такой вопрос вот есть у меня анимация покоя, анимация бега и анимация прыжка, всё делал по вашим урокам. Но как быть если рисовачь нормально прокачен, а в юнити нуб? Дело в том, что мне надо сделать переходные анимации моему герою. Например анимация от бега до покоя, скажем между ними анимация остановки героя или от прыжка, до покоя и бега и между ними анимация приземления после того как проверилась земля? Разными способами пробовал но постоянно отрабатывает всё очень некорректно.

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

      С мучением и методом тыка добился корректной работы моей идеи, не знаю на сколько это правильно, возможно у кого-то будет более интересное решение. От прыжка к анимации приземления я оставил настройки такие как были от прыжка и до покоя, а вот от анимации приземления до покоя и бега Has Exit time ставим галочку, Exit time=1, fixet duration ставим галочку, transition duration=0, transition ofset=0, interaption source=Current state, Order interaption ставим галочку. loop time убираем галочку. Такое можно применять от бега до покоя, например момент остановки. С такими мелочами игра будет выглядеть более богаче и насыщеннее.

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

      Всё Вы правильно делаете (и, спасибо, что делитесь своими идеями!), я давал такие настройки, для самого базового знакомства с этими монстрами, понятно, что если добавлять переходные анимации, то всё выглядит круто, но в начале работы с Unity очень тяжело настроить такие мелочи. К тому же, как Вы понимаете, я и сам далеко не ас в Unity (из нескольких примеров делаю свой, пытаюсь разобраться как всё работает, делаю урок, чтобы поделиться и ещё глубже понять реализацию). Кстати, скоро, в 3-ем отчётном видео будет в конце пример подобной механики.

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

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

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

      @@NoobGameDev согласен, по хорошему нужно отключать управление, но анимация крайне не продолжительная, поэтому незаметно.

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

    Не нашел ответа в коментариях, поэтому задам сам этот вопрос. У меня при анимации Idle персонаж смотрит вправо, анимации передвижения тоже работают коректно (в том числе и при движении справа влево все зеркалится как надо). Вот только после перемещения влево и остановки анимация переходит в Idle и персонаж снова смотрит вправо (визуально это выглядит резко и рывком). Можно ли как то в скрипте прописать условие чтобы после движения влево галочка FlipX не снималась, и персонаж оставался смотреть в ту же сторону куда перед этим двигался?

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

      Я так понял, что Вы решили через Flip сделать и выбрали вариант записи в одну строку... Реализуйте тот вариант метода Flip, который был до 8:40 (т.е. тот который в несколько строк) - он не будет срабатывать, когда от игрока нет ввода (т.е. когда moveVector.x == 0)

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

      @@NoobGameDev спасибо, уже попробовал но через Reflect. Все заработало как надо, действительно как и сказанно в видео проблем с ним должно встретится меньше :) Спасибо!

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

    как сделать спрайт капец для меня это проблема помогите

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

      найди в интернете, или нарисую в фотошопе, посмотри туторы

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

      Я сейчас как раз готовлю видео на тему создания споайтов ( игрока, окружения ) залетай на канал

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

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

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

      Ответить то не проблема, только боюсь, что я не совсем понял, что и почему у Вас происходит...
      Данные функции "Flip" и "Reflect" только лишь отражают картинку по горизонтали. За движение персонажа (влево/вправо) отвечает функция "Walk" (в моём примере). Т.е., если персонаж у Вас ходил до добавления методов отражения, то должен перемещаться и после...
      Скопируйте, скиньте код всего своего скрипта в комментарии (думаю он должен быть ещё не очень большой), чтобы не гадать, чтобы прям наверняка)

  • @МирСир-т2т
    @МирСир-т2т 3 роки тому

    чёт у меня немного поздно включает анимацию при перемещении, будто первая стоит та же, которая в положении покоя.

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

      А какой используется метод ввода в скрипте управления персонажем?
      Если Input.GetAxis("Horizontal")... и в условиях перехода между анимациями moveX > 0.1, к примеру, то такое вполне возможно, потому что при использовании данного метода вектор будет расти от 0 к 1 постепенно.
      Поэтому попробуйте использовать Input.GetAxisRaw("Horizontal")... и тоже самое с вертикальной осью. Возможно, это решит проблему. Если нет, то есть вероятность, что задано слишком "большое" наложение анимаций друг на друга в настройках перехода.

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

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

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

      Если в одно и тоже место независимо от того, в какую сторону смотрел перс до анимации, то причина может быть в том, что при записи анимации был затронут компонент Transform - например, если случайно или специально подвинули какую-то часть тела. Чтобы такого избежать у персонажа должна быть корректная иерархия: один основной объект (без спрайтов), а дочерние (в нём/под ним) уже могут спокойно перемещаться. Потому что позиция будет считаться относительно родительского объекта, а не центра всей сцены.
      Если же перс при нажатии влево-вправо, как будто бы отпрыгивает от центра, то проблема может быть в том, что некорректно настроен Pivot спрайта (синий бублик, в Sprite Editor - где спрайты нарезаются). В идеале он должен быть в центре снизу, т.е. под ногами. Так как этот бублик спрайта всегда совмещается с центром объекта. Если он будет где-то в стороне, то и спрайт будет настолько же далеко от центра объекта.

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

    Помогите пожалуйста, персонаж стоит с бензопилой (нарисован так) и когда он поворачивается - то выглядит будто центр не там где персонаж, а там где бензопила.

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

      Вам нужно сместить Pivot спрайта. Это, так скажем точка, которую Unity будет считать за центр изображения.
      1. Выделите изображение в окне Project
      2. В Инспекторе нажмите на кнопку Sprite Editor
      3. Отроется редактор спрайтов (обычно им нарезают атласы на отдельные изображения). Поэтому если изображений несколько, то кликните по нужному. Если же одно, то вы должны увидеть синий бублик (скорей всего, в центре спрайта).
      4. Отпозиционируйте этот кружок так как вам нужно. Обычно его ставят либо в районе живота персонажа, либо в ногах. Более точно можете выставить положение, если выберете Pivot - Custom (в небольшом меню справа внизу) и изменив X так, чтобы пивот переместился по центру перса (думаю, что в Вашем случае будет достаточно изменить только X, чтобы не переделывать перса)
      5. После этого нажмите кнопку Apply в правом верхнем углу окна Sprite Renderer'а, чтобы применить изменения.
      Лучше бы Вам это скриншотами показать, поэтому, если не поймёте, то посетите наш Дискорд сервер (ссылка есть в шапке канала) и задайте свой вопрос в соответствующем канале)

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

    При написании 2 вар кода персонаж идет только направо, даже нажимаю налево все равно, исполняет лунную походку. Помоги пожалуйста!!!

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

      Если проблема ещё актуальна, то проверьте не меняется ли Flip, т.е. не используете ли Вы оба способа сразу, в результате чего один способ мешает другому.

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

    Здравствуйте. Можете объяснить зачем мы после transform.localScale написали "*=", а не просто ровно? Там идёт умножение на -1 и поэтому получается противоположное значение?

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

      Всё верно) Чтобы от лишних действий избавиться, если просто присваивать, т. е. просто = , то перс всегда влево будет смотреть. Работает по такому же принципу, как и +=, и -=.
      A *= B, равносильно A = A * B.

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

      @@NoobGameDev спасибо!

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

    у меня вкладка с анимацией не работает, все кнопки заблокированы

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

      а всё, я тупой просто

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

      @@nembus5009 😂Это нормально) Со всеми бывает)) 👍

  • @СтаниславСумкин-л6й

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

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

      Я так понимаю, что это мы с Вами в ВК общались?)
      В любом случае, я отвечу, чтобы этот коммент, возможно, избавил кого-то от подобного вопроса.
      Если делать простую (грубую, без сглаживаний) привязку камеры к Персонажу (сделать его дочерним, переместив в Иерархии объект "MainCamera" на объект "Character"), то необходимо изменить функцию Reflect следующим образом:
      void Reflect()
      {
      if ((moveVector.x > 0 && !faceRight) || (moveVector.x < 0 && faceRight))
      {
      Vector3 theScale = transform.localScale;
      theScale.x *= -1;
      transform.localScale = theScale;
      faceRight = !faceRight;
      }
      }
      Если же это делать через скрипт "слежения" ("вешается" на камеру) за Персонажем, то необходимо принимать решения в зависимости от конкретного скрипта.

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

    Привет,
    У меня после команды
    else if (moveVector.x < 0);
    {
    Sr.flipX = true;
    }
    Начало писать 6 ошибок:
    Else не может запускать оператор
    Синтаксическая ошибка, требуется (
    Недопустимый термин else в выражении
    Требуется )
    Требуется ;
    но после того как я всё это сделал зелёным (я не очень помню)
    дописал код. А в итоге он не поварачивается

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

      Ну, всё логично) Вы написали часть кода, каким-то образом исправили ошибки Студии, но это вовсе не означает, что код будет работать должным образом. Перепишите всё в точности как в видео и посмотрите какой-нибудь видеоурок по основам программирования.
      Так как, например, в любом языке оператор else не может существовать без if перед ним.
      Т.е. должно быть примерно так:
      if (а > b)
      {
      // выполняемый код
      }
      else
      {
      // выполняемый код
      }
      На "псевдо языке" это выглядит так:
      если (данное условие верно)
      {
      // то выполняем код здесь
      }
      иначе
      {
      // выполняем код здесь
      }

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

      @@NoobGameDev Спасибо большое)
      Я написал Скрипт полностью как у вас, но всё равно выдает ошибки. Ну да ладно, всё равно спасибо, я попробую переписать :))

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

      @@zheckacentrop :)) Попробуйте понять движок) Переводите ошибки на русский или гуглите. Обычно, если есть номер строки и номер символа (например 36; 17), то ошибка синтаксическая (т.е. допущена Вами), зачастую пишется символ, который по логике программы должен был стоять на указанном в ошибке месте.

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

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

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

      Скорей всего анимация ходьбы воспроизводится только после полного проигрывания анимации покоя.
      Думаю, проблема в переходе:
      idle ➝ walk
      В настройках этого перехода нужно убрать галочку с поля Has Exit Time (это выход по завершению анимации)

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

      @@NoobGameDev спасибо тебе большое

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

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

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

      @@vlandarin6196 :)) Спасибо!)

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

      @@NoobGameDev Была такая же проблема.. Спасибо огромное! Лучшие уроки, которые я когда-либо видел!

  • @iehtldan3669
    @iehtldan3669 9 місяців тому

    можете помочь те кто разбираются? у меня на игроке висит камера(дочерний объект) и соответственно при повороте она тоже разворачивается. как это изменить?

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

      @@Player_MV спасибо за совет! по итогу поставила синемашин и все заработало !

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

    а что делет метод mathf abs ?

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

      Возвращает модуль числа, типа как |-4| = 4, другими словами отбросит знак от числа.

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

      агаааа спасибо!!!
      @@NoobGameDev

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

    у меня на последней скобке } ругается почему?

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

    Вопрос. На способе reflect надо было писать faceRight или facingRight? Просто Unity выдаёт ошибку.

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

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

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

    Здравствуйте, есть проблема-все делал с нуля по вашим урокам, но почему то при ходьбе влево персонаж смотрит направо, и наоборот. Pulsar 13 что-то писал про это снизу в коментариях, но хотелось бы получить помощь от самого автора:)

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

      Здравствуйте!) Скорей всего у Вас включен FlipX. Выберите персонажа, и в Инспекторе снимите галочку с чек-бокса FlipX. Так же нужно знать какую ф-ю вы используете, с изменением FlipX или LocalScale.x? И как у Вас нарисованы спрайты? По умолчанию они должны быть "смотрящими" вправо.
      А Pulsar13 говорил за то, что при использовании ф-и с изменением FlipX, персонаж при нажатой клавише влево смотрел влево, но когда клавиша отпускалась, то перс разворачивался вправо)

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

      @@NoobGameDev здраствуйтеcпаааасибо помогли

  • @Вячеслав-ы8и
    @Вячеслав-ы8и 4 роки тому

    спасибо!

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

    Controller 'Player 1': Transition '' in state 'walk' uses parameter 'MoveX' which does not exist in controller.
    UnityEditor.EditorApplication:Internal_CallGlobalEventHandler()
    так же и с айдл, помоги пожалуйста

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

      У Вас раньше в Аниматоре была переменная "MoveX", которую Вы использовали в условии перехода от анимации "walk".
      Видимо после того как Вы выбрали её в условии перехода, Вы её удалили или переименовали.
      Во-первых, убедитесь, что у вас есть переменная "MoveX" в Аниматоре (так же обратите внимание на регистр букв! в уроке было использовано "moveX")
      Во-вторых, проверьте переходы:
      walk -> idle
      idle -> walk
      В них, скорей всего, в окне Инспектора в блоке Conditions будет пустое поле с надписью "Parametr dos not exist Controller", выбирайте в поле параметр "MoveX" и настраивайте в соответствии с переходом.
      А, возможно, чтобы не запутаться , лучше удалить переходы
      walk -> idle
      idle -> walk
      и создать и настроить их заново.

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

      @@NoobGameDev щас попробую

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

    Привет, я начинаю ходить и через 0.2сек воспроизводится анимация ходьбы (то есть задержка) подскажите как это исправить?

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

      У старой системы ввода есть два метода: GetAxis и GetAxisRaw.
      Первый возвращает вещественные числа (0.1, 0.23 и т.д.), а второй только 0 или 1/-1.
      Когда Вы нажимаете кнопки A, D или стрелки "влево/вправо", то значения Горизонтальной оси ввода меняются хоть и быстро, но плавно (это в настройках при необходимости меняется).
      В вашем случае достаточно будет заменить GetAxis на GetAxisRaw в строке, похожей на эту:
      Input.GetAxis("Horizontal")
      чтобы стало так:
      Input.GetAxisRaw("Horizontal")

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

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

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

      Здравствуйте! Проверьте наличие самой переменной в аниматоре, а так же раскладку в её имени (как в самом Аниматоре) так и при изменении её из кода, т.е. чтобы не было такого, что в имени "moveX" будет кириллическая "о", "е", или "Х". Т.е. перепишите название переменной в Аниматоре, скопируйте и вставьте туда где происходит изменение (anim.SetFloat("moveX") = ...)
      Так же проверьте, чтобы и тип переменной (при её создании) и метод для изменения значения были соответствующими. Т.е. если Вы создали float (вещественную) переменную, то и изменять её нужно при помощи anim.SetFloat("moveX"), а если int (целочисленную), то anim.SetInteger("moveX")

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

    Что если перс разучился ходить и висит в воздухе хотя риджитбади 2д и колайдер есть?

    • @Матвеёга
      @Матвеёга 2 роки тому

      Во, та же проблема, анимация просто играет, а сам он висит в воздухе

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

      @@Матвеёга Если до добавления анимации перс нормально падал, то это значит, что во время записи анимации вы меняли положение основного (родительского) объекта персонажа, т.е. другими словами: сами указали , чтобы объект находился на том или ином месте. Поэтому он и висит на месте)
      Т.е. есть, допустим объект "Player", и если его развернуть (в Иерархии), то в нём есть, допустим "Правая рука", "Левая нога", "Голова" и пр. Так вот изменять положение рук, ног, головы при записи анимации можно, а основного объекта - Player не стоит.

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

      Я под вашим комментом ответил на похожий вопрос. Там конечно и другие причины могут быть, но судя по тому, под каким видео возник вопрос, то вероятнее всего, проблема именно в том, что использовалась запись при анимировании, и двигался основной объект персонажа.
      Нужно переделать анимацию, либо, что лучше - сделать её с нуля и следить за тем, чтобы в изменяемых параметрах не оказалось положения родительского объекта.

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

      @@NoobGameDev спасибо большое

    • @Матвеёга
      @Матвеёга 2 роки тому

      @@NoobGameDev хорошр, спасибо!)

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

    В коде приведенном по ссылке, отсутствует строка:
    public bool faceRight = true;
    из-за чего появляется ошибка:
    CS0103 Имя "faceRight" не существует в текущем контексте.

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

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

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

      @@NoobGameDev ты прав- всё там есть.

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

    У меня при поворотах влево и вправо он сначала телепортируется на несколько шагов. С чем это связано?

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

      глянь 1 урок по игре юнити 2д у хитмэна у него так тоже эта проблема гдето-то в середине есть, он показал как исправить

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

      На вскидку такое может быть, из-за Pivot'ов спрайтов. Когда используется Sprite Editor (например, для нарезки спрайтов), то при выделении спрайта он обводится рамкой в которой есть синий кружок. Вот этот синий кружок - это, грубо говоря, центр рисунка. мне кажется, что он у тебя либо слева с краю, либо справа - нужно переместить его (в идеале) в ноги персонажа.
      Речь вот об этом (просто, чтобы понять что это и где): ua-cam.com/video/HC24ugl5YFI/v-deo.html
      UPD: Чтобы сильно не мучаться, сначала посоветовал бы изменить Pivot на Bottom (кружок станет снизу по центру)

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

      @@NoobGameDev Я создал перса через empty, присваивая ему дочерние объекты в виде спрайтов head, hand и пр. Соответственно я начал менять Pivot на bottom center у каждого спрайта по отдельности, как иначе сделать в моем случае хз. Не помогло. Добавлю еще, что я хз как нормально прикрепить empty к его дочерним спрайтам, вначале он у меня вообще был расположен вдали от своих дочерних моделей(словно его душа покинула:D), но потом кое-как, выделив на сцене спрайты, определил на глаз и перетащил их к предполагаемой позиции empty. При выставлении идентичной позиции у empty и спрайтов получается какая-то лажа - расположение иконок оси координат все так же не совпадает. Ах да, так же я менял order in layer и все, что с этим связано. Ну это все я так к слову, может поможет как-то решению проблемы)

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

      @@sadkotik что-то не нахожу хитмана, можешь ссылку скинуть пожалуйста?)

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

      @@NoobGameDev В общем ситуация меняется когда я подгоняю расположение empty под расположение его дочерних спрайтов, но выглядит как-то все это костыльно, есть метод как их уверенно расположить?
      UPD Разобрался. Вытащил спрайты из эмпти и ресетнул позиции у всех. Сорян за глупые вопросы)

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

    Здравствуйте. Скажите пожалуйста в чем может быть проблема. Когда персонаж начинает идти, то анимация не сразу начинает проигрываться... То есть он начинает двигаться, а анимация ног начинается где-то через пару секунд. И потом он останавливается, а ноги еще идут, хоте перс уже остановился. Буду очень признательна, за ответ

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

      Приветствую) В переходах от анимации покоя к анимации ходьбы и обратно нужно отключить галочку Has Exit Time...
      Потому что она означает что переход между анимациями произойдёт только после того, как текущая анимация доиграется до конца.
      Так же можно ещё заменить метод Input.GetAxis("Horizontal") на Input.GetAxisRaw("Horizontal"), тогда значение moveX в Аниматоре будет изменяться не плавно от 0.0 до 1.0, а резко (если влево/вправо нажаты то 1, если не нажаты то 0) и соответственно анимации будут переключаться чётче.

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

      @@NoobGameDev Спасибо за быстрый ответ. Сейчас попробую и отпишусь

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

      @@NoobGameDev Все убрала галку с Has Exit Time... Все получилась. Еще раз спасибо за быстрый ответ. Это правда сейчас редкость.

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

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

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

    Здравствуйте, надеюсь ответите, как я знаю для того что бы движение персонажа работало одинаково на разных устройствах, нужно метод walk перетащить в метод FixedUpdate и при этом скорость персонажа у меня в окне Game должна была измениться(на прошлом проекте изменялась) но тут этого не произошло, так и должно быть или у меня какая-то проблема?
    И правда ли что при использовании метода FixedUpdate на разных устройствах будет одинаковая скорость движение или я ошибаюсь?

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

      Здравствуйте! Если глобально, то Вы правы.
      Разница в том, что FixedUpdate вызывается фиксированное число раз (по умолчанию каждые 0.02 сек), а вот число вызовов Update зависит от мощностей компьютера, т.е. 120 fps в игре будут означать, что за секунду Update будет вызван 120 раз. При этом FixedUpdate будет вызван за секунду 50 раз не зависимо от мощностей.
      Поэтому обычно делают так. Весь ввод от игрока (клавиши, мышка...) считываются в Update (чтобы ничего не пропустить), а вот всё что связано с "физикой" (расположением в пространстве, скоростями) вычисляют в FixedUpdate.
      Однако от того, как написан метод тоже много зависит. Например, если метод перемещения имеющий такой вид:
      rb.velocity = new Vector2(inputVector.x * speed, rb.velocity.y);
      изменить на такой:
      rb.velocity = new Vector2(inputVector.x * speed * Time.deltaTime, rb.velocity.y);
      То он будет одинаково работать на всех машинах, так как Time.deltaTime - время, прошедшее между последним и текущим кадрами.
      Чтобы точно всё работало, как задумывалось пишите считывающие ввод от игрока методы в Update (тот же Walk, Jump), а те, которые работают "самостоятельно" (например CheckGround) вызывайте в FixedUpdate.

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

      @@NoobGameDev спасибо большое, теперь в этом я буду уверен.
      Извените если отвлекаю, но появилась проблема которую я никак не могу решить, (весь код я брал у вас, и вроде бы ошибок не было) когда персонаж двигается он слегка подпрыгивает при этом ось "y" совсем немного изменяется, материал у меня в персонаже по всем параметрам выставлен на 0, графика пиксельная, сделана с помощью title map.
      И ещё когда я добавил камеру с помощью cinemachine и указал объект(персонажа) за которым она должна двигаться, персонаж начал очень сильно дёргаться при движении, на форумах я вычитал что это может быть связано с рассинхроном между физикой персонажа и камерой (я так это понял), я не сделал main camera дочерним объектом как в прошлом проекте, так как при повороте персонажа всё что видела камера исчезло(скорее всего это связано с тем, что я использовал другой код для флипа персонажа)
      Можно ли как-то исправить эти проблемы?
      Извените за потраченное время

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

      Почитав ваши коментарии я понял, что при использовании titleMapCollider2D возможно появление остановок придвижении (это именно у boxcollider2D) и небольшие подпрыгивания (при использовании capsule Collider2D)

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

      @@makestudio1505 По поводу подпрыгиваний, тут мне кажется, что дело либо в самой анимации ходьбы (особенно если происходят изменения коллайдера), либо из-за стыков тайлов. Обратите внимание, если перс подпрыгивает именно на стыке, то посмотрите в сторону Composite коллайдер (он объединяет тайлы одного тайлмапа в один, тем самым убирая стыки).
      А по поводу камеры и дёрганий - это бы конечно посмотреть, как именно это выглядит. Обратить внимание на трансформ - изменяются ли при этом какие-то параметры. Это может быть связано, как с отражением и флипами спрайтов, так и с настройками синемашин... Звучит очень знакомо и как будто бы было такое... Но, к сожалению, сходу не вспомню в чём проблема.
      Если есть возможность, то можете присоединиться к нам в Дискорд (ссылка есть в шапке канала) - может, там у кого из ребят похожая проблема была или я вдруг вспомню с чем это связано)

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

      @@NoobGameDev спасибо большое

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

    Что если во время разделение спрайтов выделяется только первый?

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

      Если в одном изображении несколько спрайтов, то очень важно изменить параметр Sprite Mode на Multiple (выделить картинку и найти поле в Инспекторе). А при разрезке поначалу можно использовать автоматический режим: выделить изображение, нажать в Инспекторе Sprite Editor и во вкладке Slice (слева сверху окна) в поле Type выбрать Automatic. В этом же выпавшем подменю нажать на Slice и Unity автоматически нарежет спрайты (если они не соприкасаются друг с другом). Он обычно может нарезать даже больше чем нужно (он может отдельную точку за спрайт посчитать), но при такой инструкции он должен нарезать спрайты нормально. После этого справа сверху нажать кнопку Apply, чтобы сохранить изменения.
      После этих манипуляций, если нажать на стрелку справа на изображении которое было нарезано, то развернутся все спрайты, по отдельности.
      Возможно я вас не совсем правильно понял... Поэтому, если есть желание, то можете присоединиться к нам в Дискорд: discord.gg/AHpWFBAJJr
      Там со скриншотами проще будет и вам объяснить и мне)

  • @Portal0000-tw
    @Portal0000-tw 2 роки тому

    привет, если ты ответишь то, ответь все же на вопрос пишет что: не содержит определения для

    • @Portal0000-tw
      @Portal0000-tw 2 роки тому

      вернее

    • @Portal0000-tw
      @Portal0000-tw 2 роки тому

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

  • @НекЕттА
    @НекЕттА Рік тому

    если делать анимацию через рефлект то следование за камерой не будет работать

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

      Это если просто камеру перетащить на перса, но обычно так не делают - пишут скрипт слежения.

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

    Здраствуйте, у меня следующая проблема. При написании строчки кода, anim.SetFloat() , выдает ошибку, что анимация не содержит в себе метод SetFloat(). В чем же проблема? Спасибо заранее.
    Ошибка :
    "Animation" не содержит определения "SetFloat", и не удалось найти доступный метод расширения "SetFloat", принимающий тип "Animation" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку).

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

      Приветствую) На сколько я могу судить из описания, то Вы ошиблись в начале кода, когда создавали ссылку на Animator.
      Вместо:
      public Animator anim;
      Вы, скорей всего, написали:
      public Animation anim;
      Animation отвечает за саму анимацию (раскадровку, ключевые кадры и пр.)
      А Animator - за воспроизведение и переключение анимаций (вот он нам нужен)
      Вам Animation, скорей всего Visual Studio авто-подстановкой предложила и Вы не то выбрали - должен быть Animator.
      Перепроверьте, возможно, я ошибаюсь в своих предположениях...

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

      @@NoobGameDev Здравствуйте ещё раз. Спасибо вам огромное, извините что потревожил. Я просто учусь этому искусству и старался писать код в большей мере самостоятельно ( перед анимацией персонажа я делал анимацию монеток в игре , где использовал Animation. Потому наверное, когда я смотрел видео, не обратил внимание на ваши строчки с Animator).

    • @ДаниилДаниленко-т8з
      @ДаниилДаниленко-т8з 2 роки тому

      @@NoobGameDev Спасибо вам большое, вы самый активный ютубер по юнити которого я знаю!!

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

      @@ДаниилДаниленко-т8з Спасибо) Аж, немного стыдно выпускать в среднем одно видео в месяц (так получается...) после таких приятных слов)

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

    Добрый вечер, это опять я. Наверное придётся теперь писать под каждым видео, хах. В общем, где искать иконку Animator? Добавить я её не могу, как Animation.

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

      :)) Всё ок) Если её нигде не видно, то можно её включить через вкладку Window (Там где File? Edit, Assets...) И найти там Animator, у Вас сразу откроется и подсветится данная вкладка. Сразу тоже самое можете сделать и с вкладкой Animation.

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

    что делать если в less и greater не хочет ставится 0.1?

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

      Скорей всего, проблема в типе переменной. Возможно, что она у Вас целочисленная (int), в таком случае в неё можно записать только целое число... Для вещественных значений нужна переменная типа float. Могу ошибаться, но можете удалить int-овую переменную (в переходах появится ошибка), а потом создать float переменную с таким же именем(!) и тогда в переходах она должна автоматически подставиться на место удалённой (ошибки исчезнут).

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

    Помогите пожалуйста где можно найти окно аниматор

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

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

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

    🥰😍🤩

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

    Комментарии под видео порой полезнее его самого

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

    у меня нету вкладки аниматор

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

      Переходите в основную вкладку Window (вверху слева) -> Animation -> Animator

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

    79 лайков
    я:тык
    80

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

    Всем привет , сделал все как на видео , не работает анимация , помогите

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

      Очень мало информации... Есть ли какие-то ошибки в консоли (красные сообщения в левом нижнем углу Unity)? Что происходит в Аниматоре (например, воспроизводится только анимация покоя, при этом переменная "moveX" всегда равна нулю)?
      Ну, или хотя бы что-нибудь за что можно зацепиться) Просто довольно часто такое можно услышать на очень базовых видео, потому что некоторым вещам не придаётся должного значения. Например, имя переменной в Аниматоре и имя данной переменной в коде должны полностью совпадать. Регистр имеет значение. Т.е. "movex" и "moveX" - это 2 разные переменные...

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

      @@NoobGameDev ничего такого нет , код взял из Гугл диска , все делал как на видео

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

      @@NoobGameDev в аниматоре , когда стою run , а анимация idle когда хожу тоже run и снова анимация idle

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

      @@prosto_chel544 Не уверен, что понял 😅
      Если код без ошибок, то остаётся Аниматор, а именно наличие и имена переменных (я говорил за регистр), а так же настройки переходов (обратить внимание на Has Exit Time).
      Если там ничего не найдёшь, то советую вступить к нам в Дискорд (ссылка есть в шапке). Там можно и скрины выложить, и видео снять, чтобы понятнее было, в специально выделенном канале спросить, и либо я, либо кто-то из ребят постараемся помочь)

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

      Рил так и было , Я исправил , просто переместив поле walk из update в fixedu