Физика в Unity - 9. Raycast

  Рет қаралды 93,647

Eccentric Games

Eccentric Games

Күн бұрын

cloud.mail.ru/... - скрипт для перемещения камеры
Следующий урок - • Физика в Unity - 10. J...
Этот урок - часть курса по основам физики в Unity.
В курсе я постарался максимально подробно изложить все, что знаю по этой теме.
Меня зовут Илья Карельцев вот мой vk( ilya19). Занимаюсь разработкой игр с 2012 года.
На этом канале делюсь опытом по программированию и 3D Lowpoly моделированию.
Я провожу курсы и онлайн-консультации по Unity.

Пікірлер: 154
@Rimir-o4g
@Rimir-o4g 4 жыл бұрын
Спасибо за НАГЛЯДНОЕ объяснение материала, как и что работает, особенно за визуализацию в Фотошопе. Также за примеры использования. От слов всех новичков скажу: "Спасибо, что учишь пользоваться ДОКУМЕНТАЦИЕЙ UNITY".
@Любопытная-н1к
@Любопытная-н1к 4 жыл бұрын
Ты быканул или мне показалось?
@4orniy468
@4orniy468 4 жыл бұрын
@@Любопытная-н1к Мне тоже показалось
@Cherviblo
@Cherviblo 3 жыл бұрын
@@4orniy468 И в чем выражается эта быковатость? Человек поделился эмоциями, а через текст их передать трудно, поэтому воспользовался капсом. Автор действительно топовый и доходчиво объясняет материал и сразу учит писать грамотный код и поясняет, почему он работает именно так, подкрепляя свои слова документацией. Разве нет?
@Unknown-hq4cp
@Unknown-hq4cp 3 жыл бұрын
@@Cherviblo просто пока не посмотрел само видео, возникает такое ощущение, что это сарказм.
@theoctan8569
@theoctan8569 2 жыл бұрын
Documentation it's must have!
@beautiful_ground
@beautiful_ground 4 жыл бұрын
Этот человек - инженерный гений. Никто иной бы не догадался поставить микрофон в чашку.
@LeaDers000
@LeaDers000 Жыл бұрын
Хахахахаах
@alex.artechtattoo
@alex.artechtattoo 3 жыл бұрын
Не могу не нарадоваться тому, что кашёл этот канал, а через несколько месяцев попал на курс к этому замечательному человеку. Всем настоятельно рекомендую качать скилл у таких профессионалов своего дела как Илья. Материалы на вес золота! А грамотный, душевный подход к делу и людям очень мотивирует! Примного благодарен за твой титанический труд , Илья)
@EccentricGames
@EccentricGames 3 жыл бұрын
Спасибо!)
@cleiters4180
@cleiters4180 2 ай бұрын
Я посмотрел уже 4 видео от тебя как говорят на одном дыхании и ты обьясняешь как я бы хотел не на одном скудном примере а на нескольких,спасибо теперь больше вещей понял в юнити и знаю уже где гибко что как применять
@cleiters4180
@cleiters4180 2 ай бұрын
Пролайкал и подписался
@REXbrd
@REXbrd 6 ай бұрын
Даже спустя четыре года после выхода видео до сих пор обращаюсь к нему! Спасибо, человек!
@ВиталийЧумаченко-с2л
@ВиталийЧумаченко-с2л 3 ай бұрын
Очень сильно выручают твои уроки. Качественные и понятные!!! Большое спасибо за труд.
@shurik8252
@shurik8252 Жыл бұрын
Обычно, не пишу комменты, но тут спустился, чтобы спасибо написать, очень всё по теме и нужное. Спасибо!
@Алина-ю6и6л
@Алина-ю6и6л 2 ай бұрын
гсп, все люди мира и не только пытались мне объяснить, но из-за того, что мне никто не мог ответить на уточняющие вопросы я не понимала, но Вы все показали и я поняла с 1 раза
@Isiju-o5i
@Isiju-o5i 2 жыл бұрын
Давно не мог разобраться с Raycast-ами, ибо уроки на youtube специализируются на "Напиши вот это и будет работать". Спасибо вам огромное за то, что помогли понять эту вещь и за то, что так постарались над видео.
@mrmelog4320
@mrmelog4320 3 жыл бұрын
Спасибо за понятное и наглядное объяснение) До этого урока очень боялся работать с лучами, а теперь это стало намного понятнее) Жаль что ты немного забросил контент, но я думаю твои ролики останутся у многих в сердечки) Спасибо всё понятно и информативно)
@BrickEmperor
@BrickEmperor Жыл бұрын
Спасибо вам огромное!!!! Без вас я бы сделал выделение, не меньше чем через месяц, а благодаря вам я изучил выделение за один вечер!!! Словами не описать насколько вы мне помогли!!!
@ilhanilhanDev
@ilhanilhanDev 4 жыл бұрын
молодец бро именно такого ютубера я искал ,есл и бы ты раньше появился,год назад и еще в рекомендациях все было бы проще. Я так понимаю как все это работает, но как подавался материал , сможет это единицы ,уважуха и да я узнал и почерпал оттуда много нового ,спасибо тебе!
@theoctan8569
@theoctan8569 4 жыл бұрын
Отдельное спасибо за такое пояснение, что у коллайдера есть свой метод Raycast, очень тонко подмечено, о чём как-то не очень догадывался) X_X
@obliviongamestudio2856
@obliviongamestudio2856 3 жыл бұрын
Снимай больше уроков, у тебя очень годный контент. Спасибо, я много чему научился на твоих уроках!
@Bushido_Cat
@Bushido_Cat 2 жыл бұрын
Самые понятные уроки во всем ютубе, спасибо тебе огромное!
@untilisee
@untilisee 4 жыл бұрын
Всё это знаю, но всё равно с удовольствием посмотрел на грамотное изложение материала.
@romanburiak6639
@romanburiak6639 2 жыл бұрын
Спасибо. Очень крутое и понятное объяснение. Как раз то что искал
@noobd6728
@noobd6728 Жыл бұрын
самый лучший урок по рейкасту. Спасибо за урок, я подписался!
@ataka640
@ataka640 6 ай бұрын
самый крутой чел по разъяснению юнити!!!! Спасибо!
@unityrututorials1327
@unityrututorials1327 2 жыл бұрын
Очень крутые видосы у тебя. Почему не когда твои ролики не видел. Спасибо большое дружище , ты мне много часов с экономил
@ProakGames
@ProakGames 11 ай бұрын
Спасибо, спасибо!! Самый лучший и понятный урок который я видел!
@jenbu3007
@jenbu3007 2 жыл бұрын
Спасибо за простое понятное объяснение рэйкаста!
@MaksimKatyshev
@MaksimKatyshev 3 жыл бұрын
Спасибо! теперь твои видео для меня nom.1 в изучении unity!
@in2fractalout
@in2fractalout 2 жыл бұрын
Благодарю. Разъяснения толковое. Выдержан приятный для восприятия ритм повествования
@designer.trifonov
@designer.trifonov 2 жыл бұрын
Наконец-то годное и понятное видео)))
@MrGolovewkin
@MrGolovewkin 6 ай бұрын
Лучший в мире намек на подписаться :)!!
@Shikinev_2
@Shikinev_2 3 жыл бұрын
Красавчик, все четко и ясно
@АлександрШтейнберг-с5в
@АлександрШтейнберг-с5в 3 жыл бұрын
Интереснейшая подача материала, большой респект!
@novusis
@novusis 4 жыл бұрын
Спасибо огромное! Очень полезно, это прям то что я искал) Узнал все что надо и даже больше!
@Александр-с8и3ъ
@Александр-с8и3ъ 3 жыл бұрын
Очень жаль, что ты перестал записывать видосы, благодаря тебе понял как работают лучи, и в ближайшее время все остальные видосы посмотрю) Думаю тебе не хватает пиара и более частого выпуска роликов, чтоб канал выстрелил. За видеоуроки благодарочка в общем)
@EccentricGames
@EccentricGames 3 жыл бұрын
Спасибо) да времени мне не хватает просто)
@Александр-с8и3ъ
@Александр-с8и3ъ 3 жыл бұрын
@@EccentricGames понимаю, но зато моё время ты сэкономил немало) делаю небольшой симулятор для дипломного проекта, и ты очень помог разобраться во всех скриптах, которые я в инете находил
@EccentricGames
@EccentricGames 3 жыл бұрын
@@Александр-с8и3ъ хорошо) покажи потом что получится)
@Александр-с8и3ъ
@Александр-с8и3ъ 3 жыл бұрын
@@EccentricGames хорошо, отпишусь если конечно что-то получится 😹 сделал тестовую сцену с примитивами, ещё даже механику не всю реализовал, а у препода на компе уже лаги жёсткие... вот тебе идея для видео кстати, способы оптимизации игры)
@МаксимАлексеев-ч4й
@МаксимАлексеев-ч4й 4 жыл бұрын
Лайк. Интересно слушать. Как раз изучаю unity. Давай побольше уроков )
@джоджо-у1в
@джоджо-у1в 9 ай бұрын
хорошое объяснение
@АртёмДавидович-я5ю
@АртёмДавидович-я5ю 2 жыл бұрын
Благодарю за видео! Очень круто объясняешь!
@jordji8696
@jordji8696 2 жыл бұрын
Очень классно объясняешь, спасибо)
@TwilightGamerChronicles
@TwilightGamerChronicles 9 ай бұрын
Ааа, светлая тема в среде разработки, ааа, мои глаза!
@derikfant831
@derikfant831 2 ай бұрын
Просто раньше темная тема была платной
@Kawabatushka
@Kawabatushka 14 күн бұрын
мб чтоб лучше видно было происходящее?
@Kawabatushka
@Kawabatushka 14 күн бұрын
ахаххаах гениально подвёл к кнопке ПОДПИСАТЬСЯ. весь ролик делал вид, что пишешь тутор, а оно вон оно что )
@stanislav4055
@stanislav4055 2 жыл бұрын
Спасибо за подробное обьяснение
@Aboutpizza
@Aboutpizza 2 жыл бұрын
Спасибо большое за эту серию видео. Тем более За PayCast.
@SamuraiYamomoto
@SamuraiYamomoto Жыл бұрын
Спасибо, красавчик мужчина!
@skywoker123456
@skywoker123456 4 жыл бұрын
Спасибо за подробное объяснение!
@gregorykl2317
@gregorykl2317 3 жыл бұрын
Классный урок! РЕШЕНО. А возможно одновременно в Physics.Raycast() написать Distance и out hit? У меня не получилось. Идея такова: из центра камеры игрока идет Raycast. При наведении на обьект появляется UI элемент. Но если дистанция, к примеру, больше двух, то UI не появится. UI конкретно в моем случае, там может быть что угодно. P.S игра в 3D Как я это сделал: Как автор и показывал в видео я зашел в VS, напечатал Physics.Raycast() и мне уже VS выдал варианты. Среди них я нашел такую схему: Physics.Raycast(ray, out hit, maxDistance, LayerMask). Все замечательно работает.
@АртурПирожков-р4з
@АртурПирожков-р4з 2 жыл бұрын
Спасибо, лучший!
@alekseyn7866
@alekseyn7866 Жыл бұрын
Спасибо за видео.
@digi_ghosttt
@digi_ghosttt 3 жыл бұрын
Отличный материал! Спасибо)
@GroveStreet-Home
@GroveStreet-Home 2 жыл бұрын
Без рэйкаста нынче никуда)))
@kindbecker8269
@kindbecker8269 2 жыл бұрын
Спасибо за урок!!!!!!!!!!!!!!!!!!!!!!!
@skytechdev
@skytechdev 3 жыл бұрын
Спасибо за урок, но я считаю, что было бы полезно рассказать так же об анимации рэйкаста и толкание им других обьектов (стрельба)
@PavelStr-x5w
@PavelStr-x5w 3 жыл бұрын
комментарий в поддержку !
@AndreyVoyager
@AndreyVoyager Жыл бұрын
Скрипт не работет. Не отслеживает движение мыши. Движения с клавиатуры работают. Что тут не так?
@юнитиделаемигры
@юнитиделаемигры Жыл бұрын
спасибо большое!
@Dumkras_old
@Dumkras_old 4 жыл бұрын
Спасибо за познавательное видео! А можно такое же только в 2д?))
@LordVasya
@LordVasya Жыл бұрын
'Ray' does not contain a constructor that takes 2 arguments - перепроверил кучу раз, выдает это с первого скрипта, в инете не нашел что делать(
@novadin7507
@novadin7507 Жыл бұрын
Возможно поздно, но напишу это для других людей, которые столкнутся с подобной проблемой. Дело в том, что компилятор начинает тупить, из-за того, что вы вероятнее всего написали название скрипта как Ray
@Nikita_Pro89
@Nikita_Pro89 Жыл бұрын
Спасибо за такой замечательный урок. 👍 круть 😎 Но если я хочу таким же способом выделять 2Д спрайты, как это сделать?)
@igorskorobohach367
@igorskorobohach367 Жыл бұрын
Прекрасно
@Jen-hs8ln
@Jen-hs8ln 4 жыл бұрын
в топ!
@Яхва-ы5к
@Яхва-ы5к Жыл бұрын
Спасибо
@hrwigfbk12
@hrwigfbk12 4 жыл бұрын
Что на счёт ray cast из объекта с rigidbody в 3d? Я на данный момент работаю только с 2d физикой в unity и там при любых условиях rigidbody2d перехватывает луч, даже если будет указан layer mask, поэтому я выключаю симуляцию в момент бросания луча, а после включаю. Хороший курс, много нового узнал! На столько качественного контента на русском, к сожалению, мало.
@EccentricGames
@EccentricGames 4 жыл бұрын
Ну если луч будет идти изнутри коллайдера то не заденет. Маски должны работать, видимо что-то не так делаешь
@hrwigfbk12
@hrwigfbk12 4 жыл бұрын
@@EccentricGames А, ну да. Не помню, что я не так делал, сейчас просто удалил строчки с отключением симуляции и всё нормально работает, хех.
@romildathetortoise
@romildathetortoise Жыл бұрын
назначать компонент-скрипт для группы объектов, чтобы по нему определить что объект входит в группу. насколько это производительно? тут о(N) получается для каждого объекта
@Jam867
@Jam867 2 жыл бұрын
Вопрос насчёт "развыделения", а не проще было просто после if ray на объекте то жёлтый просто добавить else и добавить чтобы он выкрашивплся допустим в серый цвет?
@SECTOR_9
@SECTOR_9 Жыл бұрын
Отличный тутор, спасибо большое! Остался один вопрос: красная точка остается в последней точке на объекте с коллайдером, если луч попадает в зону, где коллайдера нет. Как сделать так, чтобы точка исчезла, когда луч не сталкивается с коллайдерами?
@adamgray9939
@adamgray9939 4 жыл бұрын
За урок, хоть я его и не искал спасибо. Мне было бы интересно узнать, почему некоторые "устойчивые" в реальности тела совсем не устойчивы в юнити. Например, если поставить на один куб 1*1*1 массой 1кг другой - массой 25кг, то нижний начинает проседать, а верхний "елозить". Можно конечно пошаманить с параметрами материала, но это не совсем реально.... и как быть?! PS Про кнопку "Подписаться" порадовало)) надо уже сделать так что бы ютуб сам подписывал на каналы которые ты смотришь.. )
@ВладимирКост-й4щ
@ВладимирКост-й4щ 2 жыл бұрын
Не думал, что в СНГ существуют качественные ролики по Unity
@cronmax2857
@cronmax2857 2 жыл бұрын
У меня не появляется луч в сцене что делать?
@HitsarOrig
@HitsarOrig 2 жыл бұрын
конечно теперь кнопка подписки не красная, но я подпишусь)
@velteck
@velteck Жыл бұрын
Не понимаю почему когда рисуем луч нужно заново указывать параметры луча, к тому же там даже не написано какой луч мы рисуем. Если у меня их несколько?
@karenkirakosyan9096
@karenkirakosyan9096 2 жыл бұрын
Fantastic
@MrKTYlhu
@MrKTYlhu 4 жыл бұрын
Привет, спасибо большое за отменные уроки, все очень четко и ясно. Не могу к сожалению найти то место, где ты прикрепил описание скрипта на передвижение камеры, будь добр - подскажи где можно посмотреть на него
@EccentricGames
@EccentricGames 4 жыл бұрын
Спасибо что напомнил. Вставил в описание.
@narekkhurshudyan7336
@narekkhurshudyan7336 3 жыл бұрын
thanks
@АлёнаКосовских-д6ц
@АлёнаКосовских-д6ц 2 жыл бұрын
Кто ни будь сталкивался с такой проблемой:в сцене сто префабов белого цвета,при попадании луча они должны окрасится, все работает,все красятся,но один префаб не окрашивается,причем когда в следующий раз попадет луч он окрасится.прямо проблемная точка в сцене, удаляли это префаб,подставляли на это место клона,даже просто соседний префаб в эти координаты перемещали и точно так же-ни как не реагирует.причем код срабатывает,т.к после окрашивания ,объект бросающий луч передвигается в нужные координаты,т.е если префаб белый,то его нужно окрасить и передвинуться.вот не окрашивает,а передвигается,но в условиях прописано,только когда окрасил можешь двигаться.во всей сцене всё работает как часики,но вот тут непонятка какая-то
@PavelStr-x5w
@PavelStr-x5w 2 жыл бұрын
Спасибо за урок!! Такой вопрос, после обновления Unity 2020.3.4 (URP 10.4.0) до Unity 2021.3.10 (URP 12.1.7) столкнулись с проблемой заикания/замедления кадров, которой не было до обновления. Заикание заметно, когда игрок использует плавное передвижение, а также видно на анимированных движущихся объектах. Проблема заметна только на сборках Quest vr. В Steam VR проблема отсутствует. Не знаете что это может быть ?
@RomanUnreal
@RomanUnreal Жыл бұрын
пасиба
@garet7855
@garet7855 3 жыл бұрын
Все круто я почти все понял кроме одного. Можете пожалуйста сказать что такое ноомаль точки.
@nikigame3633
@nikigame3633 2 жыл бұрын
привет , понимаю что в смс ты не сможешь полностью ответить на мой вопрос , дай хотя бы направление мысли , я хочу сделать нормальную подвеску у танка , чтобы котки двигались и гусеница тоже, и при этом чтоб котки реагировали реалистично на наезд каких то камней ну короче различных объектов в сцене , подскажи с чем нужно работать что бы это реализовать
@РамильМавлютов-ф5ю
@РамильМавлютов-ф5ю 2 жыл бұрын
Топ
@bbnowhat
@bbnowhat 3 жыл бұрын
Отличное видео, вы мне очень помогли, можете сказать как сделать так чтобы visual studio делала подсказки для юнити, а то пишу переменные, методы и хз что и как Upd: все получилось
@mrmelog4320
@mrmelog4320 3 жыл бұрын
Похожий трабл с Xamarin Studio (Mono Develop для олдов)
@Voronin-pz3ff
@Voronin-pz3ff 4 жыл бұрын
Крута натуре
@lukosir
@lukosir 3 жыл бұрын
Автор: Думаю его можно сделать чуть-чуть по аккуратнее Я: Пытаюсь сделать это самостоятельно без подсказок на протяжении 2 часов и при это получается 120 строчек кода и при этом ни чего не работает.
@showboll3326
@showboll3326 4 жыл бұрын
В начале скрипт написал, на куб кинул, луча нет(( Пишет типа неверная ссылка на vector3
@ruslangolovchenko6797
@ruslangolovchenko6797 3 жыл бұрын
Здравствуйте, а Вы планируете раскрыть функцию MeshTest?
@tar1231
@tar1231 2 жыл бұрын
почему при дебаге линии, ее конец прикреплен к 0, 0, 0?
@kukla1926
@kukla1926 3 жыл бұрын
ухты! а можно с помощью луча как в 16:00 сделать чтобы персонаж при падении с высоты останавливал падение если луч касается земли
@NickProkhorenko
@NickProkhorenko 3 жыл бұрын
Как можно реализовать испускание тысячи рейкастов из поля зрения камеры(не из камеры, а из поля зрения!). Хочу реализовать что-то наподобие оптимизации с помощью рейкастов, чтоб прогружались те объекты, которые я вижу и в которые попал луч, типа Oclussion Culling.
@NoZhenya
@NoZhenya 4 жыл бұрын
до 13:14
@boost_456
@boost_456 2 жыл бұрын
Очень полезный урок. Только чтобы красить объекты выборочно, можно было дать тег этим объектам, а не писать отдельный скрипт.
@GGamess
@GGamess 2 жыл бұрын
на новой инпут системе Input.mousePosition не заработает, так же не будет работать и private void OnMouseEnter() для подсветки, я пока включил использование обоих, есть у кого то решение?
@Putin-Lox
@Putin-Lox Жыл бұрын
России в общем-то уже и нет. Если НЕ врать самим себе. Четверть страны просто утеряна или уничтожена. Половина населения сбежало с этой раздолбанной помойки навсегда. Экономики больше нет. В стране нищета, разруха и безработица. Копеечные зарплаты. И абсолютно никакой надежды на будущее............................
@Uran205
@Uran205 4 ай бұрын
чел ты попуск если не врать самому себе
@Xtonior
@Xtonior 4 жыл бұрын
Хороший урок, а рисовать луч это обязательно?
@EccentricGames
@EccentricGames 4 жыл бұрын
Нет
@Xtonior
@Xtonior 4 жыл бұрын
@@EccentricGames спасибо
@JK-ut4um
@JK-ut4um 10 ай бұрын
18:15 как ты это сделал?
@amni5tianone263
@amni5tianone263 4 жыл бұрын
Tnx for a vid
@Кукурузик-м1я
@Кукурузик-м1я 4 жыл бұрын
Помогите плиз, как повернуть объект к конечной точки луча с постоянной скоростью?
@esteticachannel4604
@esteticachannel4604 3 жыл бұрын
а как сделать чтобы лучем был объект конкретный?
@SlavaGlina
@SlavaGlina 4 жыл бұрын
В самом начале уже проблемы. Скрипт ругается: в строчке Ray ray = new Ray(transform.position, transform.forward) говорит, что Ray не содержит конструктора, поэтому в скобках не должно быть ничего. А в Physics.Raycast(ray) говорит не удается преобразовать из "Ray" в "UnityEngine.Ray", в чем может быть причина?
@EccentricGames
@EccentricGames 4 жыл бұрын
Может у тебя скрипт какой-то называется Ray
@SlavaGlina
@SlavaGlina 4 жыл бұрын
​@@EccentricGames​Да, спасибо большое
@foxboll150
@foxboll150 2 жыл бұрын
Что делать если я не вижу луч?
@ВладАпальков-ш5ъ
@ВладАпальков-ш5ъ 2 жыл бұрын
А почему нельзя использовать вместо рейкастов OnMouseOver , ведь это одно и тоже.
@howlam2046
@howlam2046 2 жыл бұрын
С помощью рейкастов можно делать зрение нпс, если его рейкаст попал на тебя, он увидел и побежал в твою сторону
@PolitWolfex
@PolitWolfex 7 ай бұрын
Блин видео хорошее но как качество поменять а то код писать не удобно
@shelikhann
@shelikhann 2 жыл бұрын
Я уже сделал кнопку ПОДПИСАТЬСЯ серой
@ilyuxa2261
@ilyuxa2261 2 жыл бұрын
у меня не получилось желтый луч сделать
@random_viewer_e3g
@random_viewer_e3g 3 жыл бұрын
что делать, если не отображается луч?
@nat543211
@nat543211 2 жыл бұрын
а где взять скрипт pointer?
@kvvoya
@kvvoya 3 жыл бұрын
9:33 эту проблему еще можно решить в Project Settings -> Script Execution Order. там можно настроить в каком порядке будут выполняться скрипты
@_mirai
@_mirai 2 жыл бұрын
По моему там можно определить только порядок инициализации, хотя могу ошибаться
Физика в Unity - 10. Joint
37:20
Eccentric Games
Рет қаралды 74 М.
ПОЧЕМУ ВСЕ ТРЯСЕТСЯ в UNITY ?
39:14
Eccentric Games
Рет қаралды 59 М.
Непосредственно Каха: сумка
0:53
К-Media
Рет қаралды 12 МЛН
⚡ Всё про события в Unity 3D
21:38
Emerald Powder
Рет қаралды 111 М.
Физика в Unity - 11. Ragdoll
12:40
Eccentric Games
Рет қаралды 44 М.
Как сделать указатель на врагов в Unity?
27:28
Как сделать игру Worms в Unity ?
31:54
Eccentric Games
Рет қаралды 22 М.
Физика в Unity - 1. Rigidbody
19:06
Eccentric Games
Рет қаралды 133 М.
СОЗДАНИЕ ШУТЕРА В UNITY. Стрельба Raycast C# | Unity урок by Artalasky
21:52
ARTALASKY CG - Как создать игру
Рет қаралды 177 М.
Непосредственно Каха: сумка
0:53
К-Media
Рет қаралды 12 МЛН