Jump to content

Константин Орлов

Administrators
  • Content Count

    1177
  • Joined

  • Last visited

  • Days Won

    3

Everything posted by Константин Орлов

  1. Константин Орлов

    Инструкция по Sony Vegas

    Как правильно рендерить видео в Sony Vegas Pro 14 для YouTube https://medium.com/itcat/как-правильно-рендерить-видео-в-sony-vegas-pro-14-для-youtube-9bab170ef824 Ютуб канал с эффектами на зеленом фоне https://www.youtube.com/user/bestgreenscreen/videos Группа с проектами для Vegas https://vk.com/club127780220 и еще одна про монтаж https://vk.com/club84686255
  2. Константин Орлов

    Инструкция по Sony Vegas

    В целом все изложенное в тексте есть в видео, хотя статья может чем-то дополнять. Это видеоурок для новичка, позволяющий создать проект от начала до конца. Тут дается общее и все необходимое для типичного видео, а после этого вы уже сможете искать на Ютубе видеоуроки по конкретным эффектам или иным деталям. Где скачать Sony Vegas На данный момент самая последняя версия видеоредактора это Sony Vegas Pro v 13.0 Build 453 x64. Самое простое это скачать на rutracker.org, там нет вирусов и адекватные сборки. Но для этого понадобится торрент-клиент и регистрация на сайте. Чтобы открыть запрещенный Роскомнадзором сайт трекера понадобится плагин "Доступ к рутрекеру" для Chrome. Так как это пиратская взломанная версия, то в посте с Sony Vegas на рутрекере идет "Инструкция видео HD по лечению", в скачанных файлах также есть инструкция по лечению. "Лечение" (взлом) займет минуты 2, но потребует внимательности. Для активации русского языка нужно в скачанных файлах запустить Russian.reg, и перезапустить Sony Vegas Первичная настройка Sony Vegas Заходим в "Настройки" и в самом низу "Параметры", потом вкладка "Видео". Первым делом выставляем доступный объем оперативной памяти для видеоредактора. Обычно советуют выставлять не больше половины от всей оперативки. Но если вы часто пользуетесь одновременно 2-3 запущенными копиями программы, тогда лучше разделить это число соответственно на 2 или 3. На скорость рендера объем оперативки влияет слабо, больше влияет на удобство в процессе монтажа. На вкладке "Общие" я убрал галочку с "Автоматически открывать последний проект при запуске", так как часто запускаю Sony Vegas по разным делам, и некоторые крупные проекты грузятся долго, напрягает ждать, чтобы закрыть их. Там же можно убрать "Используйте Net Notifly, чтобы быть в курсе новинок от Sony" это окошко, которое всплывает каждый раз при запуске и только мешает. Монтаж в Sony Vegas Монтаж всегда начинается с того, что вы убираете ресемплирование у добавленных в Sony Vegas видеофайлов (почему Sony Vegas это не делает автоматически вопрос века). Есть два варианта: по одному (простой) или сразу всех файлов (более умный). По одному это кликнуть правой кнопкой на добавленном видеофайле, нажать "Свойства" и поставить галочку "Убрать чересстрочное мерцание", а чуть ниже выбрать "Отключить ресэмплирование". Это применится только к конкретному фрагменту (отрезку) видеофайла, но к другому его кусочку нет. Более умный способ, позволяющий сделать это со всеми видеофрагментами сразу - выделяете на дорожке в самом начале самый нижний видеофрагмент, а в конце линии времени с зажатым Shift выделяете самый дальний и верхний (если несколько видеодорожек одна над другой) фрагмент. Потом правой кнопкой по любому выделенную файлу и выпадающее меню "Переключатели", там выбирайте то же самое, что и в первом варианте: "Убрать чересстрочное мерцание" и "Отключить ресэмплирование". Все файлы через cltr+A выделить нельзя, так как если захватываете аудиофайлы, то это выпадающее меню недоступно. Что такое ресемплирование? Представьте, вы сняли видео с частотой 25 кадров, а сохраняете (рендерите) видео в 30 кадров в секунду. Sony Vegas'у откуда-то надо будет взять лишние 5 кадров, он их берет путем наложения двух соседних кадров друг на друга, в итоге мы получаем смазанность. Но еще немаловажно, что ресемплирование замедляет работу, как в процессе монтажа, так и рендера. Поэтому отключение немного прибавит производительности. Кстати, у картинок или фотографий также нужно отключать ресемплирование, особенно если они будут двигаться, например, увеличиваться (zoom). Более того, даже у текста можно отключать ресемплирование. У меня уже рефлекс при добавлении видео на шкалу времени Sony Vegas отключать ресемплирование, но также в больших проектах с множеством разнообразных фрагментов я перед рендером на всякий случай использую второй способ отключения, вдруг проскочили какие-либо фрагменты. Создание проекта Для начала нужно задать настройки (разрешение, частота кадров) проекта в процессе работы. Ведь при монтаже (еще до рендера) вы будете на предпросмотре видеть видео в каких-то пропорциях, в каком-то разрешении и с какой-то частотой кадров. Делается это через alt+enter. Я всегда выбираю "HDV 720-25p (1280x720; 25,000 кадр/c)" так как это достаточно качественно и не сильно нагружает комп в процессе монтажа. Рендер при этом может быть в 1920х1080 и с частотой кадров 50, одно другому не мешает, так как совпадет соотношение сторон 16:9. А если вы делаете проект в 4:3, например, 640х480, то при рендере в 16:9 некоторые элементы могут перекоситься. Чтобы уменьшить тормоза при предпросморе монтируемого материала можно снизить качество проработки и разрешение окна предпросмотра. Обычно у меня выставлено "Хорошее (половина размера)". Половина размера это значит, что выбранные вами настройки проекта 1280x720 делятся на 2, а "хорошее" это уровень проработки деталей, как качество графики в компьютерных играх. Частота кадров, выбранная в alt+enter влияет на шкалу времени (то где вы монтируете фрагменты), минимальный шаг (квант) деления это 1 кадр, если вы выберете 50 кадров в секунду, то на монтаже в секунде у вас будет 50 единиц. Мне обычно достаточно 25, даже если видеофайл-источник в 50. На рендер настройки в alt+enter не влияют. Настройки рендера в Sony Vegas Я использую два формата Windows Media Video V11 (*.wmv) и MainConcept AVC/AAC (*.mp4, *.avc). Если не хотите ни во что вникать, то новичку можно пользоваться преднастройками Windows Media Video V11 (*.wmv), дающимися по умолчанию, но только до 720p включительно. А если хочется улучшить, то желательно выставить в настройках количество кадров, как в источнике. Можно поднять битрейт где-то на 50%, это соответственно увеличит размер файла, но сделает его чуть более качественным. Набор настроек для 1080p почему-то нестандратный, поэтому его придется редактировать вручную. Самое главное убрать кривое соотношение сторон, на вкладке "Видео" в настройках шаблона рендера (не путайте с настройками предпросмотра alt+enter) в "Соотношение сторон пикс.:" поставьте "1,000 (квадрат)". Далее установите частоту кадров, и битрейт. Я рендерю 1080p в битрейте 12. MainConcept AVC/AAC (*.mp4, *.avc) чуть посложнее, но и интересней. Основное отличие его в том, что он чуть быстрее сам по себе, плюс при рендере к процессу подключается видеокарта (слишком старые нет), и если она достойна процессора, то с ней рендер может быть 2 раза быстрее. Минус в том, что при рендере с видеокартой общее качество чуть снижается, да и размер файлов у этого кодека выше. И еще этот формат любит делать готовый материал темнее, чем источник. Лечится это через "Спецэффекты выходного видеосигнала" (слева вверху над окном предпросмотра), где нужно выбрать "Уровни Sony", в которых установить "Студийный RGB в компьютерный RGB", чтобы стало светлее. Или "Компьютерный RGB в студийный RGB", чтобы стало темнее (на случай если у вас после рендера становится "светлее") Советы бывалых Делайте BackUp, сделать это просто - создайте в каталоге, где находится ваш файл проекта (.veg) папку BackUp и просто зажав cltr переместите туда файл проекта, он скопируется. В процессе работы переодически закидывайте туда копии (Win 7 вас спросит, что делать с совпадающими именами, выберите "переименовать и сохранить оба файла"). Это нужно, чтобы спокойней себя чувствовать, что можно откатить проект в любой момент. Но главное - бывает Sony Vegas зависнет прямо во время сохранения файла, и запорет сам файл сохранения. Было пару раз всего, но потерять десятки часов труда это весело. Автосохранение и восстановление не всегда спасает. В процессе работы после каждого важного действия не забывайте сохранять проект cltr+S. Отличный способ работы на медленных компьютерах - если я делаю обзор на фильм в 1080p, то я также скачиваю с Ютуба его 360p-версию. Монтирую с ней, так как она требует в разы меньше ресурсов, а перед рендером нажимаю на любой фрагмент файла правой кнопкой, выбираю "Выбрать из списка медиафайлов проекта", потом уже в списке правой кнопкой на нем, и выбираю "Заменить". Заменяю на 1080p-версию. Если нужно на шкале времени раздвинуть множество фрагментов, чтобы выставить туда кусочек, то можно использовать cltr+L. Включив этот режим вы можете двигать сразу все фрагменты на всех дорожках справа от курсора не выделяя каждый. Главное не забывайте его потом выключать, иначе при удалении или уменьшении размера фрагмента часть проекта наедет на другую. Обычно используется для того, чтобы врезать или вырезать из середины проекта какой-то элемент, и состыковать другие его части.
  3. Константин Орлов

    Photoshop 2017 (взломанный, русифицированный)

    Кисти для фотошопа (Ferox Brashes) DOWNLOAD: (233MB) http://bit.ly/Ferox40k
  4. Один из самых свежих русифицированных фотошопов. Официальная версия с кряком. Процесс взлома может показаться сложным, но займет не более 10 минут, не считая время установки фотошопа. Сам файл фотошопа весит 2 ГБ. Для скачки потребуется торрент-клиент. Инструкция по установке Скачайте торрент-файл по ссылке http://gig-torrent.org/load/soft/adobe_photoshop_cc_2017_18_0_2016_pc/7-1-0-20039 Скачается образ диска фотошопа Смонтируейте его с помощью Alcohol 120% Установите Фотошоп запустив AutoPlay.exe с эмулиованного диска Инструкция по активации (взлому): Проблемы при установке и их устранение
  5. Константин Орлов

    Инструкция по Sony Vegas

    Много плагинов для Vegas: Скачать: https://vk.com/dorriankarnett?w=wall-66329915_2562 (инфа по установке в видео)
  6. Константин Орлов

    Инструкция по Sony Vegas

    Плагины NewBlue FX Это дополнительные эффекты для Sony Vegas (MAGIC Vegas Pro0), тестировал на 13 и 15 версии. Позволяют хорошо осветлить тени, и имеют еще множество возможностей. Установка: скачать торрент с NewBlue, установить каждый плагин (я выбирал установку на все программы, так как непонятно, что выбирать, чтобы установилось только в Vegas), крякнуть плагины прилагающимся кряком. Скачать плагины https://rutracker.org/forum/viewtopic.php?t=4938224
  7. Константин Орлов

    Как перевести текст в речь

    Acapela Multimedia: MS-Sapi 5.1 layer для windows 8 и 8.1 и 10 - файл для голосового движка Алена, дело в том, что этот движок на новых версиях Виндовс может приводить к зависанию программы, поэтому необходимо найти, где у вас установлен такой же файл AcaTtsSapi5.dll и заменить его скачанным. acattssapi5.dll
  8. Константин Орлов

    Как перевести текст в речь

    Speech2Go 1.124 Full + MiniSpeech 1.116 + IVONA voices 2 1.6.75 MAXIM IVONA VOICE & TATYANA IVONA VOICE - программа для перевода текста в речь с возможностью сохранения в Mp3 файл. Два голоса мужской и женский (Максим и Татьяна). IVONA voices 2 (49) + IVONA Reader - другая программа для озвучки текста голосом, с тем же функционалом, но есть только женский голос.
  9. Константин Орлов

    Инструкция по Sony Vegas

    Новая версия Sony Vegas - MAGIX Vegas Pro 15.0 Выше инструкция по Sony Vegas Pro 13, но она актуальна и для новой версии редактора MAGIC Vegas PRO 15. Я перешел на 15-ю версию, и не жалею. Пару багов исправили, теперь не надо каждый раз перед рендером крупного проекта перезапускать Вегас, так как он теперь не виснет. Скачать портативную версию (не требует установки) MAGIX Vegas Pro v15.0 Build 384 (x64) Portable by Alz50 (запускать Vegas150.exe) Скачать обычную версию (с установкой) MAGIX Vegas Pro v15.0 Build 387 (x64) Final Скачать MAGIX Vegas Pro 15.0 Build 177 RePack by PooShock (у меня не заработало)
  10. Константин Орлов

    Инструкция по Sony Vegas

    Vegasaur - Профессиональный монтаж в MAGIX Vegas Pro Профессиональный монтаж - это когда необходимо более детально изучить программу и дополнения к видеоредактору, чтобы делать нужные вещи. Например^ рендерить по 10 фрагментов подряд в очереди, массово менять настройки зума, обрезки, копировать настройки зума из одного фрагмента, вставлять в другой, массово создавать субтитры из названия файла и region, выгружать субтитры из файла в регион, при массовом рендере многих фрагментов автоматически добавлять в начало и конец нужные фрагменты (заставка, концовка), и прочее. Для этого есть программа Vegasaur, которая является дополнением к Вегасу. Скачать Vegasaur 3.2.2 RePack by KpoJIuK [2017, ENG] (через торрент). Более новая версия 3.3.5 (без торрента): https://yadi.sk/d/Ai2HRD0AcD5P3w Инструкция по Вегазавр: Обзор дополнения Vegasaur для Sony Vegas
  11. Константин Орлов

    Как скачать фрагмент видео с Youtube

    Youtube Downloader HD 2.9.9.30 Программа для скачивания видео с Ютуба, работает с компьютера, а не в браузере. Скачивает быстро и в 1080p. Скачать: http://www.softportal.com/get-12053-youtube-downloader-hd.html
  12. Константин Орлов

    Как скачать фрагмент видео с Youtube

    CUT-VIDEO.COM - как вырезать фрагмент из видео онлайн Вводите ссылку на видео в специальную форму на сайте https://cut-video.com/ru/ Выбираете "Вырезать" Перематываете к началу вырезаемого фрагмента (для удобства позиционирования можно использовать перескок от 0.04 секунды (1 кадр) до 2 минут) Нажимаете "Начать" Выбираете конец вырезаемого фрагмента, нажимаете "Готово". Вам покажут отдельно фрагмент для скачки. Нажимаете "Скачать". Также этот сайт может: скачать mp3 из видео на ютубе сделать gif-анимацию скачать скриншот скачать видео полностью
  13. Константин Орлов

    Мой подход к изучению C# и Unity3d

    Два с половиной месяца изучая Unity и C# я сформировал для себя принципы эффективного обучения. Описано в формате советов (так удобней читать), но руководствоваться ими или нет, решайте сами. Это мое мнение, как эффективно учиться, а не как сделать супер-игру. Не зацикливайтесь, если что-то не получается Бывает, что в Unity вы не можете реализовать то, что хотите, например, не знаете, как это делать, или что-то не работает и непонятно почему. Не стоит тратить на это весь день, лучше это за время изучите 10 не менее важных, но других аспектов движка. Просто возьмите другой видеоурок, и прорабатывайте другую тему. Например, я как-то потратил полдня в поисках, как отредактировать Read-Only анимацию. А через пару недель в случайном ролике увидел, как это делается. При наличии урока решение проблемы занимает 2 минуты, без него — несколько часов. Это иллюзия, что пока вы несколько часов тратите на это, вы изучаете редактор Unity. КПД такого «изучения» крайне низко по сравнению с просмотром конкретных видеоуроков (особенно от Stream). Боритесь с этой иллюзией, и не зацикливайтесь, вас никто не заставляет реализовывать что-либо сейчас — ваша основная задача научиться вообще, а не сделать игру к какому-то сроку. Главная задача научиться, а не сделать игру Возможно, кому-то это покажется нелогичным, но пока вы учитесь ваша главная задача научиться, а не сделать игру! Разница в том, что при подходе «главное сделать игру» вы делаете то, что мало полезно для обучения и занимает много времени, но необходимо для создания игры. Например, несколько дней делаете 150 разных визуализаций скиллов для нескольких классов вашей RPG, но если каждый раз с каждым новым скиллом вы применяете одни и те же знания, то развития почти нет. Это просто рутина. Есть и другой, более страшный случай, допустим, вы 2 дня кодили что-то объемное, а потом узнали, что это можно сделать в 10 раз проще, но вам мешало незнание возможностей языка C#. А вы как лесоруб, у которого нет времени заточить топор, торопитесь и рубите тупым топором. Поэтому точите топор, и помните во главе угла обучение (узнавание новых функций Unity3d и C#), а не создание игры. Ваши идеи не украдут Многие новички считают, что они придумали гениальную идею, за которой позарятся профессиональные акулы игростроя. Но не стоит бояться быть «обворованным», как правило, идеи новичков такие, что у профессионалов они вызывают лишь фейспалм. Проблема тут в том, что вы можете год втихую разрабатывать игру, а после релиза понять, что она никому не нужна. Так будет в 95% случаев, но вы могли бы сэкономить время, если бы просто описали идею игры на форуме, и попросили советов более опытных разработчиков. Есть шанс, что они вам объяснят, почему на это не стоит тратить времени, а также подскажут, как сделать лучше. В итоге вы повысите шансы на успех игры, и сэкономите время. Мой совет — не бойтесь делиться своими идеями, это даст обратную связь, как от игроков, так и от более опытных разработчиков. Ваша задача научиться, а навыку придумывать стреляющие идеи нужно учиться точно также, как и программированию. Но иллюзия о гениальности своей новичковской идеи это очень мощный стереотип, сидящий в фундаменте мировоззрения многих людей. Поэтому детально останавливаться на объяснении не буду, тут и целой статьи мало. Просто ответьте на вопрос — нужны ли профессиональному игроделу идеи нуба, который ни одной успешной игры не выпустил, или профессионал даже время не будет тратить, чтобы выслушать идею? Используйте готовые модели, карты, текстуры и т.п. чтобы ускорить релиз прототипа Если вы хотите сделать прототип, чтобы протестировать зайдет ли ваша идея игры, то это подразумевает уже меньше обучения, и больше рутинной работы. В таком случае используйте все готовое: ассеты, текстуры, модели, карту, музыку и прочее, чтобы избавиться от тонны рутинной работы, и ускорить в разы релиз прототипа. Не волнуйтесь, обучение не пострадает, вы сэкономите много времени, которое сможете потом потратить на обучение, просто сейчас вы получите релиз за 3 месяца, а не за 12 или 18. Но помните, быстрота создания прототипа должна быть за счет умения находить готовые ресурсы, а не за счет повышения пропорций рутинной работы в ущерб обучению новому. Зачем нужен релиз быстрее? Чем быстрее у вас будут выходить релизы прототипов, тем больше вы протестируете идей, тем больше у вас будет опыта за счет обратной связи. После сможете приступить к следующей игре, если эта не зайдет (а она не зайдет с вероятностью 95%). Например, не разрабатывайте свою систему смены дня и ночи, возьмите уже готовый ассет. А сэкономленное время потратьте на обучение и реализацию того, чего у вас нет в готовом виде (при наличии хорошего видеоурока или книги по этому, не забывайте про пункт "не зацикливаться", чтобы не тратить время с низким КПД). Конечно, готовые ресурсы с авторскими правами нельзя использовать в коммерции, но вероятность коммерческого успеха первой игры новичка низка, поэтому я бы сразу делал ставку на свободное распространение с целью получить обратную связь. А если ваша игра получит какой-то спрос, тогда и будет смысл заменить чужие ассеты на сделанные самостоятельно. Поясню - вы не потеряете ничего в плане обучения. Просто вы сейчас экономите время и не делаете то, что уже есть в готовом виде, а когда (и если!) вам понадобится научиться этому, тогда и приступите к его изучению. Изучите C# - это база Чем больше вы понимаете в C#, тем больше вы можете сделать. Пропорции изучения Unity и C# должны быть где-то 50 на 50. Если книги по C# для вас пока слишком трудны, то можете начать с видеоуроков, например, с видеокурса C# для маленьких и тупых. После него вы уже не будете испытывать такой страх перед книгами, и будете достаточно в теме, чтобы их читать. Лучшая книга по C# на данный момент это Язык программирования C# 5.0 и платформа .NET 4.5 (Эндрю Троелсен), уже вышла новая версия книги, но в интернете я ее не нашел, но и старая еще актуальна. По Unity3d рекомендую книгу Алон Торн - Искусство создания сценариев в Unity. Если при просмотре видеоурока по C# вам что-то непонятно, то просто найдите видео на эту тему от другого автора. Комбинируйте видеоуроки по Unity и C# с чтением книг и статей в удобном для вас порядке и чередовании, но помните, книга по C# это база, и основные ее главы нужно знать обязательно, если хотите не «с трудом делать легкие вещи», а «легко делать трудные вещи». Как читать книги по программированию Основная проблема это въехать в терминологию, чтобы понять, что написано. Даже если вы уже получили определение термина, то из-за их обилия и из-за того, что эти понятия для вас пока весьма абстрактны, предложения приходится перечитывать помногу раз. Читайте книги вслух. Не знаю с чем это связано, но бывает, что зачитывание книги в слух с интонированием, как будто пишешь аудиокнигу, упрощает понимание. Возможно, это помогает не отвлекаться на другие мысли и концентрироваться на тексте. Объясняйте понятое. Если вы поняли какой-то момент, то объясните его (можно вслух на запись, как-будто делаете видеоурок). Так вы лучше запомните. И сработает принцип из анекдота про учителя: «Я ученикам сто раз объяснил, уже сам понял, а они все не понимают». Объясняйте в правильных терминах. Так вы лучше их запомните, это поможет дальше читать книгу и правильно формулировать мысли на форумах. Объясняя термины и принципы работы языковых конструкций старайтесь находить максимально подходящие аналогии из других сфер, это поможет уложить в голове новую информацию. Объясняйте каждый пример кода из книги. В книге встречаются иллюстрирующие куски кода. Объясняйте, что делает каждая «команда» (оператор) и ключевое слово, причем в правильных терминах, чтобы привыкнуть. Например, это может выглядеть так: «Создаем экземпляр (объект) класса MyClass с именем Vas9, присваиваем ему значение с помощью конструктора, в который в качестве параметра передаем переменную 25», это все вы поняли из этой строчки: MyClass Vas9 = new MyClass (25); Потом идете туда, где описан класс MyClass, и смотрите, что там происходит, и объясняете это, например, так: «Используется перегруженный конструктор класса, принимающий в параметры одну переменную типа int, и устанавливающий ее в приватное поле age. Конструктор по умолчанию не используется». Пример кода этого конструктора приводить уже не буду. Объясняете всю логику программы, рассказываете, почему что-то делается и что именно делается. Говорите так, как будто пытаетесь объяснить новичку. Старайтесь формулировать максимально точно в терминах, но дублируйте их и объяснением своими словами с аналогиями, чтобы термины лучше осели в голове. Делайте это со всем кодом каждого примера, даже если что-то новое представлено лишь в части кода. Так вы всегда будете понимать всю суть программы, и будете чувствовать себя уверено. Объясняйте себе весь код до тех пор, пока какие-то конструкции языка не станут для вас насколько очевидны, что просто посмотрев на них вы поймете про них все. Изучайте английский Если вы решили изучить C# и Unity, то у вас появилась отличная возможность выучить и английский язык. Называйте объекты на английском. Объекты - это классы и переменные в коде на C#, а также объекты в иерархии Unity. Просто выбираете максимально логичное имя для переменной на русском языке, идете в Яндекс-переводчик и вводите фразу. Не бойтесь запутаться, как правило, из контекста будет понятно значение, а если вы забыли, то это хороший повод повторить перевод слова. Переводите слова из Unity и C#. Смотрите, что значат в переводчике настройки, меню и прочий интерфейс Unity, а также ключевые слова C#. Это позволит понять, что делает конкретная настройка, и выучить слова. Нажимайте несколько раз на кнопку озвучивания в переводчике, чтобы запомнить, как слово воспринимается на слух, а лучше даже повторить за роботом, стараясь правильно произнести. Нехорошо знать значение слова «options», но называть это «оптионс», а не «опшенс». Говорят, лучший способ выучить язык — это поехать в соответствующую страну и там общаться на нем. Это работает за счет постоянного и всестороннего взаимодействия со словами на другом языке. Вы можете сделать нечто похожее, и взаимодействовать с английскими словами называя ими свои объекты. С одной стороны это замедляет изучение C# и Unity, так как приходится переключаться на переводчик, прослушивать звучание слов, но со временем вы выучите больше слов, что наоборот ускорит развитие. Релизьте свои скрипты и префабы Если вы сделали какой-то универсальный игровой элемент (например, полоску здоровья с регенерацией или ходьбу NPC), то опубликуйте его, чтобы им могли воспользоваться другие. Так вы можете получить обратную связь о вашем коде, вам подскажут, что можно улучшить. Сделайте видеоурок, как установить вашу разработку, а также отдельно без воды, пространных рассуждений и отвлеченных тем объясните, как работает код. Постарайтесь делать максимально кратко, точно по терминам, но понятно для других новичков. Объясняя другим — сами лучше поймете. Только не делайте плохие видеоуроки. Яндексите (гуглите) Если что-то не получается, то не ковыряйтесь больше нескольких минут, нередко в поисковике можно найти готовый ответ на ваш вопрос. Бывает обидно провозиться минут 20-30, думая, что в поисковике нет ответа, а потом загуглить и почти сразу найти ответ. Если в поисковике ответа нет, тогда обратитесь на форумы gcup и unity3d, только не забудьте сначала пройтись местным поиском по форуму. Изучайте горячие клавиши и Visual Studio Это из разряда «точить топор лесоруба», очень экономит время. Вот неплохое видео «15 советов, ускоряющих работу в Unity», но ищите и другие. В Visual Studio узнайте, как делать рефакторинг (например, переименование одной переменной сразу во всех скриптах) и прочее. Современные среды разработки имеют большой функционал, поэтому если вам чего-то не хватает, то, скорее всего, это уже реализовано, надо только узнать, как им пользоваться. Почему изучать Unity и C# полезно? Это поможет выучить английский язык. Вы сможете делать не только 3D-игры, но и немного научитесь работать с 3D-редактором. Конечно, Unity3d не для того, чтобы редактировать 3D (внезапно!), но, например, сделать какой-нибудь лесок с моделькой горящей машины, и в кустах модельку медведя, вы сможете без проблем из скачанных ассетов. Это может понадобиться для видеомонтажа, когда нужна соответствующая сцена, ведь и мультики на Unity рисуют. Сделаете, к примеру, и макет города, даже физика есть в Unity. Но все-таки это движок для создания игр, поэтому все вышеописанное доступно на примитивном уровне по сравнению со специализированными программами. Язык C# полезен, как таковой, он используется не только для Unity. Вы сможете писать программы на C# под Windows. Unity позволит вам без особого труда делать игры и просто софт под мобильные телефоны на Android. Достаточно просто перекомпилировать проект под Android, также можно скомпилировать проект под работу в браузере (WebGL). В данный момент Unity это самый популярный игровой движок среди инди-разработчиков, а C# популярный язык программирования, который многим не раз пригодится за их долгую жизнь. Если не знаете с чего начать, то тут я для себя собирал все интересные видеоуроки, статьи и прочие полезные ссылки по C# и Unity. Такое мое мнение, не претендую на истину, но я делаю так, как описал.
  14. Константин Орлов

    Unity: как сделать пианино

    Очень простой скрипт, который позволит сделать пианино на игровом движке Unity. Скачать скрипт и префаб пианино https://yadi.sk/d/nQsME47c3Z673H PianoKey.cs using System.Collections; using System.Collections.Generic; using UnityEngine; public class PianoKey : MonoBehaviour { // звук для воспроизведения при нажатии клавиши (нота пианино) public AudioSource sound; // ссылка на главный скрипт, чтобы брать из него инфу public PianoManger Manager; // при нажатии на клавишу void OnMouseDown() { // утапливаем ее transform.position -= Manager.pressureDegree; // активируем звук клавиши sound.Play(); } // при отпускании мыши void OnMouseUp() { // возвращаем клавишу на место transform.position += Manager.pressureDegree; } void Start () { // проверка, что вы не повесили два раза скрипт на клавишу PianoKey[] countScript = GetComponents<PianoKey>(); if (countScript.Length > 1) Debug.LogWarning("На клавише больше 1-го экземляра скрипта! " + transform.name); // проверки есть ли ссылка на аудио сурс и есть ли в аудио сурсе аудиоклип if (sound == null) Debug.LogWarning("Укажите, какой AudioSource будет для кнопки! " + transform.name); if (sound.clip == null) Debug.LogWarning("Задайте Clip в AudioSource в инспекторе! " + transform.name); } void Update () { } } PianoManger.cs using System.Collections; using System.Collections.Generic; using UnityEngine; public class PianoManger : MonoBehaviour { // степень нажатия клавиш [Tooltip("Укажите, насколько смещать клавиши при нажатии")] public Vector3 pressureDegree = new Vector3(0, 0.002f, 0); // Use this for initialization void Start () { } // Update is called once per frame void Update () { } }
  15. Константин Орлов

    Unity: скрипт на инвентарь от Stream

    Тема неактуальна, есть новая версия: Unity: Инвентарь и крафт
  16. Константин Орлов

    Unity: скрипт на инвентарь от Stream

    Для начала посмотрите видеоуроки от Stream: https://www.youtube.com/watch?v=Y-OpWcRhgJ0 - полностью https://www.youtube.com/watch?v=wgl69JPczG0 - до 28 минуты (дальше не делал, и мой скрипт дальше не развивался, там идет про то, как брать предметы в руку) Теперь, если хотите лучше понять, как это работает, то посмотрите мое видео: Новичку без просмотра видео по Unity-инвентарю от Steam'а будет почти невозможно разобраться. Мое видео в качестве бонуса детальней разжевывает, как работает алгоритм, плюс в моих скриптах добавлены комментарии. Пару замечаний: в своем втором видео Stream переименовал в cell префаб, который в первом видео называл Panel картинки-спрайты для отображения в инвентаре необходимо сделать в инспекторе Sprite (2D and UI) А теперь мои скрипты и префабы (единственное отличие у меня предметы берутся не райкастами по клику мыши, а подбираются при соприкосновении ими через коллайдер игрока). Чтобы не вносить путаницу я не стал изменять скрипт после записи своего видео, если нужно можете самостоятельно переименовать названия переменных в более логичные. В архиве скрипты на инвентарь Inventory, Item, Drag, Drop, пару префабов (куб, сфера), иконки для префабов, и в качестве бонуса префаб CanvasInvetory: скачать AssetsInventoryStream.rar или с Яндекс Диска https://yadi.sk/d/Ynpn7bfj3WfZr8 Что делать с этими скриптами смотрите в видео Стрима Тексты скриптов на инвентарь (превью): Inventory.cs Item.cs Drag.cs Drop.cs
  17. Скрипт для Unity, который использует трюк числами, когда за 5 вопросов, компьютер угадывает, какое число в пределах 1-30 загадал игрок. Можно интегрировать в любой проект, достаточно вынести префаб на сцену. Скачать https://yadi.sk/d/Y47u1vzk3Ynr6t 280 кб Код скрипта с# для Unity3d (для работы необходим префаб по ссылке выше): using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; // для работы с текстом /// <summary> УГАДЫВАНИЕ ЗАГАДАННОГО ИГРОКОМ ЧИСЛА с помощью 5 карточек </summary> public class GuessNumber : MonoBehaviour { // Алгоритм угадывания - пользователю показывают 5 карточек с разными числами, если на карточке есть загаданное число, он // нажимает согласие, если нет, то отрицание. Числа на карточках подобраны так, что зная, на какой из карточек есть, а на // какой нет загаданного числа, можно вычислить, какое число загадно. [Tooltip("Какой символ будет заполнять полосу загрузки?")] public string loadingSymbol = "00 "; [Tooltip("Продолжительность эмуляции загрузки между панелями (секунды)")] public float loadingDelay = 1; [Tooltip("Количество делений у полосы загрузки")] public float countDivisionLoadBar = 10; // заглавная панель с предложением загадать число public GameObject panelChange; // массив панелей (5 шт) с опросом есть ли на экране загаданное число public GameObject[] panelsGuess; // панель выводящая, какое число загадано public GameObject panelResult; // текст сообщения с информацией о загаданном числе public Text textResult; // текст для симуляции процесса загрузки public Text loadingBar; // алгоритм программы сюда записывает загаданное пользователем число int guessNubmer = 0; // если на панели есть загаданное число, то в ButtonStart сюда прибавляет соответствующее значение (для каждой панели разное) // если нет (когда пользователь нажимает кнопку отрицания), то ничего не добавляется public void ButtonStart() { panelChange.SetActive(false); // выкл панель выбора числа panelsGuess[0].SetActive(true); // выкл первую угадывательную панель } // КНОПКА ДА, когда пользователь подтверждает, что на панели есть загаданное число // (вызывается кнопкой на экране, кнопка передает в качестве параметра номер текущей панели) public void ButtonYes(int numberCurrentPanel) { // если это панель под номером таким-то то добавляем к загаданному числу соответствующее значение // далее переходим к другой панели через корутину с задержкой if (numberCurrentPanel == 0) { guessNubmer += 1; StartCoroutine(GoToNextPanelDelay(numberCurrentPanel)); } if (numberCurrentPanel == 1) { guessNubmer += 2; StartCoroutine(GoToNextPanelDelay(numberCurrentPanel)); } if (numberCurrentPanel == 2) { guessNubmer += 4; StartCoroutine(GoToNextPanelDelay(numberCurrentPanel)); } if (numberCurrentPanel == 3) { guessNubmer += 8; StartCoroutine(GoToNextPanelDelay(numberCurrentPanel)); } if (numberCurrentPanel == 4) { guessNubmer += 16; StartCoroutine(GoToNextPanelDelay(numberCurrentPanel)); } } // КНОПКА НЕТ, когда пользователь не видит своего числа на панели public void ButtonNo(int numberCurrentPanel) { StartCoroutine(GoToNextPanelDelay(numberCurrentPanel)); // переходим к следующей панели с задержкой } // переход к следующей панели и задержка, чтобы видна была анимация эмуляции загрузки protected IEnumerator GoToNextPanelDelay(int numberCurrentPanel) { // закрывает текущую панель panelsGuess[numberCurrentPanel].SetActive(false); // запускаем "анимацию" эмуляции загрузки StartCoroutine(LoadingBar()); // задержка в секундах, чтобы видеть анимацию yield return new WaitForSeconds(loadingDelay); // если активировать нужно не 5 панель (5-я результирующая), то активируем (нумерация с 0) if (numberCurrentPanel != 4) panelsGuess[numberCurrentPanel + 1].SetActive(true); // если это пятая панель, то выводим результат if (numberCurrentPanel == 4) Result(); // завершаем корутину yield break; } // "анимация" полосы загрузки protected IEnumerator LoadingBar() { loadingBar.text = ""; // ставим в ноль полосу загрузки (очищаем) int i = 0; // количество циклов (шагов загрузки) while (i < countDivisionLoadBar) // пока 5 раз не изменим полосу { // увеличиваем длинну полосы прибавляя символ загрузки к строке loadingBar.text += loadingSymbol; // чтобы из цикла выйти i++; // задержка в секундах между добавлением делений к полосе загрузки // делится общее время задрежки при загрузке на количество делений yield return new WaitForSeconds(loadingDelay / countDivisionLoadBar); } } // когда опрос закончен, вывод числа на экран void Result() { panelResult.SetActive(true); // вкл панель результата // если получилось от 1 до 30 if (guessNubmer > 0 & guessNubmer < 31) { textResult.fontSize = 300; // на случай если else изменил размер шрифта (число большим шрифтом эпичней выглядит) textResult.text = guessNubmer.ToString(); // заносим результат просчета алгоритма для вывода на экран } else // если пользователь вводил ошибочные ответы { textResult.fontSize = 70; // чтобы текст влез textResult.text = "Ошибка! Будьте внимательней! Попробуйте еще."; } } // кнопка на последней панели, перезапускает программу public void ButtonRestart() { guessNubmer = 0; // очищение переменной для угадывания panelResult.SetActive(false); // выкл результирующую панель panelChange.SetActive(true); // активация стартовой панели } // Use this for initialization void Start() { if (panelChange == null) Debug.LogError("Потеряна ссылка на panelChange"); if (panelsGuess == null) Debug.LogError("Массив панелей null"); if (panelResult == null) Debug.LogError("Потеряна ссылка на panelResult"); if (textResult == null) Debug.LogError("Потеряна ссылка на textResult"); if (loadingBar == null) Debug.LogError("Задайте текст в loadingBar"); } // Update is called once per frame void Update() { } }
  18. Константин Орлов

    Unity HP-bar и health-system для мобов и NPC

    Скрипт на отображение хп-полоски и имени моба в игре + скрипт на регенерацию ХП с остальной системой здоровья. Скачать скрипт и демо-сцену Unity: https://yadi.sk/d/C_EREeAM3YSs35 (архив HPbarLivingNoPass.rar) Как установить: Как устроен код скрипта: Эти видео попутно помогут слегка разобраться в темах C#: делегаты и события корутины наследование в Unity
  19. Константин Орлов

    Unity методы доступа к скриптам и объектам

    Также смотрите тему с видео: Unity как из скрипта получить доступ к другом скрипту?
  20. Как на C# в Unity получить доступ к переменным другого скрипта? Если в видео вам не понятно, то разжую на пальцах. Для примера у вас на GameObject (так называют любой объект на сцене) висит 2 скрипта, вам нужно, чтобы один скрипт у другого мог вызывать его функции или менять переменные. Получить доступ к скрипту на том же объекте Синтаксис получения. Сначала вам в первом скрипте необходимо создать переменную, которая будет ссылаться на второй скрипт вашего GameObject. Потом положить в эту переменную ссылку на второй скрипт, далее использовать переменную для работы с переменными и функциями второго скрипта. И все. Очень просто, теперь как это делается. Весь код делается в первом скрипте, сначала мы создаем переменную, в методе Awake или Start приписываем ей ссылку, и далее уже в нужных местах (Start или Update) будем через нее обращаться к "членам" (функциям и переменным) второго скрипта. Вы должны знать имя второго скрипта, это имя (название скрипта, оно же является классом) будет "типом переменной". Официальная терминология очень умная и непонятная, поэтому скажу проще - создаете переменную, как обычно, вроде "private int X", только вместо типа int используете название вашего скрипта (оно же класс). Например, "private HealthSystem ImyaPeremennoi", таким образом вы создали переменную, в которую можно положить ссылку на скрипт, который называется HealthSystem (в вашем случае название скрипта другое). Название переменной может быть любым, а тип переменной должен быть таким же, как название второго скрипта, с которым вы хотите работать из первого. Итак, вы создали переменную, тип которой совпадает с названием второго скрипта, а имя переменной может быть любым. Теперь в эту переменную нужно положить ссылку на второй скрипт, так как мы создали лишь пустой "контейнер", и задали его "тип", но еще не указали, какой конкретно экземпляр этого скрипта будет находиться в переменной. А экземпляров может быть несколько, если у вас один и тот же (второй) скрипт прикреплен к нескольким объектам. Поэтому после строчки "private HealthSystem ImyaPeremennoi;" в методе Awake/Start нам надо сделать следующее ""ImyaPeremennoi = GetComponent<HealthSystem>();". То есть до этого мы создали переменную и решили, какого она будет типа. А сейчас мы засунули в нее скрипт с названием HealthSystem (это второй скрипт), который должен находиться на том же объекте, что и первый скрипт, где мы пишем все эти строчки. Конструкция "ImyaPeremennoi = GetComponent..." значит, что в эту переменную мы поместим ссылку на какой-то компонент, который есть у нас на объекте. Это может быть Rigitbody, Collider, Transform (который автоматически есть у всех объектов) - все это компоненты. Скрипты тоже компоненты, ведь они находятся в инспекторе, и добавить их можно с помощью кнопки Add Component. В данном случае в переменную с типом (то есть с видом или "породой") "HealthSystem" мы можем поместить только скрипт HealthSystem. Итак, еще раз: мы создали переменную с определенным типом "private HealthSystem ImyaPeremennoi;", чтобы туда засунуть ссылку на скрипт. Все это делалось в одном скрипте (имя его может быть любым, главное, чтобы он был на объекте), а доступ будем получать к другому скрипту, который в нашем примере называется HealthSystem (тут как будто бы все переменные и функции, отвечающие за ХП игрока). Потом мы засунули в переменную ImyaPeremennoi ссылку на скрипт HealthSystem, написав следующее: "ImyaPeremennoi = GetComponent<HealthSystem>();". Теперь используя переменную ImyaPeremennoi мы можем через нее обращаться к переменным и функциям скрипта HealthSystem. Например, скрипте HealthSystem есть публичная переменная Zdorovie (public int Zdorovie = 100;) , отвечающая за здоровье игрока, попробуем в нашем первом скрипте изменить ее. Пишем "ImyaPeremennoi.Zdorovie = 50;" теперь наш первый скрипт напрямую меняет переменную у второго скрипта. Также первый скрипт может вызывать функции из второго скрипта, например, во втором скрипте прописана функция Jump();, вызов которой заставляет игрока подпрыгнуть. Ее можно взывать так "ImyaPeremennoi.Jump();" Как получить доступ к скрипту другого объекта Тут принципы те же, с той лишь разницей, что добавляется еще одно действие. В первом примере, когда мы писали "ImyaPeremennoi = GetComponent<HealthSystem>();", мы имели в виду следующее "ImyaPeremennoi = _у_этого_объекта_ GetComponent<HealthSystem>();", то есть компонент брали у того же объекта, на котором висит первый скрипт с этим кодом. Поэтому по умолчанию, когда вызывался GetComponent он знал, с какого объекта брать компонент. По сути мы писали в скрипте "команду", какой нужно получить компонент, но не указывали у кого мы его берем, так как подразумевается, что с себя. Сейчас же надо просто указать пальцем, у кого берем компонент. Для этого надо создать еще одну переменную, куда мы поместим ссылку на другой объект. Пишется это так "public GameObject DrugoiObiekt" - мы создаем публичную переменную (public) с названием DrugoiObiekt, и поместить в нее можно будет что-то, у чего тип GameObject. А GameObject - это "базовый" тип любого объекта на сцене. Итак, как и в первый раз мы сначала создали переменную "контейнер", которая предназначена для хранения любого GameObject'а, теперь нужно засунуть в нее конкретный объект, с которым мы будем работать. Так как мы сделали ее публичного типа (public), то вы можете в инспекторе перетащить из иерархии сцены любой объект в нее. Для этого вам нужно зайти в инспектор того объекта, на котором висит ваш первый скрипт (где мы писали весь этот код), и там появится специально поле с названием DrugoiObiekt. Когда вы туда перетяните объект, то скрипт будет знать, какой именно объект подразумеваете в переменной DrugoiObiekt. Ссылку на объект мы теперь получили, она после перетягивания хранится в DrugoiObiekt, но теперь нужно получить ссылку на скрипт, который висит на этом другом объекте. А чтобы получить ссылку на скрипт нам нужна переменная, которая ее будет хранить. А чтобы переменная хранила ссылку на скрипт, она должна быть быть таким же типом, как и название скрипта. В нашем случае у DrugoiObiekt скрипт также называется, как и раньше - это HealthSystem. Поэтому мы можем создать переменную типа HealthSystem, например, так: "private HealthSystem HealthSDrygogoObiekta;". Теперь в эту переменную-ссылку нужно "положить скрипт" с другого объекта. Делается это так "HealthSDrygogoObiekta = DrugoiObiekt.GetComponent<HealthSystem>();". Мы это уже делали, только тут всего два отличия. Первое это другое имя переменной, если раньше она называлась ImyaPeremennoi, то теперь HealthSDrygogoObiekta, а тип у этих переменных одинаковый, так как они обе предназначены для хранения ссылки на скрипт HealthSystem. Второе отличие, что теперь мы указываем у кого мы берем компонент. Если первый раз достаточно было написать "GetComponent<HealthSystem>();", и было понятно, что компонент HealthSystem мы берем с того объекта, на котором висят эти строчки кода, то теперь явно указываем объект - DrugoiObiekt. Как вы помните в переменной DrugoiObiekt у нас хранится ссылка на другой объект, который вы перетянули в инспекторе. В итоге у нас переменная HealthSDrygogoObiekta содержит ссылку на скрипт другого (внешнего, так сказать) объекта. Теперь мы можем у него менять переменные и использовать функции, которые есть в его скрипте HealthSystem. Например, "HealthSDrygogoObiekta.Zdorovie = 55;" или "HealthSDrygogoObiekta.Jump();", если у скрипте HealthSystem есть функция Jump();
  21. Константин Орлов

    Unity как из скрипта получить доступ к другом скрипту?

    Также смотрите тему, где разжевано чуть по-другому, и чуть больше информации Unity методы доступа к скриптам и объектам
  22. Константин Орлов

    Unity Как редактировать анимацию (Read-Only)

    Рассмотрим, как отредактировать анимацию, которая в Unity помечена, как (Read-Only). Анимация, встроенная в FBX-файл не поддается редактированию, например, скачав с Asset Store ассет воина, где есть анимация и моделька, в префабе вы увидите множество анимаций: Чтобы отредактировать анимацию только для чтения, необходимо выделить нужный элемент (или через shift сразу все), и нажать CLTR+D. Таким образом вы сделаете дубликат, и он уже доступен для изменения в окне Animation. Как редактировать анимацию Анимация доступна для редактирования, и дальше, надеюсь, вы знаете, что делать. Если не знаете, то разберем пример редактирования анимации. Теперь необходимо взять модельку, к которой вы хотите добавить анимацию, вывести ее на сцену, и повесить ей компонент Animator (при переносе префаба на сцену Animator уже может быть на игровом объекте). Далее создать контроллер анимации (Create > Animator Controller), и в компоненте его перенести в переменную Controller. На скрине контроллер называется WarriorAnimControl. Выделяете в иерархии нужный объект (в нашем случае WarriorMy), и в окно Animator (Window > Animator) переносите нужные дубликаты анимации. Теперь в окне Animation (Window > Animation не спутайте его с Animator), у вас будут доступны для редактирования анимации, перенесенные в Animator. На этом скрине сначала был создан аниматор с Read-Only анимацией, а потом одну из анимаций я заменил на редактируемую. Теперь могу применять к ней Add Prorerty. Как заменить нередактируемую анимацию на редактируемую в готовом аниматор-контроллере? Выделяете нужный аниматор-контроллер. В окне Аниматор выделяете нужную анимацию. В инспекторе в переменную Motion перетягиваете новую редактируемую анимацию (например, которую мы дублировали из префаба). Мы рассмотрели лишь то, как сделать анимацию Read-Only редактируемой, подробную информацию по редактированию анимаций можно получить, если поискать соответствующие уроки на ютубе, можно заглянуть в мой плелист уроков по Unity:
  23. Константин Орлов

    Unity: полезные скрипты (команды)

    Полезные для новичков скрипты c# для Unity. Тут как отдельные "команды" (что-то вроде записной книжки, чтобы не заучивать синтаксис), так и небольшие кусочки кода, которые помогут лучше понять принципы работы. Как из скрипта включить/выключить другой скрипт Указываете вместо ActivateScript имя своего метода, а вместо NameScript имя скрипта, который прикреплен к объекту. Оставляете gameObject, если этот код будет отключать другой скрипт, который прикреплен на этом же объекте. Если нужно, чтобы этот код был на одном объекте, а выключал он скрипт у другого объекта, тогда необходимо создать публичную переменную типа GameObject и в инспекторе поместить в нее нужный объект, на котором включаем/выключаем скрипт. Для выключения скрипта в коде замените true на false. //активирует скрипт (если таковой есть) https://gcup.ru/forum/59-41557-1 public void ActivateScript () { gameObject.GetComponent<NameScript>().enabled = true; } Поиск объектов Unity Поиск по тегу Присваивает переменной ссылку на игрока, находя его по тегу: GameObject PlayerFound = GameObject.FindGameObjectWithTag("Player"); Поиск по имени в редакторе GameObject foundObject = GameObject.Find("NameObjectFromHierarhy"); Создает переменную типа GameObject под названием foundObject ("найденный объект"), и помещает туда объект, который найдется на сцене (в иерархии юнити) с именем NameObjectFromHierarhy.
  24. Константин Орлов

    Unity: полезные скрипты (команды)

    FPS - заблокировать камеру и отобразить курсор Если нужно в стандартном FPS контроллере (FPSController, а не RigidBodyFPSController) из ассетов заблокировать движение камеры и вывести курсор по нажатию кнопки, то можно это сделать с помощью кода. Редактируем FirstPersonController.cs В Update пишем это // вкл/вык курсор if (Input.GetKeyDown(KeyCode.Z)) { m_MouseLook.SetCursorLock(!m_MouseLook.lockCursor); // при каждом вызове вкл/выкл отображение курсора BlockMouseRotate(); // при каждом вызове вкл/выкл вращение камеры за курсором } Вне каких-либо методов в том же файле: // БЛОКИРУЕТ ДВИЖЕНИЕ МЫШЬЮ float oldXSensitivity; // для сохранения изначальной Х сенсы мыши float oldYSensitivity; // для сохранения изначальной Y сенсы мыши bool isMouseBlock = false; // переключатель для проверки поставили ли мы сенсу на 0 void BlockMouseRotate() { if (isMouseBlock == false) // если мы еще не блокировали мышку { // сохраняем старые значения oldXSensitivity = m_MouseLook.XSensitivity; oldYSensitivity = m_MouseLook.YSensitivity; // блокируем поворот мыши m_MouseLook.XSensitivity = 0; m_MouseLook.YSensitivity = 0; // переключатель в режим блокирования isMouseBlock = true; } else // если мыш уже заблокирована { // восстанавливаем старые значения поврота (разблокируем) m_MouseLook.XSensitivity = oldXSensitivity; m_MouseLook.YSensitivity = oldYSensitivity; isMouseBlock = false; // переключатель в "мыш не заблокирована" } } Теперь по нажатию Z у вас перестает вращаться камера и появляется курсор. Повторное нажатие обращает изменения. На RigidBodyFPSController не тестировал, на виде от третьего лица тоже.
  25. Константин Орлов

    Unity динамически сменить день на ночь

    Unity динамически сменить день на ночь! Мощный пак Unity3d для смены суток с большим количеством настроек. Динамическая смена дня и ночи позволяет видеть закаты и рассветы, появляются звезды. Небесные тела и объекты движутся согласно реальному поведению - облака плывут по небу по ветру, Солнце и Луна двигаются, как должны, звезды также вращаются по небосклону. Можно задать продолжительность суток, изменение освещенности со временем. Включить и выключить Солнце или Луну. Unity-пак для динамической смены дня и ночи. Особенности: дневное небо плавно сменяется на ночное расчет продолжительности дня, положения солнца и луны в зависимости от часа, дня и года движущиеся облака, звезды, Луна и Солнце настройки всего и вся осадки и атмосферные явления (вроде, я не тестил пока) вы можете сохранить и загрузить настройки через файл .xml Скачать пак Time of Day - Dynamic Sky Dome v3.0.0: https://yadi.sk/d/rcGt4Tkb3Y69ph или зеркало. Сокращенный перевод официальной инструкции с моими дополнениями: Time of Day - Dynamic Sky Dome v3.0.0 Unity3d-пакет для визуализации реалистичных динамических куполов неба с дневным и ночным циклом, реалистичными объектами на небе, динамическими (движущимися) облаками и атмосферным рассеянием. Какие-то понты: Как установить динамическую смену дня и ночи в unity3d Сделайте бекап вашего проекта на всякий случай. Распакуйте ассет-пак в ваш проект Unity, при запросе API Update Required нажмите "I Made a Backup, Go Ahead!". Отключите свой Directional light в иерархии, уберите skybox из вкладки Windows>Lightning>Settings>Scene>Skybox Material (выберите none). Перетащите prefab "Time of Day/Prefabs/Sky Dome" в сцену. Выставите масштаб и позицию префаба так, чтобы он охватывал всю сцену (т.е. поместите сцену в шар-неба). Добавьте скрипт Time of Day Camera в свою основную камеру (Add Component - > Time of Day - > Camera Main Script) По желанию добавьте любой из дополнительных скриптов к основной камере (Add Component - > Time of Day - > ). Можно включить или отключить любые дочерние объекты на сцене в префабе Sky dome (там солнце, луна, облака и прочее) В родительском объекте Sky Dome на сцене куча настроек, теребонькайте их, пока не получите нужный результат!

Powered by Invision Community
Поддержка Invision Community в России