24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
На 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 - это начать делать игру и по мере разработки гуглить непонятные моменты.
>>401747 (OP) решил в които веки запилить нормальный ,руSSкий ответ второму фолачу.На юнити перекатился недели полторы назад и в Ц# я нуб. Застрял серьезно с такой проблемой: Если рейкастить предмет с тегом 'pickup' чтоб его спиздить в рюкзак,возвращается GameObject который юнити не хочет конвертировать в ItemObject(класс предметов написаный мной,он единственный приемлемый в функции положить предмет в карман) хотя этот предмет имеет скрипт наследника ItemObject.Короче мне либо разрешить чару подбирать предметы любого типа то есть GameObject и тогда будет куча багов и вобще костыль либо что я могу еще сделать в такой ситуации??
>>401758 >>GameObject boo = ...; я чет сомневаюсь что это в сишарпе заработает >>А вообще проиграл от сочетания руssкости, говна на скринах и отсутствия знаний. через пару недель ты мне завидовать будешь,будет единственная игра на гд нормальная в этом году
>>401758 А вот теперь я птаюсь закинуть это в инвентарь[] и она мне пишет что object reference not set to an instance of an object при том что я могу дебаг.лог мне показывает что инстанс есть
>>401772 ...сделай менеджер предметов в сцене, который сразу имеет ссылки на компоненты всех подбираемых предметов, при подбирании работай с предметом через менеджер
>>401791 либо у тебя разумный компьютер, который тебя нарошно тролит, либо ты не смотрел даже никакого базового гайда, ты с такими темпами не дойдешь даже до кода. 1 час потратить на какой то гайд по юнити или несколько дней на расспросы в этой помойке? хммм
>>401792 в этом-то и дело, что я по урокам делаю. только у них там сразу все нормально, не так как у меня. и никто даже не говорит о том, что может быть как-то иначе
>>401757 а ничетак. хоть показать есть что. только ты какой-то хуйни наворотил на мой вкус. как инвентарь то организовал? просто складываешь в пустой геймобжект выключенные геймобжекты при поднимании чтоли? никакой базы данных не организовывал чтобы мочь дестроить обжекты или спавнить их в процессе игры из ничего? нахуй ты при поднимании конвертацией то занимаешься?
>>401842 чувак это окно Scene в 2D режиме(ортографический режим), публичной камеры в СЦЕНЕ никакой нет, она есть в игровом окне в котором у него все ОК. это проблема со сценой и только у него
>>401860 да не обязательно десятки тысяч итемов. надо как минимум иметь возможность связать юнити с всякой абстрактной хуйнёй. чтобы вот был предмет, они имел бы ссылку на то как он выглядит, или какую-то форму ключика вроде айдишника, или стринга который бы указывал на префаб. чтобы была возможность сказать какомунить статичному классу-манагеру "хуйня заспавни мне такой предмет", или "хуйня заспавни мне такой предмет, вот что должно лежать внутри". иначе как предметы то в мире спавнить нормально? сплошная боль будет без этого.
>>401747 (OP) У меня такая проблема -- я сделал префабы большими(высота персонажа 32 например гдето) и пытаюсь выставить гравитацию адекватно их размерам то есть там получается не стандартные 9 а900 гдето.Все работает но если замедлить время(у меня своя переменная time на которую умножается движение) персонажи перестают двигаться при том что должны но медленно .Что мне подкрутить то надо чтоб все заработало? Трение может какое?
>>401839 >> просто складываешь в пустой геймобжект Нет,это изначально был array,я же так и написал инвентарь[] там в посте ниже. Но на самом деле я не смог сделать эррей изза >>401763 этой ошибки и сделал инвентарь ввиде какого то там object list(не помню уже смотреть лень) и все заработало как надо
>>нахуй ты при поднимании конвертацией то занимаешься? Я не занимаюсь просто у меня инвентарь для GameItem а там GameObject валяется и чтоб положить его надо было найти у него скрипт этот GameItem и кидать ссылку на него.
>>401868 Ну бля,в это нормальные размеры во всех 2д играх. Мне с микро персами такие вещи писать типа создать обьект с координатами x:1.38987,y:0.8989898 этож блять ненаглядно и скорость задавать не 10 там а 0.001?
>>401871 а нахуй твой инвентарь вообще описывает коллекцию геймобжектов? как собрался хранить предметы не имеющие физического представления? или как ты собрался создавать предметы в процессе игры? как собрался делать сохранение / загрузку с таким срамным подходом то?
>>401882 >>а нахуй твой инвентарь вообще описывает коллекцию геймобжектов? да не гей обжектов а GameItemов которые чайлд monobehavior при чем тут gameObject? Я понимаю что ты имеешь ввиду но это ты чтото не понял/я чтото не так обьяснил >>401885 уебывай в /vg петуч
Unity-господа, ньюфаг репортинг ин. Суть такова. Пилю РТСку, запилил движение с использованием NavMesh'а, (реализованы выделение рамочкой и кликом, А-клик и движение "на муве"). Но проблема вот в чем - если юнитов много, то когда первые доходят до точки клика они останавливаются, а другие пытаются пройти сквозь них, толпятся и иногда водят хоровод.
Как сделать что то в роде squad-move, как в старкрафте/варкрафте, например?
Альтернативный вопрос: как сделать полковую систему, как в Total War, например? Когда много болванчиков объединены в построение и ходят вместе, но когда доходит до боя дерутся по отдельности, и снова возвращаются в строй когда перестают драться.
>>401917 ты набрел на самый ужасный топик в юнити - навигацию. сквады ясен хуй это просто юниты с иерархией. есть один мегаюнит-сквад, а он командует всеми юнитами вокруг себя чтобы они были там или сям относительно него.
остановку я даже не знаю как сделать, можно попробовать сделать что-то вроде 2д системы частиц где ближайшие частицы бы отталкивали и притягивали друг друга в каких-то пределах и через это можно было бы решить все проблемы формаций и толканий пользуясь частицами как маской для передвижения юнитов внутри сквада, а глобальную навигацию всего сквада отдать юнити. но с такими велосипедами охуеть можно.
>>401917 1 ый вопрос гуглится а построения незнаю, ртс это слишком запарно по мойму, как по коду так и по остальному контенту. Во первых я уверен и это гуглится в 5 сек, в том же поисковике проектов(ссыль в оп) можешь найти ртски и посмотреть как у них сделано например. Мне кажется как то так должно быть: класс полка в момент стычки каждому своему юниту подыскивает пару из вражеского EnemyPolk.GetFreeUnit(). Или еще пиздаче, в момент стычки создается класс Boynya который будет в себе уже разбивать юниты на пары и контролировать сражение совмещая данные из двух и более полков. Хотя я никогда даже не интересовался РТС и это все возможно убогий костыль по этому лучше погугли причем желательно на инглише.
>>401861 >публичной камеры в СЦЕНЕ никакой нет Мда, чем же тогда рендерится сцена в окне редактора? Камера в сцене есть и она может не видеть объекты из-за clipping'a.
>>401933 >публичной >>401935 >увидишь где камера сцены находится. я говорю о той камере которой вы летаете в самой сцене, она нехуя не публичная и вы её никак не увидите, её можно только через код настраивать
Есть какой-нибудь фреймворк для процедурной работы со зданиями?
Тоесь не хранить меши или воксели, а упрощенные данные, что у такого-то здания есть комната а с такими-то стенами, комната б - с такими-то дверьми, комната цэ - с таким-то декором - в рантайме уже собирать меши, это же использовать для модели повреждений, пасфайндинга, итд.
>>402008 Мне не нужно рисовать стул, мне нужен лежащий в бд граф всех комнат и стен хрущевки, чтобы нпц сычев мог из своей сычевальни добраться до выхода из подъезда, воспользовавшись при этом пожарной лестницей если обычную завалило попаданием артиллерии, и чтобы интерьер и соседи стримились только на 2 комнаты вдоль его пути, а не загружались на весь коммиблок.
>>401943 у юнити есть невероятная особенность - целевой угол поворота встроеной инверсивной кинематики не совпадает с поворотом костей в руках и вместо этого там какая-то магия аватаров и прочее. советую в руки сунуть геймобжект чтобы совать в него оружие, а потом сделать кнопку чтобы сунуть целящуюся руку в нужное направление и вместе с этим повернуть геймобжект в руке в нужное направление. если хочешь потом дам.
>>401945 называет он не подкопотную камеру. в сцене то и правда есть скрытая камера которая рендерит сцену. можно получить если залезть в Camera.current или Camera.allCameras или там вроде ещё чето было
>>402017 можно. но с этим охуеешь делать это хорошо. я редко советую пользоваться ассетами но конкретно тут и правда лучше ими воспользоваться. https://www.assetstore.unity3d.com/en/#!/content/48977 конкретно этот местами даже лучше того что может предложить УЕ. кстати у юнити в роадмапе были Physics Animation но по моему только для 2д.
>>402021 Конструкция не двуногая и нужна для проверки работы генетического алгоритма. По факту просто ноги прикрутить к телу. Все можно, уже разобрался.
Репостну из ньюфаг-треда. Всё-равно никто там не ответит. А игра таки на юнити.
Обнаружил, что после 28 ноября обрывается статистика ADMob. Игра хуйня, чисто для практики, поэтому только сейчас увидел. Игру скачивают, но кликов и копеек после 28-го нет.
У них там изменилось что-то с января 2016 ?
Вижу, что не было привязки к какому-то Firebase, м.б. это причина?
Вроде тогда в ноябре ещё какое-то письмо приходило об изменениях а я проигнорировал.
Полный ньюфаг в юнити. Нужно написать приложение, которое сканирует qr код, скачивает 3д модель и отображает с возможностью вертеть эту модель и бродить по ней. Если с последним еще более менее ясно, то возможно ли реализовать первые две функции c# скриптами? Нужно чтобы вся эта ебала работала на андроиде и ios
Ребят, ребят, а поясните за атласы. Я, вот, захотел вкатиться в ассет стор и запилить простенький модульный пак. Если я тайленые текстуры 1к сошью в атлас 4к меня не обоссут? Как там вообще всё это организовывается? А ещё здорово было бы спиздить такой пак, чтобы посмотреть самому, что там, да как.
>>402108 Берешь раз в секунду (полсекунды) изображение с камеры (есть в доках) Далее берешь опенсорную либу по анализу изображений (скорее всего на C, ибо скорость и все такое, так что придется помучиться с плагинами) Скармливаешь ему картинку с камеры, получаешь qr код с помошью юнити WWW качаешь архив с инета Распаковываешь Если архив оформишь в виде ассет бандла то проблем нет профит
>>402051 Насколько помню, гугловцы выкупили Firebase и там залупа началась какая-то. Дальше я уже не разбирался.
>>401986 Насчёт фреймворков не знаю, но почему бы самому не написать это дело? Если ты этим интересуешься, то скорей всего должен-то знать классику уровня MVC. Вот этого >>402008 разумиста не рекомендую слушать, т.к. у Unity есть API для генерирования всяких мешей в рантайме. Ярчайший пример -- это координатная сетка, которую ты видишь в GameView. Она не дёргается из префаба, а генерируется на старте.
>>402201 > каждый ассет отдельно В смысле текстуры не сшивать? Тогда получится дохуя текстур. И вообще. Насчёт этой модульности. Если, например, какие-то две стены не встают бесшовно и требуют дополнительный элемент для сокрытия шва (который есть отдельным префабом), люди сами должны догадаться его впихнуть? Или я как-то должен пояснить? Или они не догадаются и будут жаловаться, что не стыкуются префабы? > Нормальные ребята Там не все нормальные. Как-то видел, когда разглядывал чужие паки, кто-то там ныл, что ассет хуёвый, потому что ведро его не вытягивает. А там какой-то йоба-пбр интерьер был дохуя детализированный.
>>402201 >API для генерирования всяких мешей в рантайме Кажется я начинаю понимать, почему у значительной части юнити игор хуево с производительностью.
Есть один канвас, и на нем надо разместить иконку (Image) и трехмерный объект. Первое видно в режиме ScreenSpace - Overlay, второе - в режиме ScreenSpace - Camera. Как совместить? Есть вариант добавить вторую канву для трехмерных объектов, конечно, но что-то мне подсказывает, что можно сделать проще.
>>402435 Стойпогодь. Мне надо, чтобы камера, которая сейчас рисует 2d иконку, рисовала еще и 3d объект, и чтобы 3d при этом был частью интерфейса, а не болтался внутри сцены.
>>402508 Да вот я вычитал >В течение срока действия настоящего Соглашения Вы соглашаетесь и признаете, что если вы являетесь пользователем Unity Personal и превысили вышеприведенные пороговые значения, Вы утратите право на использование Unity Personal и должны будете либо приобрести Unity Pro, либо уничтожить все копии Unity Personal, которые находятся в Вашем распоряжении или подконтрольны Вам, а также прекратить распространение любого контента лицензиата, созданного с помощью программного обеспечения. Если я правильно понял, если я вдруг хайпанул и заработал больше 100к, тогда иду и башляю им 2850$ за 2 года и хайпую дальше, и так им и отстегиваю пока моя игра в продаже, верно?
Аноны, как можно сделать динамические ограничители для навигации? Например двери, которые в закрытом состоянии запрут АИ. Энейблить модифиер и перезапекать навмеш как то _ресурсоёмко_, особенно если делать большие карты. Разбить меш на куски, соединённые линками и енеёблить линки уже лучше, но сработает только для преград в узких проходахДля двери сойдёт, но всё же
Анон, у меня игра в которой два персонажа перебрасываются предметами. Но из-за моего говнокода получается так, что после того как нпс кинул предмет и предмет оказался в руках игрока, на него предмет продолжает действовать сила броска от нпс. Т.е. руки игрока не поглотили кинетическую энергию броска. В общем, для того, чтобы игрок в ответку бросил предмет, он должен приложить импульс силы больше чем импульс от нпс. В общем-то геймплей работает, но согласитесь, что это как-то через жопу. Как сделать по правильному?
Сап гайз. Пилю вот "завернутую" карту, решил хитровыебаться и исполнить ее в виде трех дополнительных камер, которые, по сути, должны друг-друга дополнять. Можно ли сделать так, чтобы все, что остается за террейном камера не рендерила, а просто отдавала эту часть экрана другой камере?
>>402509 Не понятно, если я за год заработал овен 100к, тогда оформляю подписку, ну а при истечении этого года в последующие года у меня не выходит больше 100к, тогда могу отписаться или как? Или я им пожизненно становлюсь обязан платить, пока игра продаётся?
>>402722 Ну они что-то как-то не исчерпывающе написали в соглашении, я хз, может кто-то задавался уже вопросом, хотя бы из любопытства, в поддержку им писал может быть...
Делаю скролящийся Canvas по туторам в интернете, кидаю внутрь Text, к которому прикреплен скрипт, меняющий цвет текста, если курсор на тексте. Если курсор на Text, то скроллинг не работает, то есть Text перекрывает рейкаст Canvas Как это пофиксить можно?
Как создавать объекты через Instantiate, чтобы был массив этих объектов? Мне нужно удалить 2 клона объекта при определенном условии. как присвоить массиву эти объекты?
>>403163 Любой из твоих говноскриптиков уместится на А4. Тебе надо понять, что происходит в Start() позже в Awake(), OnEnable() и т.д. и в Update() позже в FixedUpdate() и прочих
Разобраться в своиствах и методах твоих говно-гэймобджектс, чтобы ими манипулировать. Осознать смысл GetComponent<>, который будешь юзать постоянно.
Сисярпа в юнети надо настолько мало, что лэвел особа и не на чем прокачать
Аноны, выручайте! Я пытаюсь запилить бесконечные платформы, написал простой скрипт, чтобы создавать клон платформы впритык к ней. Теперь нужно сделать это бесконечно, но для этого надо, чтобы GameObject'ы that,cube,collide брались с клона платформы, а предыдущая удалялась при определенном условии. Это вообще возможно? по-другому я не представляю как сделать.
>>403251 Хотя можно прицепить всю эту парашу к камере(она следит за кубом) и в центре каждой платформы сделать объект при столкновении с которым будет создаваться очередная платформа. [/spкак же по дебильному я пишуoiler]. Теперь подумаю как удалять весь этот мусор... или засру тред тупыми вопросами
>>402611 Сорян, захожу в тред раз в неделю. Будут проблемы. Вот давай подумаем вместе. Ты собираешься в pixelperfect, собираешься растром рисовать картинку в игре или "вектором"? Очевидно, что растром, т.к. плагин для векторного графона брать не будешь.
Сколько разрешений экранов есть? Сколько пикселей на дюйм у этих мониторов будет? Сколько наборов графики тебе придётся держать и менеджерить?
>>403418 Да, это фича такая. Когда ты делаешь объект чилдом какого-то объекта, то дочерний объект начинает жить в координатной сетке по отношению к родительскому объекту. Да, получается весёлая штука уровня сетка внутри сетки внутри сетки и т.д. То, что ты видишь в инспекторе называется локальная трансформация.
>>402458 >Кто-то сталкивался с реализацией Pixel Perfect интерфейса в юнити? >>402615 >Кому это говно нужно, кроме кучки полоумных менеджеров? В вебе вас обоссали, вы теперь в геймдев лезете? У меня например без Пиксель Перфект ГУИ мылом покрывается аж глаза болят. ЧЯДНТ?
Аноны, у меня предметы с rigidbody пролетают сквозь друг друга, если придать им достаточно высокий импульс. То есть, если приложить силу около 10 все норм, а если 20, то полет сквозь стену. Что это за хуйня? Unity 5.6.
>>403468 Спасибо, анон, теперь все стало очевидно, ведь я говнокодил в Update. Также посылаю лучи ненависти авторам Playmaker, которые поленились сделать галочку под fixed update в основных нодах.
Господа, подскажите, ка просто запустить анимациию через скрипт? По клику на кнопке работает, а так нет. Пишет, что Animator does not have an AnimatorController, но я его создал, засунул туда анимацию и прикрепил все к модели.
#pragma strict var Ball: GameObject; function Start () {} function Update () { if(Input.GetMouseButtonDown(0)){ Ball.gameObject.GetComponent(Animator).play("anim"); } }
Ебусь тут с нормалями, каналы инвертирую во все стороны, а тут оказалось, что моя модель виновата, а не карта. Что я мог неправильного сделать с моделью, что карту нормалей выворачивает? Какая-нибудь развертка отзеркаленая? Раньше так не было. На пике один и тот же мат, справа на модели, слева на юнитивском плейне.
Оно должно взрываться при столкновении с поверхностью или с врагом.
Я вешаю коллайдеры на ядро (циркл 2д), врага (бокс 2д) и землю (бокс 2д).
1) Есть ли принципиальная разница, что из них делать триггером? У меня сейчас триггеры висят на враге и на земле, а на ядре просто коллайдр.
2) Где лучше обрабатывать процесс столкновения? Сейчас у меня OnTriggerEnter2D на враге вызывает метод его уничтожения, а OnTriggerEnter2D на ядре вызывает метод который его взрывает. Правильно ли это, или нужно вешать все это дело в скрипт ядра, и там уже вызывать нужный метод other-объекта?
Понятно, что работает и так, но не хочу говнокодить, хочется узнать о хороших практиках.
>>403541 Еще православней через events. У тебя где-то менеджер всех ёбаколлизий отдельно от объектов и ёбаядер. Когда происходит столкновение, каждый участник вызывает ивент TyChyoCykaDoebalsya(). Сообщает, кто до него доебался. Менеджер решает, что с ними делать
Так ты соберёшь все решения в одном месте. И, кстате, говнокодить придется и по нескольких скриптиков навешивать на объекты. Но это в плюс, ибо хоть какая-то структура
А есть ссылки на живые примеры такой реализации? Я пока в юнити полный нуб и даже пока не понял для себя, как делать скрипты которые вообще не привязаны ни к какому объекту, чтобы в них использовать "общие методы". Например, чтобы какое-то глобальное событие на сцене запустить вроде смены дня и ночи по таймеру.
По официальным видосам, как я понял особо хорошим практикам не научишься, там в основном принцип "работает и ладно". Для реального проекта малоприменимо.
>>403551 Просто создай какой-нибудь Canvas и привяжи скрипт туда. Сами по себе скрипты это обычные ассеты, которые ничего не делают Из этого самого Canvas вполне можно делать глобальные вещи, просто делаешь там референс на нужный объект и работаешь с ним:
public GameObject huita
Потом открываешь в инспекторе свойства Canvas и переносишь нужный объект на поле "Huita", и из скрипта можно работать с этим объектом напрямую
Как можно после клика осуществить спавн of object , который (если клик продолжается) можно сразу перемещать (в 2д) , до конца продолжительного клика? Если есть возможность, можете написать пример кода.
>>403701 Например, няша , во время игры кликает в любую точку пространства, после чего спавниться новый object на месте клика(и,если мышка остаётся нажатой после клика), this object можно сразу перемещать , двигая курсор(после завершения нажатия, object остаётся на том месте, когда он был в момент завершения клика) ,спасибо.
>>403701 Я диванный, но подозреваю, что в событии онКлик, при создании инстанса объекта ты записываешь его и текущее положения мыши в приватные переменные. А дальше на событии онДраг (или онИнпут, я точно не помню) ты отслеживаешь MouseToWorldPoint и меняешь соответственно координаты объекта из переменной согласно движениям мыши.
Ну и на событие которое отпускает кнопку мыши вешаем обработчик, который возвращает текущий объект в исходные координаты, после чего очищаешь переменные.
Я нуб, может тебе кто опытнее что-то получше подскажет.
>>401747 (OP) Что с этим ебанным ассетстором? Почему он спрашивает логин-пароль, когда я там и так есть, но не принимает мои логин-пароль? При этом, когда окно логин-пароля закрываю он что-то пытается скачать, а потом просить перекачать.
Друзья, у меня тут проблема нарисовалась, возможно кто-нибудь знает как её решить.
Не знаю, на сколько это важно, но игра Джвадэ. Есть два объекта: один родительский, другой дочерний. У обоих скрипты: в родительском ставится скорость вдоль оси X, в дочернем вдоль оси Y. Хочу добиться следующего поведения конструкции: родитель гоняет по оси X а из него вырывается дочерний объект и перемещается вдоль оси Y относительно родительского.
Что получил: оба объекта как и нужно ездят вдоль оси X, но вот дочерний объект не ездит вдоль оси Y до тех пор пока не останавливается родительский объект (а он стопарится при смерти игрока).
Как делал: Пробовал ставить в дочернем объекте velx = rb2d.velocity.x; rb2d.velocity = new Vector2(velx, vely);
или просто rb2d.velocity = new Vector2(0, vely);
Пробовал пёхать эту дрянь как в функции Update(), Start() по одиночке, так и в обе сразу. Результат одинаковый.
Отмечу также, что отдельные куски кода дочернего объекта работают, как например transform.position
Помогите, люди добрые, игруня на финальном этапе, а эта дрянь спать спокойно не даёт.
В твоем коде, насколько я могу судить ты просто присваиваешь ту же самую скорость по x объекту еще раз. Само собой она остается той же самой.
Скорее всего дело в том, что скорость у тебя задается относительно мира, а не относительно объекта. То есть скорость родительского и дочернего объектов равны и они движутся оба одновременно с одинаковой скоростью. Поэтому когда ты останавливаешь родительский объект, то дочерний и начинает у тебя двигаться с той же скоростью, что и двигался родительский.
>>403792 vely - фиксированная скорость типа public. Определяю в коде, оптимизирую в редакторе сцены.
В velx попадает скорость объекта, которая у него уже есть, так как скорость сетится как Vector2(velx,vely), очевидно, что я не хочу менять скорость дочернего объекта вдоль оси X, а вот вдоль оси Y она у меня не сетится вообще, и объект начинает движение вдоль OY после остановки по ОХ - в этом и проблема.
И да, если скорость задаётся относительно мира, то всё должно быть ОК, т.к. скорость движения всей конструкции относительно мира по OY изначально равна 0, а я дочернему объекту даю в коде vely (что не срабатывает до остановки по OX)
Наверно я пишу не очень понятно, по этому постараюсь описать ситуацию:
У меня есть труба, которая смотрит вверх - это родительский объект. К нему прикреплена (находится внутри него в иерархии объектов на сцене) струя воды - дочерний объект, которая сдвинута вниз, под землю.
Труба движется на игрока вдоль оси X, а вода должна вылетать из трубы вдоль оси Y, при этом конструкция стопарится по OX, если игрок умирает. Фрагмент кода, что я скидывал - для струи. velx символизирует скорость, которую изначально получает струя от трубы как дочерний объект, а vely - должна устанавливаться, но устанавливается только после смерти игрока, и в этом вся проблема.
Анон, спасибо тебе за ответ. Я сам думал на счёт подобного решения (через transform.localPosition), только с использованием Time.deltaTime*vely. Сейчас собственно вижу, что решение даёт рывки, что никак не вписывается в общую картину.
Буду пробовать модифицировать либо искать другие решения, а может, ещё кто чего посоветует. В любом случае, спасибо, что не остался равнодушным.
Аноны, есть один fbx... Короче, сделал анимацию в блиндыре с помощью rigify, wgt-кости удалил, всё чистенько экспортировал fbx, ну и потом соответственно импортировал его в unity. Вот в чём проблема: начал настраивать т-позу этой анимации и у меня юнити начал умирать, кадров 2-3 в секунду хз что такое, впервые такое там выяснилось, что где то я нихера не почистил wgt, в fbx объекте находилось 104 меша и 108 объектов которых юнити генерирует при импорте модели/анимации НО! во второй анимации где объектов 1 меш( по сутичистый от wgt костей) та же самая история еле могу выйти из режима редактирования т-позы, кнопка прожимается несколько минут т.е. дело не в этом. Гуглил - мало, что дало, считай ничего. Что ето такое, аноны, ваши предположения.
>>403893 Короче я добился плавности эмитируя сеттинг скорости путём сдвига на некоторое deltaY в FixedUpdate, палю годноту:
x = RainbowBody.transform.localPosition.x; y= RainbowBody.transform.localPosition.y; RainbowBody.transform.localPosition = new Vector2(x, y+((ymax-ymin)/RSpawnTime*Time.deltaTime));
ymax-ymin/RSpawnTime - определение скорости через минимальную и максимальную альтитуды пути, где RSpawnTime время, за которое объект преодолевает это расстояние. Ну и вишенка Time.deltaTime - дельта счётчика времени. Полагаю rigidbody2D.velocity примерно так и делается.
Как сделать счетчик? Такой что бы каждую минуту от 1000 отнимал 10. Обычный таймер я делал, по типу А = А - 1*Time.deltaTime А вот что бы ровно каждую минуту отсчитывало, как сделать?
Или прикрутить точно такой же таймер, но просто при показе счетчика в игровом поле обрезать до целых чисел.
сап, аноны. подскажите, как сделать конец игры как можно проще? допустим, я добежал до нужной точки (у меня 2д платформер) и вызывается начальное меню. и еще: как мне точно так же вызывать это меню, только когда у меня кончается хп. я знаю, что ебланский вопрос, но я гуглю, там всякая хуйня и сложно. сам я головой думать не могу, так как по сути всю игру я сделал по подобию.
>>404244 спасибо, а как можно еще конец игры самым простым способом сделать. у меня есть бар, в котором есть типа сердечки. как сделать, чтобы выходило начальное меню, когда эти сердца кончаются?
>>404244 и да, можешь вообще объяснить, что мне делатьс этим. то есть скрипт я запихну, а что за коллайдер, и в каком это случае выйдет меню, когда дойду до определенной точки?
Никто не знает, как с макса сразу дохуя fbx экспортировать? Есть куча объедков в сцене и нужно все их раздельно экспортировать. И ещё. Как всё таки этот ёбаный пивот ставить для юнити? Помню, находил относительно правильное положение. А когда захотел траву из своих мешей запилить, то это положение тоже не подошло нихуя. Все меши завалились на бок. Ну, в общем, поделитесь мудростью экспорта/импорта фбх.
>>404386 Была похожая задача, нужно было через кастомный ипортер открыть несколько сотен файлов и экспортнуть их, написал скрипт, который все делал, там ничего сложного, но конкретно подсказать, что там и как не могу, поскольку уже давно было, а я на блендер перешел.
Но кстати, в чем проблема кинуть файл прямо в проект? Юнити на лету максовский формат конвертирует, потом добавляешь "модель" в сцену, отдельные меши будут потомками, их в сцене достаточно вынести за пределы родительского объекта и сделать префабом и все - дальше можно его использовать. На счет пивота опять же классический трюк - делаешь в юнити пустышку, а объект кидаешь в нее, корректируешь положение, все, трансформ пустышки и будет твоим пивотом/ориджином, делаешь префаб, используешь.
Нужно понимать, как работает выделение памяти и GC в .net и unity. Желательно уметь в LINQ. А если хочешь делать игры, то придется еще постигнуть линейную алгебру, паттерны проектирования, SOLID. Знать, чем отличается значимые переменные от ссылочных, и какие подводные камни могут быть с этим связаны. Можно еще покурить дженерики, но с ними нужно осторожно, GC их не любит, и если сделать все криво, то может начать кашлять.
Что касается самого шарпа, то если у тебя есть нормальное образование за плечами, с теорией алгоритмов, дискреткой, матлогикой, и пайтон не единственный язык, ан которым ты что-то когда-то писал, то проблем быть не должно.
Там еще есть нюансы работы с ресурсами, но это скорее про знание движка, чем про программирование.
>>404485 Почему? мимо нуб с linq в .net 2.0 А если я на .net 6.0 перекачусь? Игра у меня основана на подобии БД (в смысле ОЧЕ много связанных объектов)
компьют шейдоры какие же они крутые. вот здорово когда неожиданно находишь несколько терафлопсов и можешь ими командовать.
что-то тред загнивает, только этот хрен с дорожками что-то показал.
>>404485 на самом деле конечно же это не так и в геймдеве лучше обходится всеми доступными инструментами, но не на всех промежутках жизни проекта.
>>404504 большая часть LINQ генерирует какое-то неебическое количество мусора в процессе. он хорош чтобы ускорить создание прототипов, но в итоге в готовом проекте его всякую клевую хуйню лучше убирать.
Нормально делать декали, которые всякие там ямы в асфальте люки, хуюки, используя стандартный шейдер с прозрачностью катаут? И почему только он тень принимает? Фейд, например, гораздо лучше выглядит. Но на него тень не падает.
>>404516 >что-то тред загнивает, только этот хрен с дорожками что-то показал. Ну раз хочешь я на днях свою стратежку в разработке покажу, как новую версию релизну. Она без графония впрочем, совсем.
Ебашу свой двор, на ущербность домов не смотрите и общую ущербность сего творения, поставил чисто чтоб знать где че стоит и ориентироваться, потом хочу замутить квартиры открытые чтоб все были и все такое и кароч шутан будет в моём дворе, можно будет там засесть в какой-нибудь квартире к примеру в той дальней многоэтажке и отстреливать со снапы лохов всяких D:
Я новичок в Unity. Однако скачал сам движок до выхода Visual Studio 2017 - с версии 2015. Когда я узнал о том, что в версии 2017 удобнее работать, я удалил 2015 версию и скачал 2017, однако Unity, поскольку является независимой, осталась.
Обучаясь оcновам и не только Unity, я дошёл до момента, когда пора бы уже прикоснуться к скриптам. Так вот Unity предлагает мне лишь среду разработки MonoDevelop, а я хочу работать в Visual Studio 2017 (привык просто).
Переустанавливать винду я не пробовал, просто искренне надеюсь что нужного мне результата можно добиться проще.
Кто там хотел поделок от анона - пытаюсь делать стратежку с экономикой основанной на симуляции агентов (а не на неких магических (и глючных) формулах как в Geopolitical Simulator)
Сразу говорю графона нет. Да и геймплея пока мало - можно набижать на соседей или просто отращивать экономику. В Викторию играл, тамошняя экономика меня не устраивает.
Что есть: Рандомногенерериуемая карта с провинциями население базовое производство\торговля\потребление изобретения часть реформ (с голосованием) миграция\ассимиляция населения можно набигать на соседей
>>404757 Да, скорее всего так. Но я попробовал так сделать - и ничего хорошего у меня не получилось. Вероятно где то в папке Visual Studio лежит нужный мне файл или что то, однако я не знаю где это находится. Теперь это является моей проблемой, если данный способ является правильным
>>404761 Пробовал Edit>Preferenses>ExternalTools ? Если студию руками ставил то может понадобиться юнити-аддон. Или проще юнити обновить\переустановить она сама все сделает.
чтото двощь не хочет мои скриншоты. сделал растеризацию террейна через компьют шейдоры. доволен.
>>404760 я хотел, хорошо сделал. приятно видеть что в разделе что-то происходит.
как генерацию карты то устроил? меню с таксами имеет повторяющиеся пункты? как прокручивать карту? и конечно здорово сделал перетягивающиеся элементы интерфейса, но чего они за пределы своей рамочки то могут уезжать?
>>404833 >чтото двощь не хочет мои скриншоты. сделал растеризацию террейна через компьют шейдоры. доволен. > А я все мечтаю сделать симулятор водной эрозии на шейдерах, с тектоникой, каким то терраформингом и падающими метеоритами
>>404833 >как генерацию карты то устроил? Генерирую карту в пнг (без всяких Вороновских и пр., просто рандом и волновой алгоритм). Пнг потом в меш перевожу. Пока с артефактами, потом пофикшу. Зато можно использовать карты из Виктории и пр. параходных игр.
>>404833 >меню с таксами имеет повторяющиеся пункты? Да, это известный мне баг
>как прокручивать карту? WASD или стрелки
>и конечно здорово сделал перетягивающиеся элементы интерфейса, но чего они за пределы своей рамочки то могут уезжать? Они не должны. Скрин поехавшего интерфеса не прошу, но скажи хотя бы название окошка поехавшего и что за разрешение у тебя? А, или ты может быть полноэкранный режим не включил? Тогда да может ехать малеха.
>>404895 >А я все мечтаю сделать симулятор водной эрозии на шейдерах, с тектоникой, каким то терраформингом и падающими метеоритами сделай, это же всё весело. как минимум узнаешь что-то новое, как максимум сделаешь себе клевый велосипед чтобы кататься на нем. хотя у шейдоров такая документация как будто это какое-то тайное знание. по каким-то крупицам информация разбросана.
> Пнг потом в меш перевожу. как меш то строишь, кстати?
>Они не должны. я не заметил разницы между полноэкранным и не полноэкранным. почти все кнопки которые расположены в гриде зачем-то можно перетягивать налево-направо за край окошка в котором они. ты бы просто прокрутку чтоли сделал.
>>404897 >как меш то строишь, кстати? Читаю растровую картинку и фигачу полосочки из полигонов пикрелейтед. Потом округляю меш глючным способом
>>404897 >я не заметил разницы между полноэкранным и не полноэкранным. почти все кнопки которые расположены в гриде зачем-то можно перетягивать налево-направо за край окошка в котором они. ты бы просто прокрутку чтоли сделал. А, я понял. Это стандартное поведение view port, надо починить, да. Да и вообще нормальные таблицы найти или самому запилить.
Чет я удивился. Разве структуры в c# неизменяемы? (immutable). Или это в юнити какие то ограничения? public struct Date { int blya; public Date(int date) { this.blya = date; } public Date(Date date) { this.blya = date.blya; } public int getDate() { return blya; }
использование: Date date; date.StepSimulation(); //Хуякс, значение blya не растет а скидывается в ноль Да, я знаю что изменяемые структуры это плохо, но в моем случае со структурами удобнее (автоматически делает копирование полей при присвоении)
>>404900 >Читаю растровую картинку и фигачу полосочки из полигонов пикрелейтед. Потом округляю меш глючным способом как-то странно делаешь. я в общем-то делаю примерно то-же самое, но перед разглаживанием делю все куски на отрезки где уголки имеют как минимум трех соседей, которые следует разгладить и потом уже сглаженную часть применяю к обоим её соседям.
>Да и вообще нормальные таблицы найти или самому запилить. ты там уже улетел куда-то в невиданные мной края с таким гуи, даже не посоветовать ничего.
чего, кстати, континенты то такие однообразные получаются? почти все прямоугольные. ты бы хоть при рандомной генерации начиная с краю удалял 6-10 регионов дополнительно чтобы получалось больше полуостровов. раз уж озёр не сделал.
>>404903 в общем и целом они неизменяемые. там конечно есть хитрые читы местами но по большей части лучше такого не делать. это же валуе тупе как всякие int float bool, при присвоении структа ты его копируешь, а при изменении значения в нем создаешь новый с измененным значением.
>>404909 >чего, кстати, континенты то такие однообразные получаются? почти все прямоугольные. ты бы хоть при рандомной генерации начиная с краю удалял 6-10 регионов дополнительно чтобы получалось больше полуостровов. раз уж озёр не сделал. В будущем запилю несколько континентов, морские провы и пр. Все сразу не сделаешь, а так работает и ладно.
>>404909 >как-то странно делаешь. я в общем-то делаю примерно то-же самое, но перед разглаживанием делю все куски на отрезки где уголки имеют как минимум трех соседей, которые следует разгладить и потом уже сглаженную часть применяю к обоим её соседям. Хмм. Что у тебя белые и черные лини на пике значат? А синие? Полигоны и? Исходники своей работы не открываешь?
>>404909 >в общем и целом они неизменяемые. там конечно есть хитрые читы местами но по большей части лучше такого не делать. это же валуе тупе как всякие int float bool, при присвоении структа ты его копируешь, а при изменении значения в нем создаешь новый с измененным значением. Спасибо, а то для новичков это нифига не очевидно. Я же гуглил перед тем как спросить, пишут что все норм, не желательно но можно. Вот и верь гуглу теперь )
>>404911 >Держи, велосипедист: https://msdn Спасибо конечно но у меня же тут свой средневековый в том числе мирок генерируется.. Хотя может и стоит стандарт использовать. Пишут что потянет MinValue is equivalent to 00:00:00.0000000 UTC, January 1, 0001, in the Gregorian calendar.
>>404913 >Почему разработчики игр про симуляцию даже не пытаются в дизайн? Например, потому что симуляторы и так сложно пилить, а пилят их как правило энтузиасты (порой вообще не прогеры как автор Space Engine например) в то время как ААА конторы успешно продают пресс Х то вин для одноклеточных
>>404914 >В будущем запилю несколько континентов, морские провы и пр. Все сразу не сделаешь, а так работает и ладно. кстати, ты сделай хоть какую-то форму отображения актуальных соседей
>Хмм. Что у тебя белые и черные лини на пике значат? А синие? Полигоны и? Исходники своей работы не открываешь? белые - отображают соседство между областями. соединяют их геометрические центры. черные - актуальные границы. пунктирные - границы перед упрощением. полигоны там вообще никак не отображаются, кроме как заливкой всей области цветом сразу. впрочем у меня зоны конвексные, для создания всех треуголников достаточно соединить центр и сторону.
а почитать можешь свободно. https://www.assetstore.unity3d.com/en/#!/content/85181 оно давно на ассетсторе лежит бесплатное. я правда в последней версии слегка поломал навигацию где у уровней несколько этажей. в этой горе мусора скорей всего тебя заинтересует Generation/Graph/GraphIterator.cs где хитро сделаны шагающие квадраты и в той-же папке GraphTriangulator.cs где можешь почитать про разбиение контуров на конвексные области. оба правда где-то на границе читабельного написаны. если хочешь потом в картинках расскажу.
>Спасибо, а то для новичков это нифига не очевидно. лучше почитай про Boxing/Unboxing в шарпе, про гарбаж и как к этому относятся структы.
Вечер в хату, ананасы. Делаю товарищу лабу (представьте себе, на унити). За меня написать не прошу, прошу помочь с такой вот хуйней: Нужно нарисовать многоугольник. Для этого я сначала спрашиваю, сколько вершин человеку надо, затем истанциирую по два InputField'а для абсцисы и ординаты, хуе-мое. Здесь проблем никаких, проблема возникает в том, что, если указать меньшее число вершин, чем уже задано, ненужные InputField'ы остаются, а Юнити выдает ошибку о том, что такого индекса нет. Так хули, блядь? Казалось бы, все верно, не прописывать же inpFields = null; , Destroy() выглядит логичнее.
>>404915 >кстати, ты сделай хоть какую-то форму отображения актуальных соседей Предполагается что это будет интуитивно понятно, когда границы провинций\стран будут отрисовываться текстурой. (и сглаживание перестанет глючить)
>>404915 >а почитать можешь свободно. https://www.assetstore.unity3d.com/en/#!/content/85181 оно давно на ассетсторе лежит бесплатное. Спасибо. Забавно что наши алгоритмы делают противоположную работу - твой упрощает растр до меша для навигации, мой пытается усложнить растр что бы он не выглядел так угловато.
Кстати, твой алгоритм работает на любых, самых наркоманских сочетаниях точек в растре? Вложения цветов и все-все-все? Пикрилейтед потянет например?
>>404920 >Предполагается что это будет интуитивно понятно, когда границы провинций\стран будут отрисовываться текстурой. (и сглаживание перестанет глючить) чтобы это было интуитивно понятно надо чтобы это хоть в какой-то форме отображалось бы. сделай хоть фильтр как в стелларис "отображать соседних ребят".
>Кстати, твой алгоритм работает на любых, самых наркоманских сочетаниях точек в растре? Вложения цветов и все-все-все? Пикрилейтед потянет например? я уж постарался чтобы он не запнулся на всякой хуйне. он даже такое может. http://polariton.ad-l.ink/8nnBxQBYY/image.png правда триангуляция может затянутся если такую хуйню сувать. надо бы опимизончик в этой части попробовать сделать. реальное ограничение по количеству цветов это количество положительных интов, именно так оно хранится в процессе.
>>404919 Проблемы с отрисовкой нет, LineRenderer жи. Проблема в лишних InputField'ах, которые остаются от уже типа несуществующих вершин. На пиках видна моя проблема. У меня есть int для количества вершин и лист InputField, который инстанциирует в два раза больше этих самых полей. Задается количество вершин, прописываются координаты, парсятся, если могут, строится многоугольник.
>>404760 Лол, сегодня как раз хотел наконец начать уже пилить свою глобальную дрочильню, зашел посмотреть как процедурные карты генерить в Unity, а тут оказывается уже во всю кто-то делает. Какую БД используешь? Как организована система спрос-предложение? Насколько она ООП-ориентирована? >с экономикой основанной на симуляции агентов Чем отличается от потребностей страт в вике? Агенты, это я так понимаю, участники рынка отдельные (гос-во, фирмы, потребители)
Некоторые замечания: Система с делением страт не очень, получается что все рабочие, все капиталисты (какие капиталисты-то кстати, если игра судя по всему в сеттинге средневековья?) прямо в сговорах состоят. Почему бы не использовать принцип вики? Слабо представляю себе масштаб карты, но мне кажется вот эти здоровые провы - уродливый пережиток параходов. Почему не использовать хексы? Я сам хз, может это сложно, конечно, но у меня масса претензий ко всем существующим на данный момент глоб.стратегиям именно из-за вот этой системы пров и сопряженными с ними условностями.
Вообще, есть масса идей, определенные скилы в SQL и программировании на C# и главное желание, так что если хочешь, можем связаться.
>>404923 Я бы не стал вручную инстантиировать всякую хрунь.. У меня например таблицы строятся на создании охулиона кнопок, но я их из префаба беру (и из пула) так что они не уничтожаются по сути а делается SetActive(false) (прячет);
>>404922 >чтобы это было интуитивно понятно надо чтобы это хоть в какой-то форме отображалось бы. сделай хоть фильтр как в стелларис "отображать соседних ребят". Что то я засомневался, понимаю ли я о чем речь. Речь ведь о соседних (вражеских) провинциях?
>>404922 >реальное ограничение по количеству цветов это количество положительных интов Круть. Если получится добавить это в свой проект (когда буду реальные армии делать заместо абстрактных) это мне спасет кучу времени и нервов. Тем более что я ничего в графах не понимаю.
>>404926 > зашел посмотреть как процедурные карты генерить в Unity, а тут оказывается Хочешь читай, хочешь форкай, хочешь присоединяйся.
>Какую БД используешь? Увы, практически никакую. В меру глючные списки и словари и LINQ (которая, как многие говорят тормозит по крайней мере в .net2.0)
>>404926 >Как организована система спрос-предложение? Я пробовал разные подходы, сейчас - это соотношение реально купленного за прошлый тик к отосланному на рынок за прошлый тик.
>>404926 >Насколько она ООП-ориентирована? Много публичных полей и прочей грязи в коде, но я борюсь с этим ) Сегодня 50 косяков на codacy исправил
>>404926 > Агенты, это я так понимаю, участники рынка отдельные (гос-во, фирмы, потребители) Да
>>404926 >Чем отличается от потребностей страт в вике? Основное отличие - Попы покупают товары внутри группы (жизненно важные, повседневные товары, роскошь) не в фиксированном порядке а в порядке сначала дешевые. Ну и я хотел бы что бы агенты вели себя более адекватно, если полочится.
>>404926 >какие капиталисты-то кстати, если игра судя по всему в сеттинге средневековья? Не совсем. Изначально планировался сеттинг от ололо диких племен до капитализма, коммунизма и ядерной войны. Есть даже тип экономики - нат. хозяйство. Сейчас я только на капитализме сосредоточился, остальное закомментил до лучших времен.
>>404926 >Система с делением страт не очень, получается что все рабочие, все капиталисты прямо в сговорах состоят. Какие сговоры?
> Почему бы не использовать принцип вики? ЕМНИП в вике такой же принцип.
>>404926 >Слабо представляю себе масштаб карты Пока тормоза будут в разумных пределах
>>404926 > Почему не использовать хексы? Хексы выглядят угловато и однообразно. А тут - провы могут быть любой формы, как рандому захочется. Да и можно карты из модов\игр от пароходов использовать.
>>404928 >Увы, практически никакую. В меру глючные списки и словари и LINQ (которая, как многие говорят тормозит по крайней мере в .net2.0) По-моему, использование БД в ГС - неизбежность. Можно конечно использовать JSON-ориентированные БД, не заморачиваясь с SQL, что теоретически может облегчить и модификацию (JSON можно и с SQL интегрировать тащемта), но БД нужна обязательно. К тому же лучше сразу набросать модель БД, максимально унифицировать ее, чтобы оставить больше возможностей для расширения и согласовать с ОО-моделью, используемой в механике игры. Кстати, я так понимаю функция сохранений тут не реализована? Сохранять скорее всего тоже придется в БД. Если ты конечно не собираешься пилить только одноразовый online (учитывая, что такие игры ориентированы в основном на аутистов, такой формат вряж ли подойдет) >Я пробовал разные подходы, сейчас - это соотношение реально купленного за прошлый тик к отосланному на рынок за прошлый тик. Хм, т.е. спрос-предложение неразрывно связаны причем в рамках одного тика? И стокпайла как такового нет? Как и понятия доставки и торговых путей? (привет ограбленным корованам и разбитым дорогам) Алсо, то что Trade не нажимается это баг или просто пока не прикрутил торговлю? >Основное отличие - Попы покупают товары внутри группы (жизненно важные, повседневные товары, роскошь) не в фиксированном порядке а в порядке сначала дешевые. Ну и я хотел бы что бы агенты вели себя более адекватно, если полочится. Не совсем понял этот пункт. А как в вике сделано? Там же тоже попы покупают товары, на которые им хватает денег - в первую очередь базовые потребности, потом комфорт, потом роскошь. Я не спорю, что в вике экономика не очень, но вроде так она и работает, теоретически.
Еще несколько вопросов: 1) По производствам. Вижу, что у тебя есть апгрейд зданий, но не очень понимаю, он только кол-во увеличивает что ли? Просто, если брать тот же GPS там была такая классная фишка (которая правда не работала, как и все в этой игре) как качество товара. Я думаю соотношение Цена/Качество/Доступность - эта троица, которую вполне можно реализовать в рамках игровой условности. Есть идея как, но она не вполне увязывается с походовым типом игры, хотя можно придумать что-нибудь; 2) Собственно походовость. Чему равен ход? Просто год это очень много для того, чтобы запилить полноценную экономику, особенно на позднем этапе (начиная с времени, актуальному середине 19го века это уже становится слишком оторванно от реальности). Все ГС со сложной экономической системой идут, в условном конечно, но реальном времени. Я понимаю, что ходы легче (хотя система ивентов тоже норм), но может тогда вообще убрать дату, сделать ее условной и считать просто по ходам, оставляя все на воображение игрока (учитывая, что это не исторический симулятор).
Алсо, это очень круто, что ты делаешь мир рандомным, земляшка реально заебала в ГС, можно широко юзать какой-нибудь опенсорсный ворд-генератор, чтобы кастомизировать мир (названия компаний например генерить).
>>404929 >Не совсем. Изначально планировался сеттинг от ололо диких племен до капитализма, коммунизма и ядерной войны. Есть даже тип экономики - нат. хозяйство. Сейчас я только на капитализме сосредоточился, остальное закомментил до лучших времен. Тоже так хотел, но мне кажется начало игры будет гиперунылым и до средневековья дропнет даже самый терпеливый. Ну либо придется наполнять йоба контентом, уровня параходов и уходить от экономической механики. Для того, чтобы тестить экономику средневековье как раз самое оно, но лучше кастомизировать старт, чтобы сразу уже были некоторые предприятия. Капитализм довольно сложная штука, лучше сначала хотя бы обычный товарооборот организовать. >ЕМНИП в вике такой же принцип. Да, я просто проебался. Думал в вике попы еще четко разделены по алайнам. В принципе, да, это чистые виковские попы и есть. >Хексы выглядят угловато и однообразно. А тут - провы могут быть любой формы, как рандому захочется. Да и можно карты из модов\игр от пароходов использовать. Не согласен. Можно же использовать региональность. Т.е. прова также будет какой угодно формы, но состоять из множества хексов. Игрок сможет тогда расширять регион, вводить иерархию регионов (город-провинция-страна) четко отчерчивать границы при мирных договорах, будет иметь смысл войны за мелкие участки. Можно будет запилить условный гонконг или гибралтар, например, обозначать ОЭЗ, ДМЗ, линии фронта и.т.д. В будущем можно запилить уровневые хексы - город, представленный одним хексом на глобальной карте, раскрывается множеством на локальной. Да и вообще возможности кастомизации увеличиваются в разы. >Пока тормоза будут в разумных пределах Кстати, а почему так тормозит-то? Что там ресурсы так жрет? Или плата за браузерность?
>>404932 Господи, ебать я тупенький. list.Count() выдает количество ячеек в листе, но индекс-то, блядь, на единичку ниже будет. Ну теперь-то с колен привстанем.
Маленький вопрос по монодевелопу. /Впринципе для моего текстого квеста он абсолютно подходит и MVS пока качать не вижу смысла/ Не работают хоткеи от слова совсем. особенно бесит Ctrl+C,Ctrl+V. Код программки заточен на кучу переходов от сцены к сцене поэтому прошу советов как заставить иххоткеиработать.
Аноны, помогите понять, где я проебался, а то я себе уже голову сломал блин.
Есть три числа и есть сумма этих чисел и я нихуя не понимаю, почему получается именно такая сумма. Ведь если их сложить, то ничего похожего не получается.
Дебаг кода ниже выдает:
1.046729 -9.06542 -2.71028 -10.72897 1.046729
9.06542 -2.71028 -10.72897 должны давать 4,37383
но никак не 1.046729
Где я ошибаюсь?
void OnMouseDrag() {
mouse_x = Camera.main.ScreenToWorldPoint (new Vector3 (Input.mousePosition.x, Input.mousePosition.y, screenPoint.z)).x;
>>405202 >1.046729 -9.06542 -2.71028 -10.72897 1.046729 >9.06542 -2.71028 -10.72897 должны давать 4,37383 Что ты несешь то? -4,37383 может быть? Нихуя не понятно.
А вообще когда затык - лучше забей на задачу и займись другим, а эта решится сама собой
Вопрос по текстурированию На пике плоский меш (символизирует провинцию.) Нужно по периметру меша наложить текстурe границы (полосочка такая 20х80 скажем, с рисунком границы, как вверху пикрила). Я правильно понимаю что текстуру прямо на этот меш накладывать нельзя- ее растянет по всему мешу как ни крути UV? Вместо этого наверно надо зафигачить еще меш (белые треугольники) и на одну сторону треугольников наложить текстуру? (Ну или, может быть, прямоугольники должны быть где у меня белые треугольники) Более простого способа реализации наверно нет? Да и лагать сильно не будет (текстура будет меняться со временем)
>>405274 А зачем границы векторные, ты хочешь зумить эту хуйню во весь экран? Просто можно же всю эту провинцию вместе с границей нарисовать прямо в текстуре и обойтись одним прямоугольником.
>>405292 Хм, интересный подход. Но дело в том что форма провинций не рисуется заранее а генерируется рандомно каждый раз (в виде png файла) а потом переводится в меш.
Поэтому надо таки накладывать текстуру границ на некий неизвестный заранее меш. Вот тут - верно? >Я правильно понимаю что текстуру прямо на этот меш накладывать нельзя- ее растянет по всему мешу как ни крути UV?
>>405274 у тебя же формы провинций не меняются. сгенерируй список из Vector3 по краям провинции и рисуй красивые линии по этим кординатам. это же можно по разному использовать. например менять толщину линий у провинции под курсором.
>>405301 >у тебя же формы провинций не меняются. сгенерируй список из Vector3 по краям провинции и рисуй красивые линии по этим кординатам. это же можно по разному использовать. например менять толщину линий у провинции под курсором. Тоже вариант. Но хотелось бы в 3д, что бы бит мапингом обмазаться и всеми прелестями текстурок. Зум опять же есть. Что имеешь ввиду под >рисуй красивые линии Какой то 2д метод/класс? Я знаю только Debug.DrawLine и тот кривой какой то.
Подскажите библиотеку на си шарп по базовой геометрии, вроде проверить лежит ли точка на линии, параллельность линий и т.д. в 3д. А то я своего на велосипедил, хз как оно работать будет. В гугле и гитхабе искал.
А если я запилю платный ассет, где все текстуры с https://www.textures.com/ , меня на бутыль не посадят? Я периодически встречал знакомые текстуры на сторе. Но там это не так очевидно было. А у меня, как мне кажется, будет пиздец заметно.
>>405416 Рисуешь несколько спрайтовых молний на прозрачном фоне, тянешь спрайт от точки А до точки Б, меняешь спрайты в рандомном порядке. По-моему даже в фотошопах кисти-молнии есть.
>>405436 Поищи те, которые можно. Если планируешь этим зарабатывать, лучше озаботиться заранее, чем дождаться, когда тебя пидорнут из стора и лишат дохода.
>>405439 Так ведь и выходит, что те, которые можно - хуита. Мне их в яндекс картинках брать, чтоль? А хорошие нельзя. И камеры хорошей у меня нет. Какая-то безвыходная ситуация.
>>405421 > I have used the textures on a 3D model/scene. Am I allowed to sell the model/scene and textures as a bundle?
> Yes, under the following condition: You have customized the textures for the 3D-model or scene, and you are selling the model and texture in one package. Please add the following text in the documentation accompanying the model: "One or more textures on this 3D-model have been created with images from Textures.com. These images may not be redistributed by default. Please visit www.textures.com for more information."
А есть ли способ динамически "тонировать" спрайт в юнити, то есть закрасить его определенным цветом? Молния она же "мерцает", и не хотелось бы на каждый оттенок рисовать отдельный спрайт.
В идеале было бы удобно нарисовать форму на прозрачном фоне и закрашивать ее рандомным оттенком.
>>405693 C# Вообще в Unity нет Javascript, там UnityScript, от поддержки которого скорее всего скоро откажутся. Почти все последние официальные туторы выходят на C#
>>405858>>405858 >Вопрос контактного расчета uv Что за контактный расчет? Смотри, у меня меш (рандомно генерируемый) состоит из квадов как на пике 1, из 4х вершин. На края нужно наложить текстурку границы провинции.
Координаты текстуры можно задавать только в вершинах, так? Я же не могу сказать текстуре: вот ляг тут в вершине а потом еще немного отползи и хватит, а весь меш не закрашивай. Так вроде не получается.
>Можно треугольники порезать еще. Я пока пытаюсь создавать отдельный меш по краям провинции, пик 2, но пока не оче с алгоритмом кое-где
>>405894 MyWarbandInfo наследует MonoBehavior? Если да, то используй GameObject.AddComponent вместо вызова конструктора. Компонент в юнити не может "висеть" просто так, не являясь частью объекта, насколько я знаю.
>>405899 Делай инициализацию в void Awake(), а не в конструкторе, создавай компонент через gameObject.AddComponent ("FoobarScript"); и только после этого добавляй его в массив.
>>405906 То, что у тебя в конструкторе MyWarbandInfo, перемести в функцию private void Awake() {}; Она исполняется автоматически при создании компонента. Сам конструктор удали и никогда больше не создавай в наследниках monobehaviour, юнька от этого болеет. MyWarbandInfo должен быть прикреплен к какому-нибудь gameObject, чтобы теребонькать функции Awake, Start, Update, FixedUpdate и все остальные. Юнити делает это самостоятельно, тебе надо только создать gameObject и добавить к нему компонент MyWarbandInfo. Для этого есть два пути. Либо ты создаешь объект внутри сцены, и прикрепляешь к нему скрипт с помощью кнопки AddComponent в редакторе (в этом случае все остальное юнити сделает самостоятельно), либо создаешь GameObject (var go = new GameObject();) и вызываешь функцию go.AddComponent() из какого-нибудь другого объекта, например GameController.
>>405915 И у меня ещё возник вопрос. Геймобжекты, к котором я добавил CharacterStats, удалятся при переходе в другую сцену. Если я повешу на объект сл скриптом don't destroy on load, получится нормально работать с массивом?
>>405926 Я пробовал, но у меня фигуры сложные - одной линией не нарисуешь. Да и сложно алгоритм написать что бы точки шли строго в определенной последовательности, а без этого LneRenderer узлами завязывается
>>405932 да легко там всё. у тебя же грид. например возьми marching squares, или любой другой метод который бы выдал тебе контур покрасивей. сделай список из отрезков, соедини все отрезки исключая их из имеющегося списка. получишь список координат по периметру. это явно проще чем то что ты там задумал.
>>405966 Юнити хорош тем что наличие редактора значительно упрощает отладку чего-либо. И для рогалика хороший выбор, если только не существует специальных движков для рогаликов.
>>405962 Хинт: обычные .NET объекты не убиваются при смене сцены. Тебе нужно MonoBehaviour только для чего-либо на сцене, либо для получения вызовов из Юнити.
>>405933 Кое как впихнул marching squares в генератор, пикрил. Появились дырки в местах где сходятся 3 или 4 цвета.
Вероятно, дырки из-за того что я использовал "одноцветный" marching squares, т.е. каждая точка либо соответствует анализируемому в данный момент цвету либо нет.
Теперь, походу, придется в эти http://catlikecoding.com/unity/tutorials/marching-squares-5/ дебри погружаться, я ж там потону нафиг. Хотя не, там какой то велосипедный код фиксированный на 4х цветах. Мне как то монохромный алгоритм фиксить надо...
>>406023 >так ты сделай для всех случаев где уголки чтобы у тебя возвращались 2 отрезка а не 1. для диагональных можно и сразу все 4 К своему стыду, я не очень уверен что понял что ты имеешь ввиду, но эти отрезки вроде у меня уже были и я нафигачил заплаток в дыры. И вуаля, все работает норм, без дыр, даже выглядеть карта стала как то профессиональнее что ли, менее васянски. У меня, правда, были более округлые границы, но это вроде как можно будет усовершенствовать в будущем посредством интерполяции.
Спасибо тебе, анон. Если я еще смогу на новый меш еще и границы стран наложить будет вообще здорово.
>>406030 я говорю что marching squares же строятся на 4 элементах в гриде в форме квадратика. для угловых можно поменять способ построения. чтобы вместо 1 линии там было 2 и весь результат был лесенкой. но это разумеется исправит проблему островков кторую ты заметил ранее. потом когда ты уже построил всю эту хуйню можно поделить имеющееся на отрезки где края имеет больше 2 соседей. а потом к этой линии применить любой алгоритм упрощения линии. например алгоритм Рамера-Дугласа-Пекера. хотя ты там уже сделал что-то и стало лучше чем было.
>>406041 зайди на mixamo > store. там есть Pro Rifle Pack, когда я последний раз смотрел он был бесплатным и он довольно неплох. и вообще я тебя уже послал куда надо, тут тебе не гугл.
>>406036 хотя вообще тут даже marching squares не нужны будут лол. чего это я. можно просто перебирая всех соседей узнать есть ли линия, или нет. в зависимости от стороны можно ещё и направление получить чтобы знать что с какой стороны.
>>401747 (OP) Ребят, накатил этот ваш юнити, начал делать Roll a Ball по официальному гайду, превозмогая собственное незнание инглиша, и столкнулся с вот какой бедой на пикрелейтеде. Что можете посоветовать, геймданы?
>>406140 Ну вот ещё проблема - поиск по документации из коробки ни работает. Ну что это за фигня? Почему даже по официальным мануалам нельзя нормально заниматься, а нужно бороться с глюками движка и среды разработки? Зачем весь этот пердолинг? Юнити делает меня грустить.
>>401747 (OP) Мужики, помогите. У меня есть 2d - объект, игрок расручивает его на телефоне свайпом вдоль оси z. Мне нужно знать на какой угол повернулся объект за один Update.
>>406145 Делал всё как в официальном мануале. До этого не пердолил ни студию, ни юнити, всё из коробки стоит. Браузер со статьёй из документации должен открываться при выделении слова и нажатии ctrl + '. Но вот уже в двух местах хуета какая-то. Такие вещи лично меня очень демотивируют.
Охуееть пацаны. Вот этот код List<EdgeHelpers.Edge> res = new List<EdgeHelpers.Edge>();
foreach (var checkingEdge in edges) { //if neighbor has checkingEdge add it in res foreach (var comparingEdge in neighbor.edges) if (MeshExtensions.isTwoLinesTouchEachOther(meshStructure.vertices[checkingEdge.v1], meshStructure.vertices[checkingEdge.v2], neighbor.meshStructure.vertices[comparingEdge.v1], neighbor.meshStructure.vertices[comparingEdge.v2]) ) res.Add(checkingEdge); }
return res;
Где meshStructure - это стандартный Юнитивский Mesh выполняется 10 секунд и аллоцирует 2.5 гига памяти. гроб гроб пизда кладбище Тот же код где meshStructure это public class MeshStructure { public List<Vector3> vertices; public List<int> triangles; } Выполняется за 0.7 секунды и 480 КБ, лол
Вывод - разделяйте использование unity API и логику, заодно и многопоточность можно будет запилить
>>406263 Чет я сумбурно написал. Суть такова: обращение к Mesh.vertices[] в цикле дает огромные лаги и трату памяти. Вероятно, потому что меши хранятся в видео памяти или бог знает где еще. Те же самые действия с копией меша в виде обычного (не Unity) класса работают на порядки быстрее.
>>406290 >А мог бы документацию посмотреть Я даже видел это, и не раз. Но я не предполагал что копируется весь массив (видимо, при каждом обращении, даже на чтение) да потом еще и где то застревает по пути к мусорщику (как мне показалось). Думал, элемент копируется.
>>406151 >Такие вещи лично меня очень демотивируют. Чет у меня аж пригорело с этого нытика, баги(хотя там скорее не баги, а собственная криворукость) его блять демотивируют, нахуй ты тогда вообще в разработку вкатился? Пиздуй рисовать или 3d моделить если совсем мозгов нет, там все легко и просто, чистый монотонный, физический труд по передвиганию мышки без напряжения головного мозга, только не ной потом, когда тебя нейросеть нахуй заменит.
А есть ли возможность автоматически отключать рендеринг отдельных мешей при удалении камеры? Без велосипедства уровня если камера высока то в цикле прячем меши. LOD не подходит т.к. надо убирать множество мешей, а не менять на упрощенные.
>>406716 Ты в курсе, что если измерять размеры двух объектов в метрах, и их же в попугаях, то соотношение не изменится? Можешь мысленно дописать после цифры 5 что тебе угодно, хоть метры, хоть дюймы, хоть локти.
>>406718 Ну вообще-то изменится. Если я сейчас натыкаю тайлов в сцену, то у них будут координаты (1.7623545234, 0.000000123). Меня такое не устраивает, я хочу иметь координаты у первого тайла (0, 0), а у второго (0.5, 0), к примеру.
Пилю игру с видом сверху с 3д графикой(хотя это не важно), но механика мне нужна по сути 2д - типа игрок ходит по плоскости и стреляет. А еще мне нужен поиск пути для врагов. И че мне делать? Как обычно 3д физика + навмеш? Или по-другому лучше(мне же третье измерение нахуй не нужно, просто тупа лишние вычисления будут -> ниже производительность)?
>>406751 >Что такое префаб, если коротко? Шаблон объекта. Из него создаешь кучи клонов
.>>406759 >не же третье измерение нахуй не нужно, просто тупа лишние вычисления будут -> ниже производительность Там копеечная разница, и еще не известно в чью пользу, если ты не на Нокию 3110 пишешь. Лучше бы ты код писал а не занимался оптимизацией
Анон, помоги ньюфане разобраться с хранение и обменом данными между объектами. Пилю в данный момент примитивный шутер, но с возможностью ловить предметы, которыми стреляют враги. То есть, спавнятся враги с разными статами, у каждого из них должен быть свой механизм спавна предметов, которыми он будет стрелять. Игрок один и должен иметь возможность поймать любой предмет, когда он в зоне досягаемости, схватить, и кинуть в ответ. В данный момент есть кривой прототип, в котором вся логика зашита в предмете. Предмет проверяет, находится ли он в зоне досягаемости, включает себе гравитацию, вычисляет силу броска самого себя. 1) Не пиздец ли это? Снарядов то в игре будет достаточно, и каждый из них несет основную тяжесть игровой механики. 2) Как правильно организовать скрипты и обмен данными. Чтобы поменьше всяких глобальных переменных, которые хуй пойми кто переменил. Как максимально инкапсулировать?
>>406774 >Лучше бы ты код писал а не занимался оптимизацией А я вот не могу код писать. Потому что наперед думаю, что говно напишу и изначально неправильно логику выстроил. >>406778 Тоже бы оптимизацией занялся, но на пека разрабатываю, хз есть ли смысл оптимизировать на пекарне.
>>406778 >Как максимально инкапсулировать? Ну берешь такой и инкапсулируешь. В смысле прячешь логику сущности в ее классе.
>>406778 >Чтобы поменьше всяких глобальных переменных, которые хуй пойми кто переменил. Обмажь все private, где надо readonly и static
>>406782 >А я вот не могу код писать. Потому что наперед думаю, что говно напишу Это нервное. Не припоминаю случая что бы я выстрелил себе в ногу кривой архитектурой. Это может иметь смысл в ну оооочень больших проектах.
>>406782 > Тоже бы оптимизацией занялся, но на пека разрабатываю, хз есть ли смысл оптимизировать на пекарне. >>406784 > Это нервное. Не припоминаю случая что бы я выстрелил себе в ногу кривой архитектурой. Это может иметь смысл в ну оооочень больших проектах. Таки да. Это по сути прокрастинация - мог бы игру делать, но делаешь в результате что угодно, только не игру.
Может кто разбирался. Нашёл два готовых outline эффекта (обводка 3д объектов). В первом это реализуется через вторую камеру, которая динамически создаётся. Во втором это реализуется через один шейдер, который вешается на объект, который нужно обвести.
В первом качество хорошее, но я что-то не уверен насчёт производительности на мобилках. Вторая камера должна же сильно просадить фпс на слабых устройствах? Второй вариант выглядит хуже, но по идее должен быть гораздо производительнее.
>>406784 Не могу поделить логику между сущностями. Вот снаряд. Снаряд совершает действие "полет" за счет внешних факторов (animation event, ЛКМ). Или это рука игрока/нпс совершает действие по броску снаряда?
> Не припоминаю случая что бы я выстрелил себе в ногу кривой архитектурой. А вот я, кажется, смог. Так наговнокодил, что с одним нпс у меня механика работает, а с двумя уже дикие баги. Они один и тот же предмет у себя из рук вырывают, лол.
>>406791 >Или это рука игрока/нпс совершает действие по броску снаряда? Рука дает команду лететь (передает сообщение, типа снаряд.лететь()), снаряд летит сам (наследуя полет от кого-нибудь) >>406791 >Они один и тот же предмет у себя из рук вырывают, лол. Так это ж не архитектура виновата, наверно. Запили проверку какую. Или угори по хардкору - добавь мнотопочность и блокируй снаряд при помощи Lock (на самом деле не надо)
Хай, гд. Очень интересует следущая тема, может кто из анонов сталкивался. Могу ли я продавать в ЮнитиСторе ассеты, замоделенные и затекстурированные на пиратском софте? Возьмут ли за жопу (Юнити тима или авторы софта) и есть ли способы обхода? Покупать софт пока не могу, я нищеброд.
>>406787 > Это по сути прокрастинация А я просто в голове продумываю игру и думаю о том, какой я молодец. Правда, наконец-то я написал дисдок, и уже понял, что я не молодец нихуя, а в кое-каких моментах игроку просто нахуй не нужно играть в мое говноподелие.
Как импортировать height map и occlusion? Редактор отказывается читать файл. Куда кидать текстуры, помеченые как roughness, specular? Вот отсюда, например: https://www.textures.com/download/substance0030/127099 Albedo и normal map применил, уже очень ничего выглядит, но даже близко не так, как скомпиленный материал там. А мне хочется хотя бы приблизительно так. Для этого хотя бы height и ao надо, их понятно куда, но они не импортируются.
>>406832 >А я просто в голове продумываю игру и думаю о том, какой я молодец. Вот это самый верный подход. Кроме отыгрыша в голове ничего и не нужно, остальное - суета.
Можно ли сделать так, чтобы количество тайлов текстуры в материале по оси зависело от размера объекта по этой оси? Или по-хорошему не должно быть видно тех мест объекта, где неправильно растягивается/скукоживается?
>>406853 >>406855 Юнити не использует metallic/roughness, она использует спекуляр. В опциях материала, наверху, можешь выбрать спекуляр-шейдер или metallic/smoothness шейдер. Файлы должны быть в png или подобном lossless формате. Я так понимаю, что файл с сайта - это материал для сабстанса. Если на встает на юнити, юзай сабстенс дизайнер/пейнтер, и из него уже примеряй материал и компилируй текстуры/мапы.
>>406454 фрустум куллинг работает по умолчанию, окклюжен куллинг настраиваешь сам. У камеры есть также параметр far clipping plaens, это разве не то, что тебе нужно?
>>406880 Кватернион описывает вращение объекта на угол theta вокруг оси, заданной через вектор. Прими это за аксиому и не заморачивайся. Кватернионы позволяют вращать, не задумываясь о порядке эйлевских угров. Чтобы повернуть в обратном направлении, просто умножаешь на конъюгированный кватернион. Кватернион (0, 0, 0, 1) означает, что вращения нет.
Недостаток кватернионов против 4х4 матрицы в том, что нет перемещения в пространстве.
>>407167 А, там жи написано: The percentages in the LOD bars represent the fraction of the bounding box height relative to screen height where that LOD level becomes active. Лол, поэтому у меня в WEB Gl LODы странно себя ведут..
Какого хуя юнити ломает мне текстуры (пик 1), хотя я выставил все по гайдам (пик 2)??? Если склеить ту же текстуру в фотошопе (пик 3), то все нормально, значит это юнити выебывается.
>>407295 >66x66 Размер текстуры должен быть равным степени двойки, иначе юнити растянет их до нужного значения. Степень двойки это 2 4 8 16 32 64 128 256 512 и так далее.
>>407304 Имбицил, юнити для 3д игор, ну куда ты с пикселартом лезешь. Используешь инструмент не по назначению - страдай. Чтоб не ломало у тебя картинку масштабируй кратно целым числам. А не 3.6х как сейчас.
>>407316 >называет кого-то имбецилом >заявляет, что он ещё и хамло на аналогичный ответ Ну я уже понял, что шестеренки в твоей голове не варят, мог бы не отвечать.
>>407295 >>407296 Пиксельные спрайты действительно должны быть равны степени двойки в размерах. А ещё посмотри вот это >>387130
>>407312 >>407340 Он только изначально для 3д был, сейчас в нем 2д вполне себе. Как минимум все победители недавнего Microsoft Challenge в 2д, 5 из 10 honorable mentions тоже. И другой всякой 2д годноты на юнете полно. Так что твой аргумент инвалид.
Один и тот же кусок с разным зумом. Как я и говорил - пидорасит из-за невозможности поделить нацело количество пикселей, которое даёт разрешение экрана, на нужное количество того, что надо отобразить. Отслеживай.
>>407370 С каким блядь зумом, там нет никакого зума, это скрин игры со стандартными настройками камеры. Вы уже заебали придумывать причины, которые не соответствуют действительности.
Как скриптом загрузить префаб из моих ассетов на экран? Нагуглил рабочий вариант myPrefab = UnityEditor.AssetDatabase.LoadAssetAtPath(...); но когда пытаешься собрать exe, то выдаёт ошибку так как UnityEditor это чисто эдитор и не собирается в exe. Втф?
>>407434 А с чего ты взял, что стандартные настройки камеры идеальны для твоей хуиты? Попробуй изменить зум камеры в превью - будет пидорасить в прямом эфире. Тебе нужно регулировать зум камеры так, чтобы каждому пикселю твоего ебучего спрайта соответствовало целое количество экранных спрайтов.
>>407438 Нашел твой пост и ответ, который тебе помог. Я тебе об этом, тупой плешивый пёс, и говорил. Я тебе даже ссылку на ответ в пикселяч-треде дал, там по ветке мог дойти до того же самого. Но нет, блядь, пока всё по полочкам тебе не разложили, не разжевали, ты нихуя сам не разобрался.
>>407482 >но когда пытаешься собрать exe, то выдаёт ошибку так как UnityEditor это чисто эдитор и не собирается в exe. Втф? C путями обосрался, небось. Или написал тут непонятно
Такая проблема. Есть 2 сцены. Из первой во вторую я переношу игрока и меню. Я сделал что бы DontDestroy не дублировал объекты при переходе, НО вот в чём загвоздка. В первой сцене у меня уже по дефолту стоит персонаж, если перенесу во вторую сцену, то норм, потому что там его нет по дефолту. Но если вернусь в первую, то там будет уже 2 игрока. Один из второй сцены, а другой который есть по дефолту в первой сцене. Я хотел сделать удаление одного при переходе в первую, но если я захожу из главного меню в первую сцену, то у меня удаляется мой перс и ВСЁ. А если отключить этот скрипт удаления и включать при переходе со второй в первую, то скрипт почему то не включаеся (он висит в первой сцене). Может у вас есть мысли как решить мою проблему? Четвёртый день колупаюсь, а уже сроки подходят
>>407589 Убери игрока из первой сцены, добавь объект-GameController, который будет спавнить игрока из префаба. Статы игрока типа здоровья можно так же хранить в GameController.
>>407524 >>407543 Хуя дебил и пиздунишка! Ловите, пока не сбежал!
А теперь по сути. Ты тут распизделся про зум, а я менял ортографический размер. Это раз. Ты мне пиздеж играться с числами, а богоподобный реддит сразу посоветовал, как решить проблему правильно - кодом в зависимости от разрешения в игре. Это два. Я ничего никогда не писал в пикселяч-треде, даже не заходил в него никогда, но ты мне там давал ссылку, кек. Это три. Бурги сразу дали ПРАВИЛЬНЫЙ рабочий ответ без лишних выебонов "АХАХА СМОТРИТЕ ЭТОТ НЬЮФАГ НИЧЕГО НЕ ЗНАЕТ, ИДИ НАХУЙ, Я СКАЗАЛ ИДИ НАХУЙ, ОЙ КАКАЯ ИНТЕРЕСНАЯ ТЕКСТУРА ПОДЕЛИСЬ". Вся суть просто этой параши. Это четыре. Обтекай, советчик. И это последнее пять.
>>407570 Я уже сам разобрался. Алсо написал все правильно, просто в треде очевидно никто не знает, что скрипт с подключеным модулем UnityEditor нельзя собрать, он работает только в эдиторе.
>>407671 >распизделся про зум >а я менял ортографический размер А каково твоё определение зума? Что происходит при изменении ортографического размера? Реддит просто привык к дебилам, которым надо сразу готовый ответ в ротешник засунуть, чтобы вонять перестали. Ещё и плюсиков в кармочку поставят))))
>>407702 >Реддит просто привык к дебилам, которым надо сразу готовый ответ в ротешник засунуть, чтобы вонять перестали. Ещё и плюсиков в кармочку поставят)))) Именно так и работает здоровое сообщество - сегодня помогают тебе новичку, а завтра помогаешь ты со своей кармой свежим новичкам.
>>407702 >твоё определение зума Забыл своё определение? Ну так перечитай тут >>407312 >Чтоб не ломало у тебя картинку масштабируй кратно целым числам. А не 3.6х как сейчас. Очевидно, что это неверно и я менял совершенно другую настройку.
Хочу запилить простую физику для мобов, чтобы соприкасались с поверхностью, пока не изучал подводные камни и не уверен, что мой вариант выйграет по производительности. Пытался реализовать какой-нибудь простой костыльный вариант без RigitBody, работает, но ещё нужно как-то расчитать нормали соприкасаемой поверхности. Алсо, таких будет много, поэтому RigitBody отпадает, к сожалению.
>>407753 Я уже. Карта в джсоне, все работает, карту грузит и отображает. Единственное, что мне не нравится, так это ебучие кавычки, но без них никак, если хочу работать с джсоном.
>>407769 Можно и трансформом, но коллизии определять вручную, например, рейкастингом. Ну или там при каждой попытке перемещения чекать клетку, в которую перемещаешься.
>>407772 Такое фиксированное перемещение, наверное, никак, все остальное основывается на физике, которая здесь не нужна. И ещё, перенеси все из FixedUpdate в просто Update, фиксед для физики, остальное плавнее работает через просто апдейт.
>>407773 Тогда стоит ли вообще усложнять коллизиями, если можно убрать вообще риджид бади с колладером нах и просто проверять соседнюю клетку на наличие тайла с тэгом WALL, например?
>>407863 С чего ты это взял? Я все прекрасно понял в момент, когда увидел код. А вот в треде есть люди, которые нихуя не понимают, но лезут с советами. Например, вот этот >>407312, который советовал менять Scale, пушка нахуй. Или вот этот >>407303, который спизданул про кратность, хотя у меня сразу за первым постом шёл второй с правильной кратностью и все равно проебаными пикселями. Или вот эти >>407733>>407761, которые даже не поняли о чем речь, зато лишь бы как ответить в треде. И да, ты ответил как раз тому новичку.
Анон, прошло уже два года, а я так и не нашел вразумительного способа подсвечивать ребра мешей, кроме написания собственного шейдера. Есть ли однокнопочные способы для дебилов?
Поцоны, делаю 2Д игру и появилась такая проблема (момент этот не уловил) - патиклы спрятались на спрайтами. Сортинг лаер / ордер ин лаер у спрайт рендера (как советуют в интернете) не помогают. А у половины моих эффектов сделанных патикл рендером этой неработающей опции вообще нет.
Короче, я частично понял. Нужно просто включить в патикл систем рендерер и в нём - Сортинг лаер / ордер ин лаер Не понимаю почему вчера на сонную голову не сработало. Но включение этого "рендерер" портит мои тонкие настройки частиц - они летают хуй пойми как, одинакового размера и во все стороны. Как фиксить?
Посоны, а насколько Unity 2D подходит для создания спрайтовых пошаговых стратежек? Упростит ли движок жизнь для разрабов этого жанра, или весь Юнити - это про физику?
Я к вам с платиной. Какой код будет работать быстрее? С объявлением переменной внутри цикла или снаружи? float profit; > foreach (Factory factory in province.allFactories) { if (province.CanUpgradeFactory(factory.type)) { profit = factory.getProfit(); if (profit > result.Value) result = new KeyValuePair<Factory, float>(factory, profit); } }
Или
> foreach (Factory factory in province.allFactories) { if (province.CanUpgradeFactory(factory.type)) { float profit = factory.getProfit(); if (profit > result.Value) result = new KeyValuePair<Factory, float>(factory, profit); } }
Когда все в Update, то работает ок, перемещается плавно.
Стоит записать в отделную функцию и перемещение идет рывками. Наверно, как-то неверно расчитывается пройденное расстояние. Как это исправить? Или может есть другой способ плавного перемещения в заданные координаты?
>>408419 Корутины? Хотя он и так должен через нее вызываться. > Или может есть другой способ плавного перемещения в заданные координаты? transform.position += speed * Time.deltaTime;
Ну и почему эта хуйня не работает? На сцене стоит геймобжект, на нём скрипт с публичной переменной tankGun типа GameObject, в которую я перетащил префаб. Дальше я делаю currentWeapon = tankgun;
И ещё, это всё делается в Start, может в этом пробелма?
>>408455 Учишь С++, опенджиель и основы разработки движка, а потом без задней мысли пишешь его. Вот только что ты забыл в этом треде с такими вопросами?
>>408426 Если ты просто будешь умножать скорость на время и прибавлять к позиции объекта, он у тебя полетит вправо, вверх и вперед. Тебе нужно умножать его на вектор направления. Но это костыльно, лучше разберись с лерпом.
>>408448 Пилишь свои пазлы, рендеришь интерьеры, вешаешь кнопки.
Ананасы, нужна ваша помощь. AO из пакета Post Processing артефачит немного при Deferred рендеринге с кастомными шейдерами. Случается даже с свежесозданным дефолтным шейдером (Create -> Shader -> Standart Surface Shader). Стандартный физический шейдер доступный из коробки работает без проблем. Кто нибудь сталкивался с подобным? AO выкручен на запредельные значения для наглядности
Поздравьте меня, я, похоже, впервые в жизни обосрался с многопоточностью. У меня таблица обновляется из MainCamera.Update и из ScrollBar.OnValueChanged. Они жи из разных потоков, так?
Бля, lock (gameObject) не помогает.
Вот этот метод public override void refreshContent() { lock (gameObject) { [очисти таблицу] [заполни таблицу] } } Один раз этот метод вызывается из родителя, второй раз я этот метод засунул в качестве колбэка в ScrollBar.OnValueChange
Чему не блокируется? Таблица не успевает очиститься как налетает второй поток и начинает писать в таблицу.
>>408569 >Сделай так, чтобы было в одном потоке, а не блокируй. Но зачем мне велосипедить все в один поток, если это стандартные юнитивские недопотоки (Апдейт и коллбэк)?
Так то я проблему решил добавив флаг alreadyInUpdate и его проверку при заходе в метод, но все таки интересно чему юнити не захотело есть стандартный lock.
Может быть дело в том юнитивские коллбеки реализованы через какие нибудь самопальные корутины?
Сап юнитач. Есть проблема. Как в 2д красиво прятать спрайты за спрайтами, если они сзади, и показывать их, если они спереди? К примеру, за деревом. Делать две части дерева не вариант, через layer order не получится, т.к. там максимальное число в short, и выше 32768 не зделать. Я раздумывал отодвигать спрайты по оси z, но тогда страдает камера, и нельзя будет использовать разные sorting layer.
Что я не так понимаю? Смотрю всякие текстовые обучалки, читаю официальный мануал. Чому у меня коллайдеры не таскаются мышью? Ни боксовый, никакой. Написано, дескать, "держите шифт чтоб таскать", "Держите контрл и кликайте чтоб удалить точку". Но ничего не происходит. Если тыкать ровно в линию\точки просто спрайт остаётся выделенным. Если чуть выше - сбивается выделение. Опять же не совсем понятно предназначение кнопки edit collider, т.к. тоже нихуя не меняется.
>>408729 >>408714 Редактирование шифтом убрали в 4.6. Двигай весь коллайдер, редактируя offset; двигай или удаляй отдельные точки мышкой в режиме редактирования. Ближайшая к курсору точка всегда подсвечена, смотри внимательней.
Обращаюсь к бывалым игроделам, которые собирали apk-шки на ведроид, и, возможно, сталкивались с подобной проблемой.
Я делаю игру (собственно на ведро) и недавно обнаружил, что она слишком много весит в сравнении с другими играми на моём планшете после установки. Сам apk-файл весит ~20mb, но в настройках системы, когда смотрю приложения, его итоговый вес после установки ~45mb. Для сравнения, Hungry Shark, который использует больше графических и звуковых ассетов, в установленном виде весит ~12mb.
Смотрел Editor Log, если я его правильно прочитал, то общий вес графена и звуков укладывается в 14mb (of course я всё компрессил), не могу понять, откуда нагрузка в дополнительные 30mb.
>>408761 Могу только сделать догадку, но, скорее всего, Юнити тянет кучу всякого кода/ресурсов вместе с собой. Там же всякая физика, обработка освещений, столкновений, теней и т.п. Нативные приложения на Джаве естественно будут весить меньше, так как там только нужный код. Попробуй погуглить, возможно можно как-то настроить это дело.
Котаны, для отрисовки графики в пиксельном 2d движке посоветовали использовать Щейдеры с отрисовкой вершин с заданным размером. Я вот с шейдерами не сталкивался и нагуглить ничего не вышло. Вся надежда на вас. Помогите запилить шейдер чтобы вершины рисовались и их можно было красить.
>>408823 Неа. Прикол в том, что ребята состоят только из вершин, а месте каждой вершины рисуется квадрат, повёрнутый к камере. Поэтому "разрешение" картинки зависит от плотности вершин модели.
>>408825 А не легче шейдер навесить на обычных кукол из кубов, чем рендерить через дохуя велосипедов? Да и не под Унити пилить. А так хуй знает. На каждую единицу площади можешь рисовать квадратик нужного цвета через какой-нибудь Unity.GL.
>>408829 Шейдер-то мне и нужен. Только не смог я нагуглить как его сделать. Вообще, задача не в рендере вершин, а в быстрой отрисовке массива цветных квадратов. Прост мне говорили что это самый лучший вариант.
Привет, какую команду нужно прописать в скрипте для управления игроком , чтобы он перемещался только в то время , когда нажата кнопка мыши(ЛКМ) или просто тач(т.е. палец на экране), если на смартфоне (в любом месте)? То есть чтобы только при этом условии смогли осуществляться другие функции управления игроком , спасибо C:.
>>409039 if (Input.GetMouseButton(0)) { PerekatYoby(); } В том же классе Input есть ивент для тачскрина.
> чтобы только при этом условии смогли осуществляться другие функции управления игроком if (Input.GetButtonDown("Krutit") { if (Input.GetMouseButton(0)) { KrutimYobu(); } }
Вот , например , игрок постоянно увеличивается/уменьшается в размерах (на 2д плоскости) - как можно осуществить отдаление/приближение камеры, пропорционально размерам игрока?
Я тут решаю на чем делать 2д настольную игру для ведра и айос. Будет ли легко сделать на юнити в сравнении с другими движками? И стоит ли браться за юнити для этого жанра? Юнити же огромен и для 3д...
Оно, очевидно, несколько устаревшее. И у меня возникли проблемы с системой частиц. начиная с того момента, где картинка импортируется как текстура (у меня такого пункта даже нет), а ещё где "Измените шейдер "Particles" на "Alpha Blended""
>>409112 Материал партиклов меняется на развороте renderer компонента париклов, он в самом низу. Материал создаешь правой кнопкой мыши в папке. На материале меняешь в выпадающем меню шейдер на Alpha Blended, они там сгруппированы все в подменюшке.
>>409116 Анон, вижу ты шаришь в партиклах. Как думаешь, их можно использовать для моей задачи? >>408819 То есть наклепать их пару тысяч по сетке, запретить поворот, установить непрозрачную текстуру и максимально увеличить время жизни. Короче как считаешь, лагать сильно будет? Если нет, может накидаешь нужные тастройки, а то там дохера крутилок.
>>401747 (OP) Почему игровой процесс прямо в редакторе юнити отличается от игры на той же версии, но уже в билде(на ПК), притом что на андроиде то же, что и в редакторе, т.е. как по плану. ? Если более конкретно, то один объект спавнится на пк версии за игроком по Z измерению , хотя в редакторе над ним, как и задумывала. ? ^w^ Как можно исправить ? .
Сап, анон. Как сделать так, чтобы в Меканиме анимация один раз проигралась и застыла на последнем кадре? У меня смерть персонажа через жопу сделана (npc-death на пикче). Присваиваю bool переменной true на 0,3 секунды и возвращаю обратно false. Если же оставить тру, то персонаж будет непрерывно карячиться в предсмертных судорогах. Естественно, Loop в анимационном клипе отключен. Однако способ с временной задержкой не всегда срабатывает почему-то. В 10% случаев анимация смерти не включается.
>>409198 Это хорошо. Однако я прочитал, что они так планируют затачивать движок под ААА-тайтлы, чтобы потеснить UE4. Очень хуево. Лучше бы WebGL довели до ума, сцуки. Универсальный монстр не нужен. Развивались бы себе дальше в сторону инди-разработчиков.
>>409394 Ты тупой просто, ты из энистейта запускаешь, у тебя этот ебаный бул остается активным и из состояния смерти снова переходит в состояние смерти (через энистейт). Вместо була юзай триггер, довн, и все будет работать.
>>409461 Да, я нубяра. Ничего не понял из твоего объяснения, честно говоря. >ты из энистейта запускаешь Имеешь ввиду экземпляр префаба? Конечно из него, у меня же несколько нпс в сцене, у каждого свои анимационные переменные. >Вместо була юзай триггер, довн А как его юзать? Алсо, мне нравятся булы, они удобные в отладке, на них удобно смотреть в окне аниматора.
>>409469 Во-первых, энистейт - Any State - бирюзовая хуйня на скрине. Во-вторых, >Алсо, мне нравятся булы, они удобные в отладке, на них удобно смотреть в окне аниматора. Иди нахуй, нравится ему, блять, они не подходят в этом случае. В-третьих, иди нахуй еще раз, долбоеб. В-четвертых, хуяришь в окошечке меканима, где ты добавлял булы, плюсик и выбираешь триггер. Суть этой хуйни, что она сама вызывается один раз. Дальше идешь в скрипт, на место була с этой задержкой и избавляешься от нее и от була тоже по возможности еще избавляешься от задержки в развитии. Вписываешь туда твойаниматор.триггер Все блять, никакой ебани. Удобно блять ему, нравится нахуй, пиздец горит
>>409477 Спасибо, анон. Это офигительно, что такая полезная штука как триггер есть, не знал о ней. Алсо, я не хожу ни в какие скрипты, а делаю FSM в Plamakere. Удобно. Нравится.
Как кнопку с иконкой и текстом сделать? Мануал на автолейауты не очень помогает. Иконка должна сидеть с зафиксированным отступом (скажем x:50px y:0.5) и не должна съезжать при изменении размеров кнопки. А текст должен занимать оставшееся от иконки место и изменять размеры кнопки если не вписывается в текущие. Якорь для текста не обязательно в центре свободной области делать, если сам текст всё также можно будет выравнивать по 9 позициям. У кнопки должны быть min/max width/height, т.е. её размеры и позиция субелементов могут динамически меняться. По отдельности это у меня всё выходит, но вместе собрать не получается. Горизонталлейаут пидорасит иконку как попало и области им задать нормальные не выходит. Пример какое поведение мне нужно на пике: сверху мало текста, снизу текст не входит в обычные размеры кнопки и увеличивает её высоту (считаем ширину фиксированной), точки - якоря привязки, рамка показывает границы объекта текста. Дальше я это собираюсь в префаб засунуть и динамически создавать из кода с иконкой, текстом и скриптом.
Вот у меня в редакторе все кнопки в одном ряду, но в готовом билде одна из них сползает (между ними есть небольшое расстояние)-как можно исправить?Спасибо.
>>409501 Родителю добавляешь горизонтал лайаут (ставишь все 4 галочки), картинкуе и тексту - лайаут элемент. Картинке задаешь мин width, тексту - min width и preffered width, последняя c запасом.
Убедись что Юнити обновлена до 5.6
>>409508 >Вот у меня в редакторе все кнопки в одном ряду, но в готовом билде одна из них сползает (между ними есть небольшое расстояние)-как можно исправить?Спасибо. Вероятно, у тебя разное разрешение в редакторе и билде? Настрой рескалинг под разные разрешения. Или отключи его нафиг (Canvas -> CanvasScaller - > CjnstantPixelSize).
>>409501 Якоря наоборот же нужно к краям рамки приделывать, иначе "внутренности" не будут под размер подстраиваться не будут. По центру если якорь, то иконка/текст просто "висят". >>409513 >middle loyalty Average же
Я правильно понимаю, что этот ваш юнете сейчас очень плотно повязан с точканет и я могу задействовать в скриптах засунутые в проект дллки, написаные, например, на крестах/CЛИ?
>>409859 Дебил, иди нахуй лучше. Даже я, блядь, вижу, что у тебя вопрос поставлен настолько хуево, что ты вообще не понимаешь что сам спрашиваешь, блядь.
>>409859 Юнити - движок, андроид - платформа. Можно писать на юнити под андроид, а можно сперва бегло разобраться в вопросе прежде, чем делать судьбоносные решения.
>>409865 Юнити для меня интересней андроида, но мне кажется его менее выгодно изучать так как срежняя зп ниже и он не так востребован(ну и народу его знает не так много)
>>409859 Иди лучше в программач за учебниками по Яве. Тут игры делают, а не деньги зарабатывают. Релизнутые играбельные поделия на пальцах можно пересчитать.
>>401747 (OP) Как сделать взаимозависимость переменных в скрипте? Нужно чтобы, например, переменная "yellowpony" была в 10 раз меньше чем "bluepony", притом 2 переменная постоянно изменяется в процессе игры, спасибо за потенциальные ответы,
>>409960 Ну в апдейте присваивай желтой синюю / 10, каждый кадр будет обновляться. Если так не подходит, то делай класс или структуру с этими переменными в качестве полей, у блюпони сделай сеттер, в котором сразу будет меняться значение желтой.
>>410024 GameObject yoba; Vector3 pos = new Vector3(10, 5); Update() { if (Input.GetKeyDown("q")) { Instantiate(yoba, pos /тут что-то ещё, а может быть и нет/); } }
Ебать вы ленивые. Иди уроки смотреть. Это классика, это знать надо.
>>410060 Ты тот анимехуй, которому я писал, как разрешать игроку делать что-то ещё во время движения? Заебал уже, полистай документацию, там все предельно просто. У тебя гугл, блядь, есть, в него запросы проще писать, чем сюда.
>>410085 >Instantiate(yoba, Vector3.zero, Quaternion.identity); О, тогда Игрок остаётся на месте, но на спавне множество других игроков появляется , как сделать просто "телепортацию" игрока на эти координаты?
>>410482 Все-таки дело в юнити ремоут, это он пидорасит качество. Если собрать и поставить апк, то все нормально. Правда размер текста отличается, сравните с тем который на предыдущих скринах. скринах.
Возникла странная проблема. Как-то странно работает скрипт. Пик 1 - то, где возникает проблема. dirToPlayer.direction.magnitude почему-то всегда равен 1 или 0.99999. Второй пик - оригинальный класс, в котором всё работает как надо. Третий пик - консоль во время игры.
>>401747 (OP) Как сделать так, чтобы объект (Player) совершил какое-то действие(eat) после того как коллайдер другого объекта (Apple) стал находиться внутри коллайдера игрока (по x и y координатам, т.к. игра в 2д) ?
>>410742 Это всё в туториалах и учебниках есть, сколько можно-то, а? Поставь в коллайдере яблока галочку Is Trigger, прикрути к игроку скрипт, где будет функция void OnTriggerEnter(Collider other), в котором будет получаться какой-нибудь уникальный для этого типа объектов компонент через other.GetComponent<AppleScript>() (AppleScript это просто пример), либо проверяться тэг через other.tag, может ещё какой-то вариант есть, и если тэг соответствует яблоку или компонент != null, то выполняешь соответствующие действия. И идите уже нахуй читать юнити в действии и смотреть туториалы, вместо того, чтобы просить анона расписывать уже данные там вещи.
>>410744 Спасибо за ответ, если тебе интересно, объясни пожалуйста подробнее этот пункт : >если тэг соответствует яблоку или компонент != null Т. е. как можно это записать кодом , например:
if (" тэг соответствует яблоку или компонент != null " ) {
Выходные в хату, господа. После долгого периода нихуянеделанья продолжаю пилить open-world 2D дрочильню мечты. Нихуя не продвинулся, еще и бросился делать другой свой высер. Хуево вышло, короче. Читать свой код спустя месяц — пиздец интересное и заебное занятие.
Собственно, возникли два вопроса: 1. Не совсем понимаю, как работает А* и как его прикрутить. Типа мне можно задать одну клетку, условно, в 0.5 юнитиметров и проверять коллизии? 2. Хочу пиздатый бесшовный мир знаю, что нихуя не проработаю, но мне уже тупо интересно. Немного подумав (и нажравшись ссылок на платные ассеты), пришел к такой схеме: креплю через transform.position точку к игроку, храню там локальную позицию по отношению к текущему чанку, обновляемую каждый кадр. Чанкам задаю int[2] с координатами для сетки массивов int[x,y]. Если позиция точки слишком далеко от центра чанка и Игрок вот-вот увидит соседние чанки — инстанциирую их. Точка вместо просто координаты игрока нужна для катсцен, за ней ходит камера, хуе-мое. Правильно думаю? Или где-то наебался?
>>410795 GetComponent<>() возвращает тебе объект, как в смысле инстанцию класса (скрипта). Если он не находит этот компонент в GameObject'е, он возвращает null. Соответственно, пишешь для своего игрового объекта игрока:
OnTriggerEnter(collision col) //бля, или там Collider в скобочках. Загугли. { if (col.gameObject.GetComponent<Yoba>() != null) { KrutimYobu(); } }
Либ проверяй через тег все в том же OnTriggerEnter:
if (col.tag == "Yoba") { KrutimYobu(); }
Не забудь прописать проверку здоровья, если тебе уж яблоки надо подбирать.
>>410882 Под заморозить я имел ввиду запретить её изменение с помощью мыши. За обзор отвечает следующий код
rotX = Input.GetAxis("Mouse X") MouseLookSens; (вращение по оси Х) rotY -= Input.GetAxis("Mouse Y") MouseLookSens; (вращение по оси У(т.е вертикально)) rotY = Mathf.Clamp(rotY, -60f, 60f); (ограничение обзора по оси У) transform.Rotate(0, rotX, 0); (поворот по оси х) eyes.transform.localRotation = Quaternion.Euler(rotY, 0, 0); (поворот по оси У)
>>410884 Важное уточнение я планирую замораживать камеру в инвентаре. Т.е инвентарь закрыт- камера свободно двигается Инвентарь открыт - камера не двигается
>>410885 if(mogu_dvigat_cameru == true) {rotX = Input.GetAxis("Mouse X") MouseLookSens; (вращение по оси Х) rotY -= Input.GetAxis("Mouse Y") MouseLookSens; (вращение по оси У(т.е вертикально)) rotY = Mathf.Clamp(rotY, -60f, 60f); (ограничение обзора по оси У) transform.Rotate(0, rotX, 0); (поворот по оси х) eyes.transform.localRotation = Quaternion.Euler(rotY, 0, 0); (поворот по оси У) }
>>410886 За такие решения надо пиздить палками. Сначала он хочет одно, потом другое, потом третье и вот у него ебаная туча флажков, которые нужно менеджерить.
>>411018 Ну, допустим, ты хочешь добавить функционал "оттарабанить в очко врага", но камера в это время будет фиксирована, следовательно ты прописываешь в классе это:
sealed class GaySexInputContext : InputContext {
[SerializeField] Ass m_TargetAss;
internal override void UpdateInput() { var horizontalFuck = Input.GetAxis("Mouse X"); var verticalFuck = Input.GetAxis("Mouse Y");
m_TargetAss.fuckDirection = new Vector2(horizontalFuck, verticalFuck);
} }
И всё. Таким образом тебе не надо в одном классе прописывать огромное количество функционала, а потом ебаться с тем, почему у тебя 156 булевых флажков и кто в какой момент дёргается и как должен работать. Если же ты хочешь добавить ещё что-то, то ты просто создаёшь новый класс, который отвечает за свою маленькую задачку и в нём прописываешь функционал для нужного тебе поведения.
>>411027 Шилдт тебе даст информацию о том, какой у тебя инструментарий есть в распоряжении. А то, чтобы не быть говнокодером достаточно почитать про такую вещь как паттерны и принципы SOLID. Например, вот неплохие ресурсы: http://gameprogrammingpatterns.com/ -- тут много хороших примеров от "ветерана" индустрии. который боевой код не писал, а только in-house инструменты лепил https://refactoring.guru/ru -- тут тусуется выжимка из книжек по паттернам и подходам к разработке.
АНОН, БУДЬ ОСТОРОЖЕН! Паттерны не стоит применять всегда и везде. Используй их только тогда, когда у тебя появится реальная проблема с расширением и поддержкой существующего кода. И да, тот пост я написал специально, чтобы поднять проблему того, что к нам в контору приходят ребята, которые знают движок, но нихуя код писать не умеют. То есть да, они умеют писать "код". Он работает, он выполняет задачу. Это хорошо, но, к сожалению, с таким кодом работать довольно тяжело, т.к. порой получаются классы по 12к строк, в которых чёрт ногу сломит и потратит недели 2-3, чтобы разобраться в том, что там происходит.
>>411028 Сорян, писал с мобилки. abstract class InputContext { internal abstract void UpdateInput(); }
Это не воркач, но интересно - возьмут в геймдев чувака который может писать и отлаживать код на c# (и всяком прочем) но при этом не знает типовых алгоритмов, теорию графов, высшую математику, и плохо знает стандартные библиотеки C# за пределом часто используемых.
ПС. А большой размер класса это всегда плохо? Даже если он решает (как кажется) единую задачу? Скажем, 50-70 внятно названных методов в классе (на 1000 строк)- это плохо? С учетом что где надо проставлено private, static и пр?
>>411046 Ну, тут как повезёт. Если не топ контора, то вполне могут взять.
>>411049 Нет, это не всегда плохо. Например, открой исходники string или List, там что-то порядка 2,5к строк, но там полей не так уж и много, т.е. тебе не надо запоминать огромнейший контекст происходящего в этих классах. А я сталкиваюсь порой с тем, что люди пишут по 20-30 булевых флагов, каждый из которого либо используется в одном приватном методе, либо переключается где-то в других классах, не относящихся к этой логике (например, в рендере). Либо вместо того, чтобы завести структуру на 4 int, заводят массив из 4 int, а потом пишут километровый комментарий, что нулевой элемент массива -- это дилдо-пенисы, первый элемент -- турбо-мемесы и т.д. В результате, ты просто обязан знать каждый метод наизусть и должен знать flow происходящего.
>>411098 >Что сказать-то хотел, молодой? Что вместо запоминания кучи флагов надо запоминать кучу классов и помнить кто что в инпутхендлер пихает. Что то запихнт контекст для жопоебли и тут же вместо этого впихнётся контекст для сосания хуёв, поставив нас перед вопросом почему же жопоебля больше не работает? Можно конечно пихать контексты в стек, но куда проще в игре про поедание яблочка, если оно попало в коллайдер анимешного рта, сделать несколько флагов или фсм для камеры.
>>411101 Ты не понимаешь сути ООП. Анимешный рот есть не яблоки, а объекты типа Eatable, и ему совершенно похуй, яблоко это, груша или автомобильная покрышка (ну а вдруг). Соответственно, на разных уровнях абстракции тебе надо представить или нарисовать либо простое взаимодействие Eatable-рот, либо внутреннее устройство яблока. Это проще, чем держать в голове всю картину целиком. Естественно, речь о нормальных проектах хотя бы с несколькими тысячами строк кода, а не о визуальных новеллах уровня gd.
Вернулся к своей игрушке после сессии, и понял насколько через жопу у меня связаны скрипты. Переделывать всё с нуля сейчас, пока это возможно, или забить хуй и пойти набивать тумаки дальше? Вообще, расскажите пжалста, по каким скриптам вы разбиваете базовые возможности, типа переключения анимаций, атаки, движения.
Нид халп. Аноны, нужна ваша помощь. Есть камера, эта камера по колесику ездит ближе-дальше, меняя distance. Когда дистанция выходит за определенные рамки, камера дергает GameView.SizeMultiplier = newValue; GameView стреляет событие, по которому объекты на сцене масштабируют себя в соответствии с новым SizeMultiplier, и выставляет состояние IsReady = false, пока этот процесс не закончится.
Камера ждет пока GameView.IsReady, потом выставляет себя на новую позицию, чтобы все выглядело как было.
Проблема в том, что объекты успевают перерисоваться в кадре с номером N, а камера "дожидается" готовности GameView только в кадре N+1, и пользователь видит глитч.
Как это можно пофиксить, кроме ручного рендеринга на текстуру?
>>411363 Жду вот так: yield return new WaitUntil(() => GameView.instance.IsReady);
Если я правильно понимаю, оно сразу после вызова проверяет состояние IsReady, и в следующий раз вызывается только при обработке следующего кадра. При этом объекты меняют размер на том же кадре.
>>411190 С учетом того, что сейчас любая макака может на юнити ебнуть свою игру, написав два вагона говен, вместо кода, то, думаю, умение в нормальную архитектуру - единтсвенное, что тебя может отличать от нее, так что продумывай иерархию и пиши по уму.
А вообще удваиваю вопос и реквестирую чего почитать именно по архитектуре
Меню как отдельный уровеньАноним11/07/17 Втр 15:08:50#670№411624
Здравствуйте, нуб, все дела... Пилю симулятор города. Возник вопрос по созданию разных меню, между которыми можно было бы быстро переключаться. 2D, на пике что-то примерное
Суть: нужны отдельные меню для навыков, торговли, строительства и др., чтобы они вмещали в себя информацию и взаимодействовали между собой. Например, купил что-то в меню торговли, предметы сразу появились в меню инвентаря.
Что надумал: 1. Создавать новые сцены с погрузкой данных - медленно. 2. Реализовать новые камеры и меню-рисунки чуть в стороне и переключаться между камерами. 3. Сделать новые canvas'ы и переключаться между ними.
Вопрос: Как лучше это реализовать, чтобы меню открывались быстро. И как лучше спроэктировать взаимодействие между всеми ними(сейчас читаю про MVC паттерн).
>>411624 >Как лучше это реализовать, чтобы меню открывались быстро Очевидно, не создавать меню каждый раз а прятать\показывать. Вероятно, пул объектов для элементов списоков
подскажите пожалуйста как пользоваться тернарным оператором наоборот. можно писать int value = true ? a : b; а как написать true ? a : b = value;? или как емко и читабельно в зависимости от условий выбрать тот или иной value type для присвоения нужного значения?
Джентельмены, я нубец, пилю 2D рпг-ху с пошаговыми боями. Суть вопроса такова - вот собрал я из спрайтов модельку персонажа (ну там тело, голова, бедра, игры и т.д.). Даже запилил какую-никакую анимацию стояния на месте и удара. Но я хочу, чтобы на персонаже отображалась одежда, выбираемая в меню перед боем, как это лучше сделать? Допустим, заменить спрайт тела с сохранением анимаций? Может стоит сделать как-нибудь скелет из палок, а палкам цеплять спрайты и как-то менять их походу? Вообще, если кто поделится туториалом/примером как кастомизировать спрайтового персонажа без трогания анимаций - буду крайне признателен.
>>411653 Чего блядь? Ты хочешь создать переменную разного типа, но одного названия, в зависимости от условия? Скорее всего, твоя проблема не в том, как это сделать, а в том, что такое вообще не должно быть нужно.
>>411657 нет, мне нужно ссылаться на ту или иную переменную в зависимости от условий, которая принадлежит одному типу и ссылаясь на неё передать туда значение.
а то приходится писать что-то вроде MyClass reference; int? value = null; int result;
if(Function(a, out result)) value = result; else if(Function(b, out result)) value = result; else if(Function(c, out result)) value = result;
но если бы можно было ссылатся на нужную переменную то я бы на неё ссылался ещё там где Function и делал бы там себе return или ещё чего. все это выглядит нечитабельным говном. мне интересно как сделать это более читабельным говном.
>>411598 Game Engine Architecture Game Code Complete Книжки по софтодизайну вообще. Много блогов которые ты найдёшь по запросам. Это настоящее программирование, к нему нет туториала на ютубе.
Когда они уже наконец наймут UI дизайнера в команду. Татьяныч плачет от этой ебанутой сетки, от самого уродливого шрифта в истории шрифтов, он еще и не сглажен, эти иконки из Visual Basic 2000, скругления, тени, куча мусора. Унити смогли сделать софт с еще более уродливым интерфейсом чем чуваки из автодеска. Мои апладесменты.
У меня игра где пули спаунятся как самостоятельные объекты из ствола. Правда ли что постоянно создавать и уничтожать через пару десятков секунд это очень затратно по ресурсам? И как этого избежать?
>>412274 Сейчас бы потратить месяцок-другой на оптимизацию того, что можно не оптимизировать, да, анончик? Для выявления проблемных мест есть профайлер.
>>413381 Ни в коем случае не пользуйся гитом, я 2 месяца ебался с ним, чтобы он нормально мерджил, в итоге все равно через раз все разъебывает нахуй, что аж сцен не открыть, так заебались руками в текстовом виде сцену править, что вообще отказались от СКВ. Юнити в этом плане - ущерб.
Анон, меня тралят ебаные спрайты. На первом пике, как должно быть. На втором, как есть. И это происходит совершенно случайно. На 10 запусков, 5 работает как надо. Что делать? Тут два спрайта, земля и игрок. Они оба потомки проекта. Переопределить землю к игроку я не могу. Как мне сделать так, чтобы земля показывалась сзади? Я уже ахуел, а еще даже фон не придумал
Что там полегче вместо VS можно для кода использовать? Заебал этот комбайн, тормозит как сука, а надо просто редактор с автодополнением. VS Code? MonoDevelop?
Аноны, помогите с выбором. Нужно анимировать всякое движение, решил выбрать ассет для этого, благо бесплатных много. Выбор между LeanTween, DOTween и iTween. Не знаю чем из них пользоваться. У кого-нибудь из них есть возможность анимировать движение "скачками"? в моем случае - нужно симулировать движение по пикселям
>>416852 Я что-то так подзадумался и осознал, что у нас никто одновременно над одной сценой/префабом не работает. Соответственно, мы просто не мёрджимся.
>>417148 я встретил довольно много когда включил версию шарпа повыше. особенно юнити любит крашится к хуям при сериализации скриптабл обжектов. а так нормально если старой версией шарпа пользоваться, стало лучше.
>>417148 Дохуя. Она не закрывается если выставить .net 4.6 и в конце стала падать буквально на ровном месте, когда я жал Play, даже без своего баг-репортера. Надо ждать хотя бы 2-3 патчей, не раньше осени будет пригодна к использованию.
>>416960 Ну ахуеть теперь, советы уровня /gd/, ты ведь понимаешь, что если в команде 2+ человека, то кому-то придется по ночам работать, а это кромешный пиздец.
Screen.currentResolution дает разрешение монитора вне зависимости от размера окна в котором играет контент юнити. Как мне получить реальный размер окна в котором играет контент юнити? (Например, в редакторе или веб GL? Там размер окна нифига не равен 1920х1080 например)
Точнее говоря, мне это нужно что бы в ручную устанавливать положение окон - без учета реального разрешения получается ерунда..
>>417377 Screen.width попробуй, или где-то там в Application. Иди нахуй короче, когда вы уже блядь в документацию научитесь? 5 лет прошло, а дебилы все те же вопросы задают.
>>417386 >Screen.width попробуй, или где-то там в Application. Иди нахуй короче, когда вы уже блядь в документацию научитесь? 5 лет прошло, а дебилы все те же вопросы задают. Ну не злись, няша. Я же нагуглил Screen.currentResolution а мог бы прийти с "зделойте мне заябись". Screen.height помогло, спасибо.
Лучше расскажи зачем ты вообще нубам помогаешь? Свой проект скучный?
>>417480 Лучше поясни - когда я добавляю объекту компонент-скрипт с классом-наследником MonoBehaviour это разве не означает создание нового экземпляра этого класса-наследника? А то у меня скрипт добавлен к разным объектам и он каким то образом берет инфу не из своего экземпляра.
>>417566 Спасибо. А то уж я думал.. Но нет, это у меня в коду ошибки. У меня есть 1 объект в сцене - реализует всплывающую подсказку. И есть компонент который добавляется к элементам интерфейса и передает инфу в тот объект в сцене. Ну и я обосрался с обновлением инфы в этом объекте сразу из нескольких мест.. Разберусь как-нибудь.
>>417362 >Господа, "новый" .net помечен как preview же, поэтому ничего удивительного тут нет. >>417624 >Падучей страдал даже когда я откатился на .net 3.5. А 5.6 будет падать если я его заставлю работать с более новой .net? 4.0 или хз какую там можно натянуть
Он у меня и на 2.0 правда порою падает при отладке..
У меня очень много зависит от ориентации игрока смотрит вверх, вниз, влево, вправо и т.д.. Что лучше, задать ему компонент который будет обновлять и хранить эту информацию в себе, и создавать ссылку на него в других скриптах, используя его переменные, или создать ScriptableObject, в который буду писать информацию об ориентации, и использовать потом как глобальную переменную? Просто не совсем понятно для чего ScriptableObject'ы нужны, кроме как хранить совсем глобальные переменные.
>>417697 ScriptableObject нужен для того, чтобы хранить повторяющиеся статичные данные, чтобы сериализатор "вхолостую" не гонять.
Например, у тебя есть у тебя есть NPC, который должен говорить определённый текст. Текст весит 10Мб. Если ты будешь текст хранить в MonoBehaviour, то когда ты на сцене будешь держать 10 NPC, ты потеряешь 100Мб памяти, т.к. когда ты делаешь Instantiate, ты вызываешь процесс создания полной копии объекта. Если же ты сделаешь отдельный ScriptableObject с этим текстом, и дашь ССЫЛКУ своему NPC, то при вызове Instantiate у тебя все копии объектов NPC, будут ссылаться только на этот ScriptableObject. Сумбурно как-то объяснил засыпаю хуле, но надеюсь, что поймёшь.
Господа, подскажите пожалуйста, а нахуя вам самый последний .net? Я, откровенно говоря, не сталкивался с какими-то лютыми проблемами, что мне пиздец как нужен был последний .net
>>418095 Вскукареки кирюх, которые ищут оправдание лишь бы игры не делать. Вообще в роадмапе юнити есть намерение запилить последний net, нужно только потерпеть.
>>418095 >Господа, подскажите пожалуйста, а нахуя вам самый последний .net? >Я, откровенно говоря, не сталкивался с какими-то лютыми проблемами, что мне пиздец как нужен был последний .net Часть сахарку недоступна в 2.0. Автоматические properties например. Linq говорят память дико жрет в этой версии. Не, жить можно конечно, но хотелось бы лучшего.
Аноны, а есть какая нить документация под андроид? конкретно хотелось бы узнать про ограничения и вообще возможности дроида, чтоб примерно представлять масштабы разработки
Сап, двач, я тут туториалы спидраню и не могу понять какую-то мелочь в работе интерфейса https://youtu.be/HlDGSStxuHI?t=6m18s Вот в этом моменте господин ведущий меняет с Local на Global и объект больше не проваливается, то есть перемещается лишь в горизонтальной плоскости (если я правильно понял), но у меня ничего не меняется, летает по всем трем осям при попытке перемещения что так что так. В чем дело?
Привет, друзья. Решил вкатиться в Юнити, дабы делать 2D игоры под телефон и рубить далары. В целом, есть уже годная идея, не очень сложная для реализации.
Ну а пока мой друк-художник пинает хуи, я принялся копаться во всём этом, собственно вот продукт моего копания, друзья:
Значица, что есть? Спрайт машины из гугла. Море крови, море зомби. Пулемёт (или че это, я сам хз, че сделал) и нож. Зомби. Зомби-плевки (они плюют). Невозможность пройти игру. Невозможность выйти из игры. Возможность убивать врагов. Возможность почувствовать себя чмом. https://yadi.sk/d/4U1nnyPw3LDSmX
>>419536 Забыл добавить, что нож находится чуть выше входа в здание. Ну и само здание лучше не обходить, а то такое себе выйдет. Я завтра, наверное, буду пытаться сделать так, чтобы зомби сквозь стены не агрились.
>>419234 Не просто замена синглетонам. Синглетон - это Stuff.Instance, привязка к конкретной реализации. Ты же можешь привязываться к интерфейсу, не зная ни реализации, ни кто и где создаёт эту реализацию. Бонус-трек: я использую StrangeIoC ещё и для биндинга экранов GUI. У меня нет некого GUIManager'а с кучей экранов в полях, как нет и полей в экранах для перетаскивания ссылок на иные экраны. У меня есть [Inject("Имя экрана")], ноль обезьяньей работы как результат.
>>419644 Мелочь эту не пойму. Если дергать за (анус) сам объект, то он летает хуй пойми как, а если за кубик, грани которого совпадают с осями координат, то все норм и он перемещается как надо, чисто по горизонтали, почему так?
Котаны, что за дела? Сбилдил 2D-залупу, где кода кот наплакал и полтора спрайта, и получил на выходе 36 метров, 23 из которых занимает сам экзешник. В логе вот что написано. Хуй процентов плюс хуй процентов плюс 11% библиотек равно сто процентов. Заебись. Чего делать?
Аноны, а как в юнити сделать, чтобы сиськи подпрыгивали при ходьбе? В makehuman для них есть кости, но юнити их убирает при выборе пресета humanoid в ригах. generic что-то путает, моя няша становитя похожей на чужого. Гугол выдает скрипт 2013 года, что-то я стремаюсь его использовать
>>419863 У тебя или мейкхьюман больной или юнити. Потому что я сиськи импортирую из 3д макса и у меня все норм. Еще есть такие варианты: 1) В настройках импорта fbx ставишь optimize bones галку. Так нельзя. 2) Неправильно экспортируется из мейкхьюмана, и в fbx по факту нет таких костей.
Ну ладно, а теперь мой вопрос. Делаю персонажа с функцией динамического раздевания. То есть по событию одежда сползает с тела и падает на пол. Реализую это через всего один убогий blend shape (или morpher в 3д максе), в которой зашита модель скомканной на полу одежды. Все вроде норм, но одежка заскиненна на тело и в процессе раздевания она деформируется от движения костей, так как идет анимация. Можно как-нибудь так сделать, чтобы Skinned Mesh Renderer компонент перестал работать с костями? Я читал доки, вроде метод запекания в Mesh есть, но это как-то слишком сложно, как проще сделать?
>>419898 Под персонажем может и женский пол иметься ввиду. Нет, у меня игра не про еблю и тем более не про пидоров. Для геймплея фича сползания одежды особого значения не имеет, однако чтобы у игрока крепче шишка стояла хочется сделать по уму.
>>419890 Не совсем понял что тебе нужно, но на ум приходит что-то такое SkinnedMeshRenderer[] renderers = this.GetComponentInChildren<SkinnedMeshRenderer> (); if (renderers.Length > 0) { for (int i = 0; i < renderers.Length; i++) { renderers .bones = null; renderers .rootBone = null; } }
Гугл ничего не дал, ты моя последняя надежда. Пытаюсь применить к rigidbody (3d) постоянное ускорение при включённой гравитации. Проблема в том, что движение модели происходит всё-равно рывками как бы я не дрочил. Решения из гугла желаемого эффекта не дали.Уже и через выставление velocity в update делал, и через moveposition. Один хер движение на высокой скорости происходит рывками.(камера через линейную интерполяцию фолловит цель, рывки видно и на пека, и на телефоне) ЧЯДНТ? Не могу понять, неужели в единстве физон настолько тяжёлый для телефонов?
>>419992 И в FixedUpdate, и в LateUpdate, и в Update. Уже тупо перебираю, один хер какие-то непонятные рывки.
>>419997 Пробовал с дельтой при MovePosition, толку нет. В Velocity тоже. Предлагаешь двигать через MovePosition через интерполяцию между current - end позициями? Тогда же смысла от rigidbody нет. Свой велосипед будет же.
Я пытаюсь добиться плавного движение персонажа по направлению одной оси с притяжением и угловым ускорением Эндлес раннер на 2д плоскости в 3д пространстве Я зафризил у rigidbody rotation по всем осям и положение по Z оси.
Псаны, пытаюсь курить андроидокодинг, возник такой вопрос. Как, мать его, обработать событие по простому тапу на спрайт/UI-Button? Вот есть у меня в коде
if (Input.GetKeyDown (KeyCode.LeftArrow)) { //йоба-код }
Как мне заменить условие, чтобы этот код сработал при тапе? Гугл какие-то слишком мудрёные варианты выдаёт с кучей лишних условий.
>>419913 Не не получилось. При .bones = null у меня модельку одежды выварачивает на 90 градусов по оси х. Хз, почему так, возможно проблемы с моделлингом. Ну ладно, хуи с ним, эффект все равно меньше секунды проигрывается.
Аноны, а у кого есть опыт работы с кастомными костями в Mecanim? Вот, к примеру, дополнительная кость для плеча для более качественной анимации. Однако если модель импортировать в меканим, то кость там эта будет, а вот ее анимации - нема. То же самое могу сказать и про анимацию морфов. Сами морфы в меканим поступают, но не их анимации. fbx сохраняю в Motion Builder.
>>420142 Ну, ты попробовал хотя бы, а потом уже просил что-то человеческим языком. Для тупых лентяев, поясню. Берешь сцену, ебашишь Button в Canvas, ебашишь на сцену EventSystem. Пишешь свой сраный скрипт, в котором реализуешь интерфейс. Вешаешь скрипт на кнопку. Запускаешь плеер и жмёшь сука на кнопку.
>>420184 Ананас, я это всё понимаю. Я тебе даже больше скажу — при создании кнопки и Canvas и EventSystem создаются автоматически. И они у меня уже даже есть. И даже "сраный скрипт" написан. Я же не об этом спрашивал. Я спрашивал какой void вешать на обработку тапа, только и всего. Чего ты злюка такой?
>>420192 Нет, это нормальное сексуальное желание. Ну вот как сделать упругую задницу без пары дополнительных костей, а как огромный мамон жирдяю? Эх, печально. Походу, придется экономить на качестве анимации, если хочу попасть в TWG.
Если я закинул себе в проект пак с УИ на полтора гигабайта, эти полтора гигабайта будут и в самой игре, увеличивая её размер? Или он сам как-то вырежет их и возьмет только те что я ипользую?
>>420386 Ну а если у меня в сцене например несколько раз используется только одна кнопка из этого пака? Он скопирует её себе, или он и так использует копию для каждой отдельной кнопки?
Переделываю симуляцию орбитальной механики в третий раз, чувствую себя ебланом. Первый раз у симуляции и отображения была большая связанность. Ок, похуй, отвязал, приделал ивенты. Получилось немного сложна нипанятна, класс-контейнер векторов состояния (position, velocity) содержит ссылку на объект, представляющий данные по орбите о всяких аномалиях, наклонениях и прочем, и еще одну ссылку на объект, который обеспечивает гравитационное взаимодействие. Сейчас сижу упрощаю, выпиливая вычисления параметров орбиты в статический класс и объединяя гравитацию и вектора состояния в одном классе, хорошо хоть что заодно добавил поддержку сейв-лоада через json.
Взываю к демиургам ЕДИНСТВА. Поясните, как работает рендер пайплайн в этом движке. Я правильно понимаю что fixedUpdate выстреливает каждый квант времени и отрабатывает даже в ущерб фпс? Т.е. если он не успевает отработать достаточно быстро то рендер кадра будет пропущен и таким образом будет падение фпс?
>>420452 > Я правильно понимаю что fixedUpdate выстреливает каждый квант времени и отрабатывает даже в ущерб фпс? фиксед может сработать хуилиард раз за кадр, но его последствия будут рулить апдейт или лэйтапдейт
>>420412 Анончик, всегда было интересно как в подобных симуляторах просчитывается длинная незамкнутая орбита? имею в виду траекторию, выходящую за пределы гравитационной ямы земли, там ведь блядские планетки движутся, направление векторов меняется. Просто берешь какие-то временные точки и последовательно моделируешь, а потом по ним интерполируешь траекторию или что-то прям хитровыебаное?
>>420655 Строишь гиперболу, которая упирается в границы SOI. В точке выхода из SOI берешь значения векторов скорости и положения относительно нового родительского тела (Земля, при выходе из SOI Луны), по ним считаешь кеплеровы элементы орбиты вокруг нового родительского тела, по этим элементам рисуешь новую траекторию. В общем прост немного векторной алгебры.
Посоны, насколько стабильно отключение компонентов? У меня есть выбор, при диалоге отключать компонент с передвижением и атакой, или каждый кадр проверять bool который указывает на то, в диалоге игрок или нет. У меня подкожное чувство, что при отключении будет куча багов вылезать.
>>420807 > Посоны, насколько стабильно отключение компонентов? Ну если компонент уже не нужен, то его отключение стабильно на 100%. Телепатов нет, никто не знает чего там у тебя в скриптах творится.
Где в этом Юнити находится main()? Как мне тут инициализацию контроллеров и менеджеров запилить, которые будут доступны во всех сценах и т.п. На ОГРЕ каком я могу из мейна это все вызвать. А тут что? Статик классами чтоли делать? Так они не создадутся пока к ним не обратиться.
Аноны, скажите, а я один такой даунич, который заново собирает префаб macanim персонажа, как только сделал существенные изменения в 3д-модели? Кто знает как делать правильно, чтобы просто подцепить новую модельку с костями на старый префаб и все?
>>421143 Если собрался вызывать с апдейта, то while не подходит, так как вайл пробежит за один кадр - это раз. Во-вторых, целесообразнее для "временных" задач юзать карутины, либо Инвоки
Сап, Гдэч. Есть один собственный тип данных (List<> состоит из всяких там float, bool и т.д.), который я сериализую, отправляю по сети, а потом десериализую. Все бы ничего, но после сериализации там 2к байт. Это чото дикое дохрена. Как уменьшить?
>>401747 (OP) Ньюфаг итт. Хочу написать простой скрипт, который будет толкать объект сразу после его создания по нажатию лкм. У меня он только создается, а толчка не происходит. Что не так делаю?
>>422147 Скрипт на чём висит? > rb = GetComponent<Rigidbody>(); Ты тут получаешь компонент не пули, а объекта, на котором висит скрипт. Тебе надо писать rb = bullet.GetComponent<Rigidbody>();
>>422111>>422169 Никогда не сериализуй generic коллекции, блэт. Ты пакуешь не только данные, находящиеся в ней, но и саму реализацию коллекции. Во первых, ты определённо делаешь что-то не так. В идеале, модель, состоящая из типов значений (int,long,float) сериализируется идентично маршалингу в памяти. Создай структуру/класс, назови её FuckingPackage, сериализуй её (нахуй тебе ss?). Explicit и Implicit преобразования допишишь по ходу дела. Во вторых, ты можешь преобразовать в массив свой список, а затем его сериализовать. Хотя если, понапихал не элементарные типы в List<Object>, то это тебя не спасёт. В третьих, кидай пример того, что ты пытаешься сериализовать. Не данные, а типы данных. Мы тут не экстрасексы, чтобы по твоему жиру определять размеры типов данных.
А я пока задам свой вопрос. Кто-нибудь знает пример реализации 2D-изометрии в Unity? В частности интересуют коллизии и рейкастинг.
Спасибо тебе, добрый человек. Попробоваю! Суррогат нужон потому, что *ятский Vector3 почему-то не сериализуется нифига, а он у меня в классе присутствует.
как-же заебали в этом юнити. с каждым новым релизом фпсы стабильно падают. вместо того, чтобы чинить всякое говно вроде убогого InputManager'а или конечного менджмента сцен, они делают то, что проще всего сделать: в очередной раз переписывают пяток пост-эффектов, зато добавив к ним никому не нужный йоба-редактор. По сути оверхайпнутый таймлайн ( который уже давно кор фича во всех остальных движках, который в юнити наконец-то к концу 2017 года запили, браво!) единственная новая фича в юнити за последние - сколько уже с момента выхода 5-ой версии - 3 года?
>>422526 >Ты пакуешь не только данные, находящиеся в ней, но и саму реализацию коллекции. какую еще реализацию. данные записываются так, как их записывает форматтер. В частности бинари форматтер.
>>422566 Форматтер проходится по мете класса и сериализирует всё, что необходимо для восстановления объекта. Проблема в том, что он сериализует помимо данных List<T> ещё и внутренние переменные класса, помеченные на сериализацию. Вот тебе пример на три элемента и один Int64. https://gist.github.com/anonymous/cef8b4d9268a5e309825e0a8416de7f8
Сейчас, смотря на реализацию List<T> и его сериализацию, я больше задаюсь вопросом каких хуев непомеченных он напихал в List<T>, что у него ебанутые размеры выходили.
Аноны, подскажите пожалуйста, есть ли в юнити функция, вызывающаяся при старте процесса/появлении сплешскрина/начале загрузки первой сцены, то есть максимально близкая к старту приложения?
>>422608 >и сериализирует всё, что необходимо для восстановления объекта Ух ты ж блять, он записывает типы перменных и их именя, а еще 4 байта как число элементов в списке. Вот сука прожорливая! Ну нахуй, лучше свой велосипед напишу.
>>422617 https://gist.github.com/anonymous/3622850b22182f6053b343fb2170f9f4 Vector3 нельзя сериализовать. Ты можешь его преобразовать в свой вектор, а затем его записать. И да, второй вариант сработал, но тебе придется знать структуру элементов массива и ты можешь запросто её проебать. Добро пожаловать в протоколы
>>422648 А, если у тебя для сети, то очевидно нужно использовать другую сериализацию. В контексте юнити и высокой производительности, тебе нужно использовать строго BinaryReader/Writer.
Если любишь пердолится с библиотеками, то можешь посмотреть, например, flat buffers. Это просто сгенерирует для тебя классы, в которых внутри используются опять-же BinaryReader/Writer Но я не вижу смысла, проще самому
>>422652 Хороший мой, для этого и нужен SurrogateSelector ты просто описываешь отдельно Суррогат для Vector3, а потом нашему BinaryFormatter его скармливаешь.
SurrogateSelector ss = new SurrogateSelector(); AddSurrogates(ref ss); formatter.SurrogateSelector = ss;
И сериализатор и десериализатор мгновенно понимает все что тебе хочется.
>>422654 Для сети. Пердолится с внешкой нелюбит, буду пердолится с тем что ты сказал. Спасибо тебе, няша, твоя мать - уважаемая женщина, а отец - настоящий мужчина.
>>422670 Я до них не дошёл ещё. Челик спрашивал про сериализацию, я пояснил. Хотя челик языка толком не знает. А ещё можно въебать System.Net; и сделать минет по UDP
>>422526 >А я пока задам свой вопрос. Кто-нибудь знает пример реализации 2D-изометрии в Unity? В частности интересуют коллизии и рейкастинг. На гитхабе всякие рпг-движки были
https://docs.unity3d.com/2017.1/Documentation/Manual/class-WheelCollider.html >The Wheel Collider computes friction separately from the rest of physics engine, using a slip-based friction model. This allows for more realistic behaviour but also causes Wheel Colliders to ignore standard Physic Material settings. Я правильно понял, что на колеса не влияет материал того, по чему они едут, и мне придется в скрипте колеса модифицировать?
Нужно сделать пульки, я как нуб вижу два варианта - кинематическое Rigidbody двигать через transform в Update, либо обычное через AddForse(Impulse) запускать с отключенным трением и гравитацией. Какой вариант правомочнее для сетевой игры(меньше сожрет ресурсов, плавнее, интерполяция там)? Либо что-то третье а я олень?
Рейкаст не годится.
И побочный вопрос, как лучше настроить сетевые приблуды - Network transform и прочее, чтобы не было скачков при полах тел, движениях и прочем? Я так понял, что чем больше Snap Treshhold и чем больше Send Rate, тем плавнее.
>>422941 Отвечаю(сам себе), кинематику плавно двигать гораздо легче, если с твердотельной физикой приходится колдовать, кинематика плавно движется на нормальных настройках нетворк трансформа(простым транслейтом). Подозреваю, что и нагрузка без просчета физики гораздо скромнее.
Вопрос про твердые тела остается в силе( в смысле, как сделать, чтобы они плавнее летали, кроме snap treshhold++ и send rate++).
И еще вопрос про реализацию хелсбаров - как правильнее, вынести их на Screen Space Canvas, или крутить-вертеть в World-Space, обращая к камере? Сколько ни смотрел туториалов, все далают прямоугольник в ворлд спейсе и крутят его каждый фрейм. Это правильно?
Сап ГД. Расскажи мне сказку. Как дед насрал в коляску. Запилил сравнительно рабочий LLAPI сетевой код. Раз в 0.05 секунд я формирую пачку пакетов в Queue, и исполняю SendQueuedMessages, в итоге каждому клиенту отсылаю пакеты с действиями других клиентов: 10 клиентам я отсылаю по 10 (с данными каждого клиента) пакетов. Итого, 100 пакетов. И тут начинается говно, являющееся следствием моей говнорукости: если канал Unreliable\Relible и т.д. тогда все это при клиентах больше 1, просто пиздейки тормозит. Если я посылаю через StateUpdate канал, то "кто первый тот и папа", и у первого клиента ни 1 лага, зато остальные клиенты просто не получают ни пакета. Расскажи мне, ГД, как реализовать отсылку сервером постоянно обновляющихся данных клиентам? Как делают большие мальчики?
>>423328 А клиенты кто? Веб-браузеры что ли? Если я правильно понимаю, LLAPI в Юнити предназначен для общения по HTTP. С твоей частотой пакетов надо забивать хуй на HTTP и ебашить двоичный потоковый протокол обмена данными через UDP.
>>423301 1) Тем что Playmaker для совсем маленьких сделан и не нужен для тех кто готов кодить 2) Тем что NodeCanvas официально поддерживает больше других полезных ассетов которые лично мне интересны 3) Тем что NodeCanvas может использоваться как альтернатива и Behaviour Designer и Dialoge System for Unity, последний я попробовал скачал на торрентах, канваса там нет к сожалению и мне он не понравился как раз тем что он пытается за тебя сделать слишком много. Нод же выглядит не как инструмент "для чайников" который обещает золотые горы и готовые решения, а просто как полезный инструмент для визуализации и систематизации.
>>423343 Загуглил, читаю, но интересует мнение сообщества, как впринципе реализуется подобное. Я думал о 2х путях: 1. Держим параметры всех заинтересованных персонажей в одном массиве, отсылаем его. Но в таком случае в один пакет все не влезет, т.к. переменная выйдет довольно большая по размеру, будет фрагментироваться, а на клиенте пересобираться, что неоч для частой пересылки данных. 2. Бомбардировать мелкими пакетами, что вызвало у меня описанную выше реакцию.
Вот я в тупик в встал, как ленивое хуйло и изобретаю интернет тут с вами.
>>423348 У тебя архитектура какая, с этого начни? Клиент-сервер или птп? Чем тебя стандартный подход не устраивает, который все поголовно используют? Или надеешься придумать что-то лучше, чем придумали профессионалы, много лет решавшие эти вопросы в боевых условиях высоконагруженных серверов?
>>423368 Я тебе названия статей дал, прочитай их, блеать. Там все твои проблемы описаны и описаны стандартные и проверенные пути их решения. Что тебе ещё надо?
>>423461 Можешь ткнуть меня носом? В каком-то 2д туториале они рекомендовали делать коллайдеры на ноги и голову, но это была старая версия, ресурсы уже недоступны.
Парни, какие вприанты решений есть для юнити мультиплеера, требуется большое количество игроков - синхронизация редко и малый объем обсчета сервера, и защита трафика. С меня нефть и ассеты
>>423448 > как уменьшить высоту коллайдера до высоты персонажа в приседе, чтобы он мог прятаться под столом? Ёпту, просто в момент приседания уменьшай размер коллайдера по Y.
>>423609 Притом. Это тупо юнитевская залупа, работает также, как если бы ты скриншот увеличил. Короче хуй знает для чего она нужно, программисты тупо бабки отрабатывали видимо.
Необходимо реализовать получение урона в определенной области (2д). При нахождении объекта в определенном слое вызывается метод ResiveDamage(). Всё работает как надо, только метод вызывается очень быстро (снимает всё хп за секунду). Нужно реализовать задержку перед вызовом метода?
>>423764 Оно в фиксед апдейте вызывается? Тогда просто выставь соответствующий множитель, чтоб вычиталось сколько надо. Либо заведи переменную-таймер, если хочешь, чтоб здоровье уменьшалось не плавно, а раз в секунду или типа того. И каждый раз к ней прибавляй соответствуюзий дельтатайм.
>>423808 Используй лучше корутин. Я когда начинал боялся его как что-то сложное, оказалось это очень крутая штука с интересной механикой работы. Мне корутины прямо моральное удовлетворение доставляют.
>>423813 Я с этим ебался 3 часа. Гуглил, читал, пробовал корутин, выходило не так как нужно (метод продолжал вызываться работать даже после того как объект покидал область). Пробовал waitforseconds. Читал документацию по time и нихуя не понимал.
В итоге >>423774 подтолкнул на верное решение: две переменные, одно выражение, одно условие и инкремент. Охуенное тебе спасибо, добрый человек.
>>423376 >облемы описаны и описаны стандартные и проверенные пути их решения NIET это не так. >>423369 Лаг в том, что пакеты просто не доходят до клиентов. За минуту умудряются долететь 1-2 пакета. В то время как первый клиент получает все. Предполагаю, что это из-за типа канала (StateUpdate), но при обычных Reliable "отклик" очень долгий. >>423378 Блин, ну конечно наговнокодил, это же очевидно. Но вот где и в чем - пытаюсь понять. Учитываю, но судя по симптомам, это не важно.
>>423948 >Блин, ну конечно наговнокодил, это же очевидно. Но вот где и в чем - пытаюсь понять. Ты используешь зачем-то SendQueuedMessages(). Используй NetworkTransport.Send()/SendMulticast(). Юнити все сообщения и так буферизует какое-то время, а потом отправляет пачкой.
>>423950 >Ты используешь зачем-то SendQueuedMessages(). >Используй NetworkTransport.Send()/SendMulticast(). Фактически это одно и то же, если не ошибаюсь, просто при выставленном SendDelay=0, я могу контролить когда именно я отправляю пачку пакетов. Так даже в доках сказанно. Тем не менее, пробовал и обычный Send() - те же яйцы. Любопытный факт, на клиенте проверяю MessageQueueSize (NetworkTransport.GetIncomingMessageQueueSize) и с удивлением узнаю, что с какого то перепугу, очередь растет, несмотря на то, что я делаю Recieve().
>>423951 это не одно и то же. SendQueuedMessages работает просто как flush. Смысла кириллу контроллировать когда точно отправлять данные я не вижу. Ты только все усложняешь.
>>423951 >Тем не менее, пробовал и обычный Send() - те же яйцы. Ну тут нет экстрасенсов, чтобы определить что ты там наговнокодил. Может ты на самом деле только думаешь, что делаешь receive()
>>423952 >это не одно и то же. SendQueuedMessages работает просто как flush. Смысла кириллу контроллировать когда точно отправлять данные я не вижу
Я скорее всего ошибаюсь, но это вроде бы не так. Ты набираешь очередь сообщений (иногда это нужно, например отдельное сообщение по действиям каждого клиента), а потом ее пулишь. Когда происходит batchSend оно кидается в лицо клиенту. Но, возможно у меня мозг сгнил, не исключаю.
>Ну тут нет экстрасенсов, чтобы определить что ты там наговнокодил Все норм, просто когда считывание происходит с такой же частотой что отсылка, оно может не успевать. Просто чаще стал читать.
>>423954 >>423952 Магия оказалась вот в чем: раз руками отсылаем пакеты, нужно руками же их и получать. Recieve() срабатывает на 1 пакет, как оказалось, а не на всю очередь. Поэтому просто нужно проверять очередь пакетов, и пока там еще есть что-то, нужно их шабить Recieve() себе в рот до тех пор, пока там не будет пусто. Спасибо всем, я рад что тут проявилась полтора адекватных анона.
Посмотрел вот видео по LLAPI, вроде хорошее :https://youtu.be/qGkkaNkq8co Что, HLAPI вроде как безнадежен, или как(я нуб, для меня многие очевидные для вас истины в диковинку)? Если безнадежен, то подскажите хороших материалов, как самому все с нуля строить, видео хороших. Выше guffer on games и source multiplayer networking уже взял на заметку.
Ананас, выручай, когда-то покопался в якорях и более-менее смог сделать че надо, но сейчас снова не могу совладать с ними. 1) Какие якоря я должен задать верхней и нижней картинке чтобы они на всех разрешениях занимали всю ширину, а верхняя - примерно 3/4 высоты. 2) Потестил на "растягиваться и по ширине и по высоте", не помогает, но вопрос такой - какого хуя ресайз вообще происходит на этом якоре когда разрешение переходит из 16:9 в 1600х900, ведь 1600х900 это тоже 16:9 ?
>>424889 >1) Какие якоря я должен задать верхней и нижней картинке чтобы они на всех разрешениях занимали всю ширину, а верхняя - примерно 3/4 высоты. Если не хочешь вручную подгонять то тебе layout нужен, КМК
Добавь фиктивную панель снизу Задай preffered_хуйня пропорционально 300 и 400 (или 3000 и 4000) min_хуйня добавь при необходимости
>>424889 >не помогает, но вопрос такой - какого хуя ресайз вообще происходит на этом якоре когда разрешение переходит из 16:9 в 1600х900, ведь 1600х900 это тоже 16:9 ? Там пересчет идет при изменения разрешения, КМК. В том числе с 160х90 на 1600х900
Работать будет так - сначала все элементы получат min height, потом, если осталось свободное место на панели то это место будет делится между элементами пропорционально preffered_height. В вертикал лайаутвсе 4 галки поставь. На старахых версиях юнити этот механиз м не работает
Изучаю, как пишутся шейдеры, и никак не пойму применение inline-функций. Пример из оф.документации: https://docs.unity3d.com/ru/530/Manual/SL-SurfaceShaderLightingExamples.html Описывается функция: inline fixed4 LightingStandard_SingleLightmap И потом - хоп - и она нигде не вызывается. И так со всеми inline-функциями. Как они работают? Кому они возвращают значение? Помогите!
Например, есть скрипт , в результате действия которого происходит спавн objecta после клика мыши (object спавнится на месте клика). Что стоит добавить в код, чтобы object спавнился не сразу ( в момент клика ) , а после 2 секунд с этого момента, при условии , что нажатие кнопки (Touch) продолжается в течении этих же секунд? Спасибо за возможные ответы.
Хочу сделать визуальную новеллу на юнити (перемещения по локам, анимации спрайтов персонажей, интерфейсы магазина, инвентаря и пара других). Сам движок вижу в первый раз (до этого в рпг мейкере ковырялся). Сколько времени у меня займёт изучение юнити для моей внки, если уделять движку по 8ч в день? Никакими навыками программирования не обладаю.
PS: Почти весь графен уже нарисовал. Ренпай брать не хочу.
>>426773 > Сколько времени у меня займёт изучение юнити для моей внки, если уделять движку по 8ч в день? А сколько времени уйдёт у моей бабули для изучения комплюхтерна? Даю подсказку: бабули бывают разные и способности к обучению у них тоже разные. Начни изучать движок и сам поймёшь насколько хорошо оно у тебя идёт.
Пишу вот такое, запускаю на единственной машине как хост, вылетает фатальный енот "Command function called on a server". То есть, мне нужно иметь отдельный анрегистер для хоста, который и isLocalplayer, и isServer одновременно? Почему-то другая команда, вызываемая из своего класса, а не из чужого, работает без ошибок. Где я туплю?
if (isLocalPlayer) { gameManager.CmdUnregisterPlayer(networkId); }
... [Command] public void CmdUnregisterPlayer(string playerId) { ... }
Псоны, а если мы с друзяшками скинемся на ассет, кто-то один купит и другим просто архивом скинет — юнька это как-то отследить может? Не хотет каких-то проблем.
Антуаны, подскажите, что делать с таким багом. В редакторе при анимации меш работает нормально, а в билде коряво, будто ему веса переставили. Причем такой баг только на двух мешах был. На одном удалось вылечить выставлением 4 костей вместо авто.
>>426862 Зависит от настройки качества, то есть когда выбираешь в лаунчере good/beautiful и т.д. Edit -> Project Settings -> Quality, создаешь свой пресет качества с 4 костями.
Мудрый анон, подскажи, что делать с поиском пути. A* для 2d написать можно, но мне нужно для 3d, и заморачиваться лень. Что взять готовое? Есть RAINAI, но он толстоват, хотелось бы просто поиск пути, идеально один скрипт.
>>427094 у юнити есть свой хороший навмеш который теперь заебись и навигацию он делает очень хорошо. RAIN так себе. ещё aStar есть, он хорош, если дашь им денег. ещё есть https://www.assetstore.unity3d.com/en/#!/content/85181 я написал, но он сыроват. А вообще навигацию в 3д одним скриптом пожалуй не сделать.
Всем здравия, друзья. Есть три объекта. Первый объект стоит себе, выполняет выкрик "ХУИТА" и кидает говном в сторону _объект, сам объект он определяет по тегу "Хуита". Два других объектов имеют этот самый тег, по которому первый их и находит. Вопрос: Как сделать так, чтобы _объект становился ближайшим объектом с тегом "Хуита"?
С двумя объектами то не проблема определять, какой из них ближе, но что делать, если их сотня, тысяча?
Я вот посидел и сам придумал, как это сделать. Нормальная ли это идея? Создаём переменную _объект и массив _объекты[]. Заполняем массив объектами с тэгом хуита. Проверяем, присвоено ли _объект значение. Если нет, создаём новую переменную (назовём Выбор), дав ей охуенно огромное значение. Создаём цикл, (i = 0; i = _объекты.Lenght; i++) Проверяем, что ближе к исполнителю скрипта. _объекты или Выбор. Если ближе _объекты, то расстояние сохраняется в Выбор, а _объект получает значение _объекты.
>>427412 Я просто только начал разбираться во всём этом. До этого вообще с кодингом не сталкивался. Вообще идея выглядит более годной хотя бы от того, что не надо постоянно перезапускать цикл (хуита же меняет свою дистанцию). Но я не совсем понимаю, как реализовать это. Все-равно же придётся постоянно запускать цикл, чтобы определять, какой объект ближе, если их конечное количество неизвестно? В таком случае, моя идея выглядит более оптимизированной, т.к. расстояние так и так просчитывается каждый раз, но в моём случае не нужны лучи. Или я в чем-то ошибаюсь?
>>427414 У тебя костылинг с ненужным "охуенно огромным значением", который уже противоречит одному из правил кодинга, а именно — "никаких магических чисел". А рейкасты будут работать как часики.
>>427415 Согласен, но я уже придумал, как пофиксить: Просто к переменной _объект присваиваем сразу значение _объекты [0], а дальше также проверяем, что ближе _объекты{i} или _объект.
Я просто, как мне кажется, не понимаю реализацию того, что ты предлагаешь. Ну и что из этого систему меньше нагружает? Просто, как я понял, в твоём предложении всё тоже самое, только сначала создаются лучи, а потом также циклом проверяется, какой объект ближе. Конечное число хуиты неизвестно.
>>427416 Забыл упомянуть: этот вот >>427419 способ вычисляет ближайший объект в пространстве вообще, то есть он не проверяет нет ли между вами стен и т.д. То есть условный игрок может стоять прям под носом, но за стеной возле моба с этим скриптом и моб будет кидать говном в стену, при этом в пределах видимости моба может стоять другой игрок, только чуть подальше, и мобу на него будет похуй. Так что если хочешь чтоб мобы выбирал именно из видимых объектов, то тут уже надо делать на рэйкастах.
>>401747 (OP) Че то не понял нихуя. В этой вашей юнити 2017 не работает способ анимирования, когда ты например перетаскиваешь дочерний (именно дочерний, например кость в иерархии скелета) объект и его новая позиция становится кейфреймом. Теперь когда выделяешь этот объект то в окошке анимации все сбрасывается и появляется кнопка для создания нового клипа. Как теперь анимировать то?
>>427450 Это какие ошибки? У меня один раз была такая фигня — по ошибке удалил напрямую из папки скрипт, стукнул себя по голове, восстановил из корзины и у меня началась забавная хуйня. Скрипт в консоли жаловался что не видит префаб (хотя в инспекторе он был присоединён), но тем не менее запросто его спавнил. Удалил всё к хуям (благо проект был тестовый), сделал всё заново буква в букву — ошибки исчезли.
Не удаляйте ничё напрямую из папки, посоны, только через юньку.
>>427451 В последней 2017 версии каких только нет. Уже как открываешь юнити сразу вылезает ошибка. Сейчас не могу выбрать стейты с переходами в аниматоре (все удалил и сделал по новой), все переменные проебались, хотя я ничего не делал. До этого анимация тупо не проигрывалась, хотя я ничего нового вообще не делал, стандартные операции чтоб анимировать перса, которые проворачивал тыщу раз. Пиздец.
>>427462 Ну а к чему самая верхняя проверка? "Если нажали что-нибудь, то давайте посмотрим что именно нажали". Можно же ограничить проверку только теми клавишами, которые нужны.
>>427463 В смысле? Нужны ведь все клавишы. Меня просто смущает количество операций. Если сделать кучу активных клавиш, скрипт будет несколько раз в секунду проверять по сотне кнопок.
>>427468 Тебе в любом случае не нужна проверка на anyKeyDown, если потом проверяешь что именно нажали. anyKeyDown нужен для обработки нажатия вообще любой клавиши, когда тебе поебать что юзер нажал, лишь бы нажал.
Мне явно следовало за два бонусных дня в АРЕНУ СМЕРТИ добавить микротранзакции и paywall после второго уровня чисто для превращения игры в своеобразный арт-объект. Но не судьба.
Как грамотно организовывать порядок инстанциации объектов? Скажем, чтобы плеер не появился раньше своего хада? Я придумал только сделать хад дочерним объектом плеера. Других вариантов нет?
Кирилланы, есть у кого-нибудь опыт ГОАП? Есть экшн движения без прекондишнов, результатом которого является нахождение в определённых координатах и несколько действий, требующих нахождения в определённой точке. Всё работает неплохо, но я никак не могу придумать хорошей реализации выполнения действий на ходу. Например, есть экшн занятия укрытия TAKECOVER, требующий нахождения в точке в укрытии, что может быть осуществлено MOVETO. Но как сделать так чтобы на бегу павн стрелял во врага? Варианты: - Отдельное действие стрельбы на ходу. Самый простой вариант, но требует создания отдельного экшена для каждого возможного действия на ходу, делает понимание АИ более запутанным: у нас действие нацеленное на две различных цели. - Завершать действие сразу после начала движения, а не при достижении точки назначения. Из минусов: головная боль при дебагге, куча костылей с учитыванием текущего движения при репланинге, с прерыванием движения проще сразу идти нахуй. - Оставить ГОАП только общее тактическое планирование, запихнув в каждое действие behavior tree или даже HTN для решения реактивных вопросов. Из минусов: переусложнённые экшены, куча копипаста кода, я заебусь и забью на полпути. Комментарии, идеи?
>>427635 >Кирилланы, есть у кого-нибудь опыт ГОАП? да, у меня есть.
>Например, есть экшн занятия укрытия TAKECOVER, требующий нахождения в точке в укрытии, что может быть осуществлено MOVETO. Но как сделать так чтобы на бегу павн стрелял во врага?
на самом деле лучше не дроби действия так сильно. Наличие точки пути можно проверять внутри прекондишена действия. что касается твоего вопроса. заведи в действии флаг того прерывает ли это действие навигацию. режим поиска пути долже диктоваться ИИ его стейтом, а не действиями. иначе ты в каждом сраном действии будешь искать то-же самое укрытие за ближайшим деревом. если например ИИ требуется подойти поднять предмет или переключить рычаг, то он берет поводья контролера в свои руки и сам идет куда надо, а пока ИИ не надо куда-то идти он просто все время находится в режиме уклонения, или патрулирования или ещё чего из его глобального стейта. смотри например https://www.youtube.com/watch?v=M3x9l-wWNJU
>>427655 >>427635 вообще что-то не проснулся я ещё. >Наличие точки пути можно проверять внутри прекондишена действия. я имею в виду что само действие проверяет возможность его применения, то есть TakeCover сам смотрит является ли оно валидным и есть ли у него точка пути. если действие валидное то оно добавляется в пулл вариантов действий.
на скриншоте кстати появнение забыл. ИИ имеет винтовку в инвентаре, но она пустая, ещё одна пустая лежит в мире и обойма к ней. надо чтобы он взял винтовку из инвентаря в руки, нашел обойму и выстрелил в сферу. ещё кстати смотри какая хуйня клевая. https://www.youtube.com/watch?v=ztFALZZTP_U долго думал как сделать
>>427655 >>427657 >TakeCover сам смотрит является ли оно валидным Но в этом же и суть. Планер возьмёт самую приоритетную цель - спрятаться в укрытии, которое может быть реализовано действием занятия укрытия, для которого ему надо в эту точку прийти. Процедурно можно проверять наличие доступных ковров как таковых. Если я правильно понял твой вариант, АИ будет прятаться в ковре только, когда он уже находиться в нужной точке.
>>427666 нене само действие делает все эти проверки и ищет лучшее укрытие на этапе проверки его валидности. просто в его исполнении ебани два ифа в его имплементации. если мы слишком далеко от лучшей точки для укрытия то идем в эту точку, если мы рядом то сидим в укрытии. садится в укрытие уже контролер потому что действие переключило в глобальном менеджере ИИ нужный флаг говорящий о том что ИИ в укрытии и с какой оно стороны.
но вообще поиск укрытия это абстрактная задача, что-то такое глобальное как поиск укрытий не должно решатся ГОАП. планирование отдельно, навигация отдельно, контролер отдельно. просто планирование думает, а контролер и навигация подстраиваются под планирование и действия друг друга.
>>427673 >если мы слишком далеко от лучшей точки для укрытия то идем в эту точку Теперь понял, это примерно как мой второй вариант. Меня в этом варианте смущает сложность контроля за перемещением, ведь после начала движения уже никакое действие не контролирует процесс, прерывания и достижение результата это опосредовано делается в прекондишене занятия ковра И придётся пердолиться с другими действиями, которые могут инициализировать движение: надо будет где то хранить приоритет действия задавшего движение или что то в это роде.
>что-то такое глобальное как поиск укрытий не должно решатся ГОАП Само собой поиском валидных укрытий занимается отдельный сенсор, действие просто берёт ближайшее и запихивает его координаты себе в прекондишны.
или может кто подскажет безрукому дебилу где править ебучие редиректы в хроме, заебался уже через жопу по документации лазить! Что сделать что бы этот мудак перестал уводить меня на русскоязычный портал!
Прошлый тред: https://2ch.hk/gd/res/394374.html
Официальный сайт: 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
На 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 - это начать делать игру и по мере разработки гуглить непонятные моменты.
Шапка: http://www.writeurl.com/publish/zukmrogwv45ptyuseyol