24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
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 лицензию. ===============================
- Движок Если ты уже умеешь использовать язык, то можно приступать непосредственно к изучению движка. Крайне рекомендется купить/скачать книгу 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 Есть. Опиши круг задач, а я может быть что-нибудь подкину.
>>456762 Так не то гуглишь, гугли как дебажить ошибу процесса компиляции дабы получить читаемый и вменяемый трейс, а не то, как решить именно это трабоу.
СЧам же видишь, что эта чушь нечитаема и ни о чем не говорит
>>456747 Да никакой еще уровень. Доделываю свой первый топ-даун шутер (начал по тутору с офф.сайта, потом понял что к чему и продолжил сам). Cейчас доделаю, и буду пилить какую-нибудь штуку для мобилки (хочу ознакомиться с 2D и особенностями разработки под телефоны. Потом попробую что-нибудь с онлайном поковырять). Как я изучаю: ставлю цель, что я хочу прикрутить к игре следующим, потом ищу что-то в API либо просто гуглю. В общем, это такой мой план на следующие пару месяцев.
>>456738 Мне очень помогла книжка c# player's guide. Все предельно просто. Позволила буквально за пару недель понять основы ООП, учитывая, что все, что я знал о программировании до этого это html-теги. Т.е. ничего.
Алсо, у меня вопрос. Где можно посмотреть ГРАМОТНЫЙ код? Как я понимаю, задача программиста не только в том, чтобы все работало, но и чтобы все было хорошо написано, и в случае чего быстро фиксилось, и не только написавшим. Просто хочу не потом это исправлять, а сразу учиться писать хорошо. Есть какие-нибудь уроки по этому мастерству? (как комментить, обзывать переменные/классы, все такое)
>>456775 > Где можно посмотреть ГРАМОТНЫЙ код? Где-то у меня был мем про то, что чувак понимает, что он теперь самый настоящий погромист, а того самого идеального кода не существует. И код, который он пишет, менее умелые люди берут в пример.
Любознательный ньюфаг в треде. Изучал и писал на Python, перекатился теперь на JavaScript и потихоньку изучаю Unity. Просмотрел несколько туториалов (Space Shooter и 2D roguelike если быть совсем точным), изучаю сейчас общее руководство по скриптингу и потихоньку практикуюсь с простыми задачами в самом движке.
В общем, можете накидать советов мудрых за щеку? Очень хотелось бы знать не прогадал ли с выбором языка, и нет ли у JS каких-нибудь минусов по сравнению с Шарпом на Unity? К тому же, обнаружил что туториалы по Unity 9по-крайней мере самые попадающиеся на глаза) в основном просвещенны максимально простым платформерам и топ-даун шутеркам в лучшем случае. Где можно посмотреть какие-нибудь более углубленные проекты или посвященные другим жанрам, кроме парочки старых туториалов по 3d-стратегиям на YouTube?
Ну, и просто напоследок - с насколько тупыми вопросами можно обращаться в тред? Пока что изучаю в одиночку, но боюсь во многих местах я действую с изрядным костылизмом в самых простых вещах, но не знаю куда с такой мелочью обращаться за помощью.
>>456812 > не прогадал ли с выбором языка Я видел дохуя туторов по шарпу и ниодного по JS.
> Где можно посмотреть какие-нибудь более углубленные проекты или посвященные другим жанрам Мне казалось, чувак с ником Burg Zerg Arcade делал какую-то более-менее полноценную RPG. Официальные туторы по Unity заточены больше под реализацию конкретных механик. Советую посмотреть live сессии, потому что там материал поинтереснее и фичи идут уровнем выше, т.е. это уже не настройка камеры и движения игрока, это реализация способностей и оружий, например.
> боюсь во многих местах я действую с изрядным костылизмом в самых простых вещах Похуй. Пиши как можешь, но не забывай про гугл. Потом все равно найдешь более изящное решение, прокачаешь навык. Опять же, смотри Live сессии, там помимо того, что грамотно написан код, тебе еще и объясняют, почему лучше писать вот так.
>>456812 >В общем, можете накидать советов мудрых Первый совет - забудь про "js" (в юнити не стандартный жс, а какая-то похожая скриптопараша). Все нормальные туторы, советы, ответы даны для шарпа.
>>456835 Это ему не поможет, ему нужно обновить waveCount соответсвенно текущему значению score, а не ловить именно 300, 600 и т.п. Мб у него score инкрементится по разным значениям, + 35, + 150 и т.п. деля на 300 он не только получит текущую фазу, если roundDown, но и, в случае с float, отеосительный остаток до следущей фазы, если нужно там шкалу отображать
>>456824 Да, уже обратил внимание. Параллельно учу JS на Кодакадемии и непрерывно проигрывал с того во что язык превратили в движке. Что ж, к счастью в туториалах по скриптингу неплохой материал собран, надеюсь его хватит. Да и Шилдз где-то лежал. >>456817 >Официальные туторы по Unity заточены больше под реализацию конкретных механик Так-то ведь хорошо, но я уже сталкиваюсь с тем что остро нехватает некоторых аспектов. Например ни в одном из туториалов не нашел хороших примеров работы с камерами - везде она просто прибита к месту и максимум объясняется что означают её параметры настройки. Пришлось скачивать сборную солянку из стандартных ассетов чтобы посмотреть какие варианты реализованы там со всеми полагающими перемещениями и настройками видам. Я так понимаю не стоит стесняться и в будущем таскать ассеты и смотреть как они работают чтобы велосипеды не творить?
>>456843 >Я так понимаю не стоит стесняться и в будущем таскать ассеты и смотреть как они работают чтобы велосипеды не творить? Assetwhoring стандарт для Unity девелопинга. Собсно, Unity тем и популярен, что куча ассетов и за тебя уде все написано, просто, блять, в лего играй и составляй игру мечты.
За это же Unity и не любят, впрочем, патрицианы с UE или более серьезных движков.
>>456851 Да брось. Вот никогда не понимал этих претензий к переполненности стим стора. Вы что, против капитализма чтоли? Чем больше товара на полках, тем больше среди них попадается хороших вещей. Т.е. из 1000 игр будет 100 хороших. А из 100 игр будет 10 хороших (ну ладно, 30). Но все равно, 100>30. А то, что искать надо, ну а хули. Можно и поискать. Почему никто не жалуется, что в день публикуется под тысячу книг? Каждый может найти то, что хочет.
>>456853 >А то, что искать надо, ну а хули. Можно и поискать А ещё найдутся хитрые продавцы, которые будут товар проталкивать всеми силами. И будет дохуя никому не нужной рекламы к слову, согласно исследованиям, люди банально не видят всплывающую и контекстную рекламу на страницах. Приучились игнорировать вспышки Вот и зачем зря силы тратить сначала на заполнение сверх меры, а затем пропихивание и конкуренцию?
По сути, как переводится, так и понимается. Отражение. Например, через reflection ты можешь получить тип переменной по ее имени в строковом формате и т.п.
>>456855 Так пусть проталкивают. Не против, если кто-то зарабатывает свою копеечку на дураках. Но зато если я захочу найти во что поиграть, я точно найду. Конечно, есть тренды, и триплэй текстовый квест ты не получишь. Но просто качественный найдешь легко. Как и вообще что угодно.
>>456862 Ну хуй знает. Я вот сейчас захотел поиграть в игру про летающий спиннер в космосе, нарисованную одноруким раковым ребенком дауном. И что думаешь, не смог я найти такую игру? Конечно смог: http://store.steampowered .com/app/745510/Fidget_Spinner_In_Space/
>>456864 Не знаю с чего я проиграл больше - с того что эта игра существует, или с того что в списке "похожие товары" первая же ссылка ведет на новый Ассасинс крид.
>>456852 >И почему он такой медленный, как пишут? Грубо говоря, обычный код обращается по цифровым ссылкам, а рефлекшен сначала ищет ссылку по символьному имени, потом использует
>>456893 Ну это же пиздец, а есть привязка объектов к границам камеры какая-нибудь? НАпример мне в камеру 16:9 надо засунуть 14x25 спрайтов, и без сетки пиздец не удобно работать над дизайном уровней, нахуя она вообще нужна тогда, если даже под границы камеры не подстраивается
Ребят, как можно сделать, чтобы во время какого-нибудь лупа нельзя было трогать какую-нибудь переменную? Ну т.е. если враг делает какое-то действие, ему нельзя было сбивать хп.
>>456912 >в ортографической камере Это где? Напиши по английски расположение или заскринь пожалуйста Сетку ту и имею, что там за размер юнита и отвечает, просто она не вмещается ровно в область камеры, а мне нужно чтобы всё чётенько было
>>456930 >>456925 Спасибо. Вот еще вопрос: Как прекратить задавать настолько тупые вопросы, до которых сам додумываешься через минуту, если вдруг немного завтыкал.
>>456948 > хуле волноваться Тут смотря на кого попадёшь. В прошлом или позапрошлом треде ананас рассказывал как его или его товарища на собеседовании обоссали за foreach, мол, труЪ-посоны так не делают, надо через for прогонять.
>>456949 Обоссали, наверное, потому как в старой Unity был баг, когда foreach в heap срал, его починили в 5.3.x. Какие другие причины могут быть - не вижу.
Абсолютно ничего плохого в foreach нет, это лучший метод лупить через тот же словарь и им подобные. На уровне компиляции кода foreach банально будет превращен в enumenator iterator, это виртуально одно и то же.
>>456932 >>456934 Спасибо, я чёт и не углядел. Слушайте, а где почитать мануал, как сделать возможность менять разрешение графики в опциях игры. Например я сделал игру в 5:3 (400x240), а мне надо чтобы при выборе опции могло делаться в 16:9 (1920x1080), при таком раскладе кратно не получится увеличить, надо чтобы графика немножко растянулась в ширину, а в высоту например чтобы просто лишнее скрылось, например черная полоска, которая была в 5:3 Мне бы мануал, или может кто так подскажет, как это делается, две разные камеры надо или как, но если разные камеры, то графика не растянется, на канвас натягивать спрайты? не очень удобно при дизайне уровней
>>456736 (OP) Анон, а как лучше сделать набор уровней для моей игрушки? Ну то есть допустим я сделал сцену игровое поле там, фишки, башенки, врагов, написал скрипты - вот мой уровень. Для каждого уровня понадобится ведь новая сцена? А для каждой сцены вновь создавать фишки-башенки-врагов и писать скрипты? Или можно как-то единоразово описать геймобжекты и их поведение, а потом как-то лишь прописать их расположение для каждого из уровней?
>>457005 Тебе изначально необходимо понять что такое сцена. Это набор геймобджектов и их компонентов в иерархии. Все ресурсы проекта могут быть заюзаны хоть в первой сцене, хоть в десятой, хоть у чёрта в залупе.
>>457007 Блядь, я почему-то думал, что сцена выступает так же и контейнером для использующихся в ней ресурсов. Сейчас глянул, действительно, похуй вообще. Сцены отдельно - ресурсы отдельно.
>>457008 > я почему-то думал, что сцена выступает так же и контейнером для использующихся в ней ресурсов Если только начал, то это нормально, не парься.
>>457083 Лучше постпвь себе задачу и решай при помощи гугла. Анализируй решение, придумывай что-то свое. В видосиках порой неучи ебаные, поэтому нет лучше учения, чем самоучение.
>>457083 Этот >>457085 прав лишь частично. Я б посоветовал посмотреть и повторить официальные туториалы, по мере сложности. И не копипастить код, а переписывать с экрана ручками. Основы крепко в мозг засядут и дальше можно уже включать режим "гуляй душа". А васяны да, частенько хуй пойми что несут.
Сап аноны. Решил зайти в геймдюв за поддержкой в созданий игр на Юнити. Проблема наступила при распаковки ассета из ассет store, он завис на OverНайнХандред секунд, подождал 5 минут, подождал час, итог: не дождался, закрыл Юнити, снова открыл Юнити, открыл проект, нифига не засейвелось и придётся всё начинать сначала... Поэтому я обрнатился за помощью в геймдюв-тред. Лень исправлять самому, спрошу на дваче
>>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)); Вторая функция - обратная первой
>>457201 Лол, на самом деле base нужно, без него логика ломается. Охуительная практика для разработки движка - использовать поле value рядом с зарезервированным словом value, 10 юнити из 10
>>457234 Так про то и речь - оно заново не используется. В каждом экземпляре класса сначала создается List, потом очищается, а потом используется. Я этого не понимаю.
Потому как подобно 90% всех юнити-говнокодеров, ты сформировал мнение, мол, "C# простой, по сути - скриптовый язык, синтаксис выучил и все, готов в бой". Оно как бы так, однако знание простых основ целевого языка таки отсеяло бы 99% вопрос аналогично заданному.
Очистка даже новосозданного generic-массива а-ля List/Dictionary - просто common practices.
Лично я говнокодер и ничего этого не знал. Привычка клерить пустой, новосозданный лист просто сама по себе развилась. Потом, начав вникать в чужой код, заметил что многие кодеры делают то же самое. Само собой пришло понимание что к чему.
Это как использовать `internal` для класса или нет - каждый сам решает.
>>457263 Братишка, ты вообще в курсе что твои ссылки не имеют отношения к тому что надо очищать список после создания? В первой, например, пишут что надо ИЛИ создавать новый список ИЛИ очищать
>>457267 Возвращайся, как прочитаешь полностью и вникнешь.
Вообще, заметив в чужом коде кучу странных вещей, как тот же List.Clear(), у тебя должен резонно возникнуть вопрос - а заче--, ох, да вот жеж блять этот вопрос: >>457158
Ну пиздец, ты еще не только приведенные аргументы не читаешь, да и сам тред тоже. Ну и нахуй ты тогда?
>>457275 >Вместо того что бы признать что ты обосрался Ты из /b/ сюда пришел, что ли? Этот старый прием там со школотой на ура работает, мол, заявить что кто-то обосрался и спровоцировать его на damage control.
Поясняю на пальцах: тут никто никому ничего не должен. Чувак задал вопрос, я ответил. Ответ не понравился - ну и ладно, никто не обязан его принимать, как святые скрижали. Но если ты заявил, что он тебе не понравился потому как НЕПРАВИЛЬНЫЙ: будь добр, сучечке, доказать это и обосновать свою позицию.
ну это я, конечно, замахнулся, доказать ты ничего не сможешь и тупо в обратку пойдешь на перекидывание стрелок, ad hominem и strawman/
>>457276 Но ведь доказывать СВОЕ утверждение должен был ты, но не смог, приведя ссылки на рандомные статьи. О чем я тебе и говорю, с сожалением и сочувствием так то обосраться прилюдно
>>457278 >Но ведь доказывать СВОЕ утверждение должен был ты Что я и сделал. Нужно понять простую вещь: тот факт, что ты не считаешь мое доказательство правильным или не понимаешь его - не значит, что оно не правильное.
А вот еще одна вещь: вместо того, что бы как глупый попугай повторять "ты не прав, ты не прав", мог бы уже привести правильное доказательство на поставленный оригинальный вопрос, которое, в сравнение с моим доказательством, было бы более весомым и актуальным и, соответственно, нивелировало мое.
Внимание, риторический вопрос: почему ты еще этого не сделал? Отвечать не нужно.
>>457282 >что ты не считаешь мое доказательство правильным или не понимаешь его - не значит, что оно не правильное. > Братишка, я говорю что ты рандомные статьи привел, которые никак не являются доказательством того что Очистка даже новосозданного generic-массива а-ля List/Dictionary - просто common practices
я прям как с пахомом тут сижу и доказываю очевидные вещи
>>457291 >как я тебе приведу более правильные доказательства не существования common practice? Ну как я и сказал, ты будешь переводить стрелки. Мы же оба прекрасно понимаем, что тебе не нужно этого доказывать, тебе лишь нужно привести своё доказательство и пояснение на вопрос >>457158:
>Почему List.Clear() так используется.
Вот и все. Само собой сделать ты этого не можешь, поэтому занимаешься goalposts moving - делая вид, что объект аргумента был совсем другой (как правило, в подобных случая выбирают более широкий топик, который в принципе доказан или опровергнут быть не может, ты выбрал адресацию common practices, хотя это НЕ было вопросом или субъектом его, это было частью моего ответа) и тем самым смещая линию обсуждения на другой топик.
>>457292 Братишка, ты же поехавший, доказывай давай свое первоначальное утверждение Очистка даже новосозданного generic-массива а-ля List/Dictionary - просто common practices или уже признавай что обосрался, хуле ты.
>>457158 Короче почитал ваш срач, даже интересно стало. Скорее всего это сделано для удобства расширения. Никакого сакрального смысла в очищении листа после создания нет. Просто потом этот метод может вызываться чтобы ВНЕЗАПНО очистить aka инициализировать лист, что и подразумевается из его названия.
>>457300 ps весь тутор я не читал, может там этот боард менеджер используется повторно, учитывая что 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к долларов Нет.
>>457377 > Или можно только те, в которых написано что разрешено? Если пишут что разрешено — значит смело хуярь. Обычно пишут "для ознакомления" или "можно смело пидорить и продавать".
>>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. Ну ахеть теперь. Если правда вскроется - мои игры удалят, а заработанные копейки потребуют вернуть?
>>457475 >мб командБуффер помогает как то по ресурсам выигрывать Блять, вам профилирование на что? Сделай оба варианта и смотри, что будет быстрее в твоем случае. Однозначного ответа нет
>>457486 >То есть ты задаёшь бесконечный цикл в одном из кадров, и удивляешься что следующий кадр не прорисовывается? Ниет жи, я пишу йоба-условие которое иногда содержит ошибки и уводит цикл в бесконечность.
>>457489 >break? >Можно включить в цикл таймер и брейкать если занимает более чем n секунд/минут Спасибо, но имел в виду что то встроенное в систему. Типа ставишь брекпойнт, и останавливаешь выполнение кода нафиг, выходя таким образом из бесконечности
>>457490 >Типа ставишь брекпойнт, и останавливаешь выполнение кода нафиг, выходя таким образом из бесконечности Ну брейкпоинты в дебагерре есть, однако откуда дебагерру знать, что ты в "неправильном" бесконечном цикле
>>457492 >Ну брейкпоинты в дебагерре есть, однако откуда дебагерру знать, что ты в "неправильном" бесконечном цикле Жаль нет в call trace кнопки terminate process nahui
>>457491 >Используй корутину, Люк. Даже если уйдёшь в бесконечность - ничего не сломаешь. Спасибо
Все тот же любознательный ньюфаг в треде, и таки с первым вопросом. Дано 2D поле, на котором по заданными минимальным и максимальным float-координатам пространстве рандомно спавнится заданное количество звезд. Естественно, из-за float существует вероятность что звезды заспавнятся почти друг на друге. Какие есть простые способы решить это, не вводя клетки в игру? Была идея решить через проверку коллизий, но сначала она не заработала в 2D режиме, а потом при рассуждениях я подумал что идея не выгорит (чтобы проверить коллизию нужно чтобы звезда заспавнилась, а значит ещё нужно будет её удалять если место неудачное, и по идее это будет тупо долго так вот спавнить-удалять пока не найдется подходящее место).
>>457509 > Какие есть простые способы решить это, не вводя клетки в игру? В игру вводить клетки не обязательно, а в логику генерации - кто запрещает?
Псевдокод: float x = size (int)Random(0, w) float x = size (int)Random(0, h) Со скоростью проблем не будет, единственная проблема - в теории результат может не очень выглядеть из-за того что будет видно что все по сетке. Помимо этого >>457510 варианта могу еще один предложить, который потянет сколь угодно большое колияество звезд.
Создаешь сетку, помечаешь клетки в которых будут звезды, и дальше делаешь хитро: выбираешь для каждой звезды ее потенциально возможное место, смотришь соседние 8 клеток, и создаешь список свободных клеток. Выбираешь из этого списка произвольную, делаешь star.pos + = (chosenpoint - star.pos) random(0, tileSize1.4)1.4 это корень из двух и помечаешь эту клетку как занятую. Также можешь подразумевать, что клетки больше чем звезды, и тогда даже если рядом со звездой все клетки заняты - можешь рандомно сместить немного ее позицию.
>>457509 Можешь все звезды, точнее, их координаты в список и затем по циклу проверяй каждый новый сгенеренный результат, если слишком близко, делай оффсет или пропускай.
Это медленно, но если операция нужна лишь однажды при загрузке - пойдет.
>>457472 Нет, всерос не нужно подтверждать результатами ЕГЭ. Даже ДВИ сдавать не нужно, зачисление вне конкурса по диплому и аттестату.
>>457474 Вся суть олимпиад школьников в том, что теория не выходит за рамки школьной программы. Но всякие основы алгебры, аналитической геометрии, теории чисел и, в особенности, теории игр, дискретки и логики будут очень полезными. Причем оттуда необходимы не сами формулы и понятия, а именно методология рассуждений и поиска доказательств. Готовился просто, без задней мысли.
Много раз слышал такое мнение, что программирвоание на С# и Unity не особо улучшает тебя, как программиста. Мне это кажется довольно странным, потому что в играх логика гораздо сложнее, чем, например, в каком-нибудь веб-приложении, да и применять ООП в игорях, по-моему, надо постоянно. Поясните за этот момент, геймдев-бояре.
>>457589 > что программирвоание на С# и Unity не особо улучшает тебя, как программиста Конкретно это, в контексте Юнити и c# - правильно.
А вот это: >потому что в играх логика гораздо сложнее тупая генерализация, потому как игры могут быть написаны на любом другом языке и движке, в том числе и своем. Как пример: UE4 и С++ это вообще другая весовая категория.
>>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 градусов) и расстояние попадает в условие, то начинай за ним бегать под Бенни Хилла.
В начале осени решил получить работу в GameDev. Читал учебники, срал в тредспасибо за ответы, экспериментировал с 2D. Хотел к новому году запилить небольшой но свой проект, написать немного документации и с этим добром обивать пороги студий дабы получить работу. Стремлюсь к должности Game Designer И вовсе не потому что я ничего не умею но хочу делать игры. Это взвешенное, осознанное решение основанное на самоанализе.
Две недели назад узнал об одном мероприятии, на котором, теоретически, меня могут схантить. В связи с этим, было принято решение запилить хоть что-то играбельное из экспериментальной каши.
Вопрос только один - с этим можно на что-то рассчитывать?
Скачать бесплатно, без регистрации и смс: drive.google.com/file/d/1ypTcc28LPZOWTM0rB_8gN4JH4FbfTngK/view
Арт и звук из открытых источников. Ассеты не использовал (кроме частиц)
>>457646 > Стремлюсь к должности Game Designer чтобы стать гейдизайнером ты должен сперва сделать парочку годных игр в соло. таких кирюх с АХУИТЕЛЬНЫМИ ТОП ЕДЕЯМИ ЛУДШЕЙ ЕГРЫ различной степени всратости жопой жуй, спрева докажи что чего-то стоишь
>>457648 >АХУИТЕЛЬНЫМИ ТОП ЕДЕЯМИ ЛУДШЕЙ ЕГРЫ Это не идея охуительной игры. Это что-то полностью сделанное мною. Просто демонстрация того, что я что-то могу.
>ты должен сперва сделать парочку годных игр в соло Довольно высокий порог, тебе не кажется?
>>457638 Ты сейчас описал не то, почему синглтон будет плохо использовать для инвентаря, ты описал ситуацию, в которой синглтон просто будет лежать в куче лапши. Плохому танцору и кривой пол мешать будет. >>457646 > Скачать бесплатно, без регистрации и смс: Больше смахивает на прототип, и дело даже не в графоне. Графон ничего так, вернул меня во время фанатских карт на SC:BW. Но геймплей слишком вялый.
В мобов стрелять скучно, особенно потому что их надо закликивать бесконечными снарядами. Пушки работают одинаково. Сосульки, я так понимаю, замедляют, но их не хочется использовать, потому что никакого преимущества это не дает: можно просто закликать противника рокетами/бутылками. Мобы слишком быстрые, но при этом легко кайтятся. Хилки с такой сложностью не имеют особого смысла. В дизайне комнат нет никакого смысла, но на это похуй.
Я бы сделал больший упор на разнообразие оружия, чтобы игрок мог выбрать подходящий ему способ убийства мобов и добавил второстепенные оружия, которые бы замедляли, травили, поджигали мобов. Плавное торможение стоит либо убрать, либо подкрепить большим количеством этих зеленых лазеров (я так понимаю, они наносят урон игроку), чтобы можно было в них легко въебаться по неосторожности. Мобы впитывают слишком много урона, стоит сделать их опаснее. Либо превратить их в пушечное мясо, с которым ходят более-менее опасные противники. Соответственно, впускать игрока на арену со всякими бочками, укрытиями и т.п.
>>457654 Это и есть прототип. То, что смог с нуля сделать за 2 месяца. И я никогда не собирался это резилить ни в каком виде. Только показать работодателю.
>>457643 Не взлетает чёт. Если проверку на угол убераю, то реагирует, но не так как мне надо, я не пойму как сделать...если я отхожу от объекта, расстояние теряется и объект перестает за мной бегать, а мне надо, что бы он один раз активировался и постоянно действовал. Я пиздец чёт тупой, мозг не привык в таком ключе мыслить...
как блять сохранить проект в юнити, чтобы потом можно было открыть его. и продолжить работать. а то я сохраняю, запускаю, все ок, работает, закрываю, открываю заново и у меня ващи нихуя нет, ни камеры, ни объектов ни хуя. все в папках. а на главном окне рабочем пусто
>>457631 >Юнити не предлагает тебе никакой архитектуры или структуры
Лол блядь, еще не хватало что бы мне навязывали какую то кривую архитектуру. Я сам архитектуру сделаю, плохую или хорошую, проблема головы а не инструмента
>>457638 >разрешаться через DI по возможности Что за DI?
>>457631 > Invoke, SendMessage Не использовал это ни разу. > Синглетоны на каждый чих Не делаю их. > Юнити не предлагает тебе никакой архитектуры или структуры Я сам ее делаю. Вообще, я почти все свожу к дефолтномуотносительно ооп.
>>457647 Я являюсь тимлидом с 4 юнити-погромистами в подчинении - они творят такую хуйю что волосы на жопе шевелятся. Всё что написал - не более чем краткий обзор типичного народного творчества. >>457654 Типично где есть синглетоны там есть и лапша. >>457663 >Что за DI? Dependency Injection. Ты не пишешь "вот ты, да ты, дай мне инвентарь", ты пишешь "мне нужен инвентарь для работы" и система снаружи тебе его даёт и тебя не ебёт откуда он приехал.
OnTrigger лучше. Касательно: >Я это все сделал, но сделал через OnTriggerEnter и колижн бокс, всё круто, но только есть баг, колижнбокс хоть и триггер, но всё равно часто нажимая влево-вправо и подпрыгивая, я умудряюсь отталкиваться от него >я умудряюсь отталкиваться от него Дрочи Physical Layers и ignore mask
>>457675 >Ты не пишешь "вот ты, да ты, дай мне инвентарь", ты пишешь "мне нужен инвентарь для работы" и система снаружи тебе его даёт и тебя не ебёт откуда он приехал. То есть SendMessage/broadcastMessage аналог лолка
>>457675 >Я являюсь тимлидом с 4 юнити-погромистами в подчинении да как бы грош цена твоим заявлениям после написанного.
>Ты не пишешь "вот ты, да ты, дай мне инвентарь", ты пишешь "мне нужен инвентарь для работы" и система снаружи тебе его даёт и тебя не ебёт откуда он приехал. про синглтон рассказал во дела
>>457699 Я серьезно. В моем юнити нет никакой "системы снаружи", зато можно сделать GameManager, который будет выдавать ссылку на инвентарь, небо и аллаха.
>>457704 Снаружи - снаружи конкретного объекта. Ты не делаешь MyAss.Instance.Poo(), у тебя есть некий IAss ass значение которому подставляет внешняя по отношению к объекту система. Потом ты пишешь ass.Poo() и тебе нет дела до того чья эта жопа, ни как устроена. Азубка софтварного проектирования же, ну!
Меня не покидает ощущение того, что я долбоеб. Можно ли это как-то переписать? Массив нужен для конструктора юнита/NPC, чтобы определить, какие статы основные и накинуть к ним 10-15 поинтов.
>>457701 Ты хочешь о чем-то поспорить? С одной стороны, именно благодаря эмпатии я могу ставить себя на место разных типов игроков и анализировать что они делают. С другой стороны никто не отменял аналитику и психологию.
>>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# дабы понять какой, в твоем конкретном случае, вариант лучше.
Юзаю OverlapSphere для определения, пересекается ли гекс с объектами. Но если сфера находится полностью внутри коллайдера, то этот коллайдер не считается оверлапнутым.
>>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, чтобы дублировать классы для уровней трейтов и прописывать в редакторе переменные, ну и сделать контейнер, из которого трейты можно будет доставать при генерации персонажа.
>>457926 Scriptable обджекты выбирай, правда как вот это сделать - вопрос >какие-то влияют на последствия взаимодействия с другим персонажем Я вот собираюсь на скриптбл обджектах скоро систему скилов пилить, чуствую наебусь с логикой немало
>>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 чела, анпример?
>>457944 Сам навелосипедил короче: public float elapsedTime = 0F; public float perlinNoiseY = 0F; public float perlinNoiseX = 0F; public float multiplier = 4F;
Только не получается камеру на startPosition плавно вернуть, не рабоатает Vector3.LerpюLerp, когда ставлю Time.deltaTime (сейчас там пока 1.5F, но не суть можно просто transform.position = startPosition написать): f (transform.position != startPosition) transform.position = Vector3.Lerp(transform.position, startPosition, Time.deltaTime);
>>457982 Лол, я просто ебанулся походу от недосыпа Скажите, эта тряска так и делается с Random.insideUnitCircle и Mathf.PerlinNoise, или можно только из нойза рандом замутить?
>>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 > правда как вот это сделать Проверять списки этих персонажей на наличие нужных трейтов, потом вызывать функцию из трейта. Мне больше хотелось понять, как удобно складывать все трейты для конструкторов персонажей, но я проснулся и понял, что скорее всего мне нужно будет ручками сделать как минимум общую помойку всех трейтов. Максимум статичные списки для каждой категории и функцию, которая будет принимать на входе данные от магазина персонажей и выдавать персонажам нужные качества.
А можно вычисления фоном проводить в юнити? Не в куратинах, где точка выхода указывается в определенных местах программы, а чтобы выходило и входило по времени?
>>458042 Нет, не через n секунд, а скорее, выполнять программу n секунд, заниматься всем остальным, сново выполнять программу n секунд. Как куратины, только куратины выполняют программу n шагов за любое время, а нужно, чтобы выполнялось любое количество шагов за время n.
>>458043 Да тут большая часть треда таких. Я каждый раз берусь за какое-то новое говно, дропаю его. Начинаю новый проект — охуеваю от того, что задачи, которые ебали мне мозги в предыдущем проекте, теперь кажутся довольно простыми. Но у меня в основном проблема в том, что я, вместо того, чтобы написать хоть какое-то решение, хожу вокруг компухтера и думаю, как охуенно написать одну-две строчки кода.
>>458051 Так не получится - фложок то будет проверяться после того, как вторая куратина свой цикл отработает. Это ничего не даст.
>>458053 В целом типа того, только оно не так работает. Вот куратина, например, делает конкретный кусочек ебы, потом в следующем кадре конкретный кусочек ебы. А мне нужно, что прогроамма делала конкретное время кусочек ебы (сколько успеет), потом в следующем кадре делает такой кусочек, какой успеет.
>>458057 Да это мне никак не поможет. Мне не оно нужно.
>>458060 Привет. Ты чё, охуел? Ты можешь нормально расписать задачу? А то вся твоя постановка вопроса пока звучит как "ну надо шоп кароч заебись было, но ваши советы - не советы".
>>458066 Бля, ну у тебя же есть какая-то единица выполненной работы? Просто сохраняй состояние процесса и выполняй более простую операцию внутри функции выше, эта будет просто таймером.
>>458069 > Программа, которая будет выполняться кусками по n секунд Записываешь в переменную oldTime значение Time.time, тут же запускаешь программу на n секунд в цикле while (Time.time <= oldTime + n)
>>458072 С какого хуя? Допустим, с запуска прошло 10 секунд. На момент запуска программы имеем следующие значения: Time.time = 10 OldTime = 10 Например, запускаем программу на 5 секунд. Условие (Time.time <= oldTime + n) принимает вид (10 <= 15) и это самое "10" будет расти, пока через 5 секунд не достигнет значения "15" и условие перестанет выполняться. Ты жопой-то не читай.
>>458075 И? У тебя программа выполняет шаг, отрисовывает кадр, снова выполняет шаг. А мне нужно, чтобы она не шаг отрабатывала, а заданное время (столько шагов, сколько успеет).
>>458101 В main thread только если так программу структурировать. То, как ты хочешь, проще по корутине сделать, дать ей заданный промежуток времени и обрубать, если время вышло. Можешь даже пожировать, и сделать две корутины - одна дело выполняет, другая время чекает, стартуют одновременно, чекер гасит раба
>>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)
Сап. Как сделать прыжок в 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 нажатия зависила
>>458393 FixedUpdate() есть. А то в Update() у тебя физон от фреймрейта будет зависить, зашкварно. И вообще странно это как-то: через гравитацию делать прыжки. Есть же rigidbody2D.
Ребят, ребят, а как лучше реализовать управление машинкой для мобилок при камере сверху под углом? Думаю, лучше как-то одним пальцем управлять. А как? Поставить снизу экрана один джойстик?
>>458394 >FixedUpdate() Да точно, не успел об этом подумать. Я не по тутору делал, я от туда только изменение гравитации взял, а так он у меня с rigidbody прыгает: GetComponent<Rigidbody2D>().AddForce(transform.up, ForceMode2D.Impulse). Но если делать только так, то он как-то не очень естесственно прыгает...или хз. Че просто массу ему поменять? Сейчас попробовал без измененной гравитации, вроде почти так же прыгает, упоролся я что ли. В любом случае, подскажите как сделать зависимость высоты прыжка от времени нажатия клавиши
>>458399 public 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.Jump float vel = Mathf.Sqrt(2 Physics2d.gravity.magnitude PlayerBaseHeight multiplier); //скорость для прыжка //PlayerBaseHeight - начальная высота прыжка // multiplier = 1 + jumpMultiplier
>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) раз выше
>>458412 Без ускорения свободного падения, прикинь, можно просто плавно двигаться, у меня так и падало всё, но я в коде накосячил. Алсо, как менять глобальную гравитацию?
Анон, помоги. Не могу разобраться с navmesh. Я запек сетку, и она покрывает дорогу, как на первом пике. Но как только игра стартует, в консоль сыпятся ошибки со второго и третьего пика. Ошибка с SetDestination вызывается на такой строке в коде: navAgent.SetDestination(targetPoint); Сталкивался ли кто с таким? Спавню ботов максимально близко к сетке, разница в 1 по оси OY. Не помогает.
>>458421 Спасибо! Но ты похоже не так меня понял, мне то надо было чтобы игрок прыгал сразу по нажатию клавиши. я нажал и он прыгнул незамедлительно. Если я нажал быстро - прыгнул низко, нажал и подержал дольше - прыгнул выше
>>458427 Можешь описать, чем мой код отличается от того, что тебе нужно? Я что-то туплю, так и не могу понять. Может, если ты напишешь различия, то я буду лучше понимать, что тебе нужно.
>>458428 По твоему скрипту, пока я держу клавишу нажатой, игрок стоит на месте. Отпускаю - прыгает. Держу не слишком долго, прыгает не высоко. Так? По моему надо, что бы как только я нажал клавишу он сразу прыгал. И если я держал её не долго, то прыжок был бы низкий. Держал бы долго, прыжок достигал бы максимума и заканчивался.
Я так и сделал, но заказчику не понравилось, сказал: хуле машинки выезжают за пределы трассы, сделай навмеш мне. Но я с этим уже разобрался, а вот с чем не разобрался, так это с тем, что машинки надо выталкивать с трассы, а навмеш строит невидимые стены вокруг себя. Ну и как такое сделать?
>>458432 >По моему надо, что бы как только я нажал клавишу он сразу прыгал. И если я держал её не долго, то прыжок был бы низкий. Держал бы долго, прыжок достигал бы максимума и заканчивался.
Это блядь не прыжок уже управляемый полет
У тебя приыжок начинается сразу, а контроль длительности прыжка происходит потом
>>458435 Это прыжок, просто его высота может регулироваться длительностью нажатия клавиши, но у него есть свой предел конечно. Блять в тысячи игр такой прыжок.
>>458437 Кароч, прыгаешь сразу как нажал, потом, в полете, проверяешь если кнопка еще вжата то придаешь дополнительное ускорение прыжку, проверяя макс. предел
>>458438 >то придаешь дополнительное ускорение прыжку, проверяя макс. предел Спасибо кэп, я знаю как это работает, я не знаю, как это сделать, потому что я нуб.
>>458442 Хуя ты велосипедист. Проще было пофиксить езду по точкам. Ну тип едешь меж точками регулируя нажатие на педаль газа в зависимости от угла меж автомобилем и направлением к следующей точке. А кто заказывает заниженные тонированные приоры? Ну так, любопытно.
>>458462 Unity in Action полистай параллельно с этими туторами. А так можешь просто начать делать свой проект и попутно нагугливать нужные тебе уроки. Потом Live сессии зацени.
>>458462 Хз какой сайт ты имеешь в виду, но да, хороши
>>458440 >Спасибо кэп, я знаю как это работает, я не знаю, как это сделать, потому что я нуб. Ну хуй знает, в этом вся суть. Найди нужные события на кнопки, захуячь, добавь ускорения, хуле ты.
>>458462 >Программировать на С# немного умею Unity - это конструктор lego autism edition Даже примитивные троглодиты могут сваять свою игру в Unity. Именно по этому 99% всех игр на данном движке - унылое гавно. Потому как если ты честно серьезно начнешь делать "правильную" игру, ты поймешь что Юнити для таких усилиезатрат - дохлый выбор.
>>458477 Мемесы с форчана — это круто, конечно, но нормальные люди не сидят в тредах по теме, которая им ненавистна. > правильные игры Ну это вообще пушка.
>>458478 Нормальная такая пушка, когда твоя игра выдает 60fps и не заикается каждые пять секунд, как 101% unity-дерьма
>но нормальные люди не сидят в тредах по теме, которая им ненавистна. Проецировали-проецировали да не выпроецировали. Я не ненавижу Unity и мое личное отношение тут не причем, strawman'а не тягай. Я просто называю вещи своими вещами.
>>458481 > когда твоя игра выдает 60fps и не заикается каждые пять секунд, как 101% unity-дерьма Чего-то у Tyranny таких проблем не было. У Getting Over It, в который сейчас все играют, тоже. Может быть не стоит винить инструмент в том, что у людей кривые руки?
>Getting Over It Жалобы видал и в стримах и на форуме.
У Cuphead, вон, assembly декомпильни - по всем правилам C# OOP написано, там вообще без пары фур бутылок не разберешься. А в результате - те же Unity-баги, что и от косого Васи с 125 синлетонами и "ГЕЙММЕНЕДЖЕРАМИ" блдж
>>458495 Хуле там не разберёшь, придурок? Там всё просто как три копейки. Зашёл и хоть перепедаливай половину кода. Ты 100% будешь знать, что навряд ли что-то сломаешь.
У меня сейчас на проекте сидят сишники упоротые, для которых копипатить код и хуярить всё пабликами -- норма. Из-за чего весь проект нестабилен и ломается даже от того, что ты логи выпилил.
>>458473 >Потому как если ты честно серьезно начнешь делать "правильную" игру, ты поймешь что Юнити для таких усилиезатрат - дохлый выбор. Свой движок то написал уже? А то юнити хуйня, тормозит и текстуры не яркие.
>>458421 Перепилил код под свою задачу, но работает не так как надо, пока кнопка зажата, он постоянно прыгает, и работает это как-то криво, может на разную высоту подпрыгивать. Блджат, заебало, и в сети не могу найти, как сделать. Надо, чтобы было так: 1. зажал кнопку и держу - игрок прыгает до максимума, приземляется и стоит. Для того чтобы прыгнуть второй раз, надо отпустить клавишу и нажать ещё раз. 2. нажал кнопку быстро, например 0.5 сек, то игрок прыгнул не до максимума, приземлился и стоит ждёт, когда я отожму и еще раз нажму. 3. по сути нужна высота минимального и высота максимального прыжка, и возможность получаться высоту между этими значениями в зависимости от продолжительности нажатия на клавишу. Ну и увеличение множителя прыжка должно быть конечно через Time.deltaTime, что бы на всех машинах прыгал одинаково при одинаковом времени нажатия клавиши. Я говнокодил, говнокодил, и не наговнокодил. Unity боги, где вы? Я думал это тривиальная задача с которой уже все давно разобрались. С меня нефти
>>458549 Сейчас попробуем. А что насчёт этого кода скажешь >>458541 ? Там точку отсчёта у обекта надо с самого низа колайдера сделать и поиграться с maxTime и jumpForce. Мне кажется это способпроще
Уважаемые юнаты, я скачал себе этот ваш конструктор игр, накидал сцену, персонажа (он же капсула). Сделал (скопипастил) контроллер. Всё пиздатенько, уже платформер готов, добавить стрельбу и вот и шутер.
Но мне нужен открытый мир, а не одна сцена. Мне нужна туева куча неписей и объектов, которые будут перемещаться по открытому миру.
Первое что пришло мне в голову, сделать просто огроменную сцену, но вангую это всё хуёво просадит производительность.
Второй вариант сделать мир из тучи сцен и расположенными в духе двумерного массива, проще говоря клеточкой и при подходе к границе подгружать следующую сцену. Вангую что будут загрузки при переходе от сцены к сцене.
Внимание вопрос, как сделать на юнити бесшовный отрытый мир типа ведьмака? Я смотрел примеры других разрабов, не всем это удалось, например у беседки в их "открытых мирах" постоянные загрузки при переходах в пещеры и дома, такое мне не надо.
В гта 5 самая оптимальная для меня система подгрузки лолдов на лету, такое можно сделать в юнити и есть ли готовые примеры? Я сам нашёл только создание огромной сцены, где школьник заставлял её готовыми ассетами деревьев и покрасил землю в зелёный цвет.
Видимо так в его представлении выглядит открытый мир. Ни неписей, ни понятное дело врагов он не добавил, только пустые декорации, и то подлагивало.
>>458549 Не реалистичный прыжок у тебя, если клавишу зажать, плеер подымается, как на лифте, без импульса, выглядит паршиво. А правильно было бы сделать так, если прыжок высокий, импульс толчка больше, если прыжок ниже, импульс толчка меньше, т.е. зависимость величины импульса должна быть от длительности удержания клавиши
>>458554 В юнити такое сделать можно, но ты с таким подходом построения мира упрёшься в то, что у тебя float начнёт пидорасить в какой-то момент. точнее будет сказать так, что чем больше у тебя будет целая часть, тем сильнее float у тебя распидорасит, т.к. float не резиновый и очень быстро начинает терять точность Поэтому тут надо строить систему варпов карты, чтобы ты далеко не уходил от цетра мировых координат. мимо-ПРО-быдлодев
>>458557 > зависимость величины импульса должна быть от длительности удержания клавиши Сначала сказал, потом подумал. Я хуйню сморозил, импульс же в единую еденицу времени только применяется, сори Ладно хуй с ним, пойду поковыряюсь ещё.
>>458569 Мне 25, я просто тупой. Не могу сообразить, в коде еще плохо разбираюсь. Просто я бомблю в тред, запутался, и уже сам подумать не успеваю, что бред несу. Просто не могу сделать прыжок, таким как мне надо и всё. Хз в этом коде мне не всё понятно, как работает >458549 пытаюсь разобраться. Я не пойму, там сопротивление гравитации не логорифмически изменяется, пока клавишу держу? Смысл вот этого корня Mathf.Sqrt(2 • Gravity.magnitude • height) не пойму, с математикой туго
>>458573 Формула кинетической энергии - E=(mv^2)/2, где m - масса, а v - скорость Формула потенциальной энергии - E = mgh, где m - масса, g - ускорение свободного падения, а h - высота При вертикальном прыжке в верхней точке они будут равны => mgh = (mv^2) / 2 Потом преобразовываем: 2mgh = mv^2 2gh = v^2 sqrt(2gh) = v
>>458575 >При вертикальном прыжке в верхней точке они будут равны Чет тупанул, при прыжке кинетическая энегрия переходит в потенциальную, а значит кинетическая энергия на старте будет равна потенциальной в верхней точке
>>458575 Но почему по этому скрипту он всё равно прыгает без ускорения, т.е. я зажимаю клавишу, он как на лифите с равномерной скорость подымается, достигает верха и уже с ускорением падает. Получает скорость вверх при прыжке линейная. Или я что-то не так там выставил в мин. и макс. значении или ещё где? Надо чтобы скорость движения вверх и скорость падения были одинаковыми хотя бы. Как сделать чтобы бокс 1x1 юнит подпрыгивал на 3 юнита вверх максимально, и на 1 юнит минимально, по этому скрипту >>458549, какие gravity scale выставить и прочее? Как я понимаю более менее реалистичный прыжок, мы прыгаем например со скоростью 1.0 м/c и пока летим вверх наша скорость падает, потому что на нас действует сила притяжения, 0.8, 0.6, 0.4, 0.2 и при 0 мы зависаем не надолго в воздухе и начинаем падать -0.2, -0.4, -0.6, -0.8, -1 Сейчас, сколько скриптов я не перепробовал, всегда с этим проблемы, то оно и вверх и вниз с одинаковой скорость движется, то когда вверх с одинаковой. Помогите, я заебался, два дня уже мучаюсь. В этом скрипте >>458549 всё в порядке, есть то что мне нужно и я просто туплю и что-то не так там делаю? Или его надо подправить? Извините, заебал уже всех наверное
>>458549 Короче хороший скрипт, спасибо! Это просто я долбоёб. Сейчас отрегулировал всё как надо. В поле Gravity добавил коэффициент силы прыжка, поигрался с ним и с высотами BaseHeight и ExtraHeight, вроде годно получилось. Я просто сначала в самом риджидбади gravity scale начал крутить, чтобы скорость прыжка изменить и всё по пизде пошло, сейчас вроде норм. Но меня не оставляет паранойя насчёт фпс, с разным фпс будет прыгать одинакового же? Мы же там на Time.deltaTime когда в прыжке умножаем, все ок же будет? Просто при начале прыжка не умножаем, но оно и не важно? Пиздец у меня каша в голове короче. Ладно, главное прыгает как надо теперь, но насчёт паранойи можешь меня успокоить?
>>458599 Ну вот тут они монетки дестроят например: https://unity3d.com/ru/learn/tutorials/topics/2d-game-creation/creating-basic-platformer-game Это вообще годный мануал? Посоветуйте что-нибудь актуально и самое годное для 2д платформера пожалуйста. Потому что после этой статьи >>458593 я понял, что даже некоторые сворованные мной платные мануалы, полная хуйня >>458600 Я не дебил, я нуб. Просто мне в мануалах одно рассказывали, а на деле то совсем всё по другому, и похоже, что те ребята и документацию то сами не читали
>>458591 Где Time.deltaTime, там надо добавлять скорость к телу постепенно, поэтому и Time.deltaTime.Лучше заменить на Time.fixedDeltaTime, код в fixedUpdate же выполняется
>>458620 >>458621 Ну пиздец, во всех туторах так делают, ублюдки, даже в платных. и ещё много чего плохого, как я понял И чё как в туторе надо? https://hastebin.com/aluhedicub.cs Пиздец, такие базовые вещи, и с ними умудряются обосраться
>>458651 > И чё как в туторе надо? Ну да. Толкаешь rigidbody2d, спрайт притворяется, что он бежит. > такие базовые вещи, и с ними умудряются обосраться Да я вообще сторонюсь движка, пока делаю основную логику. Но я пилю экономический сим с РПГ элементами, тут можно и через консоль все важное отображать. С другой стороны, если ты делаешь сайдскроллер, тебе по большей части надо пилить карты или их генераторы, там особо выебываться не надо.
>>458659 >С другой стороны, если ты делаешь сайдскроллер, тебе по большей части надо пилить карты или их генераторы, там особо выебываться не надо.
Ну, зависит от sidescroller'а. Если адвенчура-метроидвания, то левелы не обязательно генерить, некоторые ручные делают. Тут проще, можно логику подгонять под левел-дизайн и наоборот.
>>458665 >Так что нельзя привязывать движение камеры за персонажем что ли? Надо двигать карту? Можно, в Hollow Knight вроде привязана.
>>458675 >Можно, в Hollow Knight вроде привязана. Ну её трансформом привязывать? Через Lerp красиво получается. Запугали этой производительностью, я теперь вообще боюсь что-либо делать, пока перед этим 100 раз не погуглив
>>458683 Сам ты сука, что толку мне с этого профилирования, если для начала надо узнать, как правильно делать такие базовые вещи, как сраные перемещения объектов и прочее, что бы потом не переделывать.
>>458700 > выяснится, что переписывать придется дохуя А ты как думал. Нужно оптимизировать. Нужно вычитывать дохуя мануалов если ты хочешь продать свое говно. Все равно потом будешь одним глазом смотреть на профайлер, другим на игру. Хотя вон симуляторы спиннеров выкладывают и нормально. Но это для хайпанувших.
>>458711 Зачем переписывать, особенно физику, которую потом нельзя ни в коем случае менять, по крайней мере для моего 2д платформера это очень важно, камера и физика. Я не так давно вкатываюсь в тему конечно, и понимаю, что надо перелопатить кучу мануалов, но госпади, неужели нет такого руководства, которого вы не можете посоветовать? Как сделать норм физику и несколько базовых вещей, по всем правилам движка, в сраном 2д платфомере? Там не так уж много и надо, я же не скайрим пилить собрался. Просто для меня стало открытием, что 90% всех советчиков и мануалов, особенно с ютуба, или с других сайтов(даже платные мануалы!) - некомпетентные пидорасы, впаривающие какую-то хуитку. Мол, о, заебись прыгает бегает стреляет, видали как легко? а оказываетя, что их говнокод хуй взлетит нормально на той же мобилке, или при большом проекте в десктоп. Никто не говорит про пулы, правильные иерархии, построение карты, даже как ебаную зелю сделать, все из боксов с отдельным колайдером на каждом, землю эту наклепают и пиздец, а если при этом сделать движение по горизонтали через эдфорс (о чем хуй кто из них слышал), а не через трансформ, как все уебки, то он начинает и скользить по этим боксам и втыкаться в швы и прочее, и никто про это не рассказывает, как делать такие базовые вещи, добавлять материалы, делать правильные колайдеры. Там блять на час разговоров то, просто изначально дать правильную информацию, как сделать бег, прыжок, передвижение объектов, статические объекты, добавление объектов и удаление их со сцены, смену сцен там и т.д. Нет блять, все занимаются какой-то дизенформацией, и даже в юнитевских мануалах какие-то противоречия сплошные, на уровне вот с платформы на платформу прыгает и заебись, монетки собирает. А те же монетки уебанские не через фабрику делают, а создают да дестроят, пидорасы. А потом Валентин говорит, ебать вы дауны, зачем так неправильно делаете? Смотрел тут лекцию про оптимизацию, там пиздец косяки появляются просто из-за какой-нибудь одной строчки кода, но хуй кто об этом упомянет где. А у меня теперь хуй пойми что в голове, то нельзя, это нельзя, записали? ага вот это тоже нельзя, записали? А КАК БЛЯТЬ МОЖНО, скажи мне дядя? А иди ты нахуй с такими вопросам, отвечает дядя. И пиздец. Это вот этот дядя Валентин Пидорас из юнити технолоджис https://www.youtube.com/watch?v=LE4t37fY9rw Порвался короче.
>>458716 > 0% всех советчиков и мануалов, особенно с ютуба, или с других сайтов(даже платные мануалы!) - некомпетентные пидорасы, впаривающие какую-то хуитку Блядь, ну а что ты хочешь. Умные дядьки не смотрят на такие руководства, они уже умные. Они ходят на GDC и делятся друг с другом идеями. А у нас на дне никто не знает, что такое хорошо, а что такое плохо. Вот люди и хавают говно с лопаты, причмокивают, и говорят: "Заебись, давай еще братиш". И ходят и рассказывают, как они охуенно потратили деньги на бесполезное говно такой прекрасный гайд. > в юнитевских мануалах какие-то противоречия сплошные В live сессиях такой хуйни не замечал. Напротив, если я в чем-то сомневаюсь, я просто иду смотреть стрим. Вот решил отвлечься от основных механик — голова нихуя не варит, когда ты 5 нужных конструкторов для одного класса собираешь — и сделать главное меню. Угадай, как я их запилил? Правильно: через сраный Instantiate(). Но потом я вспомнил, что есть VOD, в котором это все делали через SetActive(). И действительно так стало заебись.
>>456736 (OP) Православно ли бросать спрайты в ui panel? Или игровые объекты отдельно, юай - отдельно? И второй вопрос: в юнити чо правда нет гридвью контрола (не лэйаут)?
>>458721 >Как задать значение (например 0.1f) всем точкам RenderTexture? Допустим, канал R (или еще куда) Причем это одноканальная текстура RenderTextureFormat.ARGBHalf
>>458725 Если ты критикуешь реализацию, то я не понимаю, в чем проблема. Я особо не смотрел код, но я так понял, что здесь сделана простая физика, где предметы не вращаются хуй пойми как, а просто падают вниз, может быть толкаются игроком в сторону; у них нет инерции. Физика на уровне первого HL, короче, но для сайдскроллера в самый раз, к тому же оптимизация реально есть, ведь у тебя весь физон на кинематических телах, которые двигаются только так, как нужно тебе. Не просчитывается, опять же, инерция, центры тяжести, коробки не будут входить друг в друга и пидорасится. Они будут делать только то, что тебе нужно без лишних свистелок и перделок.
>>458716 Слушай сюда, сынок. Физику завести довольно-таки сложно как таковую, поэтому тут каждый педалится так как может. Посмотри сюда для настроя: https://youtu.be/NwPIoVW65pE А потом смело в бой. Ну или не шибко смело.
хитровопрос. можно даже сказать на тему физона. я конечно знаю что из алгоритмов растеризации линии разве что брезенхэм есть. но как нормальные люди его приспосабливают для рэйкаста? понадобился для коечего похожего на рэйкаст, сделал, но вышло весьма громоздким.
Ребята, работаю с navmesh. Указываю в скрипте агента navAgent.SetDestination(target.position);, агент ползет до цели, но при этом дрожит, не переставая. Скорость перемещения не влияет, он дрожит в любом случае. В какую сторону вообще копать, чтобы найти причину такого? А еще он неадекватно влияет на столкновения. Как батут отшвыривает игрока и дальше прет. Без навэйджента при столкновениях он сам отбрасывался.
>>458953 Можешь декомпильнуть его сам, при помощи IDA. но боюсь, ты слишком молод, чтобы в ассемблерном коде ковыряться, даже если у тебя будут сигнатуры всех методов
Значится, такой вопрос: Загружаю я из плейрпрефсов настройки звука и прочее говно, начинаю выставлять в опциях соответственно тогглы разные - тогглы вызывают прикрепленные к ним методы ончендж и получается ебаная лапша. Решил путем наворачивания була isUISetup, слава богу все в один менеджер-синглетон прилетает. Сталкивались с подобным? Кто как решал?
>>458976 > >>>458916 >Легко! >Сначала создай Texture2D, а потом копирни RenderTexture туда. Пример: https://docs.unity3d.com/ScriptReference/RenderTexture-active.html > >>>458953 >Можешь декомпильнуть его сам, при помощи IDA. но боюсь, ты слишком молод, чтобы в ассемблерном коде ковыряться, даже если у тебя будут сигнатуры всех методов
Как всегда в таких случаях оказывается что я где то обсрался а метод переписывать и не нужно.
аноны, есть вопрос к экспертам: допустим есть дохуя префабов, и по сути не нужно держать их в оперативе (для загнивающих андройдов). Если, например, некоторые предметы еще не доступны в игре, но могут потребоваться потом, когда игрок их "откроет". Использовать папку Resources ? ассетбандлы? Кто сталкивался с подобным?
>>458985 Так инстанть префаб только когда он потребуется, в чём проблема? Но лучше Resources, потому что если префабов реально дохуя, то легче их по имени искать, чем ручками каждую штуку в инспектор пихать.
Архитектура на ScriptableObjectАноним28/11/17 Втр 21:39:58#488№458987
>>458987 >>458992 Пиздато для крупной конторы и в плане обособленности систем, но для инди-хуинди по большей части неоправдано, имхо. > Оверхеда не видно. > если осторожно использовать то очень годно Тут нужен дядька гейм-дизайнер, который уже распланировал всю игру в документе на 300 страниц, из которого станет ясно, что да как пилить.
Господа, очечь важный для меня реквест, помогите плз. Есть какой-нибудь, желательно бесплатный (или условно-бесплатный) плагин для Юнити, который позволяет открывать веб-страницы внутри окна приложения? Если он еще и будет работать под винду, то вообще зашибись, а то не охота на виртуалке все тестировать, спасибо!
>>459038 >Sapio F. - Getting Started with Unity 5.x 2D Game Development - 2017 >Джозеф Хокинг - Unity в действии. Мультиплатформенная разработка на C# - 2016 >Крис Дикинсон - Оптимизация игр в Unity 5. Советы и методы оптимизации приложений - 2017 >Торн А. - Искусство создания сценариев в Unity - 2016 >Хорхе Паласиос - Программирование искусственного интеллекта в играх - 2017 Вот это хуйни навернуть не вредно будет? Мне английский плохо даётся к сожалению. Я подумал в книгах то уже пиздеть не будут скорее всего..
>>459049 Увы, но я эти книжки не читал. Я книжки читаю только в особых случаях, когда совсем упёрся и чую, что так задачи не решаются. В основном, я использую документацию Unity, а также периодически смотрю GDC по интересующим темам. Ну и да, ещё гуглю.
>>459050 Да у меня тоже есть. Сижу читаю сейчас в книге про оптимизацию главу про физику, то что нужно, начинаю понимать как устроен физический движок. Мне бы по 2D что-нибудь на русском, но вроде переводов нет, но думаю и этих 4 переведенных толмутов мне пока с головой. Буду поглядывать с сабами GDC, которые мне насоветовали, да оф мануалы изучать. Всем спасибо! Надеюсь напишу свой охуенный платформер, разбогатею и куплю квартиру
Так бы и сказал изначально. Попробуй дедовскую практику: дебаж логами. Понапихай во всех местах, которые дёргают логику тоглов что-то наподобии этого: Debug.Log("BLYA SLOJNA CHECK DEBAJIT");
>>459082 Проблема в том что юнька дергает прикрепленныей к тоглу метод, каждый раз когда я вызываю сеттер Zvuk.isOn Дебильная логика, как по мне. И приходится городить костыли.
Как сделать вменяемый fps контроллер? Все контроллеры на основе Character Controller как то по ебанутому взаимодействуют с гранями объектов. Например может зацепиться за грань куба и скользнуть по нему. Через блок на первом пике он пересказывает просто, запрыгнуть на него сложно, чего быть не должно. А если подойти под определенным углом к желтым склонам то контроллеры трясти начинает.
Я так понял эта вся ебала из за капсульный формы и нужно делать из цилиндра ригбоди или как?
>>459090 >public UI.Toggle.ToggleEvent onValueChanged; >Callback executed when the value of the toggle is changed. >Дебильная логика, как по мне.
А ты забавный, да. На самом деле это нормальная практика, создавать СОБЫТИЕ, если какое-либо значение изменилось. Вот как ты по-другому узнаешь, что значение поменялось? В Update будешь каждый кадр опрашивать и сравнивать с предыдущим значением?
Как с помощью cinemachine заставить камеру крутить вокруг объекта по триггеру? Типа наступил персонаж на кнопку - камера его облетела и назад вернулась. Какую камеру брать? Можно ли ее вертеть скриптом, а не заготовленной анимацией? Никак не разберусь с этим инструментом.
>>456736 (OP) Я скачал крякнутую Unity pro, хочу делать игры и выкладывать в Google play. Делать их бесплатными но с рекламой, возможно с внутриигровыми покупками. Живу в Украине. Нищий. Могут ли меня как-то наказать? Какие будут последствия? Меня забанят без возможности повторной регистрации? Они сильно проверяют и как вычисляют пиратство? Как вообще мне лучше поступить, забить и пользоваться фри версией?
>>459125 > pro нинужна > хочу делать игры и выкладывать в Google play делай, выкладывай. > Живу в Украине соболезную. > Могут ли меня как-то наказать? с учетом что живешь в украине — максимум игру удолят со стора > Какие будут последствия? 10-50 загрузок > без возможности повторной регистрации и как они допетрят что это ты же? > Они сильно проверяют и как вычисляют пиратство? пока не лопатой деньги гребешь, хуи кладут. а как будешь грести, там уж разберешься. > забить и пользоваться фри версией? именно так. удачи.
>>459126 Какая? Free или купленная pro? Покупать я точно не в состоянии, а вот в бесплатную может и вкачусь если нет другого варианта. Просто у меня весь софт крякнутый, если бы я это все покупал, мне пришлось бы уже квартиру продать >>459127 >и как они допетрят что это ты же? Так я реквизиты карты банковской им при оплате акка передаю, не? именно так. Бля, ну я уже установил про, можно все таки про? То есь это не опасно вроде да? Чето мне страшно
Бля браток, ну тут хуй знает. Вот у меня знакомый тоже выложил как-то игру на крякнутой юнити, а на следующий день ему собака яйцо откусила. Думай сам, что тебе дороже.
>>459130 Я бы купил ее, вот честно, если бы цена была адаптирована. Я не могу каждый месяц им платить половину своей зп >>459131 Давайте без шуток. Я НИЩИЙ. Имейти уважение.
>>459133 Эт самое, попробую на украинском Тi поставуй бесплатнову фрi версiю, она от про не отличацаэ и не ыбi мозговину. Версия про нужна когда твои бешеные продажи перевалят 100К баксов Как ты игры писать собрался, если ты даже прочитать на сайте инфу не можешь?
>>459124 Ты ебанутый? У тебя изменилось значение тогла, за ним же вызвалось событие, что ЗНАЧЕНИЕ изменилось. Ты, блядь, читать научись сначала, а потом уже свой манямир доставай.
>>459135 И как мне выставить значения тоглов при инициализации меню настроек без запуска всех привязанных методов?
У меня стоит тогл включения таймера. Если игрок включил таймер, вышел из игры, вернулся в игру, то тогл должен быть включен, но блять таймер не запущен с 0, а продолжать свой отсчет. Я читаю в сейве что таймер включен - выставляю тоглу тру - запускается метод, надо ловить эту ебанину, что не пользователь нажал включение таймера, а это инициализация, и это лишний код, лишние баги.
>>459160 >GetBool нет такого. >myToggle.isOn=PalyerPrefs.GetInt("mybool",0)>0?true:false; А если где еще по ходу надо перещелкнуть тогл, опять - отвязывай-привязывай. Не костыль ниразу. Я не знаю почему ,но эта архитектурная хрень меня разбесила в юнитях.
>>459161 Я код писал так, чтобы суть донести, а не выдать тебе финальный код, который ты тупо копирнешь. Алсо, ручками привязать эвенты - это удроченая практика, которую еще деды мутили. А то, что тебе в юнити дали сериализовать эвенты - вот это костыль, т.к. сериализация эвентов безбожно ограничена. Блядь, да тебе даже эвент больше чем на 1 аргумент подвязать нельзя. Особенно радует то, что когда эвент сериализуется, то пишутся все возможные поля int, float, bool, string, Object. Заебися сделоли.
Алсо, тебя никто не ограничивает в том, чтобы написать отдельный компонент, который будет сначала лезть в PlayerPrefs, присовывать данные в UI, а потом подписываться на эвенты. И вишенка этого компонента в том, что тебе даже хардкодить поля префов не надо будет, т.к. все спокойно можно будет настроить в инспекторе. Просто сядь и подумай, а не ной, что УУУУ БЛЯДЬ, АРХИТЕКТУРА ГОВНО ЕБАНОЕ. ДЕБИЛЫЫВВЫВАПРП
>>457613 > Data oriented design Ну бля, старая вещь же. Емнип в старые времена это называлось композиционной архитектурой.
А построение архитектуры как дерева наследования классов - совсем уж дедовский метод какой то. Каждый конкретный объект просто реализует определённые интерфейсы и всё.
Есть скрипт, который определяет, что если объект сдвинулся с прошлой позиции и остался стоять на новой в течение нескольких секунд, перемещает объект в другое место. И есть объект, на который этот скрипт повешен. Объект стоит на месте, но периодически скачет, хотя никаких действий не делает. Я внимательно присмотрелся, и вот что происходит: объект слегка отъезжает назад на абсолютно ровной поверхности, из-за чего скрипт и считает, что он сдвинулся. Пробовал менять Drag у Rigidbody - не помогло. Какие еще есть варианты?
Да. Я уже давно заметил, что он медленно сползает. Не придавал значения, пока не понадобилось отслеживать изменение. Заметил, что он и вперед движется, не только назад. Все еще не понимаю, от чего это зависит.
>>459242 Ага, а объект как катать, через скрипт? >>459240 Поиграйся с массой, где-то в настройках есть частота обновления физона (хотя бы для всех тел, если не для конкретного).
>>459332 Я бы рад реализовать орбитальную механику исключительно средствами юньковской физики, но к сожалению юнити не очень дружит с дистанциями в миллионы километров и скоростями в тысячи метров в секунду. Спасибо за ваш экспертный отзыв с котиком, а теперь съеби нахуй, пидорас тупорылый. Заранее спасибо. >>459333 Я помню, что это не рекомендуется, прост юньки сейчас под рукой нет, а вопрос внезапно возник.
Читаем, вникаем, понимаем, что дальше хобби вы никуда не уползете. Поэтому, продолжаем работать дворниками, и в свободное время клепаем говнопроекут, которые купят от силы 1.5 человек и то для многотысячной коллекции в Стиме, похвастаться.
>>459390 Ебать, ну с какими же я довнами на борде сижу. Разбиваешь мир на чанки. Все объекты перемещаются в пределах чанков. Камеру делаешь статичной и в начале мировых координат. И просто двигаешь мир вокруг камеры, а не наоборот. Деды так делали и ты делай. И float будет хватать.
>>459390 Я использую Vector3d, там даблы. Точности хватает. Ну кроме того, что пришлось поправить значение пи, которое создатель либы заебашил с точностью до шестого знака.
>>459422 >чанки Надо гравитацию считать, чанки не катят. А вообще модель СС с расчетами живет отдельно, а отрисовка отдельно, там сделано как ты написал, планеты расставляются вокруг корабля, который находится в (0, 0, 0).
Вопрос от довена. В апдейте проверяется условие, если true, один раз изменяется transform.scale. Мой говнокод выполняется дохуя раз. Подскажите, как осуществить единоразовое выполнение?
Думаю, как сделать локализацию текста интерфейса. Обычно запиливают отдельный компонент, который кидают на объект с текстом, а я вот подумал, почему бы просто не унаследовать от Text -> LocaleText, чтобы не плодить кучу лишних компонентов.
Коллеги, подскажите, есть какие-либо способы включить мипмапы для sprite renderer?
Поясню. Обычный спрайт, отображаемый через sprite renderer при повороте или изменении размера сильно искажается из-за отсутствия мипмапов. В самом спрайте включить их можно, но на картинку это никак не влияет.
Другое дело, если закинуть спрайт на сцену по старинке, через mesh renderer и текстурку в качестве спрайта. Тогда мипмапы генерятся.
Вопрос: как заставить юнити генерить мипмапы для sprite renderer?
Расположил вплотную два террейна друг к другу и запек на них навмеш, но на области стыка запекания не прошло, там красуется дырка. Пытался прикрыть ее линком, но не помогло: агенты упираются в границу и ни в какую не идут дальше. Что я делаю не так? Как это можно исправить? Может как-то можно запечь навмеш с указанием, что вот эту область тоже надо затронуть?
Сап дев. Я пишу курсач на C# по теме "Сборник игор". Сделал 2 простых игрули(Спиздил с видосов). И вот собственно сама проблема(Для меня). Нужно как то сделать проект, как бы меню и что бы из этого проекта вызывались другие проекты(Те две игрули) и что бы при выборе игор не выскакивало окошко конфигураций. Опишите процесс пожалуйста. Среда разработки Unity 2017.2.0f3.
Сап гд, дрочу урок, который про космическую аркаду. Короч мой код не пошел, залез в коменты, перебрал уже два варианта, и все не работает. Не могу понять почему. В консоле ошибок нету. Все вроде нормально. Но вот кораблик не двигается. Может нужно где какую галочку поставить а я не в курсе?
using UnityEngine; using System.Collections; public class PlayerController : MonoBehaviour { private Rigidbody rb; public float speed; public float tilt; public Boundary boundary;
> Vector3 bounds = new Vector3((Mathf.Clamp(rb.position.x, boundary.xMin, boundary.xMax)), 0.0f, (Mathf.Clamp(rb.position.z, boundary.zMin, boundary.zMax))); > rb.position = bounds; rb.rotation = Quaternion.Euler(0.0f, 0.0f, (rb.velocity.x -tilt)); Это может лочить. Пропиши в Update() лог со скоростью. Если скорость меняется, то проблема в этом.
>>459626 Ну вопрос так то был про аналог в студии. Удобно в два клика вызывать, показывается сразу что было выделено. В общем хуй знает хули ты агришься как полуебок. Так то документация скачана.
Анон, чтобы стать инди-разрабом и в одно рыло клепать игрульки после работы помимо знания движка нужно уметь в графон, я правильно понимаю? Может кто подсказать годные курсы по этой теме?
Alexey Sarapulov: Поставил на террейн пустые объекты и по их координатам создаю объекты из префабов. По какой-то причине всегда при первом запуске сцены объекты инициализируются абсолютно в другом месте, но всегда в одном и том же. При следующих перезапусках все нормально. Что это может быть? На объектах навешаны rigidbody, navmesh agent, collider и еще некоторые самописные скрипты.
Привет, у меня вот такая задача есть 3 куба A, B и С, есть также, 3 камеры и каждая рендерит только один из кубов. Поставив режим Deth Only, эффекты с нижних слоев распространяются на и на верхние. Хочу сделать так чтобы камеры работали параллельно т.е. Каждая камера рендерит свой объект и на каждом объекте свой image Effect, мб кто-то знает кака мне помочь
>>459713 Ну ты скажи куда копнуть, что почитать? Мастхевную книжку из шапки прочел, пару туторов с оф сайта прошел. Примерно понимаю что я хочу сделать и как, вопрос в графоне (модельки вотэтовсе).
>>459721 А чего тут читать? Хочешь графона - рисуй. Не умеешь - нанимай того, кто умеет. Если денег мало - покупай ассеты. Если денег нет совсем - воруй ассеты. Сам себя графон не нарисует.
>>459723 Это правильный путь? Я просто думал туторов наебнуть чтобы самому рисовать, но когда начал гуглить, ахуел от кол-ва материала к изучению и спросил совета тут. Нужны ли навыки триде для инди разраба или я увязну в обучении этому на долго и есть более простые пути.
>>459729 Хуй знает. У нас вот в команде 4 человека, один из них купил ассетов баксов на 250, залил в проект. Само собой, доступ к ним есть у всех четверых, они ж просто в папках лежат. И вот они вроде и купленные, а троим достались бесплатно. Считаются ли они теперь пизженными, если я их в свою личную игрушку засуну? Я не знаю.
>>459731 > Ну так у вас же наверно и юнити куплена, если вы делаете командой Нет, персональная версия. Бабло платить надо только если годовой доход перевалил за сотку тысяч баксов. Хотя, коллаборейт скоро из бесплатной версии уберут, будем брать подписку на год.
>>459726 > Я просто думал туторов наебнуть чтобы самому рисовать Люди годами дрочат академичский рисунок. Если тебе это просто нравится — учись наздоровье. Если ты хочешь как можно быстрее выкатить свое GOTY 2к18 — пизди ассеты или покупай людей, которые в этом шарят. > Нужны ли навыки триде для инди разраба Ты странные вопросы задаешь. Прежде всего тебе нужно понимать, что ты хочешь сделать. Может, ты хочешь сделать 2D платформер. Может быть ты там космосим пытаешься запилить.
Хочешь не работать на дядю и получать деньги — продавай наушники с алика. А так учи код, учи понравившийся тебе движок, коли рисовать не умеешь. Сделай нормальный прототип. Графон к прототипу не относится.
>>459737 а я без сарказма задаю вопрос. он не касается твоего опыта. нахуй тебе графон? ты без графона можешь сделать игру, если нужно что-то чтобы протестировать какую-то фичу - скачай бесплатное и тестируй на нем.
>>459739 >>459740 Просто я чего начал, и в книжке и в туторах на ютубе ребята которые клепают шарят в графоне как-то. И нормали и запекания вотэтовсе. Отсюда и возник вопрос.
>>459743 Окей, а где про это можно почитать/посмотреть? Я наверное не корректно выражался, под "графоном" я имел ввиду визуальную составляющую, а не только модельки.
>>459744 > а где про это можно почитать/посмотреть? На ютубе видео как говна. Проблема в том, что они в основном сами по себе тоже говно. Был такой чувак с ником Stream, пилил сносные видосы, где человеческим, а не академическим языком разжёвывал дохуя разного. Но канал он потом удалил, так что ищи перезаливки. "stream утерянные видео" или что-то такое. Он часто ебланит, но в русскоязычном секторе это одни из немногих видео по юньке, от которых не сильно хочется блевать. А если инглиш норм тащишь, то смотри официальные туторы, их там на пару недель дрочева хватит, если не просто переписывать скрипты с экрана, а попытаться разобраться что и зачем ты делаешь.
Анончик я добавил мешу коллайдер (с общим мешем) и делаю RaycastHit hit; if (!Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit)) return default(Vector2);// -1;
MeshCollider meshCollider = hit.collider as MeshCollider;
if (meshCollider == null || meshCollider.sharedMesh == null) return default(Vector2);//2; И все работает, но hit.point дает всегда 0 по Y оси, хотя меш нифига не плоский и вообще ничего плоского там нет (кроме гуя, но это не то)
>>459746 Слушай, годнейшие туторы. Реально хороший контент для русека. Единственное что хотелось бы больше фундаментальных основ про меши, нормали и другие интуйтивно непонятные моменты.
Так, анон у меня совсем мозги спеклись. Хочу что бы игрок мог тыкать мышкой в меш. Добавил рейкастинг. НО! Лучи проходит свободно сквозь ЮИ. А должны блокироваться. Сменил рейкаст на var layerMask = 1 << 5; layerMask = ~layerMask; RaycastHit hit; if (!Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, Mathf.Infinity))
Мне окну коллайдер добавить, што ли блять? Канва - скрин спейс оверлей. Что делать то?
>Casts a ray, from point origin, in direction direction, of length maxDistance, against all colliders in the scene. > against all colliders in the scene. >coliders
>>459801 Ну это жи совсем безумно лепить соллайдеры на окна, еще в оверлей скринспейс
>>459800 >if (EventSystem.current.IsPointerOverGameObject ()) Вау, спасибо, анон. Все так просто. С меня нефть (растворенная в моче). А вообще это правильный путь использовать Physics.Raycast - для определения куда юзер ткнул в меше?
А тогда такой еще вопрос >>459783 вот этот меш на картинке >>459803 он, внезапно, ПЛОСКИЙ. Объемность каким то образом задается через шейдер. И все бы хорошо но когда я рейкастчу я попадаю в плоскость и маркер двигается по плоскости. Это я поправил - добавил маркеру выстоту той точки которая выбрана на плоскости.
Проблема в том что при этом немного падает точности установки маркера.
Вопрос нельзя ли как то задетектить попадание рейкаста в объем плоского меша который выглядит объемным? Пробовал в update писать item.GetComponent<MeshCollider>().sharedMesh = item.GetComponent<MeshFilter>().mesh; (тип обновляем меш коллайдера) но чет не работает (толи доступа к видеопамяти не дает, толи он совсем плоский). Вот шейдер, если нужно : https://github.com/Nashet/Interactive-Erosion/blob/master/Assets/InteractiveErosion/Shader/LandShader.shader
>>459805 Рейкаст попадает не в меш, а в коллайдер. Так что смотри что там у тебя нахуеверчено. Может у тебя на меше бокс коллайдер, лол, откуда ж нам знать.
>>459805 Хотя в scene view меш выглядит вполне полигональным а не плоским, хм.. Обновляется меш так m_landMat.SetFloat("_ScaleY", scaleY); m_landMat.SetFloat("_TexSize", (float)TEX_SIZE); m_landMat.SetTexture("_MainTex", m_terrainField[READ]); m_landMat.SetFloat("_Layers", (float)TERRAIN_LAYERS);
Добавляется коллайдер так m_gridLand[idx].GetComponent<MeshFilter>().mesh = mesh; m_gridLand[idx].AddComponent<MeshCollider>();
Но в этот момент он точно плоский. Да и потом меш жи меняется, коллайдер обновлять надо
>>459818 > Высоты хранятся в текстуре, общая высота = сумма r,g,b,a Ну так кидай рейкаст, через hit.point получаешь значения по X и Z, потом суммируй значения всех каналов той точки, куда попал, и получай Y.
>>459822 >Он же от камеры падает перпендикулярно плоскости XZ. Амм.. Нет, он от камеры идет через точку клика мышкой. А камера крутится и переещается по всякому.
>>459824 В принципи, можно спроецировать луч на плоскость, рассчитать высоту поверхности в каждой точки получившегося луча и где эта высота совпадает (пересечет первый луч) - там норм точка. Или таки только по событию клика развернуть плоский меш в объемный и нормально спроецировать луч.
>>459825 Сделой наоборот: рисуй курсор там где насчитал персечение. Посчитал делта х и у в апдейте, нашел пересечение - там нарисовал курсор. Либо проецируй текстуру на меш с белым пятном в месте курсора и в шейдерах делай что надо. я хз что там в юнити и вообще сейчас с шейдингом, бросил этот пердолинг во времена ДХ10.0
>>459784 помню я кого-то мотивировал на написание эрозии, да. а мне вот нечего нового показать для привлечения внимания. кстати, информацией о эрозии не поделишься?
>>459805 >>459825 твой план не будет работать если камера близка к горизонту. надо проверять всю длину луча в пределах террейна. ты шагнул в очень интересную сторону. можешь сделать что-то вроде того что сделал я >>458902 чтобы узнать какие куски грида пересекает твой луч, проверить пересечение с треугольниками грида.
>>459633 Хуёвая идея с наследованием, если честно. Спецаильный человек запиливает сцену с интерфейсом игры. Он использует обычные компоненты. А тебе потом придётся их заменять на свои (Text на LocalizedText), а это пиздец неудобно. В сто раз проще добавить дополнительный компонент.
Перевод хочу хранить в гугл таблицах (1 лист - 1 язык). После чего скриптом буду сохранять его в json и загружать нужный json уже в юнити при помощи LitJSON. В принципе просто и понятно.
Видел ещё один интересный, но более муторный вариант: перевод хранят в exel файле, через юнити едитор его считывают и трансформируют в скриптабл обжект, а потом уже подгружают нужный скриптабл обжект. Но всё же проще сразу json подгружать.
>>459830 >Сделой наоборот: рисуй курсор там где насчитал персечение. Ах ты ж хитрая попа. Но тогда курсор мыши будет двигаться в нелинейном пространства.. надо попробывать..
>>459830 >Либо проецируй текстуру на меш с белым пятном в месте курсора В смысле курсор мыши вообще не рисовать? Тоже хитро
>>459842 >кстати, информацией о эрозии не поделишься? Попозже, ты ж все равно тут сидишь. Я еще и тектонику симулировать собираюсь, хз как.
>>459849 >Хуёвая идея с наследованием, если честно. Спецаильный человек запиливает сцену с интерфейсом игры. Он использует обычные компоненты. А тебе потом придётся их заменять на свои (Text на LocalizedText), а это пиздец неудобно. В сто раз проще добавить дополнительный компонент.
Таки наверно можно автоматически поменять. Или сразу норм ставить.
>В сто раз проще добавить дополнительный компонент. Наверняка где то забудешь добавить, если в ручную добавлять будешь
>>459854 >Наверняка где то забудешь добавить, если в ручную добавлять будешь Есть ещё вариант. Получаешь все компоненты Text со сцены и используешь имя объекта в качестве id для получения локализованного текста. Но, опять же, придётся пройти по всему тексту на сцене, чтобы задать имена у объектов, иначе никак.
Есть одна клиент-серверная (LLAPI) говноподелка, которая в данный момент хранит данные в SQL бд. И внезапно я задумался: когда сервер берет данные с БД это норм. Но когда клиент берет, это же не норм? К примеру, есть SQL функция по id возвращающая свойства шмотки. Клиент, имея доступ к БД, может перебирать id и вытащить все данные по всем шмоткам и т.д. что, наверное, не очень верно. А инициализировать запрос на сервер, чтобы он спросил у SQL, и ждать ответа, это не самая быстрая и простая вещь.
Какие best practices в этой сфере? Как нужно делать правильно?
Зделол свой первый в жизни оверлей!! Вот те красные пиксели показывают количество отложения ила на дно в тик.
Как зделол: скопировал обычный шейдер рендерящий поверхность и добавил ему в R канал количество осаждения. Все правильно делаю? А как наложить оверлей поверх а не вместо имеющегося рендера? Еще один меш городить? Или лучше добавить второй материал к имеющемуся (ассуминг они не конфликтуют по картинке)
Помогите, не могу понять, как по-понятиям делается. Вот есть у меня аниматор для передвижения персонажа с анимациями движения и есть всякие ситуативные анимации типа сесть на стул, бахнуть пивка, развести руками и прочие. Не пихать же мне все эти анимации в аниматор передвижения, он же перегружен будет. Можно ли как-то плавно сменять анимации только на время этого действия?
>>459902 Я это понимать, и даже использовать SQL процедуры. т.е. у пользователя нет прав на доступ к бд, нет прав на селекты и прочее. Он может просто исполнить SomeFunc(175) описанную в SQL интерфейсе (скажем так) и ему будет возвращено значение. Что именно внутри этой функции он не знает. Но тут вопрос - что ему мешает попробовать выполнить эту функцию для других id "руками", тем самым получая значения? Ок, если это просто инфа о шмоте, а если это LootItem(id)? Ну, ты меня понял...
Поцоны, философский вопрос об обучении. Как вы учитесь/учились ебашить на юнити? Вылизывали ли вы проекты или как можно скорее перескакивали на изучение нового функционала? Просто я делаю первую игрушку, и вместо того, чтобы за пару дней что-то скрафтить, и начать делать другую, начинаю вылизывать первую - менюшки, разрешения, эффекты, шейдеры, все такое. Или лучше ебашить по прототипу в день?
Цель выучиться и пойти куда-нибудь джуном. Игрострой не только как хобби, но и как профессию хочу освоить.
>>459938 Если игрострой - тогда, наверное, лучше прототайпить. Со временем, можно попытаться сделать более-менее успешный коммерческий продукт как венец портфолио
>>459746 Начинал с этого чувака по советам гд, и юнити ин экшн книжки. Через 2-3 недели понял, что я тупо копипащу и нихуя вообще не понимаю. После этого задрочил обучалки на офф.сайте. С уверенностью могу сказать - лучше обучения основ чем на офф.сайте - нет. Все схватываешь и понимаешь на лету, все круто и удобно. Хочешь какие-то более сложные фишки, думаешь, что тебе надо, пишешь HOW TO в ютубе, и вуаля, есть практически всё. Правда нормальных туторов для хау ту эдд геймбой рамбл я не нашел, пришлось пердолиться (очень странно, популярная тема должна же быть, не?).
>>459940 Да, так и буду делать. Но пока что закончу первую, хотя бы чтобы для себя был законченный первый проект. Это все-таки приятный буст морали. Потом буду разный функционал тестировать, в планах, что хочу изучить: сетевые игры (подключение к серверам, префабы игроков, все это), особенности мобило-параши и виар.
Не могу сообразить. У меня есть два объекта на сцене. Я хочу к одному из них приложить силу Rigidbody.AddForce, т.е. вектор, направленный от этого объекта ко второму. Как мне получить значение этого вектора? Как определить, в какой стороне от меня находится второй объект?
>>459914 У тебя неправильно спроектирован интерфейс. Клиент не должен мочь запросить строку из БД, он должен уметь делать POST со своими действиями (я покакол) и GET с состоянием (на полу накакано).
>>459938 >Как вы учитесь/учились ебашить на юнити? Никак. Ну ладно, почти никак. Посмотрел несколько туторов на сайте, сделал джва обучающих проекта про катание шариков и космокораблик, и начал делать свой проект. Правда у меня опыт работы погромистом 8 лет, наверное это немного сказывается.
>>459944 > Как определить, в какой стороне от меня находится второй объект? Геометрию забыл? Направление от объекта1 к объекту2 это позиция объекта2 минуст позиция объекта1.
>>459957 > napravlenie = (gameObject.transform.position - drugoyObject.transform.position) Ноуп. Это будет направление от другого объекта к исходному, а не наоборот.
>>459951 Но ведь я про это и говорю. Exec Nakakano(128). А ответ летит вес насраного. Проблема в том, что любой сможет сделать, ок, будь по твоему, Post с нужными ему параметрами, и получить Get с такими же параметрами, несмотря на то, что передавать его будет не приложение а он, руками. Аутентифицировать приложение нормально вроде никто не умеет, а копать в сторону эдакого "SQL Proxy", которая будет проверять валидность параметров (Да, ты действительно стоишь рядом с лутаемым, и действительно тебе никто не намыливает анус и ты можешь поднять шмотку). ну ВООБЩЕ страшно. Можно, но громоздкость решения зашкаливает.
>>459975 На скриншотах нет ни одного объекта с RigidBody, если что, все считается в скриптах "на бумаге" и позиционируется через transform. Планеты гораздо ближе и отмасштабированы. RigidBody нужен будет чтобы аккуратно подлететь одним спутником к другому с относительной скоростью 1-2 м/с и столкнуться с ним, а не пролететь сквозь.
>>459974 >Exec Nakakano(128) Реализация должна быть на стороне сервера в стиле "какою" - "200 OK". Или 400 Bad Request, если персонаж не хочет срать. Клиент может получать данные от сервера только в виде ответа на GET запрос, "сколько накакано?" - "1 кг". Но ни в коем случае не в виде команд "накакано 1 кг".
Расскажите, что вы используете для того чтобы тащить UI через сцены? Синглтон, аддитивные сцены, или что-то еще? Самое простое решение которое я вижу - синглтон UIManager, у которого в иерархии в детях находится всё связанное с UI все Канвасы и кнопочки. Какие подводные камни? Чем подгруженная сцена будет лучше?
>>459976 Какой "Мой"? Кто такой "Мой"? Я буду передавать параметром id пользователя, чей вес я хочу получить. Проблема в том что команду можно "симулировать". >>459978 Я же об этом и говорю. Exec Nasrat(UserID); В ответ я хоть бинарный код картинки с чебурашкой могу получить, это от процедуры зависит, но вот вопрос: как узнать что персонаж не хочет срать то? Проверку на валидность запроса как проводить? На клиенте нереально: запрос на выполнение можно "подправить". На сервере приложения (не бд) нужно будет пилить эдакую проксю, чторбы клиент писал серверу StartCoroutine(Nasrat), сервер проверял все условия и делал или не делал запрос БД.
>>459979 В Аллодах (и вроде бы в Скайфордж) так и делали, но я как представлю, что мне нужно будет дублировать все процедуры в приложении-сервере (получил, проверил, отослал результат) а потом и в клиенте-сервере (спросил-получил пакет-применил), мне становится плохо. Оче плохо. Я прям вот щас как представил обьем работ - чутка сблеванул.
>>459866 >Клиент, имея доступ к БД, может перебирать id и вытащить все данные по всем шмоткам и т.д. На сервере храни специальный ключ (строку, которую будет знать только сервер). Когда игрок заходит в игру, авторизуешь его на сервере: - он присылает запрос 'auth' со своим user_id - ты на сервере берёшь user_id, прибавляешь к нему секретную строку и преобразуешь результат в md5 хеш - возвращаешь полученный хеш игроку
Далее, когда игрок хочет получить данные шмоток, он должен прислать строку авторизации (тот самый хеш). Когда приходит запрос с хешем, проверяешь его, совпадает ли он с тем, что должно быть:
Это простой и рабочий способ. Игрок таким образом сможет получить только свои данные. Если он попытается запросить данные другого игрока, то пойдёт нахуй.
>>460087 А вот это уже интереснее, спасибо. Фактически, получается усложненная аутентификация, ключ которой не так легко вытащить, если начать шифровать SQL траффик. (Только если деобфрусцировать весь код аутентификации, и написать свой аутентификатор, то уже значительно сложнее). Остается вопрос с проверками расстояния, состояния и доступности (чтобы не насрать за 2 километра или за стену), но там не так много.
>>460091 Благодарю (последние посты на доске меня удивили - есть тут еще хорошие люди), но у меня уже написана своя сетевая надстройка над Low Level API юневской. Видимо, придется писать некий SQL прокси вдобавок. Не сложно, но есть проблема с передачей массивов. Глобально я интересовался PUNами, но на стадии проектирования отказался - слишком сложный итоговый контроль.
И где ты там что унаследовал, чмоня? Твоя хуйня точно так же монобихевиором накидывается тебе за щеку поверх текста. Пошел нахуй из треда короче, стыдно даже ссать на тебя.
>>460142 Чтобы не смешивать логику локализатора с другой логикой. LocaleStorage работает сам по себе, ему не нужны сторонние обращение. А вот Locale уже связан с классом Game, который хранит настройки игры и прочее, и связан с классов LocalSettings, который хранит настройки игрока (PlayerPrefs). >>460139 >И где ты там что унаследовал >>459849
>>460124 Ничо так, но я думал ты хочешь захардкорить что-нибудь эдакое, компоненту для UI, типа. А это просто монобэха, и надо стрингайди ляпать.
Что будет кроме дебуглога если стринг айди не найдено? Я вот в своем лисапеде накалякал дефолтязык и дефолт текст которыми забивается все что не найдено.
Sup, Кармаки, разрабатываю на Юнити всякое казуал-говно по заказам с Upwork, а параллельно разрабатываю ИГРУ СВОЕЙ МЕЧТЫ и нужен ваш совет. Никогда не имел дело с базами данных со времен 3го курса и вот мне пришла идея запилить крутой инструментарий для создания всего ин-гейм: оружия, доспехов, квестов, диалогов, етц. Я повспоминал молодость и вспомнился мне TES Constrution Set, в котором такая фишка была реализована на пятерочку: открываешь окно, заполняешь все поля (название, дамаг, файл модельки, файл иконки, етц) и вуаля: можно перетаскивать свою пуху прямо в игру. То же самое с квестами, с диалогами уже сложнее, но мне хотя бы с предметами сначала начать и никогда не закончить. Так вот, у меня общая картина в голове вроде есть: Делаем кастомное меню Editor, в нем все нужные поля, по кнопке СХОРОНИЛ, Editor пишет данные в ???, а сама игра уже их оттуда читает и создает нужные объекты на сцене, если это, например, пуха или меняет поля какого-нибудь Quest-Manager'a, если это квест и т.д. Вопрос, собственно, в чем: нужна ли мне БД, если нужна, то какая? Надо, разумеется, что бы все это работало без необходимости устанавливать на пеку юзера какой-нибудь ФАЙРБЕРД или ОРАКЫЛ. Или проще все в бинарники грузить? А как тогда каталог открывать? Захочу я, например, изменить дмг своей пушки, надо что бы был ДБГрид или какой-нибудь его аналог из которого я могу открывать окно с подбробностями о пушке и менять все. В общем, представьте, что вы такой же ебанутый как и я и захотели подобное реализовать. Как бы вы к этому подошли? Бзв, есть мысли, в случае успеха, выложить такую систему в ассетстор нахаляву, на радость всем. Ассетстор не чекал
>>460185 Сделал так свой редактор для квестов на эдиторе, все храню в жсоне. Хочешь через юнити пили, хочешь внешним редактором. БД без СУБД этоже бинарник/файл. А СУБД тебе не надо.
>>460187 У меня были мысли про json или xml. А с жсоном можно работать через C#, ну я имею ввиду, что бы велосипед не изобретать, в .NET есть реализованные методы для работы с ним?
>>460191 Хм, да ты просто Тодд после такого. Сейчас обмажусь xml-ем для Юнити. Насколько я слышал, этому даже во всяких Гикбрейно-парашах на курсах по юнити учат. Спасибо
>>460157 > Чтобы не смешивать логику Я к тому какой практический смысл делать синглот с публичным конструктором лол, приватным гетером лол и все поля/методы статичные. Я такой хуеты никогда не видел. Не легче уж тогда сделать всё статичным и публичным, раз все равно не понимаешь как работает синглтон.
Как запилить стрелки типа таких как на пике или попроще но на шейдорах HLSL. Т.е. есть текстура, в каждой точки текстуры хранится вектор, на основе вектора делаем текстуру.
Откуда начинать думать? Видел примеры на GLSL но они вроде как не совместимые и вообще не понятные
>>460299 Именно меш нельзя. Только пихать его в редактор, поворачивать как надо и экспортировать заново. Сам моделлеру за это дело по началу по рукам стучал. Но можно схитрить. Создать пустой объект, который, понятное дело, будет правильно ориентирован по осям, а потом в него вложить меш. И уже все операции делать с объектом, а не с мешем. Но это только если тебе его двигать/вращать и прочие элементарные вещи.
Еще один вопрос. Делаю туррельки, которые следят за позицией игрока с помощью transform.LookAt. Как сделать, чтобы их ротейшн был ограничен, например, 90 градусами? Т.е. когда объект пропадает из их зоны видимости, туррелька не двигалась дальше или возвращалась на начальную позицию.
>>460308 > чтобы их ротейшн был ограничен, например, 90 градусами > Т.е. когда объект пропадает из их зоны видимости, туррелька не двигалась дальше Ты уж определись что тебе нужно, ограничить вращение по градусам, или по расстоянию до объекта.
>>460313 > Зона видимости по градусам же. puska.transform.localRotation.y = Mathf.Clamp (puska.transform.localRotation.y, -90f, 90f); Ну или как-то так, лень проверять схавает ли он такй прямой доступ к "y".
>>460308 > Т.е. когда объект пропадает из их зоны видимости, туррелька не двигалась дальше или возвращалась на начальную позицию. Оно тебе ещё надо? У меня есть пример.
>>459842 >кстати, информацией о эрозии не поделишься? Вода, внезапно, течет вниз (в шейдорах). Подсчитывается поток воды, потом скорость. Скорость "диффузируется" чтобы не быть квадратной как текстура. Порода растворяется в потоке если скорость потока высока. Растворенный "ил" течет по течению и потом осаждается где то.
Еще есть гравитационная эрозия - тупо если угол склона выше Х то оно вниз сползает без всякой воды. Тут надо переделать, порода должна действовать как густая жидкость а не как сейчас. Там репо в гите было где то выше.
>>460338 Да вот и я подумал что для такого симулятора весеннего двора особо камеру вертеть не надо, можно сделать кнопочку, чтоб камера принимала вид чётко сверху и жмакать что есть дури куда попадёшь.
Есть один объект из спрайтов (человек). Почему иногда при нажатии на него, выбирается родительский объект, в котором все его спрайты, а иногда конкретный спрайт? Как сделать, чтобы всегда выбирался только родительский объект?
Анон, а есть паттерны разработки? Первый раз буду делать что-то свое, а не по тутору. Не хочу объебаться и делать все последовательно и правильно (чтобы потом не переделывать).
>>460356 Забей хуй. Если это твой первый блин, ты всё равно наделаешь ошибок и потом всё переделаешь. Я сам относительно новичок, и занимаюсь этим всем в свободное время, но я когда начинал тоже искал подобные советы, так что вот те правила которые я сформировал на данный момент:
1) Относись к себе-в-будущем как к дауну, который нихуя не понимает. Используй Assertions, чтобы не дать себе выстрелить очевидными багами в ногу. 2) Не используй огромные скрипты, дели их на компоненты поменьше, так и дебажить проще, и некоторые можно будет потом повесить на другие объекты. Если для последнего нужно будет накинуть абстракции - делай это, время сэкономленное по ходу разработку того стоит. в разумных пределах, конечно же 3) Пройди всё что касается скриптинга на сайте Юнити. Те, которые короткие видяшки. Нужно хотя бы знать что такие возможности существуют. Я сразу ринулся в бой и потом внезапно открывал для себя очевидные и удобные функции. 4) Старайся делать каждый компонент как можно более независимым. Например, скрипт PlayerHealth не должен при снижении хп начинать отправлять методы во все концы игры и тем более менять переменные в других местах, вместо этого лучше использовать Observer Pattern, чтобы PlayerHealth вообще не знал на что он влияет и как, а просто выполнял свою работу. У меня сейчас в игре, например, ни один объект не знает про существование UI. Это значит что если я внезапно захочу сцену где для большей драматичности нужно его отключить, никаких лишних ошибок не выпадет.
В последнее время копаю в сторону ScriptableObject'ов. У меня начало формироваться мнение что Синглтоны и DontDestroyOnLoad() это зло, но я пока в этом не уверен, не опробовал как надо. Если кому есть что добавить - я готов выслушать.
>>460361 > Например, скрипт PlayerHealth не должен при снижении хп начинать отправлять методы во все концы игры и тем более менять переменные в других местах Вот есть у меня моб. У меня есть ХП. Когда оно падает до ноля, моб уничтожается и увеличивает переменную "mobCount" на 1, которая отображается в UI. И как мне эту переменную увеличить, не общаясь с UIcontroller'ом?
>>460361 Вот спасибо. Алсо ещё хотел узнать какие моменты нужно продумать обязательно перед созданием игры (кроме общего сеттинга и боевочки), за что браться в первую очередь (персонажи/окружение)?
>>460367 Cначала научись кодить на простых прототипах. А потом уже делай игру мечты. Я сейчас делаю так: создал из обучалки спэйс-шутан простой. А потом стал к нему прикручивать дохуя разного функционала, просто чтобы было. Ни чтобы игра стала лучше, а просто мне удобно на уже рабочем прототипе учиться делать новый функционал. К тому же, я уже начал видеть кучу ошибок, которые я допустил со связанностью. Например, некоторые скрипты из обучения, тот же дестрой бай контакт настолько оказались неудобними при расширении функционала, что просто пиздец. Прислушайся к >>460361. Он дело говорит, но пока сам не наткнешься на все это - не поймешь.
>>460370 Вешаешь этот скрипт на турель Transform target; // это цель твоей турели, как ты её будешь получать - твоё дело public float angle, speed; // угол "зрения" турели и скорость её перемещения. угол имеется в виду влево и вправо от её начальной позиции. то есть при значении 90 она будет "видеть" на 90 градусов влево и 90 вправо Quaternion originalRotation; Quaternion targetRotation;
>>460371 > Я сейчас делаю так: создал из обучалки спэйс-шутан простой. А потом стал к нему прикручивать дохуя разного функционала, просто чтобы было. Ни чтобы игра стала лучше, а просто мне удобно на уже рабочем прототипе учиться делать новый функционал. К тому же, я уже начал видеть кучу ошибок, которые я допустил со связанностью. Например, некоторые скрипты из обучения, тот же дестрой бай контакт настолько оказались неудобними при расширении функционала, что просто пиздец Лол, та же хуйня была. Тоже сделал space shooter по туториалу, а потом к нему нахуевертил бонусы (ускоренная стрельба, двойная стрельба, рассыпная стрельба), боссов, уровни. И тоже такую башню из говна и костылей построил по итогу, что сам в ней утонул. Но зато какой опыт, лол.
>>460388 Ах да, в апдейте на весь участок кода повесь проверку на наличие цели, если ты её ищешь как-то, а не просто в инспекторе ручками пихаешь. Хотя даже если и ручками пихаешь - всё равно повесь
>>460364 Нужно сделать так, чтобы UI брал значение этой переменной. Например, у меня у множества объектов есть инвентари. И когда я хочу отобразить содержимое одного из них, скрипт, наполняющий гуй, через интерфейс берёт все нужные данные у выбранного объекта. А сам объект вообще не ебёт, кто и что будет смотреть в его инвентарь, он реализует интерфейс доступа и на этом всё.
И когда мне захочется, например, сделать АИшный сенсор, анализирующий инвентарь, я так же возьму все нужные данные через интерфейс, а объект останется неизменным.
>>460361 Дополню этого господина выводом из личного опыта: используй monobehaviour, только если он действительно нужен. Часто бывает удобнее использовать один - несколько скриптов, реализующий более классическую архитектуру.
>>460395 > Например, у меня у множества объектов есть инвентари. И когда я хочу отобразить содержимое одного из них, скрипт, наполняющий гуй, через интерфейс берёт все нужные данные у выбранного объекта. А сам объект вообще не ебёт, кто и что будет смотреть в его инвентарь, он реализует интерфейс доступа и на этом всё. С инвентарём у меня как раз как ты описал. А в мобе у меня забито значение ХП и проверка, которая в случае если ХП <= 0 сообщает UI-контроллеру типа "ещё один сдох, отрисуй там плюс один", после чего моб помирает. Как UI-контроллер будет знать что моб сдох, если он об этом не сообщит?
>>460400 Хотя я тут подумал, можно в классе mob добавить какой-нибудь static int deadMobsCount, на старте сцены получать это значение UI-контроллером, а мобы при помирании будут эту переменную инкрементировать, она ж прям в этом классе на экземпляре висит. Да, должно сработать только нужно ли оно.
Всем здрасте, ищу желающих по участвовать в разработке одной игры в жанре TD на unity, c#, с целью саморазвития и обучения в процессе работы над игрой, так что если у вас есть желание развиться в этом направлении командная работа ускорит этот процесс, если ты : 1. Адекватен в общении 2.Имеешь базу с#, синтаксис для тебя не проблема 3.Имеешь свободное время, в неделю по 2 дня полностью и в остальные 5 по 1-2часа будет достаточно 4. Есть комп с инетом, ну это и так понятно То пиши на мыло [email protected] или в вк vk.com/puppey На данный момент мной написано буквально 5 скриптов, есть небольшая карта. Планирую закончить игру до конца лета 2018
>>460404 > в разработке одной игры в жанре TD на unity, c# Хех, как раз свой ТД пилю. Правда, у меня пока кубики стреляют кубиками по шарикам, но зато вроде работает. Ещё б UI доделать да побольше разновидностей мобов шариков.
>>460407 Да нет там особо никакого опыта. У тебя 5 скриптов, у меня 11 (и ещё один сугубо для отладки), и то из них почти них только 4 весят больше килобайта. Так что считай что один хрен. > моя идея (она отличается от стандартного наскучившего TD) Да я вот тоже думал прикрутить одно говно. Но это я скорее так, чисто для экспириенса и, возможно, для портфолио. Так-то я в одном командном проекте уже занят.
>>460400 Ты можешь пользоваться коллбеками для передачи изменения статуса. Но лично я бы наверное сделал менеджер противников, который получал бы всю информацию о мобах через коллбеки, и к которому можно было бы обратиться для получения информации.
У меня в мохо-объекте есть поля public типа RenderTexture и оно видно в инспекторе, все ок.
Потом я создал свой класс public DataTexture который содержит две RenderTexture и его не видно в инспекторе, несмотря на то что все public. Как сделать чтобы текстуры было видно в инпекторе? public class DataTexture { ... public readonly RenderTexture[] textures = new RenderTexture[2]; ... }
>>460423 >[System.Serializable] Помогло, спасибо. А нельзя сделать чтобы были видны в инспекторе и поля с модификаторами private, readonly, static? А, нагуглил - [SerializeField] добавить
This is a notice from the Asset Store Team to inform you that as of Unity 2017.2, UnityScript files, also sometimes referred to as Unity’s Javascript, have been deprecated. More information about why UnityScript has been deprecated can be found on our blog.
You are receiving this message because the following product (s) have some .js files included and it will likely start to cause some issues in future Unity versions. We would advise that any .js files you have be converted to c# at your earliest conveniences. In most cases our Automatic UnityScript -> C# converter can assist you in this process. It is also very likely that you are receiving this message as a result of including Standard Assets in your project. Simply removing those files will suffice.
>>460360 Ну тот анон все верно написал. Никакого секрета тащемто и нет, просто берешь, и без задней мысли делаешь самый простенький прототип, а потом день за днем прикручиваешь к нему фичи, не забывая делать бекапы. Что непонятно - гуглишь.
>>460493 Сарказм несколько неуместен, так как похапэ прогеры до сих пор востребованы в огромных количествах по всему миру. У меня вот друг пхп-прогер, сейчас сваливает в гермашку, так ему полсотни предложений было, когда он свалить решил, и он долго выбирал ещё где получше.
>>460492 Сотка с годовым знанием юньки и хуевым знанием шарпа - вполне себе норм для ДС-2. Так что не так уж и плохо. На самом деле погроммистов на юнити не так уж и много, потому что большинство из них - школьники, которых нихуя никуда не возьмут.
А так да, JS естественно более востребован, но кому не похуй?
>>460513 >Сотка с годовым знанием юньки и хуевым знанием шарпа - вполне себе норм для ДС-2. Хуетка. Максимум 40-50к и ты блять реально должен уметь хуету делать на весьма приличном уровне. То есть нехуевый опыт и знания и ВСРОКИ бл
100 и более это на теплых местечках пригретых, либо по знакомству, либо у тебя luck 255
Сотка. Пиздец ты мечтатель. Поди начитался хабраговна, да? Развесил уши.
>>460516 Если что, я так год работал, делая виар-развлечения для торговых центров, не умея при этом нихуя вообще (пройдя несколько туторов и сделав один проект). Не отрицаю, что возможно мне повезло + я работал до этого в смежной сфере, но не кодером.
Когда ты последний раз был на собеседовании на кодера/геймдева? В рашке особенно давно тупых цац не сажают на это, тебя реальный бородат с опытом в 30 лет будет хуярить, причем всегда в отвратном настроении, ибо его оторвали от дела и делать ему нехуй, тебя дебила слушать.
>>460525 Возможно, действительно, разница в разных регионах. Я сам в ДС-2, но приехал из другого города. У нас всегда говорили пиздИть в значении врать. И пИздить в значении врать/бить.
>>460529 Скорее тут как вОлки и волкИ. Удивлен, что в вики этого нет. Кстати, если посмотреть обсуждение, там изначально был вариант три, но его удалили. В любом случае, отошли от темы.
>>460531 Удивлен, что нет варианта пиздИть, я имел ввиду. Ладно, в любом случае, на счет эйчара я как-раз и имел ввиду, что обычно тебя не эйчас собеседует, а глава отдела. Но ничего не мешает напиздЕть и ему. Есть особо пытливые, но похуй. Больше собеседований и ура, ты работаешь. Я так вкатывался. Но когда на юнити пахал, это был типа стартап, где меня собеседовал директор и он нихуя ничего не знал. Он просто спрашивал - можешь это, можешь это. А так как запросы там были нулевые, то офк я мог и то и всё.
>>460533 В разных компаниях по разному. Кто-то ищет суперзадрота со стажем 10 лет, а кому-то надо, чтобы ты был адекватный и английский знал нормально. Если ты смог удачно пройти собеседование, хорошенько наебав людей, которые тебя принимают, это тоже говорит о твоих качествах. По-крайней мере, ты умеешь себя продавать, а значит, уже не лох.
>>460537 А потом, после собеседования, в ходе работы, выяснится что может быть ты и не лох в соцскиллах, но лох в геймдев-скиллах и с треском вылетишь. А потом кто-то из менеджеров этой говнокомпании поди еще в бложике про тебя напишет. Напрямую м.б. и не спалит (а то и спалит), но намеков будет достаточно дабы найти если что тупой дебилойд лол
>>460538 >Совсем в шары долбишься? Мб ты долбишься? Причем тут твоя аналогия с неправильным числом, когда у нас не "пиздеть/пиздят" а "пиздеть" и "пиздить" - два разных слова? Ты точно кодер и с логикой у тебя есть что-то? Покинь тред нахуй
>>460537 Любопытная логика >хорошенько наебав людей, которые тебя принимают >ты умеешь себя продавать Ах да, сленг выдает с носом > а значит, уже не лох
>>460543 Почитай внимательно ветку. В частности сюда >>460531 и сюда >>460534 Даже процитирую: > Удивлен, что нет варианта пиздИть, я имел ввиду Тот, кому я это писал, и то понял что мы друг друга не поняли (уж извините за тавтологию), а ты тут вылез со своим трипом. Иди попей таблеточек и успокойся.
>>460540 Плюсуешь себе опыт, увеличиваешь стек технологий, если что-то спрашивают, отвечаешь, да имел опыт работы с этой хуйней, о которой ты впервые слышишь, но давно.
>>460539 Ну если ты тупой, то да. Я вот не вылетел, обучался в ходе работы. Офк я не имею ввиду, что нужно просто придти, нихуя не умея и сидеть на жопе. Нужно въебывать. Но устроиться реально, при чем не сказать, чтобы очень сложно. У меня помимо личного примера есть еще знакомые, которые так вкатывались. Забавно вообще один друг вкатился в какой-то стартап на свифте, нихуя толко не умея кодить, имея только пхп за плечами год опыта. И получает больше, чем чувак, который дрочил матан и кресты десять лет. У последнего нереально горит от этого, на каждой пьянке начинает гореть, всем смешно.
>>460546 >Забавно вообще один друг вкатился в какой-то стартап на свифте, нихуя толко не умея кодить, имея только пхп за плечами год опыта. И получает больше, чем чувак, который дрочил матан и кресты десять лет. У последнего нереально горит от этого, на каждой пьянке начинает гореть, всем смешно. ну я же сказал: >100 и более это на теплых местечках пригретых, либо по знакомству, либо у тебя luck 255 > либо у тебя luck 255
>>460546 >Плюсуешь себе опыт Допустим, это можно. Но релевантого рабочего опыта у меня нет, так что плюсовать нечего
>увеличиваешь стек технологий, если что-то спрашивают, отвечаешь, да имел опыт работы с этой хуйней, о которой ты впервые слышишь
И тут же ловишь какой-нибудь очень дефолтный вопрос, на который ответить не можешь. Твой пиздешь очевидешь, а это 100% слив
Я просто не могу представить о каких именно навыках в ГД можно спиздеть, так что бы это тебе потом не вышло боком ("Ты же сказал что работал с хуйняNAME") или на которые нельзя затребовать пруфы. Серьёзно, приведи пример.
Зря вот вы эту тему вскрыли, тредик засрался. Не люблю когда тематика плохеет.
>>460544 Какой сленг. Это уже тысячу лет как не сленговое слово.
>>460550 Это я понял, просто лак не 255 нужен, а поменьше. Просто есть еще такая ОЧЕНЬ важная вещь в любой сфере, как общая адекватность. Если бы ты сам принимал собеседования, то видел бы, каких дебилов земля только не носит. Я просто сам раньше собеседовал людей, но не в айти-сфере не думаю, что разница так уж велика. И ты просто не представляешь, сколько же откровенной хуйни несут люди. Многие из них с опытом, с нужными скиллами, но когда ты смотришь на них, и понимаешь, да вот я с ним буду работать, и думаешь, ну нахуй, найму-ка лучше кого-нибудь с кем работать будет поприятней.
>>460552 >Если бы ты сам принимал собеседования, то видел бы, каких дебилов земля только не носит. Дибилы дебилами, а таких как ты, желаюших получать 100к сидя на жопе - море. То, что выберут тебя на теплое место - lck 255 и не менее
>>460551 Я работал кодером и геймдизайнером одновременно, потому что был стартап на 3.5 человека. Рассказывал, как я охуенно геймдизайнил до этого а это правда, как ебашил в юнити дохуя времени а это неправдау меня тогда был очень маленький опыт. , рассказал, что делал проекты под окулос и вайв, но не могу показать по определенным причинам а тогда у меня был шутан, платформер и кликер. И в общем-то меня взяли.
>И тут же ловишь какой-нибудь очень дефолтный вопрос, на который ответить не можешь. Твой пиздешь очевидешь, а это 100% слив Такое может случится. Алсо, если ты видишь, что тебя задрот рекрутирует, то лучше, конечно, не врать. Но если это чувак, который горит идеей и ему хочется, чтобы ты ей тоже горел, то можешь из себя хоть супермена строить
>>460555 Ну, я на жопе не сидел, дрочился очень много. Вообще, работа была довольно уебищная, несмотря на кучу опыта, которую она мне дала и приличные для меня деньги. Делали мы довольно таки хуевый продукт, и меня это расстраивало. Это просто было во времена хайпа ВР, там тогда очень много говноконтор появилось, который хотели срубить фаст-мани. И в общем-то, получилось. А 30к в айти я хуй знает, даже джуны больше получают. За 30к можно на жопе сидеть и в другой сфере.
>>460556 По существу только один пример >>как ебашил в юнити дохуя времени а это неправдау меня тогда был очень маленький опыт. , рассказал, что делал проекты под окулос и вайв, но не могу показать по определенным причинам
Хуйня которую нормальному работодателю я бы никогда не сказал. Просто потому что стыдно так нагло пиздеть людям с которыми хочешь работать.
Мой детектор определяет тебя как Bidlius Artificius. Считаю таких как ты врагом любого общества
>>460521 Два раза цац получал. Один раз сразу двух цац и они первичку фигачили, а потом пришел школьник какой-то, который был их главным программистом и он, в сука, речи обычной, использовал «лол» и «рофл».
>>460585 Хочешь небольшой секрет? Некоторые ищут решение годами, а ты за день решил стать ТУРБО-ПРОФИ-МАГИСТРОМ. Сиди и набивай шишки, ибо это единственный путь к истине. Другого не изобрели. ну, конечно, если ты не родился с серебряной ложкой во рту мог бы нанять чотких ребят, они бы всё за тебя сделали
Господа, а почему в префабы в инспектор нельзя кидать объекты прямо со сцены? Приходится в скрипте писать строчку, чтобы объект искался на старте, хотя удобнее просто через инспектор кинуть.
>>460604 Префаб - это такой же ассет как материал, текстура и т.д. Сцена - это набор ссылок на ассеты, либо ассеты, сериализованные внутри сцены. Чуешь разницу?
ГеДонисты, кто-нибудь проходил курс полугодичный Гикбрейнс "Разработчик игр" на Юнити? Интересует, стоит ли того как стартовый опыт для вкатывания.
Для общего понимания: есть много времени, есть финансы (средней ограниченности, но не копейки) и желание пилить игры, но нет опыта программирования. До сего момента занимался написанием диздока и самостоятельным изучением Юнити, дабы запилить прототип и с ним уже дальше набирать команду на коммерческой основе. Но столкнулся с тем что научиться до состояния способности запилить прототип несложной игрушки с нуля сложно из-за неструктурированности информации в интернете. Видеоуроки, сайты и форумы это конечно круто, но много времени и сил уходит на отсев мусора и компиляцию получаемых знаний в голове. Поэтому думаю параллельно пройти эти курсы.
Стоит того, с учетом вводных? Не совсем там мусор уровня "записывайте: вот мышь, вот клавиатура"?
>>460628 Не люблю транжирить финансы понапрасну и не понимая принципов. Поэтому считаю что минимальную базу иметь обязан, что хотя бы видеть и понимать что там пилят вечно голодные наймиты. Это первое. Ну и второе - прототип имеет смысл запилить самому, опять же и для понимания, и для того чтобы было проще и удобней набирать людей на существующий костяк или хотя бы образ игры, чемнесколько месяцев платить им за то чтобы они пытались въехать чего ты от них хочешь. Имхо, конечно, но тщательная подготовка - друг проектов, которым хочется дожить до релиза.
Смотрите, у меня есть 3д модел врага с текстурами. И мне нужно на ее основе во время самоц игры создать несколько разновидностей - у каждой немножко деформировать сетку, чуть-чуть поменять оттенки текстур и немножко перекрутить настройки материала. Как мне создать копии и получит доступ к сетке и материалу со всеми текстурами? Делаться это будет.только один раз при запуске уровня, так что на скорость похуй.
Делаю систему взаимодействия с объектами: подходишь к стулу, видишь подсказку, жмешь кнопку. Персонаж садится, управление отключается, камера меняет логику. Столкнулся с тем, что не представляю, как реализовать, чтобы персонаж мог на этот стул с любой точки садиться и садился точно на стул. Это инверсной кинематикой делается? Куда копать, где читать?
>>460649 А я смогу его состояние сериализовать и залить в файл, а потом игрок выйдет из игры, снова зайдет в нее, загрузит игру, и там будут были все эти мои модификации противников?
У меня есть вдве почти идентияные модели. Если я для одной сделаю скелет и проанимирую - его можно будет для второй с минимальными усилиями адаптировать?
Нормально ли сделать игровой интерфейс отдельным префабом, в котором будет код по типу OnClick() if(!player) player = FindObjectOfType<Player>(); if(player) { player.strelat(); }
алсо можно ли к такому физичному телу применить инверсную кинематику, анимацию? Вариант с не физичной копией физичного человечка, с последующим присваиванием целям пружин положения анимированной копии меня не очень устраивает. Хочу еще сделать возможность хвататься ручками за объекты.
>>456736 (OP) > Если ты уже умеешь использовать язык, то можно приступать непосредственно к изучению движка. Крайне рекомендется купить/скачать книгу Unity in action (Unity в действии). В ней подробно описываются множество возможностей движка. Скачал эту книгу, почти все там знаю. Что изучать дальше? Вот я видел тут обсуждают скриптабл обжекты, нодовые редакторы(представляю что это, но не очень представляю зачем оно надо кому-то кроме ассетописателей) и еще что-то, что я забыл. Начал бы уже гуглить в эту сторону, но проблема в том что мне кажется это юзлесным, во всяком случае в моем соло-кирилльстве. Я ошибаюсь? В каком направлении вообще развиваться? То что игры-то надо делать это понятно, но все же параллельно надо хоть какие-то еще возможности юнити изучать.
Подскажите пожалуйста. Можно ли из скрипта получить доступ к данному материалу и изменить его текстуру? Эти строчки не работают. gameObject.GetComponent<Material>().mainTexture = myTexture; gameObject.GetComponent<LineRenderer>().materials[0].mainTexture = myTexture;
>>460735 Ну берёшь и без задней мысли меняешь в свойствах спрайтрендерера. Если я правильно понял, что ты делаешь, то довольно распространенный способ в подобных случаях - менять положение по Z при движении по Y. Слои будут просто заходить друг за друга при движении.
>>460697 Вчера сделал по тутору с их сайта игру, где шариком надо квадратики собирать, уже чувствую себя охуеть каким гейм-девелопером. Но там много всего на их сайте, я что-то хз с чего начать. Планиров сегодня начать смотреть их туторы по C# и получше разобраться с API юнити. Всё правильно делаю?
>>460713 >представляю что это, но не очень представляю зачем оно надо кому-то кроме ассетописателей Асетотаскателям надо конечно же. Я для себя понял, что игра на унити должна создаваться процентов на 90 перетаскиванием ассетов, если нужного ассета нет, ты должен его написать.
>>460766 >Я для себя понял, что игра на унити должна создаваться процентов на 90 перетаскиванием ассетов, если нужного ассета нет, ты должен его написать.
Хотя бы один понял. А то тупые тралки как этот заебали уже: >>460658
>>460766 Бля. А я вот делаю рогалик с процедурной генерацией. Тут вообще пока 0 асетов приходится таскать - все делает мой генератор(пока почти ничего), все он сам расставляет по сцене при запуске уровня.
>>460776 >микрособенностей Ну,в такмо случае 500к в первый месяц обеспечены! Ни разу еще не видел рогалика без микроособенностей, все 1:1 как на подбор!
>>460778 >я пришел к работодателю и такой - а у меня игра есть! И как думаешь, кого он выберет среди десятков тысяч таких же как ты с игрой? У некоторых по целому пакету игр заплечами и нихуя найти нормальной работы не огут
Тут вообще есть какое-то более менее интересное программирование? Мне раньше казалось, что когда делаешь игру, ты пишешь огромную такую систему, а на деле просто иногда приписываешь скриптики к объектам игры и всё. Весь код за тебя почти полностью написан, осталось только квадратики расположить. Или это только начальное впечатление?
>>460787 >Тут вообще есть какое-то более менее интересное программирование? А то. Тут можно так глубоко уйти в абстракции и выстраивать сложные системы. Либо можно обмазаться синглтонами. Можно найти золотую середину.
>>460809 Проблема может быть в том, что половина людей будут продавать свое поделие как революционную индюшатину из 3128-го года. И в том, что тетке в HR будет похуй на инновационность твоего игоря.
Хочу свалить кучу перфабов в папку Resources и при запуске уровня грузить оттуда все как Resources.Load("zalupa"); И никаких там ебаных таксканиц ассетов, все через код. Какие подводные камни?
>>460809 У каждого первого "игра охуенная" И тем не менее, 90% Стим стора - полный инди-трешак на коленке сделанный. Твой не будет исключением. Или ты там Ori and The Blind Forest 3 делаешь? Осилишь за пару лет то, что команджа профессионалов 3 клепает? ну давай
>>460815 >90% Стим стора - полный инди-трешак на коленке сделанный Последствия низкого порога вхождения в юнити и гамак. В стимсторе полно и просто натасканных ассетов.
>Ori and The Blind Forest 3 Нет, я решил сразу крузис3
Аноны, а где брать Unity на линукс? Когда-то давно видел, что вроде не так сложно поставить, а сегодня стал искать, и вижу только упоминания, но ссылки на сам пакет нет.
>>460837 Ну нет, я не настолько тупой. Эту статью я читал еще в день, когда она появилась, и в ней ни слова, ОТКУДА брать дистрибутив юнити. Ни ссылки, ни направления, ничего. Автор выясняет, как подключить адекватную среду к юнити, а я еще даже до этого шага не дошел.
>>460844 Не понял. Это будет 1 раз делаться же при загрузке уровня. Вкратце суть - у меня ечть несколько разновидночтей текстур пола и несколько нормалмап. На основе этого и изменения цвета мне нужно создать несколько видов пола для каждого уровня. Я не вижу.вариантов кроме Resources.Load и задания через инспектор, но второй вариант какой-то даунский.
>>460878 Не, хотелось бы увидеть цепочку ресурсов, которая загружается. Например, грузишь через ресурсы скриптабле обжект, а у него ссылка на префаб, у префаба ещё ссылки.
Хочу, чтобы у меня при создании ScriptableObject в редакторе срабатывал конструктор (ну, не конструктор-конструктор, а его аналог, естественно). OnEnable() не подходит, потому что он срабатывает и при создании SO, и при любом удобном моменте: подправил скрипт — уже созданный SO опять включает OnEnable(), запустил заново редактор — OnEnable() на кой-то хуй. Есть какие-нибудь еще варианты? Можно ли сделать вот так:
Сап, аноны. Сделал 2D-рэгдолл с помощью HingeJoint2D. Вроде бы все и хорошо, но при перетаскивании (читай - впечатыванием) в стену или просто болтая его из стороны в сторону, он начинает деформироваться (руки и ноги впечатываются в тело даже при наличии коллизии между ними, смещается позиция конечностей и головы). Рэгдолл переношу через rb2d.MovePosition в промежуточную точку. Как фиксить, подскажи.
>>460850 > Некоторые платформы имеют кусок гусе вместо файловой систмы Но получается при Resources.Load геймобжект грузится в озу и больше обращения к файловой системе(никаких подгрузок/кеширований/что еще можно придумать с использованием файловой системы) не будет, так?
>>460902 > The Resources folder is also useful in trivial cases, when all of the following conditions are met: > The content stored in the Resources folder is not memory-intense > The content is generally required throughout a project's lifetime > The content rarely requires patching > The content does not vary across platforms or devices.
Пилю 3д буллет хелл, все снаряды буду 2д спрайтами. Сами спрайты будут взаимодействовать с другими объектами? Убить противников, наносить игроку урон. А то столкнулся с тем, что при столкновение спрайта с бокс коллайдером, спрайт не наносит урона. Такое вообще возможно или я проебался в коде?
Есть одна low level API сеть. Она кидается byte[] из штатного NetworkTransport.QueueMessageForSending. Все бы ничего и все заибися, но юневая сеть может принимать не более 64 кб. т.е. буфер у NetworkTransport.Receive не может быть более 65535 байт. Пофиг какой канал ты используешь, хоть по 256 байт свой message порежь, в итоге оно соберется в сообщение, которое придется Recieve, и оно не должно быть больше 65535. Если больше - гром, гроб, кладбище, пидор. А если вкратце - то, куда приходит жЫрный пакет намертво виснет (найс секурити). Но как же быть с сравнительно большими данными (содержимое инвентаря, диалог с пиздожорчиком и прочее)? "Резать" byte[] на куски? Но как потом пересобирать при получении? Гдэч помогач?
Привет, помогите, у меня почему то не анимируется перс. Cоздаю анимацию, кликаю чтоб она открылась в animation, жму запись, щелкаю на полосу времени, выбираю ногу у перса и двигаю чуть чуть, типо начальное положение, потом снова на полосу времени, двигаю ногу. При нажатии на плей анимации нету, хотя со всей моделькой целиком это работает. Как челика анимировать? Ключи удалять и заного ставить пытался, с кривыми тоже.
------------------
Прошлый тред:
Шапка: 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-store
UnityWiki: http://wiki.unity3d.com/index.php/Main_Page
yni : https://www.youtube.com/watch?v=gnkBKtnYeb8
Made 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 - это начать делать игру и по мере разработки гуглить непонятные моменты.