В этом видео мы научимся брать и выбрасывать оружие или любые другие предметы в Unity, а также рассмотрим как сделать так, чтобы оружие не проходило сквозь стены и предметы. 📜 Скрипт из видео здесь: drive.google.com/file/d/1vZYS...
Там будет небольшая проблема, когда оружие будет лежать, то оно будет просвечиваться сквозь стены, я не проверял правда,но говорят что есть такой баг, скорее всего нужно маски на камере менять, когда оружие на земле и когда в руке. Попробуйте сами пофиксить, а если я пофиксю, то выложу в скрипте, все времени нет или забываю.
попробуйте создать новый слой с названием wall например и включить его в главной камере в Culling mask, вместе с weapon, тогда стена не будет просвечиваться, ну или аналогично сдругими объектами, если оно конечно вам надо. У меня просто нет проэкта этого и я не могу проверить, к сожалению.
Очень полезное видео. Делаю диплом и оно очень пригождается. Не сразу заметил проблему с тем, что предметы видно сквозь стены, хотя он у меня всего один будет использоваться (но его нужно именно находить и таскать с собой, а не всегда чтобы был). Ну и решил смотреть здесь комментарии. Ответа для решения конечно не нашёл. Поэтому предлагаю данную проблему решать так: По сути почти ничего менять не придётся, достаточно в MainCamera поставить Evrything слои, а ItemCamera просто дальность прорисовки уменьшить до расстояния вытянутой руки (Таким образом ItemCamera будет видеть Item поверх всего как и задумывалось). Может кому то поможет, как мне. Есть идея так же камеру включать только тогда, когда предмет в руке и выключать при бросании.
Поднимаю обьект, все отлично, бросаю его, все хорошо, поднимаю заного и замечаю что он сплюснутый! Поднимаю и бросаю еще пару раз и он становится растянутым и плоским
У меня как видите все работает нормально, значит у вас что-то не то, к сожалению, без проекта сказать это не возможно. Попробуй другой объект, просто создать кубик или шар и взять его.
Это лучший мануал. Не могу разобраться, как можно мониторить объекты с разными тегами. Т.е. один с тегом Weapon, второй с тегом Gun... (if (hit.transform.tag == "Weapon")) //или Gun1, Grenade....... Разные Weapon у меня будут переключать анимацию рук. Или смысла нет? Наверно сделаю по скрипту на каждый вид оружия, по входу в коллизию будет менять аниматор.
Здравствуйте, спасибо за урок но у меня появился вопрос, почему когда я пишу тот же RaycastHit или GameObject они белым шрифтом а не зелёным как должно быть?
Привет. Не знаю, бывает всякое, у меня когда то не помню какой-то метод встроенный вообще подсвечивался как ошибка, а когда полный путь к нему указал все нормально, а через некоторое время уже нормально работал. Так что тут не чему удивляться, главное чтобы работало.
Спасибо за ответ, ещё хотел спросить почему при попытке закинуть скрипт в “hand” пишет ошибку указывающую на то что добавить скрипт невозможно (хотя я пробовал и с скриптом из описания)
@@tonyagordeeva7008 Может поздно уже, но для других напишу. В эдиторе сверху ищем: Edit > Preferences > External Tools Там будет первая же настройка External Script Editor. Ставим Microsoft Visual Studio 2022 UPD: для свосем начинающих: эдитор (Unity Editor) это окошко самой юньки, где сцена, инспектор, иерархия и тд
Добрый день, что делать если при старте сцены объект появляется не в том месте куда я его поставил в эдиторе, а в каком то другом, точно также если его выкинуть, проблема была в анимациях, но как мне сделать так что бы анимации были включены, но объект не телепортировался
Привет. Ты смотри координаты свои. Лучше всего , чтобы земля была на 0 и тогда все остальное добавляешь. В инспекторе reset надо делать на всякий случай, после того как землю добавил.
Делал игру пол года назад, и смотрел этот гайд, недавно решил вернутся, уже все подзабылось. И была та же проблема, что оружие видно через стены. Каким то образом тогда это решил. Сейчас вот ставил "static" на объектах карты, и по глупости все выделил и поставил "static". Оружие снова отображается, в чем может быть проблема? 😭
Не знаю, я не решил эту проблему :), надо было когда решил написать сюда я бы закрепил комментарий. Я уже давно завязал с юнити и с каналом, так что ничем не могу помочь, к сожалению. Может как то менять слои, когда берешь оружие.
Точно не скажу, но я думаю что силу надо добавить, что-то типо этого gameObject.GetComponent().AddForce(Vector3.forward) Но лучше поискать в интернете, на форумах по юнити в соц. сетях например как правильно.
Внимание, способ с двумя камерами, чтобы оружие не проходило сквозь стены работает, только для игр, где оружие постоянно в руке, если оружие будет лежать на поверхности, то его будет видно сквозь стены. К сожалению решения данной проблемы я пока не знаю.
Как вариант можно назначать оружию слой weapon только когда игрок его подбирает, и убирать его если выбрасывает Подобное изменение слоев не самый оптимизированный вариант, но в данных масштабах очень даже пойдет
Брат я всё сделал как на видео но есть одна большая проблема Когда прибдежаюсь к обекту и питаюсь его взять нажав на E обект не берётся или берётся после нескольких попиток при том что луч проходит через обект Помоги пожалуйста
Привет.К сожаление, без понятия, я когда мне надо было брал готовый ассет с андроид управлением и все, я профессионально не делаю игры, если надо что-то сделать беру ассеты, а что там нет, то дописую сам.
Привет! Что делать если объект спавнится прям снизу камеры? Пустышку вроде сделал настроил, а все равно не получается. А это прям мешает, так как требуется кидать коробку во врага, а она, когда нажимаешь кнопку броска, сразу же на полу появляется:(
Привет! Я устал уже все одно и то же повторять, я не могу без проэкта ничего сказать. Или ищите в гугле или давайте проэкт свой, а лучше старайтесь сами решать влпросы, только так и научитесь.
Всё конечно прекрасно, но как пофиксить проблему, когда ты разделил на слои всё это дело(момент 10:14) меч виден через всё окружение, так же у меня, предметы которые я могу брать, видны сквозь окружение. Интересно, это только я заметил и столкнулся, либо я что то криво сделал, хотя наврятли.)
Пока никак. Или делать так чтобы все объекты вне нужного окружение становились не видимыми, все равно все эти уроки нуждаются в доработке. Это надо делать целый ассет и быстро это не сделаешь и новичок тем более там ничего не поймет. Я могу записать уроки каждый на 5-6 часов, но кто их смотреть будет во первых, а во вторых кто за это за платит. В закрепленном комментарии все написано.
@@user-uf7hu2dq6y я всё понимаю, ты полностью прав, просто факт), а так то урок очень классный, благодаря ему я сделал подбор вещей, а так же научился пользоваться Raycast, и доработал другие механики других ютуберов, так что в любом случае спасибо за гайд) 😁👍
Здравствуйте, у меня hit, который вводится в 20й строке не выделяется вообще, и, я думаю, из-за этого у меня не работает скрипт (ошибок не выделяет, скрипт из описания, но при запуске игры и попытке поднять предмет на Е ничего не происходит. Помогите пожалуйста исправить эту ошибку. Если что, могу код оставить в комментариях, хотя я там по сути ничего не менял, кроме названия самого скрипта)
Привет. Итак начнем сначала: переменные из скрипта так же по называли у себя в проекте, все названия совпадают? в иерархии все так же элементы стоят, как на видео? Hit это переменная, которая создается в PickUp(), где она должна выделяться? Если не береться предмет, попробуй увеличить дистанцию в скрипте не 15, а 20 например. У предмета, который ты пытаешься поднять Ridgidbody и Collider есть?
@@user-uf7hu2dq6y Понял, можешь подсказать, я использовал твой скрипт на стрельбу из оружия и повесил его на два оружия, когда в руке первое оружие, то стреляет и первое и второе, как исправить?
привет) такая интересная проблемма. когда я подбираю объект и бросаю он становится длиннее и чем больше я его подбираю и бросаю тем больше он вытягивается
Привет. Не знаю ). Первый раз такое слышу, смотри, ищи причину почему он может вытягиваться. На самом деле в юнити будет много всяких таких ситуаций которые надо будет решать, поищи в гугл, желательно на английском языке (больше шансов найти ответ), может у кого было что-то подобное.
@@user-uf7hu2dq6y привет еще такой вопрос. я сделал по гайду так чтобы предмет не проходил через стены, но если я выброшу предмет то на него можно будет смотреть через стены. у тебя в видео тоже самое, меч было видно через лестницу
@@Instinct8854 Значит баг, не заметил. Поищи в инете или на форумах может у кого уже было такое. Там скорее всего с камерами надо похимичить. я просто не имею этого проекта уже, проверить не могу. Если хочешь можешь дать проект, я посмотрю.
@@Instinct8854 Глянул видео. Там не баг, это из за culling mask, то есть там стоит что weapon видно через все объекты. Надо там похимичить или в коде просто weapon camera, когда оружие не в руке прописать замену маски. Дело в том, что я не профи в юнити, не делаю игры, это как хобби, так что сразу не скажу, поэтому самому еще надо разобраться, но это точно в масках камеры. Был бы проект этот, я бы глянул.
@@goldhumorist Сказать не могу, к сожалению, это надо мне делать переделывать проект, снимать видео а на это у меня нет времени, просто возьми готовый ассет скачай и все, ну или экспериментируй сам, если хочешь научиться.
Короче попробовал ничего не получается. Работает для игры только когда оружие в руке постоянно, такой способ с двумя камерами не работает, если надо поднимать оружие. В интернете тоже ничего не нашел, у всех такой же способ как и у меня. Пробуй ассет найти подходящий.
Ну не видя проэкт в глаза сложно сказать. У меня все работало нормально. Не поднимает предмет, скорее всего не попадает на коллайдер, слишком маленький или нет вообще на предмете. Остальное надо самому смотреть почему не работает, какие ошибки могут быть, если сам не сможешь, то бери готовый ассет и не мучайся..
@@user-uf7hu2dq6y не, вот я подбираю ключ, и когда поворачиваюсь влево и вправо, объект поваоривается относительно камеры, а когда повариваюсь вниз или вверх объект остаётся на этой же высоте, он не поворачивается вертикально
@@RadioPlay-gw3mv Я уже сто пятьсот раз всем пишу, что наугад такие вещи сказать нельзя, если вы все сделали так как в видео, но у вас что-то не получилось, то это проблема в вашем проекте, и я не могу знать, что у вас там происходит. Если есть желание, то за архивируй папку с проектом и выложи на облако и дай доступ, я скачаю и посмотрю, когда будет время, смогу ли помочь или нет.
Попробовал все что можно. От руки писал, ваш код скопировал и вставил. Скрипт не становиться на обьект Hand. Пишет что в нем есть ошибки, а ошибок нет. "The associated script can not loadded. Кто знает в чем дело ?
То есть ты хочешь сказать, что ты скачиваешь скрипт PickUpWeapon, создаешь любой пустой объект в иерархии, на него закидуешь скрипт и он у тебя выдает ошибки и не вставляется? Я тебе не верю, с чего это вдруг, у меня все нормально вставляется. Можешь либо видео снять, либо проект выслать, просто интересно, как такое может быть.
Подбираю любой предмет и мой перс начинает либо сам ходить, либо летать) Работает с разными предметами и даже если модель удалить персонажа. Совсем ничего не понимаю.....
@@huba21 Вот документация по слоям камеры docs.unity3d.com/ScriptReference/Camera-cullingMask.html В коде в методе PickUp включаешь нужные слои, попробуй так. У меня нет этого проекта уже, я бы сам попробовал, просто нет времени делать снова.
Не знаю. Только что специально скачал скрипт из описания сделал сцену, повесил скрипт, все работает без всяких ошибок. Так что ошибка где то в твоем проекте, попробуй создай пустую там примени просто на фигуре какой нибудь. Если ты не будешь сам пробовать ты никогда не научишься, а если хочешь по быстрому игру сделать, бери готовый ассет и все.
Спасибо за урок. Вы хорошо объясняете). Скрипт работает, но когда я случайно нажимаю "drop", с пустыми руками, то игра в редакторе встаёт на паузу и пишет ошибку: Если Вам не трудно, подскажите как это исправить. Unity 2021.3. Спа-си-бо).
Код по ссылке в описании качали? Элементы в иерархии также как в видео (то есть вложенность такая же)? Или смотрите сами или давайте свой проект мне, очевидно , что ошибка в вашем проекте, а не в коде.
день добрый, если помощь еще нужна то вот так будет выглядеть часть void Drop() void Drop() { if (canPickUp == true) { currentWeapon.transform.parent = null; currentWeapon.GetComponent().isKinematic = false; currentWeapon.GetComponent().isTrigger = false; canPickUp = false; currentWeapon = null; } } @@user-uw6lq7hb9j