Добро пожаловать в тред Unity - лучшего 3D и 2D игрового движка современности! ------------------Прошлый тред: >>449619 (OP) Шапка: http://www.writeurl.com/publish/zukmrogwv45ptyuseyol------------------Официальный сайт: https://unity3d.com/ruДокументация: https://docs.unity3d.com/ru/current/Manual/index.htmlУроки: https://unity3d.com/ru/learn/tutorialsФорум: https://forum.unity3d.com/Магазин ассетов: https://unity3d.com/ru/asset-storeUnityWiki: http://wiki.unity3d.com/index.php/Main_Pageyni : https://www.youtube.com/watch?v=gnkBKtnYeb8Made With Unity 2D Games Showreel 2017: https://www.youtube.com/watch?v=NMUr2yNALhU The Unity Awards 2017 Winners: https://www.youtube.com/watch?v=8--xPOlY7kU------------------------------------------------------------------На Unity сделано много замечательных игр - Rust, Блицкриг 3, Pillars of Eternity, Tyranny, Kerbal Space Program,ユニゲーム и многие другие. Главным преимуществом Unity перед другими движками является его простота для одиночной разработки. Не нужно иметь целую компанию девелоперов, чтобы сделать хорошую игру. Если ты один или имеешь небольшую команду и хочешь сделать хорошую игру без претензий на ААА, то Unity станет лучшим выбором. Тем не менее, даже крупные корпорации зачастую выбирают для своих игр именно Unity.===================================FAQ- Какие у Unity сильные стороны?- Простота разработки, удобный инструментарий, кроссплатформенность, богатая документация, огромное сообщество.- Какие у Unity слабые стороны?- Сложность в создании фотореалистичной графики. Для графики "как в Crysis" рекомендуется взять другой движок. Хотя Unity вполне способен выдавать не уступающую любым другим движкам картинку, это требует определённого навыка от разработчика.- На каких языках я могу писать скрипты для Unity?- На выбор два языка - C# и UnityScript. UnityScript - это что-то среднее между JavaScript и ActionScript. Выбирай язык по своему вкусу, они оба вполне удобны, но помни, что большинство примеров написано на C#.- Для каких жанров подходит Unity?- Для абсолютно любых! Жанр ограничивается лишь фантазией разработчика (и его умением писать скрипты, разумеется). Можно создавать и РПГ, и стратегии, и слэшеры. Можно делать VR-проекты или Minecraft-подобные песочницы.- На каких платформах работают созданные с помощью Unity игры?- Windows, Linux, MacOS, SteamOS, Android, iOS, Windows Phone, PlayStation4, Xbox One, WebGL, Oculus Rift и многие другие. Полный список можно найти на официальном сайте. Таким образом, игры Unity работают на десктопах, на смартфонах, планшетах, приставках, в браузерах, VR-очках и некоторых других системах.- Часто вижу скриншоты с красивой природой на Unity. Как такое создать?- Очень просто! В Unity встроены удобные инструменты для создания террейна и SpeedTree для создания деревьев и готовая реализация ветра - не нужно ничего писать или скачивать и подключать плагины - ландшафт в Unity создаётся в пару кликов.- Что такое стартер киты?- Starter Kit - это набор скриптов и префабов, а зачастую и графических элементов для игры. Они призваны облегчить разработку игры определённого жанра и как правило разбиты по жанрам (Action-RPG Starter Kit, RTS Starter Kit, 3D Shooter Starter Kit, Space Game Starter Kit, VR Starter Kit и так далее). Также бывают стартер киты различных игровых элементов, не связанных с геймплеем (Nature Starter Kit с дополнительными природными объектами, Medieval Starter Kit со средневековыми объектами и так далее). По сути, стартер киты выполняют в разработке игры ту же роль, что и фреймворки в программировании. Однако стоит отметить, что использование геймплейного стартер кита принуждает разработчика изучать большое количество чужого кода и чужой структуры для внесения своих изменений и полноценного использования. В связи с этим большинство разработчиков предпочитает писать почти всё с нуля, получая полное понимание работы своей игры. Новичкам крайне не рекомендуется начинать знакомство с Unity со стартер китов.- Что нужно уметь делать для создания полноценной игры, кроме Unity-разработки?- Кроме непосредственной разработки игры на Unity, требуется также уметь создавать 3D модели (3ds Max, Blender, ZBrush), 2D рисунки (GraphicsGale, Aseprite, Piskel), текстуры (Substance Designer, NeoTextureEdit), музыку (FruityLoops, Ableton). Не обязательно учить это всё - например, в 2D играх не нужны 3D модели, а музыка необходима далеко не всегда. Также вы можете скачивать элементы для ваших игр на бесплатных сайтах. Если у вас есть деньги, то все необходимые элементы можно заказать у фрилансеров на https://www.fl.ru/ (русскоязычный) или https://www.upwork.com/ (англоязычный).- Бесплатен ли Unity?- Можно свободно скачивать, использовать и продавать готовые игры на Unity с лицензией Personal - это абсолютно бесплатно! Но на бесплатной версии при запуске игры будет появляться короткий стартовый ролик "Made with Unity", а также ваши доходы ограничены 100 000 долларов в год. Для снятия этих ограничений нужно приобретать платные версии лицензий Unity. В конечном итоге, платные варианты используются лишь крупными компаниями с огромными доходами, тогда как обычные разработчики в большинстве своём используют бесплатную Personal лицензию.===============================Обучение - ЯзыкИтак, с чего же начать изучение этого замечательного движка? Прежде всего, с изучения языка. Самые основы C# можно узнать на интерактивных курсах здесь:https://dotnetcademy.net/CSharp/Beginnerили в текстовом туториале здесь:https://www.tutorialspoint.com/csharp/csharp_quick_guide.htmДля изучения основ UnityScript выучи вначале основы JavaScript:https://learn.javascript.ru/Помни, что далеко не все элементы JS есть в US. Чтобы понять, в чём разница между этими двумя языками, прочти эту статью:http://wiki.unity3d.com/index.php/UnityScript_versus_JavaScriptПомни, что тебе достаточно одного языка из двух и учить их оба одновременно не нужно.- ДвижокЕсли ты уже умеешь использовать язык, то можно приступать непосредственно к изучению движка. Крайне рекомендется купить/скачать книгу Unity in action (Unity в действии). В ней подробно описываются множество возможностей движка.http://www.ozon.ru/context/detail/id/34792570/Также посмотри на видеотуториалы с официального сайта:https://unity3d.com/learn/tutorialsЕсли же ты не любишь видеотуториалы (или не понимаешь разговорный английский) и предпочитаешь текст, то посмотри здесь:http://catlikecoding.com/unity/tutorials/Тут крайне подробно описан процесс разработки и приведены примеры кода. Эти туториалы универсальны и описывают множество различных частей игры, от работы с текстурами до генерации карты мира. А вот в этом туториале описыватся разработка двухмерной игры с видом сверху:https://www.raywenderlich.com/61532/unity-2d-tutorial-getting-startedЭто будет полезно, даже если ты планируешь разрабатывать трёхмерную игру. Ни в коем случае нельзя обойти вниманием этот сборник туториалов: https://noobtuts.com/unityВ нём подробно описывается процесс пошагового создания разных игр - двухмерных и трёхмерных. Разумеется, все эти туториалы охватывают лишь часть возможностей Unity. Самый надёжный способ выучить Unity - это начать делать игру и по мере разработки гуглить непонятные моменты.
>>456738Я тебе рекомендую начать с книги Герберта Шилтда. А если захочешь углубленно изучить шарпы и виртуалку, тогда милости прошу к товарищу Рихтеру.>>456743Есть. Опиши круг задач, а я может быть что-нибудь подкину.
>>456551Я бы на твои проекты глянул для начала. Ибо нужно знать какой у тебя уровень.>>456672Уж поверь, ты еще говноказуалок не видел. зайди на BigFishGames и посмотри, что там
>>456738https://www.reddit.com/r/csharp/comments/6nfsjd/beginner_c_books/>>45674390% асинхронизма в Юнити это рутины.Однако же в 2017.3 ввели Job System:https://www.youtube.com/watch?v=AXUvnk7Jws4однако параллелизация в юнити все-равно гавно
Интересно узнать решение этой ошибки, возникающей во время создания андроид билда: Win32Exception: ApplicationName='C:/AndroidSDK\tools\aapt.exe', CommandLine='package --auto-add-overlay -v -f -m -J "gen" -M "AndroidManifest.xml" -S "res" -I "C:/AndroidSDK\platforms\android-25\android.jar" -F bin/resources.ap_', CurrentDirectory='Temp/StagingArea'System.Diagnostics.Process.Start_noshell (System.Diagnostics.ProcessStartInfo startInfo, System.Diagnostics.Process process)System.Diagnostics.Process.Start_common (System.Diagnostics.ProcessStartInfo startInfo, System.Diagnostics.Process process)System.Diagnostics.Process.Start ()(wrapper remoting-invoke-with-check) System.Diagnostics.Process:Start ()UnityEditor.Utils.Program.Start (System.EventHandler exitCallback) (at C:/buildslave/unity/build/Editor/Mono/Utils/Program.cs:44)UnityEditor.Utils.Program.Start () (at C:/buildslave/unity/build/Editor/Mono/Utils/Program.cs:28)UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)UnityEditor.Android.PostProcessor.Tasks.TasksCommon.Exec (System.String command, System.String args, System.String workingdir, System.String errorMsg, Int32 retriesOnFailure)UnityEditor.Android.PostProcessor.Tasks.BuildResources.CompileResources (UnityEditor.Android.PostProcessor.PostProcessorContext context)UnityEditor.Android.PostProcessor.Tasks.BuildResources.Execute (UnityEditor.Android.PostProcessor.PostProcessorContext context)UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context)UnityEditor.Android.PostProcessAndroidPlayer.PostProcess (BuildTarget target, System.String stagingAreaData, System.String stagingArea, System.String playerPackage, System.String installPath, System.String companyName, System.String productName, BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry)UnityEditor.Android.AndroidBuildPostprocessor.PostProcess (BuildPostProcessArgs args)UnityEditor.PostprocessBuildPlayer.Postprocess (BuildTargetGroup targetGroup, BuildTarget target, System.String installPath, System.String companyName, System.String productName, Int32 width, Int32 height, System.String downloadWebplayerUrl, System.String manualDownloadWebplayerUrl, BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry, UnityEditor.BuildReporting.BuildReport report) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/PostprocessBuildPlayer.cs:186)UnityEditor.HostView:OnGUI()
>>456762Так не то гуглишь, гугли как дебажить ошибу процесса компиляции дабы получить читаемый и вменяемый трейс, а не то, как решить именно это трабоу.СЧам же видишь, что эта чушь нечитаема и ни о чем не говорит
>>456759У меня при билде под вебгл было что-то похожее, помог старый дедовский способ переустановил юньку и все sdk
>>456747Да никакой еще уровень. Доделываю свой первый топ-даун шутер (начал по тутору с офф.сайта, потом понял что к чему и продолжил сам). Cейчас доделаю, и буду пилить какую-нибудь штуку для мобилки (хочу ознакомиться с 2D и особенностями разработки под телефоны. Потом попробую что-нибудь с онлайном поковырять). Как я изучаю: ставлю цель, что я хочу прикрутить к игре следующим, потом ищу что-то в API либо просто гуглю. В общем, это такой мой план на следующие пару месяцев. >>456738Мне очень помогла книжка c# player's guide. Все предельно просто. Позволила буквально за пару недель понять основы ООП, учитывая, что все, что я знал о программировании до этого это html-теги. Т.е. ничего. Алсо, у меня вопрос. Где можно посмотреть ГРАМОТНЫЙ код? Как я понимаю, задача программиста не только в том, чтобы все работало, но и чтобы все было хорошо написано, и в случае чего быстро фиксилось, и не только написавшим. Просто хочу не потом это исправлять, а сразу учиться писать хорошо. Есть какие-нибудь уроки по этому мастерству? (как комментить, обзывать переменные/классы, все такое)
>>456775C# assebly декомпиляться на ура, тот же dnSpyБери любой релизнутый проект, декомпиль и смотри что к чему
>>456775> Где можно посмотреть ГРАМОТНЫЙ код?Где-то у меня был мем про то, что чувак понимает, что он теперь самый настоящий погромист, а того самого идеального кода не существует. И код, который он пишет, менее умелые люди берут в пример.
>>456775>как комментитьпонятно>>456775>обзывать переменные/классымаксимально точноРекомендую обмазаться автоматическими ревьюверами, они знатно будут тыкать тебя в говно твой код. Типа codacy что нибудь
>>456782Он имеет ввиду common practicesПредставь себе ты работаешь в коллективе из 20 кодеров. Твой коммент "эта та самая хуйнявка из наследного класса" будет охуенным брейнфаком для них
>>456781>Рекомендую обмазаться автоматическими ревьюверами, они знатно будут тыкать тебя в говно твой код. Типа codacy что нибудьСпасибо, попробую эту штуку. >>456783>common practicesВо, то что надо. https://en.wikipedia.org/wiki/Coding_conventions
Любознательный ньюфаг в треде.Изучал и писал на Python, перекатился теперь на JavaScript и потихоньку изучаю Unity. Просмотрел несколько туториалов (Space Shooter и 2D roguelike если быть совсем точным), изучаю сейчас общее руководство по скриптингу и потихоньку практикуюсь с простыми задачами в самом движке. В общем, можете накидать советов мудрых за щеку? Очень хотелось бы знать не прогадал ли с выбором языка, и нет ли у JS каких-нибудь минусов по сравнению с Шарпом на Unity? К тому же, обнаружил что туториалы по Unity 9по-крайней мере самые попадающиеся на глаза) в основном просвещенны максимально простым платформерам и топ-даун шутеркам в лучшем случае. Где можно посмотреть какие-нибудь более углубленные проекты или посвященные другим жанрам, кроме парочки старых туториалов по 3d-стратегиям на YouTube?Ну, и просто напоследок - с насколько тупыми вопросами можно обращаться в тред? Пока что изучаю в одиночку, но боюсь во многих местах я действую с изрядным костылизмом в самых простых вещах, но не знаю куда с такой мелочью обращаться за помощью.
>>456812Если не ошибаюсь, тот же новый Job System, обмазанный по сто раз, в новых версиях 2017.2-3 - пока в полной мере только для шарпа.JS же удобнее, если для мобильных платформ делаешь, там будет единая структура кода, в том числе и внешнего
>>456812> не прогадал ли с выбором языкаЯ видел дохуя туторов по шарпу и ниодного по JS.> Где можно посмотреть какие-нибудь более углубленные проекты или посвященные другим жанрамМне казалось, чувак с ником Burg Zerg Arcade делал какую-то более-менее полноценную RPG. Официальные туторы по Unity заточены больше под реализацию конкретных механик. Советую посмотреть live сессии, потому что там материал поинтереснее и фичи идут уровнем выше, т.е. это уже не настройка камеры и движения игрока, это реализация способностей и оружий, например.> боюсь во многих местах я действую с изрядным костылизмом в самых простых вещахПохуй. Пиши как можешь, но не забывай про гугл. Потом все равно найдешь более изящное решение, прокачаешь навык. Опять же, смотри Live сессии, там помимо того, что грамотно написан код, тебе еще и объясняют, почему лучше писать вот так.
>>456812>В общем, можете накидать советов мудрыхПервый совет - забудь про "js" (в юнити не стандартный жс, а какая-то похожая скриптопараша). Все нормальные туторы, советы, ответы даны для шарпа.
Пацаны, ньюфаго-хэлп. Есть две переменные, int score и int waveCount. Нужно, чтобы через каждые 300 score, waveCount повышалась на единичку. Т.е. 0 0300 1600 2900 31200 4ИТДДа, я совсем тупой.
>>456835Это ему не поможет, ему нужно обновить waveCount соответсвенно текущему значению score, а не ловить именно 300, 600 и т.п. Мб у него score инкрементится по разным значениям, + 35, + 150 и т.п. деля на 300 он не только получит текущую фазу, если roundDown, но и, в случае с float, отеосительный остаток до следущей фазы, если нужно там шкалу отображать
>>456824Да, уже обратил внимание. Параллельно учу JS на Кодакадемии и непрерывно проигрывал с того во что язык превратили в движке. Что ж, к счастью в туториалах по скриптингу неплохой материал собран, надеюсь его хватит. Да и Шилдз где-то лежал.>>456817>Официальные туторы по Unity заточены больше под реализацию конкретных механикТак-то ведь хорошо, но я уже сталкиваюсь с тем что остро нехватает некоторых аспектов. Например ни в одном из туториалов не нашел хороших примеров работы с камерами - везде она просто прибита к месту и максимум объясняется что означают её параметры настройки. Пришлось скачивать сборную солянку из стандартных ассетов чтобы посмотреть какие варианты реализованы там со всеми полагающими перемещениями и настройками видам. Я так понимаю не стоит стесняться и в будущем таскать ассеты и смотреть как они работают чтобы велосипеды не творить?
>>456837Так и есть. Сделал по вот этому совету >>456826Вообще, вопрос не стоит обсуждения я просто тупой.
>>456843>Я так понимаю не стоит стесняться и в будущем таскать ассеты и смотреть как они работают чтобы велосипеды не творить?Assetwhoring стандарт для Unity девелопинга. Собсно, Unity тем и популярен, что куча ассетов и за тебя уде все написано, просто, блять, в лего играй и составляй игру мечты.За это же Unity и не любят, впрочем, патрицианы с UE или более серьезных движков.
>>456850>ничего работать не будет.http://store.steampowered.com/tag/en/Indie/работает еще как, весь Стим СТор в дерьме
Посоны, поясните что такое "reflection". Постоянно вижу этот термин, но гугл нормально не объясняет. И почему он такой медленный, как пишут?
>>456851Да брось. Вот никогда не понимал этих претензий к переполненности стим стора. Вы что, против капитализма чтоли? Чем больше товара на полках, тем больше среди них попадается хороших вещей. Т.е. из 1000 игр будет 100 хороших. А из 100 игр будет 10 хороших (ну ладно, 30). Но все равно, 100>30. А то, что искать надо, ну а хули. Можно и поискать. Почему никто не жалуется, что в день публикуется под тысячу книг? Каждый может найти то, что хочет.
>>456853>А то, что искать надо, ну а хули. Можно и поискатьА ещё найдутся хитрые продавцы, которые будут товар проталкивать всеми силами. И будет дохуя никому не нужной рекламы к слову, согласно исследованиям, люди банально не видят всплывающую и контекстную рекламу на страницах. Приучились игнорировать вспышки Вот и зачем зря силы тратить сначала на заполнение сверх меры, а затем пропихивание и конкуренцию?
>>456852https://msdn.microsoft.com/ru-ru/library/system.reflection(v=vs.110).aspx?f=255&MSPPError=-2147217396https://stackoverflow.com/questions/3101577/what-is-reflection-in-c-what-are-the-benefit-how-to-use-it-to-get-benifitПо сути, как переводится, так и понимается. Отражение. Например, через reflection ты можешь получить тип переменной по ее имени в строковом формате и т.п.>И почему он такой медленный, как пишут?Ну тут нужно глубоко копатьhttps://stackoverflow.com/questions/771524/how-slow-is-reflection
>>456855Так пусть проталкивают. Не против, если кто-то зарабатывает свою копеечку на дураках. Но зато если я захочу найти во что поиграть, я точно найду. Конечно, есть тренды, и триплэй текстовый квест ты не получишь. Но просто качественный найдешь легко. Как и вообще что угодно.
>>456858>Но зато если я захочу найти во что поиграть, я точно найдуНе найдёшь. В этом-то и вся суть, об этом исследования и говорят.
>>456859Проверка на nullcheck - первое, чему должен научиться C# кодерТем более, когда речь о Unity. Там аж два типа null когда conditioned
>>456862Ну хуй знает. Я вот сейчас захотел поиграть в игру про летающий спиннер в космосе, нарисованную одноруким раковым ребенком дауном. И что думаешь, не смог я найти такую игру? Конечно смог: http://store.steampowered .com/app/745510/Fidget_Spinner_In_Space/
>>456864Не знаю с чего я проиграл больше - с того что эта игра существует, или с того что в списке "похожие товары" первая же ссылка ведет на новый Ассасинс крид.
>>456852>И почему он такой медленный, как пишут?Грубо говоря, обычный код обращается по цифровым ссылкам, а рефлекшен сначала ищет ссылку по символьному имени, потом использует
>>456736 (OP)https://www.youtube.com/watch?v=8mol-WPnstY&t=459s В этом видео ещё элементы из yni на превью
>>456882Да они задолбали, даже на тестовых сценах меньше сотни объектов.Что если я хочу от 1к до 10к сложных юнитов и объектов на сцене, с анимацией, физикой, аи. Это же пиздец как лагает.Даже без графена, потому что 4 ядра да и то, если повезёт. Почему вычисления на gpu не перенесут? Или я чего-то не знаю (знаю про physx).
>>456825private int score;public int Score{get{return score;}set{score = value;waveCount = Mathf.FloorToInt(score);}}Делай так
>>456893Ну это же пиздец, а есть привязка объектов к границам камеры какая-нибудь? НАпример мне в камеру 16:9 надо засунуть 14x25 спрайтов, и без сетки пиздец не удобно работать над дизайном уровней, нахуя она вообще нужна тогда, если даже под границы камеры не подстраивается
>>456889Не понял что для тебя "размер сетки", но в ортографической камере покрути Size, может это то, что тебе нужно.
Ребят, как можно сделать, чтобы во время какого-нибудь лупа нельзя было трогать какую-нибудь переменную? Ну т.е. если враг делает какое-то действие, ему нельзя было сбивать хп.
>>456912>в ортографической камереЭто где? Напиши по английски расположение или заскринь пожалуйстаСетку ту и имею, что там за размер юнита и отвечает, просто она не вмещается ровно в область камеры, а мне нужно чтобы всё чётенько было
>>456930>>456925Спасибо. Вот еще вопрос:Как прекратить задавать настолько тупые вопросы, до которых сам додумываешься через минуту, если вдруг немного завтыкал.
>>456939> Как прекратить задавать настолько тупые вопросы, до которых сам додумываешься через минутуhttps://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D1%83%D1%82%D1%91%D0%BD%D0%BA%D0%B0
>>456948> хуле волноватьсяТут смотря на кого попадёшь. В прошлом или позапрошлом треде ананас рассказывал как его или его товарища на собеседовании обоссали за foreach, мол, труЪ-посоны так не делают, надо через for прогонять.
>>456949Обоссали, наверное, потому как в старой Unity был баг, когда foreach в heap срал, его починили в 5.3.x. Какие другие причины могут быть - не вижу.
>>456951Ошибся, 5.5.0.f3https://forum.unity.com/threads/is-there-a-better-and-cleaner-way-then-foreach-c.451228/Абсолютно ничего плохого в foreach нет, это лучший метод лупить через тот же словарь и им подобные. На уровне компиляции кода foreach банально будет превращен в enumenator iterator, это виртуально одно и то же.
>>456956> 5.5.0.f3Хм, ебашил через форич ещё со времён царя Гороха и даже не замечал что он серит.Да и хрен с ним.
>>456932>>456934Спасибо, я чёт и не углядел.Слушайте, а где почитать мануал, как сделать возможность менять разрешение графики в опциях игры. Например я сделал игру в 5:3 (400x240), а мне надо чтобы при выборе опции могло делаться в 16:9 (1920x1080), при таком раскладе кратно не получится увеличить, надо чтобы графика немножко растянулась в ширину, а в высоту например чтобы просто лишнее скрылось, например черная полоска, которая была в 5:3Мне бы мануал, или может кто так подскажет, как это делается, две разные камеры надо или как, но если разные камеры, то графика не растянется, на канвас натягивать спрайты? не очень удобно при дизайне уровней
>>456736 (OP)Анон, а как лучше сделать набор уровней для моей игрушки? Ну то есть допустим я сделал сцену игровое поле там, фишки, башенки, врагов, написал скрипты - вот мой уровень. Для каждого уровня понадобится ведь новая сцена? А для каждой сцены вновь создавать фишки-башенки-врагов и писать скрипты? Или можно как-то единоразово описать геймобжекты и их поведение, а потом как-то лишь прописать их расположение для каждого из уровней?
>>457005Тебе изначально необходимо понять что такое сцена. Это набор геймобджектов и их компонентов в иерархии.Все ресурсы проекта могут быть заюзаны хоть в первой сцене, хоть в десятой, хоть у чёрта в залупе.
>>457007Блядь, я почему-то думал, что сцена выступает так же и контейнером для использующихся в ней ресурсов. Сейчас глянул, действительно, похуй вообще. Сцены отдельно - ресурсы отдельно.
>>457005Дублируй существующую и изменяй как новую, с новым сеттингом и т.п, сохраняй как scene2. Пожалуйста, загружай после scene1Тут все зависит от нужды и контекста. Загрузка готовых сцен будет самым быстрым и дешевым способом. Генерация - самых дорогим (expensive)
>>457008> я почему-то думал, что сцена выступает так же и контейнером для использующихся в ней ресурсовЕсли только начал, то это нормально, не парься.
>моушен блюр, хроматическую абберацию, фейковый интерлейсТакие эффекты можно как-то добавить?Как у бро из поста:>>440815>>440849
>>457083Лучше постпвь себе задачу и решай при помощи гугла. Анализируй решение, придумывай что-то свое. В видосиках порой неучи ебаные, поэтому нет лучше учения, чем самоучение.
>>457083Этот >>457085 прав лишь частично. Я б посоветовал посмотреть и повторить официальные туториалы, по мере сложности. И не копипастить код, а переписывать с экрана ручками. Основы крепко в мозг засядут и дальше можно уже включать режим "гуляй душа".А васяны да, частенько хуй пойми что несут.
Сап аноны. Решил зайти в геймдюв за поддержкой в созданий игр на Юнити. Проблема наступила при распаковки ассета из ассет store, он завис на OverНайнХандред секунд, подождал 5 минут, подождал час, итог: не дождался, закрыл Юнити, снова открыл Юнити, открыл проект, нифига не засейвелось и придётся всё начинать сначала... Поэтому я обрнатился за помощью в геймдюв-тред. Лень исправлять самому, спрошу на дваче
Как внутри surface шейдера получить значение толщины объекта?Суть нарисовал на пике, надо толщины, отмеченные красными стрелками.
>>457090Все хуйня, давай заново. Впредь не открывай юнити сразу после краша.Вытаскивай сцену из бэкапа.https://support.unity3d.com/hc/en-us/articles/210224803-Can-I-restore-my-unsaved-scene-after-Unity-crash-
>>457106Не нервничай, сучечке, ты мне за работу не платил, дабы по твоим правилам отвечать. Никто тут тебе ничего не должен, запомни.
>>457100Так у тебя вся планета одним объектом? Ну ебни вторым проходом текстуру облаков с дисплейсментом по нормали, умноженной на высоту облаков и всякие uv искажения на нее захуяч. Зачем тебе ширину то считать?Я бы вообще планету и облака разными объектами сделал, чтобы не ебаться с этим.
>>457100Если я всё правильно понял, то тебе хочется голубую обводку нарисовать, так?Попробуй сделать так: 1 меш -- это планета. У неё рисуются фронт-фейсы, 2 меш -- это атмосфера. У неё рисуются только бэкфейсы.
Чо бля, никто не знает как называется эта кромка света правильно по научному?Вот при затмении, на "поверхности" Луны это называется короной, а вот на "поверхности" атмосферы земли - есть свое имя.
Сап, юнач. Поясни за сишарп. Смотрю тутор по скавенжерам, здесь в BoardManager в InitialiseList () этот самый лист сначала очищают. Объясни нахуя, ведь мы, вроде как, для каждого уровня создаем отдельный объект BoardManager, так зачем очищать тогда? Извиняйте, если вопрос нубский, я в программированиях не разбираюсь.
А я запилил свой первый элемент ГУИ переопределяя базовый класс потом - покакал. А именно - слайдер с экспоненциальной шкалой. Есть замечания о том как это следовало сделать лучше (кроме скачивания говеных ассетов)using System;using UnityEngine.UI;public class SliderExponential : Slider{ private Func<float, float> getValueFunction = x => x; private Func<float, float> setValueFunction = x => x; public float expotentialValue { get { return getValueFunction(base.value); } set { base.value = setValueFunction(value); } } public void setExpotential(Func<float, float> getValueFunction, Func<float, float> setValueFunction) { this.getValueFunction = getValueFunction; this.setValueFunction = setValueFunction; }} В Start() родителя нужно инициализировать slider.setExpotential(x => 0.1f x x, x => Mathf.Sqrt(x * 10f)); Вторая функция - обратная первой
>>457199Кроме слова base которое тут не нужно. Ну и разметка проебалась: x => 0.1f УМНОЖЬ СУКА x УМНОЖЬ СУКА x
>>457201Лол, на самом деле base нужно, без него логика ломается. Охуительная практика для разработки движка - использовать поле value рядом с зарезервированным словом value, 10 юнити из 10
>>457193>>457173https://unity3d.com/ru/learn/tutorials/projects/2d-roguelike-tutorial/writing-board-manager?playlist=17150Строки 41, 45, 48
>>457158>>457231Блять, ядумал там что-то серьезное:https://msdn.microsoft.com/ru-ru/library/dwb5h52a(v=vs.110).aspxОбычная практика очищать List/Dictionary перед использованием, если используется заново
>>457234Так про то и речь - оно заново не используется. В каждом экземпляре класса сначала создается List, потом очищается, а потом используется. Я этого не понимаю.
>>457239>Я этого не понимаю.Потому как подобно 90% всех юнити-говнокодеров, ты сформировал мнение, мол, "C# простой, по сути - скриптовый язык, синтаксис выучил и все, готов в бой". Оно как бы так, однако знание простых основ целевого языка таки отсеяло бы 99% вопрос аналогично заданному.Очистка даже новосозданного generic-массива а-ля List/Dictionary - просто common practices.
>>457245>Очистка даже новосозданного generic-массива а-ля List/Dictionary - просто common practices.Пруфы то будут?
>>457260>>457262Да пжалста, есть куча аргументов за и против:https://www.dotnetperls.com/list-clear^ List.Clear() используется без пояснения, автоматом - common practiceА вот тут поясняется:https://stackoverflow.com/questions/1969993/is-it-better-to-return-null-or-empty-collectionА вот тут чувак, будучу модным круты contrarian? хайпит и зарабатывает brownie points, пихая "мэтров" (в его воображении) с горы и заявляя обратное:https://www.codeproject.com/Articles/794448/Is-it-Really-Better-to-Return-an-Empty-List-InsteaТо есть все как обычно. Выводы делайте сами.Кул-стори тайм:Лично я говнокодер и ничего этого не знал. Привычка клерить пустой, новосозданный лист просто сама по себе развилась. Потом, начав вникать в чужой код, заметил что многие кодеры делают то же самое. Само собой пришло понимание что к чему.Это как использовать `internal` для класса или нет - каждый сам решает.
>>457263Братишка, ты вообще в курсе что твои ссылки не имеют отношения к тому что надо очищать список после создания? В первой, например, пишут что надо ИЛИ создавать новый список ИЛИ очищать
>>457267Возвращайся, как прочитаешь полностью и вникнешь.Вообще, заметив в чужом коде кучу странных вещей, как тот же List.Clear(), у тебя должен резонно возникнуть вопрос - а заче--, ох, да вот жеж блять этот вопрос: >>457158Ну пиздец, ты еще не только приведенные аргументы не читаешь, да и сам тред тоже. Ну и нахуй ты тогда?
>>457270Пиздец ты поехавший, приводит статьи на другие темы и еще чем то не доволен. Вообще в ахуе, сижу проигрываю с тебя а мог бы игры делать
>>457273>а мог бы игры делатьАга, игры от индюка, кто даже basics C# не знает. Игры типа:>>456864этого высера
>>457274А вот и подрыв. Вместо того что бы признать что ты обосрался и привел левые примеры в которых clear() и используется то всего то полтора раза
>>457275>Вместо того что бы признать что ты обосралсяТы из /b/ сюда пришел, что ли? Этот старый прием там со школотой на ура работает, мол, заявить что кто-то обосрался и спровоцировать его на damage control.Поясняю на пальцах: тут никто никому ничего не должен. Чувак задал вопрос, я ответил. Ответ не понравился - ну и ладно, никто не обязан его принимать, как святые скрижали.Но если ты заявил, что он тебе не понравился потому как НЕПРАВИЛЬНЫЙ: будь добр, сучечке, доказать это и обосновать свою позицию.ну это я, конечно, замахнулся, доказать ты ничего не сможешь и тупо в обратку пойдешь на перекидывание стрелок, ad hominem и strawman/
>>457276Но ведь доказывать СВОЕ утверждение должен был ты, но не смог, приведя ссылки на рандомные статьи. О чем я тебе и говорю, с сожалением и сочувствием так то обосраться прилюдно
>>457278>Но ведь доказывать СВОЕ утверждение должен был тыЧто я и сделал. Нужно понять простую вещь: тот факт, что ты не считаешь мое доказательство правильным или не понимаешь его - не значит, что оно не правильное.А вот еще одна вещь: вместо того, что бы как глупый попугай повторять "ты не прав, ты не прав", мог бы уже привести правильное доказательство на поставленный оригинальный вопрос, которое, в сравнение с моим доказательством, было бы более весомым и актуальным и, соответственно, нивелировало мое.Внимание, риторический вопрос: почему ты еще этого не сделал?Отвечать не нужно.
>>457282>что ты не считаешь мое доказательство правильным или не понимаешь его - не значит, что оно не правильное.>Братишка, я говорю что ты рандомные статьи привел, которые никак не являются доказательством того что Очистка даже новосозданного generic-массива а-ля List/Dictionary - просто common practicesя прям как с пахомом тут сижу и доказываю очевидные вещи
>>457287Братишка, как я тебе приведу более правильные доказательства не существования common practice? Чайком тебя не ошпарить?
>>457291>как я тебе приведу более правильные доказательства не существования common practice?Ну как я и сказал, ты будешь переводить стрелки. Мы же оба прекрасно понимаем, что тебе не нужно этого доказывать, тебе лишь нужно привести своё доказательство и пояснение на вопрос >>457158:>Почему List.Clear() так используется.Вот и все. Само собой сделать ты этого не можешь, поэтому занимаешься goalposts moving - делая вид, что объект аргумента был совсем другой (как правило, в подобных случая выбирают более широкий топик, который в принципе доказан или опровергнут быть не может, ты выбрал адресацию common practices, хотя это НЕ было вопросом или субъектом его, это было частью моего ответа) и тем самым смещая линию обсуждения на другой топик.
>>457263>Очистка даже новосозданного generic-массива>https://www.dotnetperls.com/list-clear>Should you clear a List to reuse it? Or should you just allocate a new List?>https://stackoverflow.com/questions/1969993/is-it-better-to-return-null-or-empty-collection>https://www.codeproject.com/Articles/794448/Is-it-Really-Better-to-Return-an-Empty-List-Instea>Is it better to return null or empty collection?
>>457292Братишка, ты же поехавший, доказывай давай свое первоначальное утверждение Очистка даже новосозданного generic-массива а-ля List/Dictionary - просто common practices или уже признавай что обосрался, хуле ты. Алсо, чайку попей https://ru.wikipedia.org/wiki/Чайник_Рассела
>>457158Короче почитал ваш срач, даже интересно стало. Скорее всего это сделано для удобства расширения. Никакого сакрального смысла в очищении листа после создания нет. Просто потом этот метод может вызываться чтобы ВНЕЗАПНО очистить aka инициализировать лист, что и подразумевается из его названия.
>>457300ps весь тутор я не читал, может там этот боард менеджер используется повторно, учитывая что initialize принимает номер сцены в качестве аргумента
>>457293>>Is it better to return null or empty collection?Ну вот теперь перечитай и задумайся, где же тут ответ.Альсо, >https://www.dotnetperls.com/list-clearне был ответом на вопрос, это было частью ответа, в которой я показал пример аналогичного использования .Clear() (outside of Unity-sphere)>>457295Свой ответ на вопрос анона у тебя есть или нет?Есть - выкладывай, нет - не отвечай.>>457302>может там этот боард менеджер используется повторноЕСЛИ используется повторно, то тогда ответ очевиден.Однако же, это не умаляет оригинального вопроса, ибо я привел пример использования в контексте, где инстанция не реюзается.И вообще, common practices - это не знак "правильного кода", не призывк действию, мол, если ты так не делаешь - то лопух. Понимайте это банально как "привычка" или "так принято". Вы не раз встретите еще аналогичные примеры в чужом коде,с опытом придет понимание и таких вопросов не будет.А вообще, можно, блять, банально хотя бы Шарп по книге поучить, там уже ответы есть на подавляющее большинство подобных вопросов.
>>456736 (OP)Херачу на ведро, проблема такая. После компиляции, на телефоне в одной сцене не отображается часть объектов, хотя во вкладках сценс и гейм все ок. Камера перспектив.
>>457307>Альсо, >>https://www.dotnetperls.com/list-clear>не был ответом на вопрос, это было частью ответа, в которой я показал пример аналогичного использования .Clear() (outside of Unity-sphere) Ты - законченный дегенерат. Там clear используется для очистки существующего списка а не свежесозданного
А как вообще ассеты лицензируются? Правильно ли я понимаю, что можно зайти на assetstore.unity3d.com, выбрать любые ассеты с подписью FREE, нажать Add to Downloads, скачать их, вставить в свою игру и заработать на ней 100к долларов (да кого я обманываю, 15 баксов на плеймаркете - уже неплохо) ничего так и не заплатив автору? Или есть какие-то тонкости и нюансы?
>>457373> Правильно ли я понимаю, что можно зайти на assetstore.unity3d.com, выбрать любые ассеты с подписью FREE, нажать Add to Downloads, скачать их, вставить в свою игруДа.> заработать на ней 100к долларовНет.
>>457374Что да/нет? То, что я смогу физически их вставить в свою игру - я и так знаю. Интересует правовая сторона вопроса.
>>457375> Интересует правовая сторона вопросаВ ассетах пишут, даёт ли автор право использовать их в коммерческих целях.
>>457377> Или можно только те, в которых написано что разрешено?Если пишут что разрешено — значит смело хуярь.Обычно пишут "для ознакомления" или "можно смело пидорить и продавать".
>>457373https://support.unity3d.com/hc/en-us/articles/205623589-Can-I-use-assets-from-the-Asset-Store-in-my-commercial-game-
>>457381>In order to use Unity Asset Store you must be 18 years of age or older. On using the service you warrant that you have legal capacity to enter into the agreement.Ну ахеть теперь. Если правда вскроется - мои игры удалят, а заработанные копейки потребуют вернуть?
>>457307Даунич, посмотри на реализацию clear и убедись, что твое common practice это жиденький обосрамсhttps://referencesource.microsoft.com/#mscorlib/system/collections/generic/list.cs>мимокрокодил с гринтекстом вместо курсива
>>456736 (OP)Кирюша, очень серьезный вопрос.Какая практическая разница между использование CommandBuffer vs Graphics, в создании скрин-спейс ефектов.Вообще какая между ними разница, мб командБуффер помогает как то по ресурсам выигрывать, я так понял это более низкоуровневая поебота?У меня вот задача сделать "скрин спейс фог", под мобилки. Естественно, желательно мммаксимально дешево.
>>457475>мб командБуффер помогает как то по ресурсам выигрыватьБлять, вам профилирование на что? Сделай оба варианта и смотри, что будет быстрее в твоем случае.Однозначного ответа нет
Котики, у меня иногда из-за ошибок код уходит в while(true){}. Можно ли как то вывести редактор из бесконечности иначе чем через убивание процесса?
>>457485То есть ты задаёшь бесконечный цикл в одном из кадров, и удивляешься что следующий кадр не прорисовывается?
>>457486>То есть ты задаёшь бесконечный цикл в одном из кадров, и удивляешься что следующий кадр не прорисовывается?Ниет жи, я пишу йоба-условие которое иногда содержит ошибки и уводит цикл в бесконечность.>>457489>break?>Можно включить в цикл таймер и брейкать если занимает более чем n секунд/минутСпасибо, но имел в виду что то встроенное в систему. Типа ставишь брекпойнт, и останавливаешь выполнение кода нафиг, выходя таким образом из бесконечности
>>457490>Типа ставишь брекпойнт, и останавливаешь выполнение кода нафиг, выходя таким образом из бесконечностиНу брейкпоинты в дебагерре есть, однако откуда дебагерру знать, что ты в "неправильном" бесконечном цикле
>>457492>Ну брейкпоинты в дебагерре есть, однако откуда дебагерру знать, что ты в "неправильном" бесконечном циклеЖаль нет в call trace кнопки terminate process nahui>>457491>Используй корутину, Люк. Даже если уйдёшь в бесконечность - ничего не сломаешь.Спасибо
>>457480Ну была же у них причина пилить два отдельных класса...ну выжеумные лучшечемгугл!Алсо, заказал хозяина купить мне пикрил. Годное чтиво? На компе полистал, вроде все чинно: буквы в ряд, слова в предложения, да и по теме.
Все тот же любознательный ньюфаг в треде, и таки с первым вопросом.Дано 2D поле, на котором по заданными минимальным и максимальным float-координатам пространстве рандомно спавнится заданное количество звезд. Естественно, из-за float существует вероятность что звезды заспавнятся почти друг на друге. Какие есть простые способы решить это, не вводя клетки в игру? Была идея решить через проверку коллизий, но сначала она не заработала в 2D режиме, а потом при рассуждениях я подумал что идея не выгорит (чтобы проверить коллизию нужно чтобы звезда заспавнилась, а значит ещё нужно будет её удалять если место неудачное, и по идее это будет тупо долго так вот спавнить-удалять пока не найдется подходящее место).
>>4575091. Сгенерируй рандомно точку2. Для каждой звезды проверяй расстояние от этой точки. Если расстояние меньше размера звезды, то goto 1
>>457509Можешь все звезды, точнее, их координаты в список и затем по циклу проверяй каждый новый сгенеренный результат, если слишком близко, делай оффсет или пропускай.Это медленно, но если операция нужна лишь однажды при загрузке - пойдет.
>>457472Нет, всерос не нужно подтверждать результатами ЕГЭ. Даже ДВИ сдавать не нужно, зачисление вне конкурса по диплому и аттестату.>>457474Вся суть олимпиад школьников в том, что теория не выходит за рамки школьной программы. Но всякие основы алгебры, аналитической геометрии, теории чисел и, в особенности, теории игр, дискретки и логики будут очень полезными. Причем оттуда необходимы не сами формулы и понятия, а именно методология рассуждений и поиска доказательств. Готовился просто, без задней мысли.
>>457409Ты пиши свою подпись под основным текстом, а не над, а то я на секунду подумал, что по твоей ссылке опровержение моих слов.
Много раз слышал такое мнение, что программирвоание на С# и Unity не особо улучшает тебя, как программиста. Мне это кажется довольно странным, потому что в играх логика гораздо сложнее, чем, например, в каком-нибудь веб-приложении, да и применять ООП в игорях, по-моему, надо постоянно. Поясните за этот момент, геймдев-бояре.
>>457589> что программирвоание на С# и Unity не особо улучшает тебя, как программистаКонкретно это, в контексте Юнити и c# - правильно.А вот это:>потому что в играх логика гораздо сложнеетупая генерализация, потому как игры могут быть написаны на любом другом языке и движке, в том числе и своем. Как пример: UE4 и С++ это вообще другая весовая категория.
Как сделать чтобы в 2д герой не соскальзывал с платформы? Попробовал метод от сюда:https://null-code.ru/solution/41-vzaimodeystvie-s-dvizhuscheysya-platformoy-liftom.htmlТипа всё, что контактирует с платформой, становится дочерним объектом, но код нихуя не работает,хз, я нуб, помогите
>>457601Бля отбой, перезагрузил студию и всё заработало. Заебало это кстати, что часто код не работает, потому что что-то юнити не улавливаетс первых разов
>>457589В Юнити слишком легко набраться плохих привычек, что может быть плохо если ты до Юнити ничего не знал. В противном случае ты будешь кодировать и плакать, плакать и кодировать, настолько Юнити в этом аспекте ужасно.ООП в играх имеет принципиальные проблемы: http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/ Data oriented design работает лучше.
>>457628Синглетоны на каждый чих, сильное связывание, связывание через редактор, говнокод вообще, Invoke, SendMessage. Это краткий список. Юнити не предлагает тебе никакой архитектуры или структуры, тебе дают API, редактор, сборку и MonoBehaviour - ебись с этим всем сам конём. Получается совершенно лютые формы народного творчества в реальных играх.Анрыл хотя бы предлагает более-менее чёткую структуру.
Как сделать объект радиус, при попадании в который этот объект за мной начинал бегать? Я это все сделал, но сделал через OnTriggerEnter и колижн бокс, всё круто, но только есть баг, колижнбокс хоть и триггер, но всё равно часто нажимая влево-вправо и подпрыгивая, я умудряюсь отталкиваться от него, хотя при триггер такого не должно быть, чяднт?
>>457634> радиус, при попадании в который этот объект за мной начинал бегать?Тебе именно радиус вокруг объекта? Типа "если подошёл на метр, то хуё-моё", или, скажем так, "угол зрения"?
>>457631> Синглетоны на каждый чихНо что в этом плохого, если смысл синглотона оправдан? Инвентарь у игрока почти всегда один, если не пилить тактикул, например.
>>457637Это ровно то что я и имею ввиду под "плохими привычками".1. Ты привязываешься к конкретной реализации инвентаря. Слишком легко добавить ещё одну функцию которая вроде бы не совсем инвентарь но всё же связана. Инвентарь превращается в монстра делающего всё, включая кофе.2. Через N месяцев код будет настолько запутанным и напичкан взаимными связями что каждое изменение где угодно будет что нибудь ломать в другом местеСвязи должны быть явными, хорошо видимыми, через прописанные интерфейсы и разрешаться через DI по возможности.
>>457634Извиняюсь за проёбанные окончания в словах.>>457635Мне надо, что бы когда я подошёл к этому объекту, он подлетел ко мне и дальше за мной летал, никак не взаимодействуя своим телом с другими объектами, пролетал сквозь всё подряд, но мог бы в будущем стрелять. Мы говорим о 2д.>Типа "если подошёл на метр, то хуё-моё", или, скажем так, "угол зрения"?Да можно и то и то. Я просто пока догадался только сделать колайдер с радиусом, и через онтриггеринтер оттдавать комнаду на привязку к герою, типа зашел в область коллайдера, начал действовать метод. Мне нужен способ без использования колайдера, если есть такой, ну или че с этим колайдером сделать, что бы он не баговал так. Мне пригодится потом в программировании врагов
>>457639> Да можно и то и тоЕсли чисто радиус, то бери расстояние от игрока до моба, нахер тебе онтриггерэнтер лишний раз дрочить?А если угол зрения, то помимо радиуса проверяй угол между "зрением" моба и позицией игрока. Если угол меньше заданного (например, 45 градусов) и расстояние попадает в условие, то начинай за ним бегать под Бенни Хилла.
>>457641Ну, напримерTransform player;float angleV = 45f;float playerDist = 2f;void Start () {player = GameObject.Find ("Player").transform;}void Update () {if (player) {float dist = Vector3.Distance (transform.position, player.position);Quaternion look = Quaternion.LookRotation (player.transform.position - transform.position);float angle = Quaternion.Angle (transform.rotation, look);if (angle <= angleV && dist <= playerDist) {//тут уже пиши что тебе надо, побегушки за игроком, посвистывание и попёрдывание}}}
Добрый день, господа. В начале осени решил получить работу в GameDev. Читал учебники, срал в тредспасибо за ответы, экспериментировал с 2D. Хотел к новому году запилить небольшой но свой проект, написать немного документации и с этим добром обивать пороги студий дабы получить работу. Стремлюсь к должности Game Designer И вовсе не потому что я ничего не умею но хочу делать игры. Это взвешенное, осознанное решение основанное на самоанализе. Две недели назад узнал об одном мероприятии, на котором, теоретически, меня могут схантить. В связи с этим, было принято решение запилить хоть что-то играбельное из экспериментальной каши. Вопрос только один - с этим можно на что-то рассчитывать?Скачать бесплатно, без регистрации и смс:drive.google.com/file/d/1ypTcc28LPZOWTM0rB_8gN4JH4FbfTngK/viewАрт и звук из открытых источников. Ассеты не использовал (кроме частиц)
>>457631ты какую-то дикую хуйню написал. все это - инструменты. погромист не становится плохим от того что ими пользуется.>>457638по моему ты сам являешься плохим погромистом если ты в здравом уме думаешь что люди которые пишут код в юнити не рефакторят его.
>>457646> Стремлюсь к должности Game Designerчтобы стать гейдизайнером ты должен сперва сделать парочку годных игр в соло. таких кирюх с АХУИТЕЛЬНЫМИ ТОП ЕДЕЯМИ ЛУДШЕЙ ЕГРЫ различной степени всратости жопой жуй, спрева докажи что чего-то стоишь
>>457648>АХУИТЕЛЬНЫМИ ТОП ЕДЕЯМИ ЛУДШЕЙ ЕГРЫЭто не идея охуительной игры. Это что-то полностью сделанное мною. Просто демонстрация того, что я что-то могу. >ты должен сперва сделать парочку годных игр в солоДовольно высокий порог, тебе не кажется?
>>457649важная должность - высокий порог. геймдизайнеры никому нахуй ненужны, если не понимают как делаются игры.
>>457652ты не понимать стремись, ты игры стремись делать. твое понимание бесполезно, в отличии от умения делать игры.
>>457638Ты сейчас описал не то, почему синглтон будет плохо использовать для инвентаря, ты описал ситуацию, в которой синглтон просто будет лежать в куче лапши. Плохому танцору и кривой пол мешать будет.>>457646> Скачать бесплатно, без регистрации и смс:Больше смахивает на прототип, и дело даже не в графоне. Графон ничего так, вернул меня во время фанатских карт на SC:BW. Но геймплей слишком вялый. В мобов стрелять скучно, особенно потому что их надо закликивать бесконечными снарядами. Пушки работают одинаково. Сосульки, я так понимаю, замедляют, но их не хочется использовать, потому что никакого преимущества это не дает: можно просто закликать противника рокетами/бутылками. Мобы слишком быстрые, но при этом легко кайтятся. Хилки с такой сложностью не имеют особого смысла.В дизайне комнат нет никакого смысла, но на это похуй.Я бы сделал больший упор на разнообразие оружия, чтобы игрок мог выбрать подходящий ему способ убийства мобов и добавил второстепенные оружия, которые бы замедляли, травили, поджигали мобов. Плавное торможение стоит либо убрать, либо подкрепить большим количеством этих зеленых лазеров (я так понимаю, они наносят урон игроку), чтобы можно было в них легко въебаться по неосторожности. Мобы впитывают слишком много урона, стоит сделать их опаснее. Либо превратить их в пушечное мясо, с которым ходят более-менее опасные противники. Соответственно, впускать игрока на арену со всякими бочками, укрытиями и т.п.
>>457654Это и есть прототип. То, что смог с нуля сделать за 2 месяца. И я никогда не собирался это резилить ни в каком виде. Только показать работодателю. Спасибо за фидбек. До 2 уровня дошел?>>457653Я тебя понял. Хуячу дальше.
>>457643Не взлетает чёт. Если проверку на угол убераю, то реагирует, но не так как мне надо, я не пойму как сделать...если я отхожу от объекта, расстояние теряется и объект перестает за мной бегать, а мне надо, что бы он один раз активировался и постоянно действовал. Я пиздец чёт тупой, мозг не привык в таком ключе мыслить...
как блять сохранить проект в юнити, чтобы потом можно было открыть его. и продолжить работать. а то я сохраняю, запускаю, все ок, работает, закрываю, открываю заново и у меня ващи нихуя нет, ни камеры, ни объектов ни хуя. все в папках. а на главном окне рабочем пусто
>>457631>Юнити не предлагает тебе никакой архитектуры или структуры Лол блядь, еще не хватало что бы мне навязывали какую то кривую архитектуру. Я сам архитектуру сделаю, плохую или хорошую, проблема головы а не инструмента>>457638>разрешаться через DI по возможностиЧто за DI?
>>457663>Что за DI?Data InterfaceУ Unity есть похожий аддон под названием ECS - Entity System, он - data-driven
>>457631> Invoke, SendMessageНе использовал это ни разу.> Синглетоны на каждый чихНе делаю их.> Юнити не предлагает тебе никакой архитектуры или структурыЯ сам ее делаю.Вообще, я почти все свожу к дефолтномуотносительно ооп.Я нормален?
>>457666Намек понял, Кэп, паста для >>457646 incoming:http://www.lizengland.com/blog/2014/04/the-door-problem/
>>457643>>457641>>457640хех мда, а могли бы по-нормальному через свое скалярное произведение запилить, а не через какие-то там кватернионы.
>>457670Ну типа того. А если в мобильный ф2п проект, то нужно учиться тервер и как задизайнить микротранзакции в матч3
>>457669>Не использовал это ни разу.а зря. иногда полезно. но обычно нет.>Не делаю их.интересно как же ты тогда гуи делаешь, например. че, даже менеджеров не делаешь? человек ли ты?>Я нормален? учитывая что ты не пользуешься какими-то инструментами по мутным причинам то не очень. дальше что? goto не использовать?
>>457647Я являюсь тимлидом с 4 юнити-погромистами в подчинении - они творят такую хуйю что волосы на жопе шевелятся. Всё что написал - не более чем краткий обзор типичного народного творчества.>>457654Типично где есть синглетоны там есть и лапша.>>457663>Что за DI?Dependency Injection. Ты не пишешь "вот ты, да ты, дай мне инвентарь", ты пишешь "мне нужен инвентарь для работы" и система снаружи тебе его даёт и тебя не ебёт откуда он приехал.
>>457643>>457672Это будет более expensive d Update.Представь у тебя 100 врагов на каждом левеле.OnTrigger лучше.Касательно:>Я это все сделал, но сделал через OnTriggerEnter и колижн бокс, всё круто, но только есть баг, колижнбокс хоть и триггер, но всё равно часто нажимая влево-вправо и подпрыгивая, я умудряюсь отталкиваться от него>я умудряюсь отталкиваться от негоДрочи Physical Layers и ignore mask
>>457675>Ты не пишешь "вот ты, да ты, дай мне инвентарь", ты пишешь "мне нужен инвентарь для работы" и система снаружи тебе его даёт и тебя не ебёт откуда он приехал.То есть SendMessage/broadcastMessage аналоглолка
>>457675>Я являюсь тимлидом с 4 юнити-погромистами в подчинениида как бы грош цена твоим заявлениям после написанного.>Ты не пишешь "вот ты, да ты, дай мне инвентарь", ты пишешь "мне нужен инвентарь для работы" и система снаружи тебе его даёт и тебя не ебёт откуда он приехал.про синглтон рассказал во дела
>>457678>про синглтон рассказал во дела Ровно нет. DI и синглетоны это две противоположные вещи, pull vs push.
>>457666Знаю. И хочу как можно быстрее получать реальный боевой опыт, уйти в глубь специализации, а не дрочить индюшатину где ты на все руки мастер. У меня есть все необходимые для этого качества. Мне просто нужно получить свою первую работу в GD.
>>457699Я серьезно.В моем юнити нет никакой "системы снаружи", зато можно сделать GameManager, который будет выдавать ссылку на инвентарь, небо и аллаха.
>>457704Снаружи - снаружи конкретного объекта. Ты не делаешь MyAss.Instance.Poo(), у тебя есть некий IAss ass значение которому подставляет внешняя по отношению к объекту система. Потом ты пишешь ass.Poo() и тебе нет дела до того чья эта жопа, ни как устроена.Азубка софтварного проектирования же, ну!
Меня не покидает ощущение того, что я долбоеб. Можно ли это как-то переписать? Массив нужен для конструктора юнита/NPC, чтобы определить, какие статы основные и накинуть к ним 10-15 поинтов.
>>457709public Characteristics[] CharArray{ get{ return new Characteristics[]{ Strength, Agility... }; }}Если нужно часто обращаться к массиву, то можешь закешировать массив и изменять его при изменении одной из стат.
>>457701Ты хочешь о чем-то поспорить? С одной стороны, именно благодаря эмпатии я могу ставить себя на место разных типов игроков и анализировать что они делают. С другой стороны никто не отменял аналитику и психологию.
>>457707А, это. Извечная проблема, понять людей, любящих говорить сложно об очевидный вещах.Еще и с сажей пишет, тимлид мамкин.
>>457711> часто обращаться к массивуНе, массив нужен чисто при генерации юнита, в остальных случаях нужны отдельные характеристики. Поэтому и возникла нужда в такой конструкции.
>>457714> [Serializable]Это имеет какой-то дополнительный смысл кроме того, что я смогу править значения в редакторе? > Characteristic - в structВ чем соль? Типа референсы могут проебаться?Не бейте, я нюфаг.
>>457676>Physical Layers и ignore maskПовелосипедил посидел, так и не понял, как их использовать. Что мне нужно в объекте изменить, что бы он перестал контактировать с остальным говном?Как из кода можно отключить box collider?
>>457723>Это имеет какой-то дополнительный смысл кроме того, что я смогу править значения в редакторе?Гугли Unity data serializing/deserializing>>457723>В чем соль? Типа референсы могут проебаться?Struct - value type.>>457725Зачем отключать? Выведи свои триггеры на отдельный phys layer и убери коллизию с layer игрока. ЕМНИП, в этом случае, OnTrigger все равно пашет. но надо проверить
>>457726> Unity data serializingАга, насколько я понял, это нужно, для переноса данных между сценами, сессиями и т.п. Сделаю, как ты сказал, потом почитаю.> Struct - value type.Это-то я понимаю. Нагуглил вот эту статью: http://www.albahari.com/valuevsreftypes.aspx — встал вопрос: Раз в игровую неделю будет обновляться список персонажей, которых можно нанять. Если использовать value type, это не будет раздувать используемую память? Или, если у меня NPC реализован через класс, то и его характеристики будут исчезать из памяти вместе с ним? Я понимаю, что сейчас об этом нет особого смысла думать, пили прототип и не выебывайся, но мне уже просто любопытно, хочется же все ПО УМУ.
>>457729>Это-то я понимаю. Нагуглил вот эту статью: http://www.albahari.com/valuevsreftypes.aspx — встал вопрос: >Раз в игровую неделю будет обновляться список персонажей, которых можно нанять. Если использовать value type, это не будет раздувать используемую память? Или, если у меня NPC реализован через класс, то и его характеристики будут исчезать из памяти вместе с ним? >Я понимаю, что сейчас об этом нет особого смысла думать, пили прототип и не выебывайся, но мне уже просто любопытно, хочется же все ПО УМУ.Тут нужно читать хендбуки по C# дабы понять какой, в твоем конкретном случае, вариант лучше.
>>457730Ладно. Я рад, что хотя бы конструкция с массивом на том скриншоте — это не вырвиглазный пиздец.
Юзаю OverlapSphere для определения, пересекается ли гекс с объектами. Но если сфера находится полностью внутри коллайдера, то этот коллайдер не считается оверлапнутым.Collider[] hitColliders = Physics.OverlapSphere(hit.point,trigger.CellSize*2);if(hitColliders.ToList().Where(c=>Contains(obstacleLayer, c.gameObject.layer)).Count()==0){return true;}else{ return false;}Как можно получить эти самые объекты?
>>457739>if(hitColliders.ToList().Where(c=>Contains(obstacleLayer, c.gameObject.layer)).Count()==0)Хз по вопросу, но я более чем уверен, что простой for for массиву с кондишенами будет быстрее и будет генерировать меньше отходов, нежели залупистый linq
>>457745Хм, и правда. Только это какое-то кастыльное решение. И мне кажется капсюли будут больше жрать. Но попробую пока так.>>457744Оптимизатор, плиз. Есть сотни всякого говна, которое влияет на производительность больше, чем такие мелочи. У меня в колайдерах будет от силы объектов 5, я тут не бигдату ковыряю, чтобы писать лишние буквы ради пары наносекунд.
>>457748> кажется капсюли будут больше жратьТвоими же словами:> Есть сотни всякого говна, которое влияет на производительность больше, чем такие мелочи.
>>457750Ну да, это то самое.Короче это бессмысленный спор.По запросу linq performance:>The best practice depends on what you need:>Development speed and maintainability: LINQ>Performance (according to profiling tools): manual code
>>457755Не зная что конкретные linq-функции творят за кадром можно так нехило какать в heap.А если это чудо еще и в Update и аналогах - это будет пиздец.
Как лучше организовать генерацию уровня? На данный момент она у меня происходит прямо в Start(), а хотелось бы показывать игроку в этот момент какой-то loading screen. Запихнуть генерацию в корутину и из нее сигнализировать о прогрессе?
СапВпервые работаю с анимацией. Сделал быстренько модельку с анимацией в блендере, гружу в юнити. Все хорошо кроме правой руки. Рука и предплечье почему-то статичны, хотя в блендере анимация корректная. Причем правая ладонь двигается как надо, а рука и предплечье стоят на месте. Пробовал грузить и .blend файл, и экспортировать в .fbx. Наверняка кто-то сталкивался с таким. Как решить проблему?
Аноны, кто-нибудь делал систему трейтов, например для RPG? У меня есть перечень трейтов, которые рандомно выдаются наемным персонажам. Что-то типа системы в Darkest Dungeon, где у персонажей могла развиться клептомания, они не могли использовать определенные здания/комнаты. Проблема в том, что их нельзя систематизировать: какие-то трейты повышают стат или два, какие-то влияют на последствия взаимодействия с другим персонажем, какие-то повышают качество той или иной работы. Можно ли сократить количество говна, которое придется писать ручками? Потому что пока что я могу только взять базовый класс на пик1 и от него делать детей как на пик2. В голову приходит только прикручивание ScriptableObject, чтобы дублировать классы для уровней трейтов и прописывать в редакторе переменные, ну и сделать контейнер, из которого трейты можно будет доставать при генерации персонажа.
>>457926Scriptable обджекты выбирай, правда как вот это сделать - вопрос>какие-то влияют на последствия взаимодействия с другим персонажемЯ вот собираюсь на скриптбл обджектах скоро систему скилов пилить, чуствую наебусь с логикой немало
>>456736 (OP)>The Unity Awards 2017 Winners: >[YouTube] The Unity Awards 2017 Winners[РАСКРЫТЬ]эту красоту делают одиночки или студии в 20+ рыл с суммарным оытом 100+ лет?
>>456736 (OP)>Made With Unity 2D Games Showreel 2017: [YouTube] Made With Unity 2D Games Showreel 2017[РАСКРЫТЬ] эту красоту делают одиночки или студии в 20+ рыл с суммарным оытом 100+ лет? а есть пример того, что делают 1-3 чела, анпример?
>>457932Подскажите код как сделать, через Random.insideUnitCircle хуита получается, она трясётся в одну какую-то сторону слишком
>>457944Сам навелосипедил короче: public float elapsedTime = 0F; public float perlinNoiseY = 0F; public float perlinNoiseX = 0F; public float multiplier = 4F; private float shakeTimer; private float shakeAmount; private bool isShaking; private Vector3 startPosition; private void Start() { startPosition = transform.position; isShaking = false; } private void Update() { ShakeDiractionRnd(); if (Input.GetButtonDown("Fire1")) ShakeCamera(0.2F, 1); //Move(); } public void ShakeCamera(float shakePwr, float shakeDur) { isShaking = true; shakeAmount = shakePwr; shakeTimer = shakeDur; } private void ShakeDiractionRnd() { if (shakeTimer >= 0) { Vector3 rnd = Random.insideUnitCircle 2; elapsedTime = Time.time; perlinNoiseX = Mathf.PerlinNoise(elapsedTime, 0); perlinNoiseY = Mathf.PerlinNoise(elapsedTime, 0); transform.position = startPosition + new Vector3(perlinNoiseX rnd.x shakeAmount, perlinNoiseY rnd.y * shakeAmount, transform.position.z); shakeTimer -= Time.deltaTime; } else if (isShaking) { if (transform.position != startPosition) transform.position = Vector3.Lerp(transform.position, startPosition, 1.5F); isShaking = false; } }Только не получается камеру на startPosition плавно вернуть, не рабоатает Vector3.LerpюLerp, когда ставлю Time.deltaTime (сейчас там пока 1.5F, но не суть можно просто transform.position = startPosition написать):f (transform.position != startPosition) transform.position = Vector3.Lerp(transform.position, startPosition, Time.deltaTime);
>>457966Чёт знаки проебались>transform.position = startPosition + new Vector3(perlinNoiseX rnd.x shakeAmount, perlinNoiseY rnd.y shakeAmount, transform.position.z);
>>457982Лол, я просто ебанулся походу от недосыпаСкажите, эта тряска так и делается с Random.insideUnitCircle и Mathf.PerlinNoise, или можно только из нойза рандом замутить?
>>457966Внутри лерпа твое 1.5F обрезается до 1, а уже lerp(a, b, 1) = b, поэтому плавного перехода не будет. Поставь 0.5 к примеру
>>457990> Скажите, эта тряска так и делается с Random.insideUnitCircle и Mathf.PerlinNoise, или можно только из нойза рандом замутить? В вики вот такой пример лежит. Посмотри, может чего увидишь, что можно в свой велосипед засунуть.http://wiki.unity3d.com/index.php/Camera_Shake
>>457992Спасибо!>>457997Да я так и делал как тут написано сначала, потом вычитал про PerlinNoise, с ним эффект лучше выглядит. Да ладно, сейчас работает как нужно и ок, просто я думал может попроще можно наговнокодить. Получается в моём примере если делать без Random.insideUnitCircle, то получается это нойз в определенный вектор делает движение, если указать x и y, то камера просто по диагонали качается и все, я не долго думая добавил рэндом и сам не понял, что сейчас происходит. Получается каждая ось получает рэндомную точку в радиусе и от этой точке летит по perlinNoise куда-нибудь.Вся соль в том, что если, как из той вики, использовать только Random.insideUnitCircle, то камера трясётся не плавно и в одну сторону её уносит, а если добавить perlinNoise, тогда тресётся плавно и никуда её не уносит
ДратутиЧто скажете на счет визуального скриптинга, ктонибудь юзает?Хотелось бы обмазаться ассетами или дополнениями там всякими и чисто мышкой элементарные вещи делать. Мне например для UFPS надо сделать плавание, наверное это невидимый триггер где можно медленно летать с мыльным эффектом.Как вы плавание делаете например?
>>457931> правда как вот это сделатьПроверять списки этих персонажей на наличие нужных трейтов, потом вызывать функцию из трейта. Мне больше хотелось понять, как удобно складывать все трейты для конструкторов персонажей, но я проснулся и понял, что скорее всего мне нужно будет ручками сделать как минимум общую помойку всех трейтов. Максимум статичные списки для каждой категории и функцию, которая будет принимать на входе данные от магазина персонажей и выдавать персонажам нужные качества.
>>457992Чё-то всё-равно не работает. Хотя хз, всё вроде понятно же должно быть, откуда, куда и с какой скоростью, че ему надо
>>458023> else if (isShaking)> {> if (transform.position != startPosition) transform.position = Vector3.Lerp(transform.position, startPosition, t);> else isShaking = false;> }Попробуй так
А можно вычисления фоном проводить в юнити? Не в куратинах, где точка выхода указывается в определенных местах программы, а чтобы выходило и входило по времени?
>>458038По какому времени? Через n секунд/минут после начала игры? У тебя для этого есть Time.time и Time.realtimeSinceStartup
>>458024Заработало. Спасибо, бро. Я второй месяц программирую, мозг не привык в таком ключе мыслить, туплю что-то совсем.
>>458042Нет, не через n секунд, а скорее, выполнять программу n секунд, заниматься всем остальным, сново выполнять программу n секунд. Как куратины, только куратины выполняют программу n шагов за любое время, а нужно, чтобы выполнялось любое количество шагов за время n.
>>458047Она ждет определенное время перед тем, как начачать выполняться, а нужно, чтобы она выполнялась определенное время
>>458043Да тут большая часть треда таких. Я каждый раз берусь за какое-то новое говно, дропаю его. Начинаю новый проект — охуеваю от того, что задачи, которые ебали мне мозги в предыдущем проекте, теперь кажутся довольно простыми. Но у меня в основном проблема в том, что я, вместо того, чтобы написать хоть какое-то решение, хожу вокруг компухтера и думаю, как охуенно написать одну-две строчки кода.
>>458049Ёпта, в одной корутине запускай вэйтфорсекондс, после чего меняй флажок. В другой корутине делай проверку по флажку и ебошь свои вычисления.
>>458049Т.е. тебе нужно типа:void DoStuff(float t){float startTime = Time.time;float endTime = startTime + t;if (Time.time != endTime){//происходит йоба}}
>>458049Сюда посмотри, тебе ж сказали про Time.timehttps://docs.unity3d.com/ScriptReference/Time-time.htmlПример для кого написан?
>>458051Так не получится - фложок то будет проверяться после того, как вторая куратина свой цикл отработает. Это ничего не даст.>>458053В целом типа того, только оно не так работает. Вот куратина, например, делает конкретный кусочек ебы, потом в следующем кадре конкретный кусочек ебы. А мне нужно, что прогроамма делала конкретное время кусочек ебы (сколько успеет), потом в следующем кадре делает такой кусочек, какой успеет.>>458057Да это мне никак не поможет. Мне не оно нужно.
>>458060Нихуя не понял. Можешь привести конкретный пример того, где это применимо. Я разве что могу это прилепить к постройке зданий в RTS.
>>458060Привет. Ты чё, охуел? Ты можешь нормально расписать задачу? А то вся твоя постановка вопроса пока звучит как "ну надо шоп кароч заебись было, но ваши советы - не советы".
>>458066Бля, ну у тебя же есть какая-то единица выполненной работы? Просто сохраняй состояние процесса и выполняй более простую операцию внутри функции выше, эта будет просто таймером.
>>458067Так я уже объяснил. Программа, которая будет выполняться кусками по n секунд. Не кусками по n строк, как куратина, а кусками по n секунд.>>458068Вот сейчас я тебя не понял. Функция не сможет быть таймером т.к. переменные time не меняются, пока не закончится блок вычислений.
>>458069> Программа, которая будет выполняться кусками по n секундЗаписываешь в переменную oldTime значение Time.time, тут же запускаешь программу на n секунд в цикле while (Time.time <= oldTime + n)
>>458069Блядь. Ну допустим у тебя есть класс Yoba с количеством выполненной работыpublic class Yobas{int yobaCount;float yobaReadiness;}В каком-нибудь MonoBehaviour:public Yobas yobas = new Yobas();float yobaEndTime;void Update(){ if (Input.GetKeyDown.YobaKey) { yobaEndTime = Time.time + 10; } if (Time.time < yobaEndTime) { AssembleYoba(yobas); }}Yoba AssembleYoba(Yobas yobas){ yobas.yobaReadiness += 1; if (yobas.yobaReadiness > 100) { yobas.yobaCount += 1; yobas.yobaReadiness = 0; }}Хули тут непонятного-то?
>>458072С какого хуя? Допустим, с запуска прошло 10 секунд. На момент запуска программы имеем следующие значения:Time.time = 10OldTime = 10Например, запускаем программу на 5 секунд.Условие (Time.time <= oldTime + n) принимает вид (10 <= 15) и это самое "10" будет расти, пока через 5 секунд не достигнет значения "15" и условие перестанет выполняться.Ты жопой-то не читай.
>>458073>С какого хуя? Документацию изучи.>>458075И? У тебя программа выполняет шаг, отрисовывает кадр, снова выполняет шаг. А мне нужно, чтобы она не шаг отрабатывала, а заданное время (столько шагов, сколько успеет).>>458084В основном потоке нужно.
>>458101В main thread только если так программу структурировать.То, как ты хочешь, проще по корутине сделать, дать ей заданный промежуток времени и обрубать, если время вышло.Можешь даже пожировать, и сделать две корутины - одна дело выполняет, другая время чекает, стартуют одновременно, чекер гасит раба
>>458101Тогда хуй соси, даун. В основном ему потоке блядь. Ты сам то понимаешь что ты хочешь, дебил ебаный?
>>458101> столько шагов, сколько успеетОно у меня это и делает. Есть заданное время и нужный алгоритм. Сколько раз успел этот алгоритм повертеться за заданное время — столько и повертелся.Это траллинг тупостью такой что ли? Тебе уже 10 раз всё объяснили.
>>458101> Документацию изучи.Лол блджад, точно траллинг тупостью.Но этом >>458075 видео я именно это> (Time.time <= oldTime + n)И использовал, и почему-то в вечный цикл не уходил.Ты бы сам документацию почитал.
Какая лучшая практика для того чтобы портировать информацию из одной сцены в другую? Мне нужно сделать так, чтобы в зависимости от двери в которую вошел игрок, в новой сцене он спаунился по определенным координатам. Я примерно знаю как делать сохранения во внешний файл, но ведь тут получается нужно сначала сохранить, а потом загрузить, а это слишком заморочено, у меня ведь игра не выключается. Из того что знаю - Синглтон в виде гейм-менеджера. Это лучшее решение, или можно как-нибудь иначе это сделать, да так, чтобы скейлилось и на 100+ дверей?
Посоны, можно как-то сменить бесплатную светлую тему на тёмную (пропатчить может чем-нибудь)? У меня закончилась лицензия, юнити откатился на светлую тему и у меня чуть глаза не вытекли.
>>458200Я в своей игре использую две сцены. Одна сцена Game, которая хранит различные объекты, интерфейс и тому подобное, другая сцена представляет уровень. Уровни постоянно сменяются, а Game остаётся.
Ребята, как сделать так чтобы при атаке и контакте с другим 2д коллайдером появлялся Particle Systems, именно в точке контакта с другим 2д коллайдером? Што?
>>458200Можно аддитивно подгружать и активировать сцену, тогда будет склейка из двух. Как только дверь за игроком схлопывается - выгружать старый левел
>>458242Ну, по OnTrigger2D получаешь глобальные координаты центров коллайдеров, получаешь их bounds и extends, транслируешь в world coordinates и вычисляешь точку столкновения
Мне нужно переместить окно в определенную позициюДелаю void Start() { GetComponent<RectTransform>().localPosition = new Vector2(2f, -52f); }И его кидает хуй пойми куда. Я понимаю, что это как то связано с якорями и пивотами, но как? Как мне установить окно в определенное место? Допустим, якорь в верхнем левом углу и пивот (0,1)
>>458333Точняк. А то я давал глобальные коорды, их перехуячивало относительно якорей и получался какой то рандом.
Сап. Как сделать прыжок в 2d, что бы его высота зависела от продолжительности нажатия клавиши, но если клавиша нажата больше определенного времени, прыжок заканчивался? Т.е. держим клавишу не долго, то низкий прыжок, держим дольше высокий, но если передержали, начинаем падать, ну и сделать минимальную высоту прыжка, ниже которой нельзя прыгнуть.Я не могу сообразить, я тупой, не понимаю куда и на что там время надо умножить, или как его замерить, я знаю про функции GetKeyDown и GetKeyUp или просто GetKey, прыжок знаю, как двумя способами сделать:GetComponent<Rigidbody2D>().velocity = new Vector2(0, jumpForce);илиGetComponent<Rigidbody2D>().AddForce(transform.up, ForceMode2D.Impulse)
>>458370Хотя нет, наверное нужна реалистичная, сейчас подумал, что хотел сделать, чтобы прыгнув в сторону, в воздухе нельзя было легко повернуться в другую сторону, ну всмысле повернуться можно, но импульс должен остаться в приложенном векторе изначально.
>>458376>прыгнув в сторону, импульс должен остаться в приложенном векторе>нельзя было легко начать двигаться в воздхуе в другую сторонуКстати как это сделать?Сейчас прикрутил в Uodate гравитацию Physics2d.gravity поменял её по игрику и прыжок стал реалистичнее, если с ней поиграться, получается сейчас игрок быстро подпрыгивает, типа с импульсом, а падет медленне, получается реалистичнее. Но я до сих пор не пойму, как сделать зависимость высоты прыжка от продолжительности нажатия клавиши. Помоги добрый анон
У меня к объекту добавлен компонент Slider. Я его меню на другой компонент который потомок Slider. Нельзя ли как то скопировать настройки старого компонента? Они жи совместимы. Paste чего то там не работает.
>>458392Я в туториале глянул, вот тут:https://www.youtube.com/watch?v=aYE-1cAjdewНу а как? Не смейтесь, я нуб, лучше посоветуйте, как сделать реалистичный прыжок самым достойным способом, и чтобы высота он t нажатия зависила
>>458393FixedUpdate() есть. А то в Update() у тебя физон от фреймрейта будет зависить, зашкварно.И вообще странно это как-то: через гравитацию делать прыжки. Есть же rigidbody2D.
Ребят, ребят, а как лучше реализовать управление машинкой для мобилок при камере сверху под углом? Думаю, лучше как-то одним пальцем управлять. А как? Поставить снизу экрана один джойстик?
>>458394>FixedUpdate()Да точно, не успел об этом подумать.Я не по тутору делал, я от туда только изменение гравитации взял, а так он у меня с rigidbody прыгает:GetComponent<Rigidbody2D>().AddForce(transform.up, ForceMode2D.Impulse). Но если делать только так, то он как-то не очень естесственно прыгает...или хз. Че просто массу ему поменять? Сейчас попробовал без измененной гравитации, вроде почти так же прыгает, упоролся я что ли. В любом случае, подскажите как сделать зависимость высоты прыжка от времени нажатия клавиши
>>458399public float ExtraJumpMultiplier = 0.5f; //доп. множитель прыжка, при макс. множителе игрок будет прыгать в 1.5 раза вышеpublic float ExtraJumpDelay = 0.5f; //время, за которое достигается макс множительprivate float jumpMultiplier; //Player.FixedUpdate/Player.Update/шонибудьif (Input.GetButtonUp("Jump")) Player.Jump(1 + jumpMultiplier); //если игрок отпустил кнопку, то прыгаемif (Input.GetButton("Jump") && Player.IsGrounded) //увеличиваем множитель только если игрок на земле и кнопка прыжка удерживается{ if (jumpMultiplier < ExtraJumpMultiplier) //если мы не достигли максимума jumpMultiplier += ExtraJumpMultiplier Time.deltaTime / ExtraJumpDelay; //то увеличиваем множ. else jumpMultiplier = ExtraJumpMultiplier;}else jumpMultiplier = 0; // если игрок не на земле/не держит кнопку//Player.Jumpfloat vel = Mathf.Sqrt(2 Physics2d.gravity.magnitude PlayerBaseHeight multiplier); //скорость для прыжка //PlayerBaseHeight - начальная высота прыжка// multiplier = 1 + jumpMultiplier//(mv^2)/2 = mgh // v^2/2 = gh // v^2 = 2gh // v = sqrt(2gh)GetComponent<Rigidbody2D>().AddForce(transform.up * vel, ForceMode.VelocityChange);
>>458401> ExtraJumpMultiplier Time.deltaTime / ExtraJumpDelay; //то увеличиваем множ.ExtraJumpMultiplier УМНОЖИТЬ Time.deltaTime / ExtraJumpDelay; //то увеличиваем множ.> float vel = Mathf.Sqrt(2 Physics2d.gravity.magnitude PlayerBaseHeight multiplier); //скорость для прыжка float vel = Mathf.Sqrt(2 УМНОЖИТЬ Physics2d.gravity.magnitude УМНОЖИТЬ PlayerBaseHeight multiplier); //скорость для прыжка
>>458402>>458401Ему нужно что бы акселерация была, если держит кнопку со стационарного положения.То есть, быстро нажал - микропрыж.Держит - высокопрыж.
>458403> if (Input.GetButtonUp("Jump")) Player.Jump(1 + jumpMultiplier); //если игрок отпустил кнопку, то прыгаем> if (Input.GetButton("Jump") && Player.IsGrounded) //увеличиваем множитель только если игрок на земле и кнопка прыжка удерживается> {> if (jumpMultiplier < ExtraJumpMultiplier) //если мы не достигли максимума> jumpMultiplier += ExtraJumpMultiplier Time.deltaTime / ExtraJumpDelay; //то увеличиваем множ.> else jumpMultiplier = ExtraJumpMultiplier;> }else jumpMultiplier = 0; // если игрок не на земле/не держит кнопкуНу вот же, если игрок нажимает и сразу отпускает, то небольшой прыжокА если нажмет, задержит на ExtraJumpDelay (0.5) секунд, то прыжок будет в 1 + ExtraJumpMultiplier (1.5) раз выше
>>458401Чё-то в этом коде хуй ногу сломит, не мог просто в 2D заставить кубик прыгать и его скрипт сюда залить? сам то пробовал, что получилось?
>>458412Без ускорения свободного падения, прикинь, можно просто плавно двигаться, у меня так и падало всё, но я в коде накосячил. Алсо, как менять глобальную гравитацию?
Анон, помоги. Не могу разобраться с navmesh.Я запек сетку, и она покрывает дорогу, как на первом пике. Но как только игра стартует, в консоль сыпятся ошибки со второго и третьего пика.Ошибка с SetDestination вызывается на такой строке в коде:navAgent.SetDestination(targetPoint);Сталкивался ли кто с таким? Спавню ботов максимально близко к сетке, разница в 1 по оси OY. Не помогает.
>>458409>>458420Вот, держи: https://hastebin.com/ecerijowev.csЧуть улучшил код, теперь проверка нажатий в update
>>458421Спасибо! Но ты похоже не так меня понял, мне то надо было чтобы игрок прыгал сразу по нажатию клавиши. я нажал и он прыгнул незамедлительно. Если я нажал быстро - прыгнул низко, нажал и подержал дольше - прыгнул выше
>>458427Можешь описать, чем мой код отличается от того, что тебе нужно? Я что-то туплю, так и не могу понять. Может, если ты напишешь различия, то я буду лучше понимать, что тебе нужно.
>>458428По твоему скрипту, пока я держу клавишу нажатой, игрок стоит на месте. Отпускаю - прыгает. Держу не слишком долго, прыгает не высоко. Так?По моему надо, что бы как только я нажал клавишу он сразу прыгал. И если я держал её не долго, то прыжок был бы низкий. Держал бы долго, прыжок достигал бы максимума и заканчивался.
>>458423Я так и сделал, но заказчику не понравилось, сказал: хуле машинки выезжают за пределы трассы, сделай навмеш мне.Но я с этим уже разобрался, а вот с чем не разобрался, так это с тем, что машинки надо выталкивать с трассы, а навмеш строит невидимые стены вокруг себя. Ну и как такое сделать?
>>458432>По моему надо, что бы как только я нажал клавишу он сразу прыгал. И если я держал её не долго, то прыжок был бы низкий. Держал бы долго, прыжок достигал бы максимума и заканчивался.Это блядь не прыжок уже управляемый полетУ тебя приыжок начинается сразу, а контроль длительности прыжка происходит потоммиммо
Алсо, как добавить свой элемент гуи в юнити идитор? Там список стандартных элементов, типа Кнопка, а я хочу свое туда добавить
>>458435Это прыжок, просто его высота может регулироваться длительностью нажатия клавиши, но у него есть свой предел конечно. Блять в тысячи игр такой прыжок.
>>458437Кароч, прыгаешь сразу как нажал, потом, в полете, проверяешь если кнопка еще вжата то придаешь дополнительное ускорение прыжку, проверяя макс. предел
>>458434Бля. Чёт не представляю, как автомобили на навмеше делать. Физона же не будет. Или уже появился? Давно не глядел.
>>458438>то придаешь дополнительное ускорение прыжку, проверяя макс. пределСпасибо кэп, я знаю как это работает, я не знаю, как это сделать, потому что я нуб.
>>458439Физон сам написал.По сути все, что мне сейчас добавляет к сцене navmesh - это невидимые стены. А ИИ ботов работает из отдельного скрипта.
>>458442Хуя ты велосипедист. Проще было пофиксить езду по точкам. Ну тип едешь меж точками регулируя нажатие на педаль газа в зависимости от угла меж автомобилем и направлением к следующей точке.А кто заказывает заниженные тонированные приоры? Ну так, любопытно.
>>456736 (OP)Хороши ли туторы на сайте Unity для изучения всего этого дела с нуля? Программировать на С# немного умею.
>>458462Unity in Action полистай параллельно с этими туторами. А так можешь просто начать делать свой проект и попутно нагугливать нужные тебе уроки. Потом Live сессии зацени.
>>458462Хз какой сайт ты имеешь в виду, но да, хороши>>458440>Спасибо кэп, я знаю как это работает, я не знаю, как это сделать, потому что я нуб.Ну хуй знает, в этом вся суть. Найди нужные события на кнопки, захуячь, добавь ускорения, хуле ты.
>>458462>Программировать на С# немного умеюUnity - это конструктор lego autism editionДаже примитивные троглодиты могут сваять свою игру в Unity. Именно по этому 99% всех игр на данном движке - унылое гавно.Потому как если ты честно серьезно начнешь делать "правильную" игру, ты поймешь что Юнити для таких усилиезатрат - дохлый выбор.
>>458477Мемесы с форчана — это круто, конечно, но нормальные люди не сидят в тредах по теме, которая им ненавистна. > правильные игрыНу это вообще пушка.
>>458478Нормальная такая пушка, когда твоя игра выдает 60fps и не заикается каждые пять секунд, как 101% unity-дерьма>но нормальные люди не сидят в тредах по теме, которая им ненавистна. Проецировали-проецировали да не выпроецировали.Я не ненавижу Unity и мое личное отношение тут не причем, strawman'а не тягай. Я просто называю вещи своими вещами.UNITYFAG'у НЕПРИЯТНО
>>458481> когда твоя игра выдает 60fps и не заикается каждые пять секунд, как 101% unity-дерьмаЧего-то у Tyranny таких проблем не было. У Getting Over It, в который сейчас все играют, тоже. Может быть не стоит винить инструмент в том, что у людей кривые руки?
>>458484>TyrannyНе особо интересовался ей>Getting Over ItЖалобы видал и в стримах и на форуме.У Cuphead, вон, assembly декомпильни - по всем правилам C# OOP написано, там вообще без пары фур бутылок не разберешься. А в результате - те же Unity-баги, что и от косого Васи с 125 синлетонами и "ГЕЙММЕНЕДЖЕРАМИ" блдж
>>458495Хуле там не разберёшь, придурок?Там всё просто как три копейки. Зашёл и хоть перепедаливай половину кода. Ты 100% будешь знать, что навряд ли что-то сломаешь.У меня сейчас на проекте сидят сишники упоротые, для которых копипатить код и хуярить всё пабликами -- норма. Из-за чего весь проект нестабилен и ломается даже от того, что ты логи выпилил.
>>458473>Потому как если ты честно серьезно начнешь делать "правильную" игру, ты поймешь что Юнити для таких усилиезатрат - дохлый выбор.Свой движок то написал уже? А то юнити хуйня, тормозит и текстуры не яркие.
>>458421Перепилил код под свою задачу, но работает не так как надо, пока кнопка зажата, он постоянно прыгает, и работает это как-то криво, может на разную высоту подпрыгивать. Блджат, заебало, и в сети не могу найти, как сделать. Надо, чтобы было так:1. зажал кнопку и держу - игрок прыгает до максимума, приземляется и стоит. Для того чтобы прыгнуть второй раз, надо отпустить клавишу и нажать ещё раз.2. нажал кнопку быстро, например 0.5 сек, то игрок прыгнул не до максимума, приземлился и стоит ждёт, когда я отожму и еще раз нажму.3. по сути нужна высота минимального и высота максимального прыжка, и возможность получаться высоту между этими значениями в зависимости от продолжительности нажатия на клавишу.Ну и увеличение множителя прыжка должно быть конечно через Time.deltaTime, что бы на всех машинах прыгал одинаково при одинаковом времени нажатия клавиши.Я говнокодил, говнокодил, и не наговнокодил. Unity боги, где вы? Я думал это тривиальная задача с которой уже все давно разобрались. С меня нефти
>>458526Вроде сам справилсяhttps://hastebin.com/inetupopik.csХз, посмотрите, может можно ещё лучше сделать, если хотите конечноСпасибо вот этому парню:https://www.youtube.com/watch?v=qghDqO74I5M