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

  Рет қаралды 53,621

Noob Game Dev

Noob Game Dev

3 жыл бұрын

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

Пікірлер: 322
@dimidrol6937
@dimidrol6937 3 жыл бұрын
Нашел того человека, который в несколько видео объяснил мне все то, чему я пытался добиться на протяжении пол года.... Кто читает мой комент, можете смело подписаться и оставить лайк.
@NoobGameDev
@NoobGameDev 3 жыл бұрын
:)) Большое спасибо!)
@Imudonnn
@Imudonnn 2 жыл бұрын
Спасибо вам большое! Вы мне очень помогли. Я новичок в создании игр, и я никогда не видела таких подробных туториалов! Спасибо! :D
@themegajediOBVM
@themegajediOBVM 3 жыл бұрын
Как подробно автор рассказал! Самому бы разбираться намного дольше пришлось бы. Спасибо.
@NoobGameDev
@NoobGameDev 3 жыл бұрын
:))) Мерси)
@pulsar1934
@pulsar1934 3 жыл бұрын
И ещё, что касается Flip, функция та что покороче не совсем одно и то же, что и первый вариант. Так как второй вариант после ходьбы в лево, возвращает idle на стоковую позицию, смотреть в право, первый вариант работает как надо. В Вашем же случае, разницы нет так как перс в положении idle фронтальный, ну а если бы перс стоял бы боком, то короткая функция не подошла бы. На моём персе, который стоит полубоком это ощутимо)) А так функция Reflect супер решение!
@idinaxyiadmin
@idinaxyiadmin Жыл бұрын
Спасибо огромное! Делал по другим гайдам, ничего не работало, сделал по твоему - всё отлично работает!
@kds5058
@kds5058 8 ай бұрын
Спасибо тебе за урок. Приятно слушать как ты объясняешь. Был вопрос один, но пока писал комментарий сам понял )))
@Im_noname
@Im_noname 3 жыл бұрын
Все понятно обьесняешь и все работает. Спасибо за ваш труд и удачи.
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Спасибо! И вам успехов)
@mortalospf6623
@mortalospf6623 2 жыл бұрын
Спасибо, я столько всего пересмотрел , помог именно ты , лайк подписка автоматом!
@omniclipse4844
@omniclipse4844 3 жыл бұрын
Спасибо вам огромное за гайды! Только благодаря вашим видео, у меня всё отлично работает
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Это радует, надеюсь, что так и дальше будет) И спасибо за подписку!)
@sensei7059
@sensei7059 2 жыл бұрын
Ты очень хорошо объясняешь. Знаю, что таких роликов в инете навалом, но хотелось бы увидеть тутор по стрельбе именно от тебя:3
@lidjest9888
@lidjest9888 3 жыл бұрын
Спасибо. Да хоть на пол часа видео. Для новичков самое то
@zertus
@zertus Жыл бұрын
спасибо большое, у всех других баги или ошибки на новых версиях юнити, большая часть таких туторщиков сами непонимают как писать код а тут всё просто, быстро, понятно и если не правильно понял можно скачать исходный код из видео и посмотреть свои ошибки
@NoobGameDev
@NoobGameDev Жыл бұрын
Не знаю, как другие, но я уже полгода планирую перезаписать первые 3-4 видео, потому что и сам понял чего раньше не понимал и в движке кое-что поменялось - а значит надо обновлять инфу)
@WorldofHipHopRap
@WorldofHipHopRap 3 жыл бұрын
Спасибо большое! У меня всё получилось! Круто! :)
@THEMERUSH
@THEMERUSH 3 жыл бұрын
Бро ты волшебник , спасибо тебе очень помог , нормально обьесняешь , ты просто чудо)))
@NoobGameDev
@NoobGameDev 3 жыл бұрын
:)) Спасибо! Рад, что видео помогло)
@THEMERUSH
@THEMERUSH 3 жыл бұрын
@@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 3 жыл бұрын
​@@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-м уроке эта тема затронута)
@user-es7pp2sy9s
@user-es7pp2sy9s Жыл бұрын
ваще кайф, очень понятно и просто,
@Madl_Madl
@Madl_Madl 3 жыл бұрын
Знаете что. Я подпишусь на этот канал. Ибо тут все понятно и доходчиво объясняет автор. Спасибо большое! Буду дальше смотреть видео
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Спасибо, и добро пожаловать!)
@Madl_Madl
@Madl_Madl 3 жыл бұрын
@@NoobGameDev У меня вопрос. На 4-ой минуте у тебя там компонент idle. У меня такого нету вообще, как сделать?
@NoobGameDev
@NoobGameDev 3 жыл бұрын
@@Madl_Madl Упущение данного видео... Сорри! При создании первой анимации, нужно перейти во вкладку Animation и нажать на большую (серую с белыми буквами) кнопку Create, которая будет по центру окна вкладки (вместо шкалы).
@Madl_Madl
@Madl_Madl 3 жыл бұрын
@@NoobGameDev Спасибо большое, по пробую я
@nazar1073
@nazar1073 3 жыл бұрын
Шедевр, особенно "дЕв", это прекрасно ( ͡◉ ͜ ʖ ͡◉)
@NoobGameDev
@NoobGameDev 3 жыл бұрын
😂 Сорри, если кому-то режет слух) Просто будем считать, что я амбасадор русификации английского в России)) И борец за свободу ударений в словах)
@sodden_steam
@sodden_steam 3 жыл бұрын
Всё работает отлично. Будьте внимательнее.
@sinis7x
@sinis7x 2 жыл бұрын
Сейчас смотрю твои уроки и понимаю, что большую часть кодов в скрипте я знал ещё со времён информатики в школе
@NoobGameDev
@NoobGameDev 2 жыл бұрын
Так и есть)
@feroindiary346
@feroindiary346 Жыл бұрын
Везёт, у кого-то действительно полезная информатика была...
@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; } }
@ycea357
@ycea357 8 ай бұрын
спасибо. Очень помогаешь освоиться в юнити
@NoobGameDev
@NoobGameDev 8 ай бұрын
Правда эти видео уже можно считать устаревшими (есть практики получше, попонятнее, поудобнее) - нужно выкатить обновление, но всё никак не доберусь до них 😅Но когда-нибудь уж точно)
@ycea357
@ycea357 8 ай бұрын
@@NoobGameDev да, я заметил некоторые проблемы. Пока только в переходах анимации, но ничего. Самое главное такие видео хотя бы задают направление. А от него уже можно двигатся
@Zurruz
@Zurruz 3 жыл бұрын
До этого видео не знал про рефлект))) Пойду испробую новый метод). Кстати, советую в конце видео говорить про свой дискорд. Если бы не посмотрел "обращение к подписчикам" так бы о нем и не узнал, а задумка очень хорошая!
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Используй лучше вот этот код в 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 Спасибо! все прекрасно работает)
@revoll1721
@revoll1721 Жыл бұрын
Привет очень классные видео учусь по ним спасибо большое. Как вы удаляете пустой слайд в sprite edition?
@beforean727
@beforean727 2 жыл бұрын
привет а где можно взять эти спрайты перса и земли? просто что бы по примеру делал
@user-bo8qd9ne1g
@user-bo8qd9ne1g 6 ай бұрын
Спасибо🙂
@user-bl4te2kg8v
@user-bl4te2kg8v Жыл бұрын
Уроки просто супер. Спасибо за труд. Такой вопрос: как сделать, чтобы персонаж пятился назад
@idinaxyiadmin
@idinaxyiadmin Жыл бұрын
пропустить всё с 8:00
@yevhenstepanov2399
@yevhenstepanov2399 7 ай бұрын
Спасибо за подробные уроки, они очень помогают! Я искал такое решение для разворота персонажа, чтобы вместе с ним поворачивались и его дочерние объекты, смотрел еще одно ваше видео про карабканья по стене и не мог понять как у вас разворачивается коллайдер wallChec вслед за персонажем, я у своего персонаже не мог этого добиться и вынужден был использовать два wallChec, для левой и правой стороны, что было не очень удобно, потому что когда персонаж спрыгивая со стены спиной все равно начинал на нее карабкаться ). Но теперь у меня другая проблема, камера сцены, является дочерним объектом персонажа, для того чтобы следовать за ним, и теперь при помощи этого метода разворота, она тоже разворачивается и моя сцена пропадает из вида камеры. У вас камера не двигается вслед за персонажем? Как бы вы решили эту проблему?
@yevhenstepanov2399
@yevhenstepanov2399 7 ай бұрын
Уже разобрался, уже все работает )
@ilko19
@ilko19 3 жыл бұрын
Шедевр
@ilko19
@ilko19 3 жыл бұрын
спасибо что лайкнул
@ilko19
@ilko19 3 жыл бұрын
ты мне очень помог
@user-mg7xy8vc3p
@user-mg7xy8vc3p 3 жыл бұрын
спасибо!
@user-lq8kq2mu5w
@user-lq8kq2mu5w Жыл бұрын
Привет спасибо за твои ролики. Очень помогают. Делаю свою файтинг игру в стиле битемапа. Хотел бы узнать как сделать для героя атаку, блок, комбо и способности. Если умеешь пожалуйста сними видео или ответь хотя бы. Ещё хотел бы узнать как сделать анимацию поворота слева на право и справа на лево персонажа
@cockandballstorcher
@cockandballstorcher 2 жыл бұрын
Спасибо
@nounOffic
@nounOffic 3 жыл бұрын
Простой разворот персонажа void Flip() { facingRight = !facingRight; transform.Rotate(0, 180, 0); }
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Да, спасибо! Я просто тот ещё дурень и поэтому забыл за этот вариант, когда видео делал... )) Когда буду перезаписывать первые 3-4 урока - обязательно его включу к остальным!
@vicenill_be_like
@vicenill_be_like Жыл бұрын
Вопрос. На способе reflect надо было писать faceRight или facingRight? Просто Unity выдаёт ошибку.
@NoobGameDev
@NoobGameDev Жыл бұрын
Вы можете назвать её как угодно, главное, чтобы потом использовали это же имя. Делайте так, чтобы не было ошибок, сравните с кодом в описании.
@takeTheRedPill189
@takeTheRedPill189 10 ай бұрын
Спасибооо у меня почему-то анимация проигрывалась с большой задержкой а оказалось что у меня была галочка на has Exit time
@user-bb5xh1en5c
@user-bb5xh1en5c 3 жыл бұрын
@Noob Game Dev, Спасибо за понятный урок. Некоторые любят растекаться мыслью по древу, у тебя этого не увидел) Для тех у кого вылезает ошибка (AnimationEvent has no function name specified!) пкм по белому штриху, в аниматоре, удалить, удалять пока полностью не избавимся от всех штрихов. Видео с подробностями. kzfaq.info/get/bejne/qN2epKt2yZebZKs.html
@sailaostudio3133
@sailaostudio3133 Жыл бұрын
🥰😍🤩
@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 Жыл бұрын
Почитав ваши коментарии я понял, что при использовании titleMapCollider2D возможно появление остановок придвижении (это именно у boxcollider2D) и небольшие подпрыгивания (при использовании capsule Collider2D)
@NoobGameDev
@NoobGameDev Жыл бұрын
@@makestudio1505 По поводу подпрыгиваний, тут мне кажется, что дело либо в самой анимации ходьбы (особенно если происходят изменения коллайдера), либо из-за стыков тайлов. Обратите внимание, если перс подпрыгивает именно на стыке, то посмотрите в сторону Composite коллайдер (он объединяет тайлы одного тайлмапа в один, тем самым убирая стыки). А по поводу камеры и дёрганий - это бы конечно посмотреть, как именно это выглядит. Обратить внимание на трансформ - изменяются ли при этом какие-то параметры. Это может быть связано, как с отражением и флипами спрайтов, так и с настройками синемашин... Звучит очень знакомо и как будто бы было такое... Но, к сожалению, сходу не вспомню в чём проблема. Если есть возможность, то можете присоединиться к нам в Дискорд (ссылка есть в шапке канала) - может, там у кого из ребят похожая проблема была или я вдруг вспомню с чем это связано)
@makestudio1505
@makestudio1505 Жыл бұрын
@@NoobGameDev спасибо большое
@KIMovchanin
@KIMovchanin Жыл бұрын
Здравствуйте. Можете объяснить зачем мы после transform.localScale написали "*=", а не просто ровно? Там идёт умножение на -1 и поэтому получается противоположное значение?
@NoobGameDev
@NoobGameDev Жыл бұрын
Всё верно) Чтобы от лишних действий избавиться, если просто присваивать, т. е. просто = , то перс всегда влево будет смотреть. Работает по такому же принципу, как и +=, и -=. A *= B, равносильно A = A * B.
@KIMovchanin
@KIMovchanin Жыл бұрын
@@NoobGameDev спасибо!
@svluca
@svluca Жыл бұрын
Не нашел ответа в коментариях, поэтому задам сам этот вопрос. У меня при анимации Idle персонаж смотрит вправо, анимации передвижения тоже работают коректно (в том числе и при движении справа влево все зеркалится как надо). Вот только после перемещения влево и остановки анимация переходит в Idle и персонаж снова смотрит вправо (визуально это выглядит резко и рывком). Можно ли как то в скрипте прописать условие чтобы после движения влево галочка FlipX не снималась, и персонаж оставался смотреть в ту же сторону куда перед этим двигался?
@NoobGameDev
@NoobGameDev Жыл бұрын
Я так понял, что Вы решили через Flip сделать и выбрали вариант записи в одну строку... Реализуйте тот вариант метода Flip, который был до 8:40 (т.е. тот который в несколько строк) - он не будет срабатывать, когда от игрока нет ввода (т.е. когда moveVector.x == 0)
@svluca
@svluca Жыл бұрын
@@NoobGameDev спасибо, уже попробовал но через Reflect. Все заработало как надо, действительно как и сказанно в видео проблем с ним должно встретится меньше :) Спасибо!
@pulsar1934
@pulsar1934 3 жыл бұрын
Только недавно начал изучать Unity, и возник такой вопрос вот есть у меня анимация покоя, анимация бега и анимация прыжка, всё делал по вашим урокам. Но как быть если рисовачь нормально прокачен, а в юнити нуб? Дело в том, что мне надо сделать переходные анимации моему герою. Например анимация от бега до покоя, скажем между ними анимация остановки героя или от прыжка, до покоя и бега и между ними анимация приземления после того как проверилась земля? Разными способами пробовал но постоянно отрабатывает всё очень некорректно.
@pulsar1934
@pulsar1934 3 жыл бұрын
С мучением и методом тыка добился корректной работы моей идеи, не знаю на сколько это правильно, возможно у кого-то будет более интересное решение. От прыжка к анимации приземления я оставил настройки такие как были от прыжка и до покоя, а вот от анимации приземления до покоя и бега Has Exit time ставим галочку, Exit time=1, fixet duration ставим галочку, transition duration=0, transition ofset=0, interaption source=Current state, Order interaption ставим галочку. loop time убираем галочку. Такое можно применять от бега до покоя, например момент остановки. С такими мелочами игра будет выглядеть более богаче и насыщеннее.
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Всё Вы правильно делаете (и, спасибо, что делитесь своими идеями!), я давал такие настройки, для самого базового знакомства с этими монстрами, понятно, что если добавлять переходные анимации, то всё выглядит круто, но в начале работы с Unity очень тяжело настроить такие мелочи. К тому же, как Вы понимаете, я и сам далеко не ас в Unity (из нескольких примеров делаю свой, пытаюсь разобраться как всё работает, делаю урок, чтобы поделиться и ещё глубже понять реализацию). Кстати, скоро, в 3-ем отчётном видео будет в конце пример подобной механики.
@NoobGameDev
@NoobGameDev 3 жыл бұрын
А как себя ведёт перс, когда вы приземляетесь и резко начинаете идти, при данных настройках? По идее, если не отключать управление до конца проигрывания анимации приземления, то перс уже будет перемещаться, а проигрываться будет анимация приземления... (особенно, если она довольно продолжительная)
@pulsar1934
@pulsar1934 3 жыл бұрын
@@NoobGameDev согласен, по хорошему нужно отключать управление, но анимация крайне не продолжительная, поэтому незаметно.
@oldborodach
@oldborodach 2 жыл бұрын
Красавчик, очень информативно хотелось еще от тебя уч.пособий! Будут? Главное что показываешь варианты и объясняешь ща и против 🤝 А вот фразочка (Рисовач) меня повеселила! Вот этого точно не хватает😟
@NoobGameDev
@NoobGameDev 2 жыл бұрын
Спасибо!) Будут) Куда же им деваться!? Я сейчас в геймджеме участвую до конца месяца. Так что материала много имеется, как познавательного, так и развлекательного. Джем закончится, снег выпадет и я засяду за видосы) Надеюсь))
@oldborodach
@oldborodach 2 жыл бұрын
@@NoobGameDev оке ждемс у меня 14 числа начинается обучение по Unity 4 месяца и вот твой туториал прохожу, но подставляю синего челика с Assets Unity уроки 2d платформер кстати посмотри этот ассет какая у них механика в игре очень прикольно челик дохнет и появляется ну и т.д Ну тогда ждемс!
@NoobGameDev
@NoobGameDev 2 жыл бұрын
@@oldborodach А что за обучение? Чьи курсы?)
@oldborodach
@oldborodach 2 жыл бұрын
@@NoobGameDev Eccentric Games тап паренёк Илья очень интересные вещи показывает купил еще месяц или более назад за 40т.р Я как бы на сайте и Unity прохожу и у Вас тут на Тюбе, но захотел как говорится структурированные уроки от и до. Я как бы после его курса (4 месяца) пойду далее учится и учится с кем пока не знаю ,но мысли есть. У него на Тюбе есть канал зайди глянь !
@NoobGameDev
@NoobGameDev 2 жыл бұрын
@@oldborodach Я знаю этот канал) Там и правда парень довольно умный и говорят курсы неплохие. Правда я прям буквально на днях узнал, что у него курсы есть...
@gutji6669
@gutji6669 3 жыл бұрын
Привет вот вопрос как пофиксить чтобы в анимации walk синяя линия не останавливалась в конце, а начинала с начала идти. Поросто она у меня до конца доходит и все.
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Привет) Если я правильно понял, то нужно включить для анимации зацикливание. Для этого в Аниматоре дважды нужно щёлкнуть по нужному блоку анимации (по walk) и после этого в Инспекторе (обычно справа) появится поле (а точнее чек-бокс) "Loop" - нужно в нём поставить галочку.
@user-nh6ul7ct5m
@user-nh6ul7ct5m 3 жыл бұрын
Еще один способ разворота анимации он просто удобен но в нем наверно тоже есть недостатки (я пишу ротацию но можно и скеел ) 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 2 ай бұрын
Спасибо огромное!
@RusticFun
@RusticFun 2 жыл бұрын
Приветствую! Спасибо за видео. Простой вопрос, почему после движения влево спрайт персонажа обратно разворачивается вправо в исходное положение, в инспекторе видно что Flip оси Х при нажатии влево включается а потом выключается. использовал одну строчку кода через функцию flip.
@NoobGameDev
@NoobGameDev 2 жыл бұрын
Нужно код смотреть, скорей всего, где-то в условиях срабатывания ошибка и поэтому он не остаётся смотреть в ту сторону, в которую шёл. Так же, возможно, что если использовалась запись в Аниматоре, то Flip был записан и там, что и вызывает такое поведение...
@user-cm2db7gm2i
@user-cm2db7gm2i 2 жыл бұрын
@@NoobGameDev у меня немного другой вопрос.У меня все так как в видео вроде,но когда я хочу при беге повернуться в другую сторону,то сначала начинается анимация покоя и лишь позже анимация бега.Незнаю важно это или нет,но заметил что x имеет всего 2 значения,это 0 и 1,хотя у вас у него значений больше.
@NoobGameDev
@NoobGameDev 2 жыл бұрын
@@user-cm2db7gm2i Смотрите, если у Вас moveX в Аниматоре имеет только 0 и 1, то это даже лучше (вещественные значения могут приводить в движение анимацию покоя - оно вам не нужно). Так происходит из-за использования метода GetAxisRaw вместо GetAxis. Поэтому советую оставить всё как есть, но вот в Аниматоре попробовать немного изменить настройки переходов: от Покоя к Ходьбе - HasExitTime (откл.), в условии moveX -> Greater (больше) -> 0 от Ходьбы к Покою - HasExitTime (откл.), в условии moveX -> Less (меньше)-> 1 Должно починиться)
@user-cm2db7gm2i
@user-cm2db7gm2i 2 жыл бұрын
@@NoobGameDev не выходит,все равно при повороте на секунду moveX становится 0-из за чего проигрывается анимация покоя
@user-cm2db7gm2i
@user-cm2db7gm2i 2 жыл бұрын
@@NoobGameDev я пытаюсь что то поменять,но суть не в аниматоре.Суть именно в том,что почему то moveX становится 0 даже когда я не прекращаю движение.
@MiDLaYn
@MiDLaYn Жыл бұрын
Привет, помоги пожалуйста! Вылазеет ошибка: Mathf и moveVector не существует, что делать?
@jerix2554
@jerix2554 Жыл бұрын
Проверь ты правильно написал " public Animator anim; " А то у меня было, что я авто заполнением написал " public Animation anim; "
@user-gz4sm8zy9y
@user-gz4sm8zy9y 3 жыл бұрын
Здравствуйте все прекрасно работает, но у меня появился еще 1 вопрос когда я привязываю камеру к персонажу она поворачивается вместе с ним как это пофиксить ?
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Я так понимаю, что это мы с Вами в ВК общались?) В любом случае, я отвечу, чтобы этот коммент, возможно, избавил кого-то от подобного вопроса. Если делать простую (грубую, без сглаживаний) привязку камеры к Персонажу (сделать его дочерним, переместив в Иерархии объект "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; } } Если же это делать через скрипт "слежения" ("вешается" на камеру) за Персонажем, то необходимо принимать решения в зависимости от конкретного скрипта.
@sundukin
@sundukin Жыл бұрын
Почему когда я добавляю анимацию, персонаж перестаёт двигаться, а анимация работает
@DOOMEnter
@DOOMEnter Жыл бұрын
привет, если ты ответишь то, ответь все же на вопрос пишет что: не содержит определения для
@DOOMEnter
@DOOMEnter Жыл бұрын
вернее
@DOOMEnter
@DOOMEnter Жыл бұрын
ой бро извини я заметил свою ошибку. Снимай побольше такого типа видео очень полезно
@dyzzicraft4326
@dyzzicraft4326 2 жыл бұрын
Здраствуйте, у меня анимация ходьбы в двух разных спрайтах, я вроде все делаю как сказано но показывает только один спрайт в самой анимаций, помогите пожалуйста.
@NoobGameDev
@NoobGameDev 2 жыл бұрын
Приветствую) Единственное, что могу пока предположить - это из-за того, что в анимации всего два спрайта, то один из них расположен в самом начале, а второй в самом конце... А это значит, что с самого начала до самого последнего кадра будет воспроизводиться первый спрайт, а в конце анимации второй спрайт сразу переключается на первый (так как анимация заканчивается и начинается снова). Решение (возможное): сделать анимацию из 3-х кадров. Первый спрайт поставить в начало и в конец анимации, а второй спрайт в середину. Если же это не исправит ситуацию, то нужно смотреть, что у Вас и как сделано, а для этого советую обратиться в Дискорд ( discord.gg/AHpWFBAJJr ), там либо я либо другие участники, постараемся Вам помочь)
@hart-vu5cr
@hart-vu5cr Жыл бұрын
Скажи пожалуйста как сделать анимацию для атаки персонажа точнее что нужно вписать в скрипте что бы нажимаю какую то кнопку производилась анимация атаки
@NoobGameDev
@NoobGameDev Жыл бұрын
Вам в любом случае нужна ссылка на Animator. В моих примерах это anim. И вы можете, либо использовать переменные в Аниматоре (в условиях переходов) и тогда изменять эти переменные примерно так (пример для float): anim.SetFloat('имяпеременной', значение); либо можете прерывать текущую анимацию и запускать какую вам нужно: anim.Play("имяанимации"); Только следите за регистром букв, потому что "moveX" и "movex" будут считаться разными переменными (то же самое и с именами анимаций)
@ghoulzxc2410
@ghoulzxc2410 3 жыл бұрын
Здраствуйте, у меня следующая проблема. При написании строчки кода, anim.SetFloat() , выдает ошибку, что анимация не содержит в себе метод SetFloat(). В чем же проблема? Спасибо заранее. Ошибка : "Animation" не содержит определения "SetFloat", и не удалось найти доступный метод расширения "SetFloat", принимающий тип "Animation" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку).
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Приветствую) На сколько я могу судить из описания, то Вы ошиблись в начале кода, когда создавали ссылку на Animator. Вместо: public Animator anim; Вы, скорей всего, написали: public Animation anim; Animation отвечает за саму анимацию (раскадровку, ключевые кадры и пр.) А Animator - за воспроизведение и переключение анимаций (вот он нам нужен) Вам Animation, скорей всего Visual Studio авто-подстановкой предложила и Вы не то выбрали - должен быть Animator. Перепроверьте, возможно, я ошибаюсь в своих предположениях...
@ghoulzxc2410
@ghoulzxc2410 3 жыл бұрын
@@NoobGameDev Здравствуйте ещё раз. Спасибо вам огромное, извините что потревожил. Я просто учусь этому искусству и старался писать код в большей мере самостоятельно ( перед анимацией персонажа я делал анимацию монеток в игре , где использовал Animation. Потому наверное, когда я смотрел видео, не обратил внимание на ваши строчки с Animator).
@user-bf6lm4ri3d
@user-bf6lm4ri3d 2 жыл бұрын
@@NoobGameDev Спасибо вам большое, вы самый активный ютубер по юнити которого я знаю!!
@NoobGameDev
@NoobGameDev 2 жыл бұрын
@@user-bf6lm4ri3d Спасибо) Аж, немного стыдно выпускать в среднем одно видео в месяц (так получается...) после таких приятных слов)
@dizenerdkurohi7238
@dizenerdkurohi7238 2 жыл бұрын
Здравствуйте... Такая проблема сделал всё как в видео, но значение "moveX" просто не меняется... Подскажите в чём может быть проблема?.
@NoobGameDev
@NoobGameDev 2 жыл бұрын
Здравствуйте! Проверьте наличие самой переменной в аниматоре, а так же раскладку в её имени (как в самом Аниматоре) так и при изменении её из кода, т.е. чтобы не было такого, что в имени "moveX" будет кириллическая "о", "е", или "Х". Т.е. перепишите название переменной в Аниматоре, скопируйте и вставьте туда где происходит изменение (anim.SetFloat("moveX") = ...) Так же проверьте, чтобы и тип переменной (при её создании) и метод для изменения значения были соответствующими. Т.е. если Вы создали float (вещественную) переменную, то и изменять её нужно при помощи anim.SetFloat("moveX"), а если int (целочисленную), то anim.SetInteger("moveX")
@radalert5533
@radalert5533 3 жыл бұрын
Добрый вечер, это опять я. Наверное придётся теперь писать под каждым видео, хах. В общем, где искать иконку Animator? Добавить я её не могу, как Animation.
@NoobGameDev
@NoobGameDev 3 жыл бұрын
:)) Всё ок) Если её нигде не видно, то можно её включить через вкладку Window (Там где File? Edit, Assets...) И найти там Animator, у Вас сразу откроется и подсветится данная вкладка. Сразу тоже самое можете сделать и с вкладкой Animation.
@ImkuliN
@ImkuliN 3 жыл бұрын
я не понимаю именно когда прописываю код флип на поворот он не чувствует управления ну типо вообще не управляется и со вторым способом в других видосах видел не понимал почему не ходит и щас тоже самое зато я понял что он не ходит изза этого кода а как исправить? прошу ответь(сори что без запятых)
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Ответить то не проблема, только боюсь, что я не совсем понял, что и почему у Вас происходит... Данные функции "Flip" и "Reflect" только лишь отражают картинку по горизонтали. За движение персонажа (влево/вправо) отвечает функция "Walk" (в моём примере). Т.е., если персонаж у Вас ходил до добавления методов отражения, то должен перемещаться и после... Скопируйте, скиньте код всего своего скрипта в комментарии (думаю он должен быть ещё не очень большой), чтобы не гадать, чтобы прям наверняка)
@koshatka000
@koshatka000 3 жыл бұрын
простите у меня проблема, там где void walk значение ads пишет якобы «Mathf не содержит определения для ads” что делать?(
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Всё нормально - опечатались: не "ads", а "Abs" (не "d", а "b" и с большой буквы). Если всё настроено правильно, то при вводе начала метода, VS должна предлагать Вам варианты команд (это очень помогает делать меньше ошибок), поэтому если Вам при вводе имён методов не предлагают вариантов и/или если нет подсветки кода, то ещё советую посмотреть это видео: kzfaq.info/get/bejne/rZ56YNaju5_Zqqs.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 жыл бұрын
Да, да) Вы плюс/минус правильно мыслите) Я так понимаю, что Вы просто перетащили камеру на перса? Это не самый лучший вариант, к тому же накладывает некоторые ограничения. Но она должна адекватно заработать, если изменить содержимое функции для отражения спрайтов на такое: 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 жыл бұрын
​@@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понял, спасибо
@feroindiary346
@feroindiary346 Жыл бұрын
Комментарии под видео порой полезнее его самого
@NoobGameDev
@NoobGameDev Жыл бұрын
😂
@dodo3884
@dodo3884 3 жыл бұрын
Здравствуйте, есть проблема-все делал с нуля по вашим урокам, но почему то при ходьбе влево персонаж смотрит направо, и наоборот. Pulsar 13 что-то писал про это снизу в коментариях, но хотелось бы получить помощь от самого автора:)
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Здравствуйте!) Скорей всего у Вас включен FlipX. Выберите персонажа, и в Инспекторе снимите галочку с чек-бокса FlipX. Так же нужно знать какую ф-ю вы используете, с изменением FlipX или LocalScale.x? И как у Вас нарисованы спрайты? По умолчанию они должны быть "смотрящими" вправо. А Pulsar13 говорил за то, что при использовании ф-и с изменением FlipX, персонаж при нажатой клавише влево смотрел влево, но когда клавиша отпускалась, то перс разворачивался вправо)
@dodo3884
@dodo3884 3 жыл бұрын
@@NoobGameDev здраствуйтеcпаааасибо помогли
@OvsankaX
@OvsankaX Жыл бұрын
Привет, я начинаю ходить и через 0.2сек воспроизводится анимация ходьбы (то есть задержка) подскажите как это исправить?
@NoobGameDev
@NoobGameDev Жыл бұрын
У старой системы ввода есть два метода: GetAxis и GetAxisRaw. Первый возвращает вещественные числа (0.1, 0.23 и т.д.), а второй только 0 или 1/-1. Когда Вы нажимаете кнопки A, D или стрелки "влево/вправо", то значения Горизонтальной оси ввода меняются хоть и быстро, но плавно (это в настройках при необходимости меняется). В вашем случае достаточно будет заменить GetAxis на GetAxisRaw в строке, похожей на эту: Input.GetAxis("Horizontal") чтобы стало так: Input.GetAxisRaw("Horizontal")
@user-sn5nx7eq3o
@user-sn5nx7eq3o 3 жыл бұрын
6:19 подскажите что за проблема, когда нажимаю на + ничего не происходит , он просто серый
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Честно говоря, не сталкивался с таким (насколько я помню), но попробуйте следующее: если игра запущена, то остановите её и выделите в Иерархии объект персонажа, а уже потом попробуйте добавить переменную.
@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... Все получилась. Еще раз спасибо за быстрый ответ. Это правда сейчас редкость.
@Gnek69
@Gnek69 Жыл бұрын
вопрос: что делать если анимация идёт только в блоке idle (даже когда я двигаюсь) красных ошибок нет, moveX на 0.
@NoobGameDev
@NoobGameDev Жыл бұрын
А может есть жёлтые предупреждения? Обратите внимание, на имена и типа переменных в Аниматоре. Если Вы из кода меняете float переменную (anim.SetFloat("moveX", 2f)), а в Аниматоре она у Вас int, то работать не будет. Так же важно, чтобы совпадали регистры букв, т.е. если в Аниматоре переменная имеет имя "moveX", а в коде Вы меняете "movex", то тоже работать не будет.
@Gnek69
@Gnek69 Жыл бұрын
@@NoobGameDev Спасибо за ответ, всё работает отлично, благодарю за такой хороший ролик!
@vladyslavyatsenko3685
@vladyslavyatsenko3685 3 жыл бұрын
Помоги пожалуйста, первый раз как я сделал анимацию она полностью работала, я вышел из юнити и сохранил все. Потом я захожу и у меня ничего не сохранилось и пишет "the animator controller (player) you have used is not valid. animations will not play". Что делать?
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Похоже, что не выбран (или слетел каким-то образом) контроллер Аниматора. Попробуйте выбрать объект персонажа в Иерархии и справа, в окне Инспектора найдите блок Animator. В этом блоке в первом поле "Controller" посмотрите, что выбрано... Если там "None", то нажмите на кружок с точкой чуть правее поля, откроется окно... выберете в нём то, что там будет. Если в открывшемся окне ничего кроме None, то вы удалили контроллер аниматора (в проводнике Unity, который выглядит, как два серых квадрата на фоне бирюзового). Тогда можете в проводнике Unity создать новый контроллер (правой кнопкой по пустому мету -> Create -> Animator Controller) и переместить его в поле Controller блока Animator в Инспекторе. Ну, или, если Вас запутало данное объяснение, то делайте заново с момента добавления анимации.
@akuchenel5823
@akuchenel5823 Жыл бұрын
При написании 2 вар кода персонаж идет только направо, даже нажимаю налево все равно, исполняет лунную походку. Помоги пожалуйста!!!
@NoobGameDev
@NoobGameDev Жыл бұрын
Если проблема ещё актуальна, то проверьте не меняется ли Flip, т.е. не используете ли Вы оба способа сразу, в результате чего один способ мешает другому.
@Be11che
@Be11che Жыл бұрын
Помогите пожалуйста, персонаж стоит с бензопилой (нарисован так) и когда он поворачивается - то выглядит будто центр не там где персонаж, а там где бензопила.
@NoobGameDev
@NoobGameDev Жыл бұрын
Вам нужно сместить Pivot спрайта. Это, так скажем точка, которую Unity будет считать за центр изображения. 1. Выделите изображение в окне Project 2. В Инспекторе нажмите на кнопку Sprite Editor 3. Отроется редактор спрайтов (обычно им нарезают атласы на отдельные изображения). Поэтому если изображений несколько, то кликните по нужному. Если же одно, то вы должны увидеть синий бублик (скорей всего, в центре спрайта). 4. Отпозиционируйте этот кружок так как вам нужно. Обычно его ставят либо в районе живота персонажа, либо в ногах. Более точно можете выставить положение, если выберете Pivot - Custom (в небольшом меню справа внизу) и изменив X так, чтобы пивот переместился по центру перса (думаю, что в Вашем случае будет достаточно изменить только X, чтобы не переделывать перса) 5. После этого нажмите кнопку Apply в правом верхнем углу окна Sprite Renderer'а, чтобы применить изменения. Лучше бы Вам это скриншотами показать, поэтому, если не поймёте, то посетите наш Дискорд сервер (ссылка есть в шапке канала) и задайте свой вопрос в соответствующем канале)
@redztoner3855
@redztoner3855 Жыл бұрын
Прошу помощи, делал все как на видео, но при движение параметр moveX остается нулем, кроме того почему отображается только целое число: 0, а не 0.0
@NoobGameDev
@NoobGameDev Жыл бұрын
Возможно, Вы в Аниматоре создали int переменную - попробуйте её удалить и заново создать float. Так же в коде обратите внимание, что метод у аниматора должен быть SetFloat для float переменных и SetInteger для переменных типа int.
@Igroslav_1
@Igroslav_1 4 ай бұрын
@@NoobGameDev А у меня и тот и тот метод не работает
@trailzby
@trailzby Жыл бұрын
привет тут такая проблема что я сделал все как на видео, даже код позоимствовал) но анимация не работает, только в кампонентах у персонажа в кампоненте анимация стоит белый значок сообщение и внутри возклецательный знак и написанно что то про кревые, помоги пожайлуйста)
@rodislavzloy
@rodislavzloy 6 ай бұрын
Когда я включаю аниматор у персонажа, персонаж перестаёт двигаться, а как выключаю, сразу начинает, как решить?((((
@antoha1834
@antoha1834 5 ай бұрын
Скорее всего у тебя в основной анимации есть изменение позиции самого игрока, а не его части
@mimixvaid8330
@mimixvaid8330 3 жыл бұрын
Здравствуйте подскажите когда создаю add tab animation то не получается сделать то что показанно на уроке все пусто
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Здравствуйте) Да, есть такое упущение в ролике. У Вас, скорей всего, вместо шкалы анимации (когда переходите в окно Animation) должна быть по центру серая кнопка с надписью "Create" вот для первой анимации Вам, как раз нужна она. Если я не ошибаюсь и если правильно понял Вашу проблему.
@mimixvaid8330
@mimixvaid8330 3 жыл бұрын
Спаибо большое
@mimixvaid8330
@mimixvaid8330 3 жыл бұрын
Сделал анимацию как сказали все заработало спасибо!
@user-yu5hb4zu6q
@user-yu5hb4zu6q 3 жыл бұрын
Почему когда я ствлю знак умножить в рефлекте мне выдаёт ошибку вот код 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.
@user-yu5hb4zu6q
@user-yu5hb4zu6q 3 жыл бұрын
@@NoobGameDev Большое спасибо мне помог первый случай
@WallDiesel
@WallDiesel 2 жыл бұрын
@@NoobGameDev привет. У меня юнити 5.6.4.p2 Это типа уже допотопная? Такая же ошибка.
@NoobGameDev
@NoobGameDev 2 жыл бұрын
@@WallDiesel Привет) Ну, совет будет таким же) А версия, да - старенькая уже. Советую, если не свежие, то попробовать хотя бы до 2019 LTS обновиться (там уже большинство полезных штук имеется, типа поддержки тайлмапов, событийной системы ввода и пр.)
@WallDiesel
@WallDiesel 2 жыл бұрын
@@NoobGameDev примного благодарен. Я первый способ сразу применил - всё работает. Буду обновляться. И спасибо за ролики. Эти уроки просто нечто. Абсолютно не зная С, при наличии фантазии уже можно что-то сделать.
@user-is1oc5gw8c
@user-is1oc5gw8c 2 жыл бұрын
Добрый день проблема написал все прям как в видео все ошибки убрал но перс не ходит а только анимация в правый бок и все .. Помогите пожалуйста
@NoobGameDev
@NoobGameDev 2 жыл бұрын
Здравствуйте! Проблема ещё актуальна? Если да, то скажите: вы код переписывали или копировали из описания? Если переписывали, то скиньте код - посмотрю. Так же проблема может быть связана с FlipX... Возможно, пробовали и забыли убрать при записи анимации.
@ChusParen
@ChusParen Жыл бұрын
@@NoobGameDev на данный момент такая проблема, переписывал код, персонаж не двигается, но анимация есть :(
@user-jb2zo1cc6y
@user-jb2zo1cc6y 2 жыл бұрын
чёт у меня немного поздно включает анимацию при перемещении, будто первая стоит та же, которая в положении покоя.
@NoobGameDev
@NoobGameDev 2 жыл бұрын
А какой используется метод ввода в скрипте управления персонажем? Если Input.GetAxis("Horizontal")... и в условиях перехода между анимациями moveX > 0.1, к примеру, то такое вполне возможно, потому что при использовании данного метода вектор будет расти от 0 к 1 постепенно. Поэтому попробуйте использовать Input.GetAxisRaw("Horizontal")... и тоже самое с вертикальной осью. Возможно, это решит проблему. Если нет, то есть вероятность, что задано слишком "большое" наложение анимаций друг на друга в настройках перехода.
@dilaxidgames8757
@dilaxidgames8757 2 жыл бұрын
что делать если в коде после написания характеристики moveX оно у меня пишет что её не существует
@NoobGameDev
@NoobGameDev 2 жыл бұрын
Я так понимаю, речь о жёлтом предупреждении в консоли? В таком случае нужно проверить есть ли в Аниматоре переменная с точно таким же названием (moveX) Именно с заглавной X. Обычно из-за этого. Если нет, то создать её.
@iehtldan3669
@iehtldan3669 2 ай бұрын
можете помочь те кто разбираются? у меня на игроке висит камера(дочерний объект) и соответственно при повороте она тоже разворачивается. как это изменить?
@Player_MV
@Player_MV 2 ай бұрын
Найди в Ютубе гайд на динамичную камеру, пускай камера будет сама по себе а не дочерняя, там качаешь плагин на синемашин, пару скриптов и твоя камера плавно следует за игроком
@iehtldan3669
@iehtldan3669 2 ай бұрын
@@Player_MV спасибо за совет! по итогу поставила синемашин и все заработало !
@staffi_offical879
@staffi_offical879 Жыл бұрын
Помоги я написал Reflect всё как у тебя, ошибок нет но гейм окно не запускается,
@NoobGameDev
@NoobGameDev Жыл бұрын
Т.е. нажимаешь иконку запуска и ничего не происходит? Никто нигде ничего не пишет, а просто не работает? У тебя в редакторе есть вообще окно Game или закрыл случайно? В любом случае в верхнем меню Unity есть пункт Window, выбери его, потом Panels и выбери Game и Console. Если после этого игра не запустится, то напиши всё, что появится в окне Console при попытке запуска.
@CuFiiix
@CuFiiix Жыл бұрын
у меня на последней скобке } ругается почему?
@info5530
@info5530 3 жыл бұрын
79 лайков я:тык 80
@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 возможно проблемы правда с анимацией были. Создал новый проект, и первым делом настроил ходьбу, прыжок и поворот, а потом уже анимации добавил - все заработало как нужно
@user-on5kq4zy1y
@user-on5kq4zy1y Жыл бұрын
У меня почему то вылезла ошибка, что moveVector не существует в контексте
@NoobGameDev
@NoobGameDev Жыл бұрын
Ошиблись в коде - пропустили объявление переменной, а именно вот эту строку: public Vector2 moveVector;
@pro404fox5
@pro404fox5 3 жыл бұрын
Помогите пожалуйста. У меня выдаёт ошибку: Parametr 'moveX' does not exist. UnityEngine.Animator:SetFloat(String, Single) Помогите пожалуйста разобраться в этом.
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Unity сообщает Вам, что не может найти среди переменный в Аниматоре переменную с именем "moveX". Т.е. Вы либо ещё не создали переменную "moveX" (именно в окне Аnimator), либо неправильно указали её имя (обратите внимание на регистр букв в имени переменной, т.к. "moveX", "MoveX", "MOVEx" - это три разных переменных)
@pro404fox5
@pro404fox5 3 жыл бұрын
Спасибо огромное
@max_liberty0
@max_liberty0 3 жыл бұрын
Что если во время разделение спрайтов выделяется только первый?
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Если в одном изображении несколько спрайтов, то очень важно изменить параметр Sprite Mode на Multiple (выделить картинку и найти поле в Инспекторе). А при разрезке поначалу можно использовать автоматический режим: выделить изображение, нажать в Инспекторе Sprite Editor и во вкладке Slice (слева сверху окна) в поле Type выбрать Automatic. В этом же выпавшем подменю нажать на Slice и Unity автоматически нарежет спрайты (если они не соприкасаются друг с другом). Он обычно может нарезать даже больше чем нужно (он может отдельную точку за спрайт посчитать), но при такой инструкции он должен нарезать спрайты нормально. После этого справа сверху нажать кнопку Apply, чтобы сохранить изменения. После этих манипуляций, если нажать на стрелку справа на изображении которое было нарезано, то развернутся все спрайты, по отдельности. Возможно я вас не совсем правильно понял... Поэтому, если есть желание, то можете присоединиться к нам в Дискорд: discord.gg/AHpWFBAJJr Там со скриншотами проще будет и вам объяснить и мне)
@dikimaka8653
@dikimaka8653 2 жыл бұрын
помогите пж. я добавил анимацию врагу но как мне ее в скрипт вставить, у меня враг двигается из стороны в сторону вот такой код: 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));
@terrarskai_tikovka.
@terrarskai_tikovka. 2 жыл бұрын
бля ну и нахер я пытаюсь научится этому если у меня все равно ничерта не выйдет (да я пытался сделать свое сообщение как код)
@NoobGameDev
@NoobGameDev 2 жыл бұрын
Ну, смотрите... На сколько я понял, то враг вообще стоять не умеет) Поэтому в данном конкретном примере можно было бы обойтись лишь анимацией движения (сделать её дефолтной в аниматоре). Но если планируется добавить анимацию покоя, то я бы изменял moveX в методе Move после изменения transform.position. Но так как сейчас энеми заточен только под движение, то Вам придётся много чего переделать. И код немного переусложнён) Так что Вы и сами в нём начинаете запутываться (например есть переменная speed, но скорость движения врага нигде не регулируется, а так же есть сомнения, что перс нанесёт урон неподвижному игроку - скорей всего, он до него дойдёт, развернётся, и пойдёт искать стену... Я не уверен, но проверьте (: ). Конечно всегда приятно видеть, как люди сами пытаются придумывать свои решения, а не слизывают под чистую, но я бы посоветовал глянуть видео у Graphical Design на эту тему: kzfaq.info/love/Hr72IH-33mrD2h09MR3N3Qsearch?query=патруль Для первых экспериментов с патрулём они неплохо подойдут)
@dikimaka8653
@dikimaka8653 2 жыл бұрын
@@NoobGameDev спасибо большое, я учту, а по поводу урона, я ещё не заморачивался, решил сначала с движениями разобраться а потом уже с уороном и тд. Спасибо за совет
@dikimaka8653
@dikimaka8653 2 жыл бұрын
@@NoobGameDev я занимаюсь, этим просто 3 день всего, но очень интересно, правда информацией переполнен сильно. Но затягивает невозможно просто
@iscooiscoo5045
@iscooiscoo5045 10 ай бұрын
у меня почемуто нет idle в анимации не к чему стрелку проводить idle walk(walk any srtay exit entry )только эти знаения есть хелп плиз
@feelingfealty
@feelingfealty 9 ай бұрын
Решил проблему?
@iscooiscoo5045
@iscooiscoo5045 9 ай бұрын
@@feelingfealty да да спасибо
@iscooiscoo5045
@iscooiscoo5045 9 ай бұрын
@@feelingfealty подскажите пожалуйста где можно получится гейм деву платно или бесплатно
@feelingfealty
@feelingfealty 9 ай бұрын
@@iscooiscoo5045 хах, я сам только начал по видео учиться)
@miraclebloom2744
@miraclebloom2744 2 жыл бұрын
Здраствуйте, у меня персонаж не поворачивается влево когда я иду влево, что мне делать? ПОМОГИТЕ ПОЖАЛУЙСТА!
@miraclebloom2744
@miraclebloom2744 2 жыл бұрын
я сам уже исправил видео топ спасибо продолжай
@NoobGameDev
@NoobGameDev 2 жыл бұрын
@@miraclebloom2744 МолодцОм!) 👍
@he_kto2677
@he_kto2677 Жыл бұрын
Ребята кто знает что делать если анимация в юнити работает но когда она начинается персонажа тепает в другое место?
@NoobGameDev
@NoobGameDev Жыл бұрын
Если в одно и тоже место независимо от того, в какую сторону смотрел перс до анимации, то причина может быть в том, что при записи анимации был затронут компонент Transform - например, если случайно или специально подвинули какую-то часть тела. Чтобы такого избежать у персонажа должна быть корректная иерархия: один основной объект (без спрайтов), а дочерние (в нём/под ним) уже могут спокойно перемещаться. Потому что позиция будет считаться относительно родительского объекта, а не центра всей сцены. Если же перс при нажатии влево-вправо, как будто бы отпрыгивает от центра, то проблема может быть в том, что некорректно настроен Pivot спрайта (синий бублик, в Sprite Editor - где спрайты нарезаются). В идеале он должен быть в центре снизу, т.е. под ногами. Так как этот бублик спрайта всегда совмещается с центром объекта. Если он будет где-то в стороне, то и спрайт будет настолько же далеко от центра объекта.
@imortal8971
@imortal8971 2 жыл бұрын
что делать если в less и greater не хочет ставится 0.1?
@NoobGameDev
@NoobGameDev 2 жыл бұрын
Скорей всего, проблема в типе переменной. Возможно, что она у Вас целочисленная (int), в таком случае в неё можно записать только целое число... Для вещественных значений нужна переменная типа float. Могу ошибаться, но можете удалить int-овую переменную (в переходах появится ошибка), а потом создать float переменную с таким же именем(!) и тогда в переходах она должна автоматически подставиться на место удалённой (ошибки исчезнут).
@Tikarr0
@Tikarr0 3 жыл бұрын
Бротан все круто но! Как сделать этот знак палочки на 9:19 ?(
@NoobGameDev
@NoobGameDev 3 жыл бұрын
:) Прямо над Enter'ом должна быть (на англ. раскладке Shift + "'эта кнопка") P.S. если вдруг у Вас эта кнопка залипает или ещё чего, то можете скопировать и вставить: " || "
@Tikarr0
@Tikarr0 3 жыл бұрын
@@NoobGameDev спасибо большое )
@mukulash7865
@mukulash7865 3 жыл бұрын
6:54 - а зачем нужно выбирать значение по модулю?
@NoobGameDev
@NoobGameDev 3 жыл бұрын
С Горизонтальной оси ввода может поступать либо отрицательное, либо положительное, либо нулевое вещественное (дробное) значение. В Аниматоре (в условиях перехода) для вещественных переменных есть только условия "больше" либо "меньше". Допустим, мы выбрали в условии перехода, что будем его запускать, когда значение ввода больше нуля. Тогда, если мы нажмём "вправо", то с оси ввода поступит положительное значение (допустим, единица) и сработает переход от анимации покоя к анимации ходьбы. Но если нажать "влево", то в аниматор поступит отрицательное значение (допустим, минус единица) и как следствие, переход настроенный на положительное значение не сработает, а значит персонаж будет перемещаться влево, но будет продолжать проигрываться анимация покоя. Поэтому мы можем передавать в Аниматор абсолютное значение, при котором любое число (и положительное и отрицательное) будет передаваться, как положительное. И как следствие переход к анимации ходьбы будет срабатывать при любом отличном от нуля значении. Можете попробовать убрать метод Mathf.Abs и наглядно увидеть, что получится)
@mukulash7865
@mukulash7865 3 жыл бұрын
@@NoobGameDev понял, спасибо
@redkill6367
@redkill6367 5 ай бұрын
У меня возникла проблема - анимации проигрываются, а поворота и движения не происходит.
@iehtldan3669
@iehtldan3669 2 ай бұрын
жиза почему то так же!
@Stanly1SL
@Stanly1SL 10 ай бұрын
а что делет метод mathf abs ?
@NoobGameDev
@NoobGameDev 10 ай бұрын
Возвращает модуль числа, типа как |-4| = 4, другими словами отбросит знак от числа.
@Stanly1SL
@Stanly1SL 10 ай бұрын
агаааа спасибо!!! @@NoobGameDev
@ishachok980
@ishachok980 3 жыл бұрын
А что делать если персонаж не двигается, а только стоит и меняет анимацию?
@NoobGameDev
@NoobGameDev 3 жыл бұрын
А до добавления анимации он двигался? Если "да", то какую анимацию использовали (спрайтовую или позиционную)? Если не спрайтовую, то нужно смотреть на иерархию персонажа (должен быть основной объект, положение которого при анимировании изменять нельзя, а вот те объекты (руки, ноги, голова), которые находятся внутри главного - можно). Скорей всего, Вы, когда анимировали персонажа (нажимали кнопку "запись" и изменяли положение) изменили положение не того объекта. Но чтобы сказать наверняка, мне нужно видеть скриншот Иерархии и, какие параметры изменялись при анимации (выбрать анимацию в окне Animation). Поэтому, если есть возможность - скиньте скриншоты мне в ВК.
@kodest8017
@kodest8017 3 жыл бұрын
@@NoobGameDev, у меня та же фигня, но анимация спрайтовая. Что делать?
@NoobGameDev
@NoobGameDev 3 жыл бұрын
​@@kodest8017 1. До добавления анимации он двигался (перемещался)? 2. В окне Иерархия или на Сцене выделить/выбрать персонажа, запустить игру. И обратить внимание меняется ли в блоке Transform в свойстве Position значение по X, когда Вы нажимаете клавиши движения?
@ChusParen
@ChusParen Жыл бұрын
@@NoobGameDev 1. Да! 2. Нет, цифры не меняются
@zheckacentrop
@zheckacentrop 2 жыл бұрын
Привет, У меня после команды else if (moveVector.x < 0); { Sr.flipX = true; } Начало писать 6 ошибок: Else не может запускать оператор Синтаксическая ошибка, требуется ( Недопустимый термин else в выражении Требуется ) Требуется ; но после того как я всё это сделал зелёным (я не очень помню) дописал код. А в итоге он не поварачивается
@NoobGameDev
@NoobGameDev 2 жыл бұрын
Ну, всё логично) Вы написали часть кода, каким-то образом исправили ошибки Студии, но это вовсе не означает, что код будет работать должным образом. Перепишите всё в точности как в видео и посмотрите какой-нибудь видеоурок по основам программирования. Так как, например, в любом языке оператор else не может существовать без if перед ним. Т.е. должно быть примерно так: if (а > b) { // выполняемый код } else { // выполняемый код } На "псевдо языке" это выглядит так: если (данное условие верно) { // то выполняем код здесь } иначе { // выполняем код здесь }
@zheckacentrop
@zheckacentrop 2 жыл бұрын
@@NoobGameDev Спасибо большое) Я написал Скрипт полностью как у вас, но всё равно выдает ошибки. Ну да ладно, всё равно спасибо, я попробую переписать :))
@NoobGameDev
@NoobGameDev 2 жыл бұрын
@@zheckacentrop :)) Попробуйте понять движок) Переводите ошибки на русский или гуглите. Обычно, если есть номер строки и номер символа (например 36; 17), то ошибка синтаксическая (т.е. допущена Вами), зачастую пишется символ, который по логике программы должен был стоять на указанном в ошибке месте.
@aynmax
@aynmax 3 жыл бұрын
Controller 'Player 1': Transition '' in state 'walk' uses parameter 'MoveX' which does not exist in controller. UnityEditor.EditorApplication:Internal_CallGlobalEventHandler() так же и с айдл, помоги пожалуйста
@NoobGameDev
@NoobGameDev 3 жыл бұрын
У Вас раньше в Аниматоре была переменная "MoveX", которую Вы использовали в условии перехода от анимации "walk". Видимо после того как Вы выбрали её в условии перехода, Вы её удалили или переименовали. Во-первых, убедитесь, что у вас есть переменная "MoveX" в Аниматоре (так же обратите внимание на регистр букв! в уроке было использовано "moveX") Во-вторых, проверьте переходы: walk -> idle idle -> walk В них, скорей всего, в окне Инспектора в блоке Conditions будет пустое поле с надписью "Parametr dos not exist Controller", выбирайте в поле параметр "MoveX" и настраивайте в соответствии с переходом. А, возможно, чтобы не запутаться , лучше удалить переходы walk -> idle idle -> walk и создать и настроить их заново.
@aynmax
@aynmax 3 жыл бұрын
@@NoobGameDev щас попробую
@buhgalter7574
@buhgalter7574 3 жыл бұрын
В коде приведенном по ссылке, отсутствует строка: public bool faceRight = true; из-за чего появляется ошибка: CS0103 Имя "faceRight" не существует в текущем контексте.
@NoobGameDev
@NoobGameDev 3 жыл бұрын
Спасибо, за бдительность, но я перепроверил и строка присутствует... Возможно, не выделилась при копировании.
@sodden_steam
@sodden_steam 3 жыл бұрын
@@NoobGameDev ты прав- всё там есть.
@user-lv7lv7fd1d
@user-lv7lv7fd1d 9 ай бұрын
если делать анимацию через рефлект то следование за камерой не будет работать
@NoobGameDev
@NoobGameDev 9 ай бұрын
Это если просто камеру перетащить на перса, но обычно так не делают - пишут скрипт слежения.
@sensei7059
@sensei7059 2 жыл бұрын
У меня при поворотах влево и вправо он сначала телепортируется на несколько шагов. С чем это связано?
@sadkotik
@sadkotik 2 жыл бұрын
глянь 1 урок по игре юнити 2д у хитмэна у него так тоже эта проблема гдето-то в середине есть, он показал как исправить
@NoobGameDev
@NoobGameDev 2 жыл бұрын
На вскидку такое может быть, из-за Pivot'ов спрайтов. Когда используется Sprite Editor (например, для нарезки спрайтов), то при выделении спрайта он обводится рамкой в которой есть синий кружок. Вот этот синий кружок - это, грубо говоря, центр рисунка. мне кажется, что он у тебя либо слева с краю, либо справа - нужно переместить его (в идеале) в ноги персонажа. Речь вот об этом (просто, чтобы понять что это и где): kzfaq.info/get/bejne/fqliZ9iY0Zu9dn0.html UPD: Чтобы сильно не мучаться, сначала посоветовал бы изменить Pivot на Bottom (кружок станет снизу по центру)
@sensei7059
@sensei7059 2 жыл бұрын
@@NoobGameDev Я создал перса через empty, присваивая ему дочерние объекты в виде спрайтов head, hand и пр. Соответственно я начал менять Pivot на bottom center у каждого спрайта по отдельности, как иначе сделать в моем случае хз. Не помогло. Добавлю еще, что я хз как нормально прикрепить empty к его дочерним спрайтам, вначале он у меня вообще был расположен вдали от своих дочерних моделей(словно его душа покинула:D), но потом кое-как, выделив на сцене спрайты, определил на глаз и перетащил их к предполагаемой позиции empty. При выставлении идентичной позиции у empty и спрайтов получается какая-то лажа - расположение иконок оси координат все так же не совпадает. Ах да, так же я менял order in layer и все, что с этим связано. Ну это все я так к слову, может поможет как-то решению проблемы)
@sensei7059
@sensei7059 2 жыл бұрын
@@sadkotik что-то не нахожу хитмана, можешь ссылку скинуть пожалуйста?)
@sensei7059
@sensei7059 2 жыл бұрын
@@NoobGameDev В общем ситуация меняется когда я подгоняю расположение empty под расположение его дочерних спрайтов, но выглядит как-то все это костыльно, есть метод как их уверенно расположить? UPD Разобрался. Вытащил спрайты из эмпти и ресетнул позиции у всех. Сорян за глупые вопросы)
@iplint8997
@iplint8997 Жыл бұрын
Не меняется переменная moveX, что делать?
@NoobGameDev
@NoobGameDev Жыл бұрын
Проверьте, чтобы имя переменной в коде в точности совпадало с именем переменной в Аниматоре. Потому что "moveX" и "MoveX" - это разные переменные.
@user-uv5or8if6v
@user-uv5or8if6v 2 жыл бұрын
что делать если ты написал код но заходя в игру пишет ошибку и не заходит в игру
@NoobGameDev
@NoobGameDev 2 жыл бұрын
Что значит "заходя в игру"? Когда запускаете проект из UnityHub, или когда нажимаете кнопку "Play" в Unity. Если второе, то, скорей всего, в коде пунктуационная ошибка (пропустили ";" опечатались и пр.), либо, создали публичное поле, в которое забыли перетащить нужный объект или компонент. Такое поведение обычно сопровождается красным текстом в консоли и в левом нижнем углу Unity. В любом случае, без текста ошибки большего сказать не могу...
@user-uv5or8if6v
@user-uv5or8if6v 2 жыл бұрын
@@NoobGameDev спасибо я переписал код и все работает!
@kostlya
@kostlya 2 жыл бұрын
Что если перс разучился ходить и висит в воздухе хотя риджитбади 2д и колайдер есть?
@user-en9cz9hu1v
@user-en9cz9hu1v 2 жыл бұрын
Во, та же проблема, анимация просто играет, а сам он висит в воздухе
@NoobGameDev
@NoobGameDev 2 жыл бұрын
@@user-en9cz9hu1v Если до добавления анимации перс нормально падал, то это значит, что во время записи анимации вы меняли положение основного (родительского) объекта персонажа, т.е. другими словами: сами указали , чтобы объект находился на том или ином месте. Поэтому он и висит на месте) Т.е. есть, допустим объект "Player", и если его развернуть (в Иерархии), то в нём есть, допустим "Правая рука", "Левая нога", "Голова" и пр. Так вот изменять положение рук, ног, головы при записи анимации можно, а основного объекта - Player не стоит.
@NoobGameDev
@NoobGameDev 2 жыл бұрын
Я под вашим комментом ответил на похожий вопрос. Там конечно и другие причины могут быть, но судя по тому, под каким видео возник вопрос, то вероятнее всего, проблема именно в том, что использовалась запись при анимировании, и двигался основной объект персонажа. Нужно переделать анимацию, либо, что лучше - сделать её с нуля и следить за тем, чтобы в изменяемых параметрах не оказалось положения родительского объекта.
@kostlya
@kostlya 2 жыл бұрын
@@NoobGameDev спасибо большое
@user-en9cz9hu1v
@user-en9cz9hu1v 2 жыл бұрын
@@NoobGameDev хорошр, спасибо!)
@thedetwimon6825
@thedetwimon6825 2 жыл бұрын
а можно так же, но для top down? xd
@NoobGameDev
@NoobGameDev 2 жыл бұрын
Не, низя) В топдоун другая логика для анимаций подходит больше. Так как там нужно, как минимум 5 базовых анимаций (если ходить по диагонали), а лучше все 8-мь. Создаётся массив с именами анимаций и исходя из вектора ввода (по горизонтали и по вертикали: 0,1 ; -1,1 и т.д.) из кода запускается соответствующая из массива анимация. Такой подход есть в уроках от Unity (про изометрию), он, на мой взгляд, самый удобный и меньше всех "ломается")
Как быстро замутить ЭлектроСамокат
00:59
ЖЕЛЕЗНЫЙ КОРОЛЬ
Рет қаралды 14 МЛН
Неприятная Встреча На Мосту - Полярная звезда #shorts
00:59
Полярная звезда - Kuzey Yıldızı
Рет қаралды 2,9 МЛН
Backstage 🤫 tutorial #elsarca #tiktok
00:13
Elsa Arca
Рет қаралды 43 МЛН
Создавать Игры ПРОЩЕ, чем ты думаешь
9:56
Daru - Разработка игр
Рет қаралды 151 М.
Анимация бега | Aseprite | Pixel art
6:41
NIBICU
Рет қаралды 49 М.
РУКОПАШНЫЙ БОЙ в Юнити | by Brackeys
19:10
maxvell-game developer
Рет қаралды 38 М.
DELETE TOXICITY = 5 LEGENDARY STARR DROPS!
2:20
Brawl Stars
Рет қаралды 18 МЛН