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 - это начать делать игру и по мере разработки гуглить непонятные моменты.
И сразу вопрос. Где-нибудь есть инструкции по созданию цивилизацияподобных игр? Ну чтобы там объясняли, как генерировать карту, писать ИИ для таких игр, ИИ для двигания войск и всё такое.
>>498598 Тиранни, Раст, Блицкриг, Пилларс оф Этернити. Вообще поддерживаю. Вот у уечепидоров куча примеров, а у нас что? Нажо собирать библиотеку успешных игр и продвигать как пример успешности юнити.
>>498609 Ну, я на андроид игру делаю. Сделал билд на 2018 версии, размер файла уменьшился на 6 МБ. Но была проблема со скриптами. В одном скрипте была ошибка, я её исправил, но юнити упорно отказывался видеть изменения. Пришлось реимпортнуть папку со скриптами.
>>498486 >Как ты игру сделал даже не представляю, спиздил у кого-то с гитхаба? Сам навелосипедил почти 17 loc
>ставишь на узел тег названия страны и на юнитов вешаешь разрешение ходить по узлам с тегами своей страны Но это же хуйня. Стран может быть пара сотен, + союзники, по врагам тоже можно ходить. Куда проще было бы фильтровать узлы в нормальном предикате, а не сравнивать по каким то тегам с названиями
>>498650 > Но при каждом следующем использовании этого метода юнит бежит все быстрее и быстрее Ну само собой, ты же метод несколько раз вызываешь. Я как-то раз додумался корутину из апдейта вызывать, можешь представить что там было.
Короче, пацаны. Пишу мультиплеер для двигающихся кубов с пушками. Так вот, там есть объекты общие для всех, типа кубов на сцене или предметов. Мне надо физику для них и взаимодействие . Нормальный ли вариант сделать одного игрока типа хоста, и чтобы координаты для этих шмоток считал он, отправлял на сервер, а он всем остальным. Так, по идее, если он отрубится, то мы передаём это на следующего игрока и теперь считает он. Вот такой велосипед. Нормас или хуйня? насколько сильно хуйня, я не особо в клиент-серверной параше разбираюсь
Охуенно, пытался купить два ассета, после ввода пароля из смс, произошла ошибка, бабки с карты списали, а ассеты не добавились, даже в истории покупок нет ничего, было у кого-нибудь? Получится решить проблему? Алсо, написал им в саппорт, ну там типа до 5 дней ожидания может быть.
Я не смог нагуглить. Скажите пожалст вот в EditorGUILayout.ObjectField есть отдельно хуйня говорящая можно ли совать туда объекты из сцены, или нельзя. А как тот-же функционал сделать если не хочется переписывать инспектор? Есть ли волшебный атрибут?
Есть динамическое риджидбади2Д. Я хочу сделать так, чтобы при падении оно уменьшалось в размерах. Рассчитываю через лерп, но во время изменения размеров все начинает дико тормозить. Я уже все испробовал, не понимаю в чем дело. Может кто из гуру подскажет, куда копать?
Как управлять очередностью отрисовки в 3д? По идее, через renderQueue но многие материалы не содержат данного поля (3д текст, спрайты). ЮИ элементы тоже наслаиваются в world space.
Вот, в видеорелейтед, видна разница, как они падают. Я не представляю в какую сторону гуглить, что происходит? При скейле обрывается расчет физики или что-то подобное?
public class test : MonoBehaviour {
\t// Use this for initialization \tvoid Start () { StartCoroutine(ScaleObject()); } \t \t// Update is called once per frame \tvoid Update () { \t\t \t}
IEnumerator ScaleObject() { float scaleDuration = 5; //animation duration in seconds Vector3 actualScale = transform.localScale; // scale of the object at the begining of the animation Vector3 targetScale = new Vector3(3f, 3f, 3f); // scale of the object at the end of the animation
for (float t = 0; t < 1; t += Time.deltaTime / scaleDuration) { transform.localScale = Vector3.Lerp(actualScale, targetScale, t); yield return null; } } }
>>498808 >всегда можно изменить пространство отрисовки канваса на ворлдспейс, или камера спейс же Я, в данном случае, использую 3Д Текст, без всяких канвасов. Или он устарел и не стоит им пользоваться?
>>498809 ну это. с разморозкой, да. это ты там какую-то экзотическую хуиту творишь. там конечно шелухи побольше, но и контроля побольше. и очередность отрисовки на канвасе управляется позицией обжекта в иерархии.
Но другой вопрос - почему у меня текст проваливается в серую панель? Это ЮИ текст на паниле в канвасе с мировыми координатами. Z координата - 0. Так и должно быть или я где то обосрался? Матриал - дефолт ЮИ.
>>498811 Если честно то хуй знает что ты там понакрутить успел. Покрути координаты, скейл элементов и прочую хуйню. Там много чего можно покрутить.
Кстати а чего ты вообще решил все это в мировых координатах то ебошить? Может сделал бы отдельную камеру которая рисовала бы только UI, двигал бы там все эти надписи через код переводя кординаты из мировых в скрин спейс, имел бы себе отдельный менеджер который за все это отвечал бы.
>>498799 Как это не видно? Видно же, что правый объект дергается и медленней падает.
>>498803 >не удалось воспроизвести ни с 2д ни с 3д. хуй знает че ты там понаписал.
Но я же привел код, это единственный код в сцене. Ты не мог бы скинуть свой скрипт для правого шара, а лучше залить куда-нибудь весь проект, если не сложно?
Стандартный террейн неудобный кусок говна. Есть ему альтернатива? Начал рисовать вручную в зебре, но потом осознал, что придется вручную сажать травку и раскрашивать и забил хуй. Так же пробовал импортировать карту высот, но как начинаю что-то фиксить, то все идет по пизде.
>>498830 че тебе там не нравится то? карты с травкой так-же легко суются как карты высот и текстурки. там разве что обосрамс с тем что у какой-то из них перепутана X и Y. можно и процедурно ещё генерировать. вон покажу мой старый прототип. клево же.
>>498816 >Если честно то хуй знает что ты там понакрутить успел. Покрути координаты, скейл элементов и прочую хуйню. Там много чего можно покрутить. Да вроде хуйни не делал. Прост в мировых координатах, как я понял, ЮИ элементы - обычные полигоны, вот их и вмазывает z-fighting
>Кстати а чего ты вообще решил все это в мировых координатах то ебошить? Ну, сам ЮИ у меня поверх камеры рисуется, только всякая хуйня из сцены в мировых.
>>498816 >двигал бы там все эти надписи через код переводя кординаты из мировых в скрин спейс, имел бы себе отдельный менеджер который за все это отвечал бы Чет дофига переусложнений, пересчитывать координаты сотен объектов при каждом движении камеры, вообще охуеть.
>>498841 >Да вроде хуйни не делал. Прост в мировых координатах, как я понял, ЮИ элементы - обычные полигоны, вот их и вмазывает z-fighting внутри канваса у них нет з-файтинга
>Чет дофига переусложнений, пересчитывать координаты сотен объектов при каждом движении камеры, вообще охуеть. да ну брось каких сотен. ты там буквы по отдельности чтоли рисовать собрался. очевидно что отрисовку наоборот нужно отключать если камера слишком далеко, а если близко то и рисовать нечего.
>>498842 там не совсем так просто всё с очередью отрисовки. как видишь она вполне работает. просто для прозрачных и непрозрачных объектов по разному.
вообще че ты там творишь? че у тебя там пидорасит то? говорю - перенеси на отдельный слой который рисует только UI. То есть у всех элементов UI поставь Layer: UI и сделай камеру которая рисует только этот слой.
>>498763 а хотя. перечитал твой вопрос и подумал над контекстом. тут и правда проще всего будет просто приподнимать немного UI нарисованный в ворлд спейсе. вообще твои странные проблемы можно было бы решить иным способом. завести ТРИ камеры! одна рисует карту, вторая рисует UI а третья хопа и юнитов!
>>498859 да ну не пизди, у меня был прототип в котором было аж пять камер. иметь лишние камеры вполне себе решение если хочется что-то поверх чего-то рисовать. например хопа и вот тут я рисую кликабельное превью карты в лобби. команда 1 выбирает чанк, а команда 2 выбирает чанк за пределами сферы первой команды. а карта вообще на другом слое за три пизды.
>>498854 >внутри канваса у них нет з-файтинга У меня - было см текст на панельке >>498811
>>498854 >да ну брось каких сотен. ты там буквы по отдельности чтоли рисовать собрался. очевидно что отрисовку наоборот нужно отключать если камера слишком далеко, а если близко то и рисовать нечего. > Куча провинций, юнитов, хз что я еще добавлю
В принципе, я решил свои проблемы - таки нашел текстуру для нового шейдера 3д текста который риcуется не поверх всего а в порядке. остальное по Z поднял на 0.001
>>498854 >говорю - перенеси на отдельный слой который рисует только UI. То есть у всех элементов UI поставь Layer: UI и сделай камеру которая рисует только этот слой. Не, я пока оставил старый 3д текст с новым шейдером. Он прикрепляется к объекту без всяких канвасов - просто и удобно. Там еще и лоды прихуячены..
>вообще че ты там творишь? Куча элементов в одной плоскости проваливаются друг в друга
>>498862 >У меня - было см текст на панельке да он загорожден у тебя наверняка чем-то или ещё какая проблема. если префабами пользуешься то ты учитывай что у них очень сильно разный скейл в ворлд спейсе и скрин спейсе.
>Куча провинций, юнитов, хз что я еще добавлю да ну брось у тебя на скриншоте даже сотни надписей нет. как бы пересчет пространства то не такая хитрая операция как можно подумать. лучше бы менеджер завел. вот захочешь ты например завести кручение карты. и че? это ты на каждом повороте будешь говорить каждой провинции "поверни свою надпись"? чем-то эта идея попахивает.
>>498864 >Не, я пока оставил старый 3д текст с новым шейдером. Он прикрепляется к объекту без всяких канвасов - просто и удобно. так ты это. спавни всю эту хуйню сразу с канвасом. или добавляй эту надпись в какой-то единный канвас для надписей. новый UI же здорово. там тебе и нормальный автоперенос по словам и бест фит и разрешение нормально меняется.
>Куча элементов в одной плоскости проваливаются друг в друга по моему у тебя просто хуйня поверх юнитов рисуется. рисуй юнитов поверх всего.
>>498866 >да ну брось у тебя на скриншоте даже сотни надписей нет. Так это ж тестовая версия. Так то весь мир долго генерируется. Да и безумие это. но потом таки сделаю - надо чтобы значок армии оставался постоянно размера при любом положении камеры.
>>498866 >или ещё какая проблема Похоже. В другом случае очередь отрисовки норм работает.
>>498866 >вот захочешь ты например завести кручение карты Низахочу. В этом жанре камера не крутится.
Зато, может быть сделаю систему чтобы текст названия страны вписывался в размеры страны. но некогда. И сложна.
>>498868 >Так это ж тестовая версия. Так то весь мир долго генерируется. так если надписей много то они вообще не должны отображатся до определенного уровня зума же. тебя не просто так ругают за интерфейс же.
>Низахочу. В этом жанре камера не крутится. да ну не ври. вон например в Stellaris вполне себе крутится. это у тебя пока карта плоская и хуевая смысла крутит мало. а вдруг у неё карта высот появится, горы, деревья? а тут нате, крутить нельзя. или можно но только вместе с надписями.
>>498870 >так если надписей много то они вообще не должны отображатся до определенного уровня зума же А зум и есть, через ЛОД. Мне пересчет этих сотен(тысяч) объектов не нравится. Лишнее, пока и так работает.
>>498870 > это у тебя пока карта плоская и хуевая смысла крутит мало. а вдруг у неё карта высот появится, горы, деревья?
Вообще, у меня была идея добавить мою же генерацию высот с пикрила, но это вряд ли. Надо работу искать, а с Патреона едва 15 баксов приходит.
Перепишу если что, а заранее универсальные механизмы делать - зло. Рефакторинг в данном случае почти ничего не стоит.
Доброго денечка, мастера Юнити. Я сам в юнити не разбираюсь, нужен ваш экспертный совет. Играю я времена в такую игру, как Project Gorgon - мморпг сделанная на Юнити. И есть в игре большая проблема - производительность. Когда в локацию набивается больше 50 человек, игра начинает проседать в ноль по фпс. Причина известна - анимации. Если отключить их, лаги исчезнут. Разработчик оправдывается тем, что это особенность движка юнити, и пока из эксперементальной фазы не выйдет какая то функция "graphics jobs" проблему никак не решить. Правда это, или кривые руки?
>>498889 > пока из эксперементальной фазы не выйдет какая то функция "graphics jobs" Она что, всё ещё в экспериментальном режиме? Охуеть, третий год уже пошёл.
>>498726 Как раз из-за впн платеж и не проходил, я его вырубил и все ок стало, потом снова поднял, чтобы в самой юньке ассетстор открылся, а в браузере он и так работал слава богу. >>498724 Да почему секрет, взял corgi engine, rex engine и pro camera 2d, нарадоваться теперь не могу, я ведь столько времени ебался велосипедил свои костыли, вместо того чтобы делать игру.
Нахуя в документации в качестве примера к классу добавляется атрибут [System.Serializable] если потом все переменные один хуй публичные и будут видны в инспекторе? https://docs.unity3d.com/ScriptReference/Serializable.html Сейчас вот создал класс с таким атрибутом и с приватными переменными - в инспекторе их не видно. Получается, эта хуйня нахуй не нужна?
Посоны, такое дело. Есть класс Item, который ни от кого не наследуется. Там поля с именем, весом и т.д. В папке Resources/Items лежат префабы, состоящие из пустых геймобджектов с прикреплённым классом Item. На сцене висит скрипт, который делает вот это:
Юнька на меня ругается, говорит что > Assets/Scripts/ItemController.cs(21,40): error CS0311: The type `Item' cannot be used as type parameter `T' in the generic type or method `UnityEngine.Resources.LoadAll<T>(string)'. There is no implicit reference conversion from `Item' to `UnityEngine.Object'
Если же Item унаследовать от монобихэвиора, то всё работает безо всяких ошибок. Но мне от него наследоваться не надо. Как быть?
>>498977 оно ж тебе пишет - могу грузить только UnityEngine.Object. унаследуй его от обжекта а лучше скриптабл обжекта и убери нахуй префабы нафиг тебе полноценный геймобжект со всем вагоном стандартной фигни?
>>498986 > унаследуй его от обжекта Пробовал, тогда префабы выдают пикрилейтед. Хотя в консоли никаких ошибок нет. > а лучше скриптабл обжекта Да вот и я всё больше склоняюсь к тому, что придётся курить что это за тварь. Постоянно обходил его стороной, максимум на офсайте видео по нему посмотрел. Но, видимо, день настал.
И ещё вопрос. Вот есть у меня префаб айтема, например зелья. У него есть поле, например amount. Вот загоняю я этот префаб в лист игрока и в лист, например, ящика, который можно облутать. И если я изменяю это поле в зелье игрока, то оно же меняется и у зелья в ящике. То есть меняется поле самого префаба, а в листе только ссылки на префаб. Само собой, мне надо чтоб каждое зелье было отдельно от другого. Скриптэйблобджект мне в этом поможет? Или изначально надо было брать не лист, а какую-нибудь другую хуергу?
>>498992 не, скриптабл не поможет. тебе нужно что-то типа пар, типа public struct ItemSlot { public ItemInfo Item; public int Count; } и соответвенно список таких слотов в ящике
Всё, я понял. Я просто изначально выбрал ебланскую модель инвентаря. Не так всё надо было делать. Спасибо ананасам за ответы или это был один, слава богу не сильно много нахуевертил, думаю перепишу довольно быстро.
>>499036 > заведи свою базу данных предметов В чём её хранить? В скиртблобжухкте? Что легче всего для нуба? > так ты каждый итем как экземпляр класса заводи Да, это я уже понял. Как раз упёрся в стулья, на какой сесть чтоб хранить данные о предмете.
>>499037 >В чём её хранить? В скиртблобжухкте? Что легче всего для нуба? йеп. в скриптабл обжекте. там тебе дают волшебную сериализацию юнити. и там есть фича - оно может сериализовать ссылки на объекты в проекте. лучше не придумать чтобы связать кучу цыферок, картинок, префабов и прочего в одну кучу. например на картинке простенький прототип чего-то такого. я могу сказать хуяк заспавни мне предмет номер такой-то. и там ещё отдельно спавнилки могут подправить цыфры с таких на другие. но на самом деле конечно тебе ещё придется полезть в дебри создания интерфейса для своих кастомных окошек в юнити чтобы воспользоватся этим могуществом. так что у тебя два стула. либо велосипед делать, либо взять готовое и делать игры. какую пилюлю выберешь?
>Да, это я уже понял. Как раз упёрся в стулья, на какой сесть чтоб хранить данные о предмете. лол ну ты всегда можешь воспользоваться любой другой сериализацией. если у тебя какая-то своя особая структура папок в проекте то хули, XML сериализацию приделай.
>>499043 Уговорил, чертяка. Значит всё таки нарушу свой целибат и нормально разберусь с этим дерьмом. Сука, как же всё хорошо было пока не упёрлось в этот инвентарь, его отображение в окне-инвентаре и т.д.
Няши, подскажите, в чем можно нормально анимировать? Модельки беру из Daz, пытался экспортировать в блендер - получается херово, даже в самом дазе лучще. Слышал, в юнити напрямую можно анимировать, но не пробовал. Еще есть позер, но в чем его отличие от ДАЗа я тоже не очень понял.
Знатоки, подскажите, как пофиксить. В 2д платформере, если персонажа упереть в стенку и пытаться идти в неё, он как будто на долю секунды проваливается в неё и потом откидывается обратно, и так много раз. В общем надо, чтоб он в стенку не мог входить, лол. Вдруг сталкивался кто.
>>499071 Да вот я и попробовал хранить в префабе, но хуйня получается. Сейчас курю скриптэблобжект, пока не сильно понимаю как мне его натянуть на свой инвентарь, но то наверное я уже просто вареный. Отложу до понедельника.
Как мне удалить из списка элемент с определённым именем? Да, я знаю что можно сделать list.RemoveAll(x=>x.name=="Yoba"); но тогда он удалит все элементы с таким именем, а мне нужно только один.
>>499111 > просто Remove же Remove в качестве аргумента требует сам элемент, а мне его нужно сначала найти по имени, то есть по строке. Попробую через Find, как этот >>499110 товарищ предложил.
>>499110 Получилось, спасибо. > Проверку на нуль можешь добавить Оказалось что не надо, если ничего не нашлось, то Remove не ругается, ему просто похуй.
>>499122 По вопросу не помогу, но очень советую отказаться от магических чисел и всё держать в переменных. Ну и переменные лучше с маленькой буквы обзывать, даже лучи.
>>499122 >Пускаю луч из точки нажатия на экран и двигаю объекты, но когда двигаешь их близко, считывается только одно нажатие, второе просто пропадает. Нихуя не понятно чего ты хотел
Алсо, если кто пользуется incremental compiler - где их сайт? Не могу найти, а он похоже ломает что то у меня
>>499029 >Алсо, можно же в Facebook опубликовать приложение, как идея? Плохая идейка. ВКонтакте тебе дадут хоть какой-то трафик на старте, а в Фейсбуке крутись как хочешь. Да и денег в социалках нет. Лучше продолжай работать с мобильными платформами.
>>499134 на видео водно, что левый принимает позицию правого. Может, телефон не всиле распознать 2 кацания, если они близко? И переключается на одну точку.
>>499134 Попробуй уменьшить зону касания в игре. Ты ведь получаешь сырые данные, сделай так, что бы зона касания была меньше, нежели телефон рапортует. В этом случае управление будет чуть более чувствительным к изменению, но пропадать не должно. Device multitouch-то поддерживает?
>>499151 а это то как у тебя могло случится лол. даже без переписывания редактора? ну ты это. попробуй 2018 чтоли. а то охуеть аж 4.2.f2. даже не 5+ а 4 где были все эти платные фичи.
Анон подскажи, если использовать в сценах скачанный с левого сайта ассет, а потом задним числом купить в сторе, есть подводные? .Unitypackage имеют зашитую информацию о аккаунте или это архив?
Покупать все подряд, чтобы изучить и понять а надо ли оно тебе вообще, это негуманно.
И на этом моменте автор меняет направление юнита, если он близок к точке хотя бы на 0.2. Но что делать, если игра лаганёт и из-за большого Time.deltaTime враг перескочит точку? Как это фиксить?
какая-то хрень с rigidbody... Приделываю его находу. Реагигует и на гравитацию, но не надо. Приложить силу могу и хреновина летит, куда надо, а вот с isKinematic и скоростью вообще не двигается с места
GameObject fireBall = (GameObject)Instantiate(fireBallPrefab); fireBall.transform.position = fireBallSpawn.position; Rigidbody body = fireBall.AddComponent<Rigidbody> (); Vector3 dir = (target.position - fireBallSpawn.position).normalized; dir.Scale (new Vector3 (300f, 300f, 300f)); body.isKinematic = false; body.useGravity = false;
>>499222 Некоторые считают, что стандартный молоток от фирмы производителя "Совок" не самый лучший для забивки гвоздей на 7, только на 5. Стоит ли брать?
Хочу сделать игру, 3д экшон. Суть такова. Шарик на плоскости. Шарик бегает за курсором по клику или не по клику, похуй. Стартанул пустой проект. Добавил террейн, добавил шарик. Шарику добавил ригид боди. Камеру привязал к шарику и подвигал, так чтобы смотрела как в стратегиях сверху под углом. В гугле нашел, вот такие ответы. Мне нужен Camera.ScreenToWorldPoint и Vector3.Lerp. Ну позиции курсора вроде считываются и шарик двигается. И похоже у меня перепутаны Y и Z на террейне или хуй проссыш. Шарик постоянно прыгает, а должен по плоскости кататься. Или камеру я неправильно навертел. Помогите.
>>499234 > Убеждал себя, что если-мол сам задаю скорость, то это isKinematic Чё чё? Искинематик это если ты движение задаёшь не через риджидбади, а через трансформ.
подскажите где туплю - есть пустой геймобьект, в нем n дочерних объектов. пытаюсь получать дочерние объекты, брать рандомный и перекрашивать его в красный, после чего в цикле менять цвет на белый/красный (воссоздать мерцание). Вообще в юнити 1й день, так что можете хоть ссаными тряпками бить, но прошу помочь. Собсна вот код, проблема на " yield return new WaitForSeconds (2f); " Объект перекрашивается в красный, и на этом больше ничего не происходит. Может как-то можно по другому реализовать или подскажите в чём ошибка?
>>499270 Нахуя? Повесь на дочерние объекты скрипт, который будет мерцание выполнять (хоть через коуртину, хоть через Update) и потом просто запускай его. Можешь там параметров накидать - когда /через сколько прекратить и т.п.
>>499271 Объект окрашивается в красный, потом начинает мерцать и потом снова становится белым (ну то есть по сути неактивным, но действие потом запилю). Было бы удобнее с 1 скриптом который рандомно выбирает 1 дочерний объект и работает с ним, после чего повторяет то же самое но с другим. Это ведь реализуемо?
>>499272 Ну так один скрипт и будет, просто на объектах будет его инстанция. У тебя вообще один дочерний будет, его копии - инстанция префаба. В скрипт логику мерцания пихай и вызывай когда и как надо
>>499273 Хм, ну пока выглядит почему то сложнее. Ладно, завтра попробую так. А для будущего - почему моё дерьмо не заработало? Оно как бы и красит объект, но в цикле где должно быть якобы моргание ничего подобного и нет. Другие объекты тоже не окрашиваются.
Почему OnBecameInvisible иногда срабатывает как надо, а иногда с задержкой в полсекунды-секунду? На одном и том же объекте. Или это в последней версии нахуевертили?
Сап двач. Есть проблема. Есть игра, в ней две сцены -меню и основная игра. При билде меню работает норм, как надо. Основная игра не работает вообще - не отображаются спрайты игрока, враги не создаются, на нажатия клавиш не реагирует вообще. ЧЯДНТ?
>>499363 >Почему это работает, если мы передаем не GameObject, а только его transform? Они, по сути, не отделимы в Юнити. Subtle differences возникают в редких случаях.
Повернул я свой объект точнее - дохуя объектов на 90 градусов по оси Х и словил gimbal lock. Да, я знаю что можно засунуть в родительский объект, хуё-моё, но разве никак нельзя rotation order изменить? Шёл 2018-ый год, а до сих пор приходится обмазываться костылями в виде пустых родительских объектов чтоб рамки не складывались.
>>499378 >Повернул я свой объект точнее - дохуя объектов на 90 градусов по оси Х и словил gimbal lock. Так не используй системы ротации с gimbal lock, используй Quternion'ы - для того и сделаны
Не могу победить дерганья при скейле. Ребзя, помогайте, хоть наведите на мысль. Создал чистый проект, видеорилейтед. Падают астероиды, слева на право:
1) Скейлится, без интерполейта в риджидбоди. 2) Скейлится, с интерполейтом в риджидбоди. 3) Не скейлится, без интерполейта в риджидбоди. 4) Не скейлится, с интерполейтом в риджидбоди.
Видно, что плавно движется только 4-й. Камера следует за ним же, но это равноебуче, я пробовал вешать ее и на остальные.
Скрипт скейла и камеры прикрепил в пикчах.
Как сделать так, чтобы камера следовала плавно за астероидом, а он при этом падая, увеличивался в размерах без дерганий?
Я, может, не понимаю каких-то базовых вещей, но подозреваю, что дело тут в работе интерполейт. Ибо 1-й и 3-й астероиды хотя бы ведут себя более-менее одинаково. А поведение второго вообще мне непонятно. Может как-то можно покадрово дебажить, что именно в какой момент происходит?
>>499438 Понятно, но как фиксить, как гуглить, где хоть почитать теорию про это? Как работает интерполейт, как в него попасть при скейле? Есть вообще какие-то методы отладки синхронизации в юнити?
>>499442 Здесь камера внутри скейлящегося объекта. Попробовал сделать так в своей демке, работает отлично. Спасибо большое, ты натолкнул меня на мысль, которая может помочь.
Но насколько это правильный подход, класть камеру в объект? Мне бы хотелось иметь возможность плавно переключаться между несколькими объектами. При таком подходе это какие-то костыли получаются.
>>499443 камера заперенчена к не скейлящемуся объекту, а к объекту без компонента который его скейлит. но одна хуйня так как сам видишь что они неподвижны относительно друг друга. что у тебя там пошло не так - а хуй его знает. поломай это и расскажи как поломал, а мы посмотрим. если думаешь что дело в том что камера заперенчена то на, хули. http://rgho.st/7zzlLxBK6 будем считать эту хуиту контролером камеры.
>Но насколько это правильный подход, класть камеру в объект? так себе подход. хуевый какой-то.
>>499440 >но как фиксить, как гуглит У Brackeys есть видос про "following camera". Так там тоже дергалось в начале, после от разобрался, в какой из апдейтов ставить ( Update, FixedUpdate, LateUpdate - я не помню)
Че пацаны, ECS? Кто-то его хоть за лящки щупал, бо я только на гите нашел оф проэкт и более - ничего. Буд-то создали лялечку, а кодеры-говнищеры ниацынили, так-как дюже сложно, вот ребеночка и хоронят.
>>499445 >Не слушай этого долбоеба, он хуйню несет Ну так все правильно сказал - у него десинк, ибо LERP неправильно работает. Точнее, работает как надо - по неправильным данным.
Мне нужно, чтобы камера при всем этом начинала плавно следовать за объектом. Подозреваю, что нужно smoothDamp использовать, так? Как лучше это сделать, чтобы камера с запозданием перемещалась?
>>499445 >>499447 Спасибо, анончики, я посмотрю, а то совсем уже голову сломал.
>>499451 слушай, ты уже утомил. думай давай своей головой. http://rgho.st/8D8dh9RJb на тебе плавное перемещение камеры. предвидя твою глупость - можно написать Vector3 = Vector2. И наоборот. И тут я использовал это чтобы убрать Z у позиции камеры. это не слишком то оптимально, но в общем-то похуй.
>>499461 А в чем прикол, если оно весит в разы больше теперь? Алсо, если я буду генерировать мипмапы, размер увелчится сильнее, но на размер билда это не влияет. Где эти объемы данных хранятся-то?
>>499493 Никаких подводных. Что купить, что спиздить - на выходе получишь просто папку с файлами. Некоторые даже скидываются по 5-10 человек и покупают, если ассет дорогой. У меня вот папка с ассетами на 6 гиг, ни один из них не купил правда там и бесплатные есть. Но я их и не пиздил, какие-то наш художник покупал, какие-то геймдизайнер, а мне через коллаборейт достались, они ж в папке проекта лежат.
Как замутить приемлемый графон в своей игре, если ты программист, а 3д моделлингом почти никогда не занимался? Есть какие-то компромиссы и уловки, чтобы и сил затратить немного и нормально смотрелось. Например, вот хочу я сделать уровень "строительный магазин". Мне нужны модели полок - это легко. А вот всяких товаров и так далее, огромное множество. С этим возникают проблемы.
Ну, или может есть какие-то игры, которые выкрутились из этого, сделав всё красиво, но затратив мало усилий, и на них можно равняться?
>>499561 > Как замутить приемлемый графон в своей игре, если ты программист, а 3д моделлингом почти никогда не занимался? 1) научиться в 3д-моделлинг 2) нанять 3д-моделлера 3) не ебать себе мозг и пилить прототип, а уж когда будет готова игра — выполнить пункт 1 или 2
>>499563 И что, у меня будет, например, лабиринт из серых параллелепипедов (типа, магазин, ок да) и так на всю жизнь и останется? Код и внутриигровой текст то я уже написал весь.
Если начать дрочить моделлинг, ну, скажем, 3 часа в день, через сколько приобретается навык для инди разработки, чтобы хотя бы не вырвиглазно было?
>>499569 > И что, у меня будет, например, лабиринт из серых параллелепипедов (типа, магазин, ок да) Ну на стадии прототипирования так и делается, да. > Если начать дрочить моделлинг, ну, скажем, 3 часа в день, через сколько приобретается навык для инди разработки Ну тут смотря насколько ты дебил/недебил. Вон парень из нашей команды тридэёбство освоил за неделю на вполне вменяемом уровне (правда он сам по себе художником был и до этого, только 2д), а через год уже творил аки боженька. А у предыдущего было 4 года стажа, а лепил как будто из говна и соломы.
>>499578 > Какой-то у вас разброс слишком большой Чому? Я ж говорю — наш товарищ за неделю наловчился на уровень "норм", затем через год (не задрачивания именно 3д, а вообще, у него и своих хлопот хватает) уже был на уровне "бог". Второй ананас тебе сказал про месяц именно задрачивания, но явно не про уровень бога. А про ассеты — ну хуй знает, ассеты не изменятся если ты попросишь "ну вот тут бы чуть-чуть вот так". Да и вообще определись, тебе скилл или ассеты.
>>499579 Да мне... сделать хоть что-то на каком-то уровне.
Понятно, что набивка скилла потом поможет и окупит себя в будущем, но это же нужно потратить столько времени на дрочку чего-то, что может и не понадобиться тебе после этого.
>>499578 Ежели он юнПограммист, то по-дефолту, первое куда он должен был обратиться - в ассет стор. По той причине и не предлагаем. И вообще, лучше не в сторе искатьт.к. там 3д - помойка, а в каких-то модельстоках, хотя и там за-безплатно, редко что выцепишь.
>>499580 > но это же нужно потратить столько времени на дрочку чего-то, что может и не понадобиться тебе после этого Ну вот для этого есть второй стул — искать скилованного братишку, который будет за еду/бабос тебе пилить что надо. Или третий — юзать ассеты, но там найти картошечку в куче дерьма не всегда получается в нужные сроки.
>>499561 Чот по-моему ты школьник, а не погромист. На двух стульях одной жопой пытаться усидеть - очень хуевая идея, а еще учти, что третий стул - маркетинг - требует больше первых двух вместе взятых.
>>499585 Я не пытаюсь, а просто спрашиваю. Вдруг у вас есть тут эталон типа: "Вот, тут парни не сделали почти нихуя, а картинка получилась норм. Вот как они это сделали. и тд"
>>499586 "не сделали почти нихуя, а картинка получилась норм" - это только хороший агент, но найти такого - такой же актив, как и все остальное, и, естесно, все равно не бесплатно.
>>499457 Понимаю, что утомил. Стараюсь думать, просто поторопился спросить, пока ты не ушел из треда. Большое спасибо за помощь.
>>499586 Ну ты попробуй загуглить игры с минималистичной графикой, лоу-поли, вот это все. Но один хрен тут вкус нужен, цвета приятные чтобы были и вообще дизайн.
>>499274 Так тебе нужно один раз моргать случайным объектом или запускать периодичное моргание? И нахуя тебе рекурсивно корутину стартовать, чем тебя while не устаивает?
>>499469 dds - родной директиксовский формат текстур. по сути тупо дамп видеопамяти с текстурой. плюсы - быстрая загрузка в виду отсутствия перекодирорвания, сжатия(есть хардваерное, но его не учитываем) и прочих ништяков, встроенные мипы и т.д. минусы - размер в виду тех же причин.
>>499659 >директикс Тут 90% анонов пилят мобилкодрочево. Там директикс неприменим. Остальные пилят кроссплатформу. Там тоже актуальнее опенгл. Тут такая тема, что директикс потихоньку в прошлое уходит.
>>499729 >Тут такая тема, что директикс потихоньку в прошлое уходит. Ага, сука тупая, он 20 лет как в прошлое уходит. Его OpenGL с десяток лет назад "победил", а потом еще и Вулкан 3 года назад. Все чего=то его побеждают, побеждают - а он, год за годом полнее и жирнее.
>>499729 >Тут 90% анонов пилят мобилкодрочево. Там директикс неприменим. несовсем точно написал. формат то родился в дх, еще в первых версиях, но стал дефакто стандартом в виду широкой поддержки на уровне железа.
>>499757 > и FF15 на DX12? Это тот порт, лицензионная копия которого тормозит на 20% по сравнению с пираткой? И вообще это халтура и обман десятилетия, столько контента не дошло. Верните Стеллу ааааааааа
>>499790 Да с content size fitter-ами в основном. Я думаю. элементы скукоживаются в 0 или не хотят по размеру контента становиться. уже час сижу над этим.
15 лет в программаче, десяток лет в рисоваче, 4 года в моделлинге. И это, сука, ЕДИНСТВЕННЫЙ способ пилить игры, а не быть обоссаным школокириллом с ДИЗДОКАМИ. Пропорции опыта могут быть разными, но либо ты в соло умеешь всё, либо путешествуешь нахуй.
Пилю диплом - программа оценивает какую дозу получил бедолага, подержав в руке кусок урана ну да, они ж на улицах везде лежат. Возникла подзадача: нужна утилита которая позволяет задать модель помещения в котором произошёл казус и позу человека в этот момент времени. Пока пишу редактор позы человека.
По сути, мне нужно взять модельку человека, согнуть ей руки и ноги в нужную позу, опционально посадить за стул/стол. Потом нажать на кнопку и получить json с положениями костей и их ориентацией. Юнити мне показалась оптимальным вариантом. Плюс лет 6 назад игрался с ней.
Будьте добры, ответьте на вопросы: 0) Есть ли что-либо прям готовое под мой случай? Мне не нужны никакие анимации и прочее, только редактор по сути. 1) Я хочу кликнуть на руку и потягать за ползунок, поменять её позу. Это задача инверсной кинематики, верно? 2) Как переключаться между инверсной кинематикой и прямой кинематикой? 3) Как при клике на collision box отдельной части тела рисовать ползунок? (хз как называется, выглядит как три ортонормированных луча rgb) 4) во сколько мне обойдется заказать код для подобного?
>>499821 От моей первой пошаговой стратегии со смешными спрайтами, нарисованными в лагающем фотошопе. >>499810 Лол, всё было хорошо, пока я был маленьким и делал корявые игрульки сам. Потом полез в КОМАНДНУЮ ИНДИ РАЗРАБОТКУ и наглотался невероятных хуёв, когда сидят по 10-15 хуесосов и пиздоболят на тему игры мечты, но никто ничего не делает. Потом хардкорный моддинг для вк3, было очень круто, но в итоге Лига Легенд убила нахуй все такие проекты. Потом семь лет коммерческой разработки тупо за деньги, никакого геймдева, рисовач в свободное время. Сейчас вот достаточно задрочил тридач, чтобы пилить рпгшку полностью самостоятельно, чего и вам желаю. Алсо, юнити это неебически удобная среда, разве что минет не делает, пока игру пилишь, мне бы такую, да в моё тяжёлое детство.
тупой вопрос. мне надо нарисовать тактический оверлей, который показывал бы дальность пушек и угол обстрела. что-то вроде такого. в какую сторону воопше копать?
>>499900 >>499580 > Да мне... сделать хоть что-то на каком-то уровне. > хоть что-то > на каком-то уровне Сука, какой же ты соплежуй-говноед. Представляю твое тупорылое бледно-желтое ебасосево со теклянными глазами, подтглазами мешки, сутулость.
>>499900 DrawLine (или как там её), создание панелек/моделек/чего хочешь из кода, превращение координат с гексовой доски в нормальные мировые.
Такбля, ебался полторы недели со своими скриптами, почти закончил (нужно только "вслепую", то бишь без тестирования, анимации прикрутить как-то), и вдруг обнаружил, что в половине игр (например, эти ваши into the breach) для скриптов внешних используют lua какие-то. В первый раз их вижу, лёл. Там чистенько, аккуратно, но, сука, я уже несколько недель облизываюсь на свой собственный скриптинг и ПОЧТИ ЗАКОНЧИЛ теперь надо ещё анимации курить, эх Есть у вас какие-нибудь советы по lua? Если юнити как-то просто их умеет читать, то я их как-нибудь имплементирую параллельно своим скриптам.
>>499911 >создание панелек/моделек/чего хочешь из кода, превращение координат с гексовой доски в нормальные мировые. это все есть. карта генерируется, юниты создаются, бегают и стреляют. нужно тупо визуалзировать "тактическию информацию" куда можно стрелять.
>>499912 Ну вот у меня, например, пиздец вместо тактической информации. Беру сами гексы и меняю их цвет, чтобы информацию отразить. Дохуя разных стейтмашин, но этот пиздец работает и даже не тормозит. +в зависимости от стейта включаю/выключаю проверку на ивенты (типа нажатия клавиш/мышки/кнопок на панели). Так что В ПРИНЦИПЕ это не тактический оверлей, а тот же самый мировой, но при этом подкрашиваю несколько объектов в другой цвет + меняю привычное взаимодействие на особое. Планирую потом шейдеры/модельки поверх спавнить, чтобы красивее было и чтобы не зависеть от особого состава моделек.
>>499914 буду наверно поверх рисовать отдельных слой гексов, включать их и назначать цвет по необходимости. в принципе линии мне не нужны, все по гексам.
>>499916 Думаю, рисовать линии выйдет дешевле + много путаницы, если будешь на каждый гекс иметь по две модельки. Не слишком хитрый подход, к тому же. А шейдеры ещё дешевле выйдут. Но решать и воплощать в жизнь всё равно тебе, лул.
Сап, задача у меня такая моя игра нуждается в такой системе которую называют EventAggregator. И для теста мне нужно всего три объекта со скриптами 1.switch - Переключат какой-то bool. и публикует это событие в EventAggregator. 2.EventAggregator - Хранит событие. 3.Manager - читает событие, и как результат что-то делает(например добавляет очки) Но при этом switch и Manager, не должны знать друг о друге. Я читал вот эту статью, но я не понимаю как это работает https://habr.com/post/212055/ Помогите разобраться
>>499935 > EventSystem (новый гуй например работает на ней) Но ведь только если ты к гую привязываешь какие-то события, не? Типа там на button нажал - хуяк и метод вызвался. А так если просто добавить надпись "Ваня хуй", то eventsystem вроде и не нужен.
Создаю объект через GameObject.Instantiate. Нужно задать объекту некоторые свойства из другого объекта. Конструктор применять не советуют. Start() не может иметь аргументов. Как быть?
Мало того, Start() ведь выполняется не сразу после создания объекта, правильно? А в следующем кадре.
>>499950 > Мало того, Start() ведь выполняется не сразу после создания объекта, правильно? А в следующем кадре. Чтоб прям сразу-сразу используй Awake ()
>>499955 В меканим создай триггер или булеву переменную, сделай переход в нужную анимацию, по клику мышки активируй триггер или задавай нужное значение булевой переменной.
Поцоны, есть один пробилдер. Когда создаю два примитива и юзаю boolean SCG tool (любую операцию), то всё ахуеноо работает, за пол секунды выдает желаемый результат, но когда я использую те же операции на polygon shape, то юнити тупит пару секунд и закрывается без какого либо объяснения и ошибки. Сталкивался кто-то с такой же хуйней и смог ли решить эту проблему? Есть ли какая-то альтернатива без использования 3д редакторов?
>>499994 Может подскажешь тогда как реализовать подобное - есть префаб с ГУИ, он привязан к объекту. По нажатию на объект нужно выводить этот ГУИ, т.е создавать объект на сцене. Если закрыть его то ещё какое то время до уничтожения ГУИ со сцены нужно иметь возможность снова нажать на тот объект для вызова этого же окна. После уничтожения через какое то время снова можно нажать на объект для вызова того же префаба но по новой, для новой генерации. Извиняюсь за кривое объяснение.
>>500009 Как я понимаю, гуй висит на объекте стауионарно, а не спавниться. На объект вешает скрипт ShowGUI В нем делаешь public ссылку на твой гуй (Canvas, Panel или что у тебя там)
В том же скрипте имеешь OnMouseDown() В ней активируешь объект, что прописан по ссылке Корутиной деактивируешь его через заданное время
>>500002 >Есть ли какая-то альтернатива без использования 3д редакторов? Нет, это всё полумеры. Тебе религия не позволяет скачать любой редактор и посмотреть пару туторов как им пользоваться?
>>500009 лан я еблан, уже разобрался. А активен ли этот объект который я вызываю как проверить? поиск по тегу с последующий активСелф почему-то не срабатывает.
>>498593 (OP) Суп, котаны. Делаю первый пробный проект на унити, почти получается, но сегодня весь день проебал себе мозг только с одним вопросом - как, сука, как считать ебаный счет. Ситуация простая - игрок внизу поля, сверху падают бомбы. Когда бомба уходит за границы экрана и исчезает, то нужно счет++ и обновить на экране. На какой объект закидывать скрипт подсчета очков и как отслеживать бомбы, которые появились, упали и исчезли? Няша авансом
>>500033 >Когда бомба уходит за границы экрана и исчезает, то нужно счет++ и обновить на экране посмотри где находится граница экрана в мировых координатах и посмотри не улетела ли верхняя граница баунд-бокса ниже чем эта граница, если пользуешься ортогональной камерой.
>На какой объект закидывать скрипт подсчета очков и как отслеживать бомбы, которые появились, упали и исчезли? очевидно что спавнить и уничтожать бомбы и считать хуйню может один и тот-же объект. он же и UI может управлять.
а вообще пошел бы ты с такими вопросами знаешь куда? на сайт юнити. и посмотрел бы экзамплы.
>>500033 > На какой объект закидывать скрипт подсчета очков Похуй, хоть на сами бомбы (только поле static ебашь) хоть на пустой геймобджект, который у тебя типа геймконтроллером будет. > как отслеживать бомбы, которые появились, упали и исчезли? OnBecameInvisible, например, или под игровым полем размести пустой геймобджект с коллайдером и на него привесь OnTriggerExit, в котором пропиши Destroy(other.gameObject), а на самих бомбах повесь OnDestroy и плюсуй свои очки. Или плюсуй прям с того коллайдера, на котором OnTriggerExit Короче, вариантов дохуя.
>>499561 ассет стор же есть. если прогер, то лишняя двадцатка найдется. ну как "двадцатка", я в ассеты косаря три вложил. главное тут если что-то меняешь - делай это с умом, т.к. легко что-то толковое превратить в полное говнище (зато художественно самовыразиться). если ассет дорогой, то это переоценный оверинжиниринг. удели время на слепое изучение ассортимента. например, можно купить комплект 3д-деревьев за 10 баксов, или генератор деревьев за 5.
>>499495 мне тоже этот вопрос был интересен. с одной стороны, спасибо. а с другой: > просто папку с файлами что, простите? просто файлы? и там не будет просто отчета с твоим id'ом, например?
>>500039 > и там не будет просто отчета с твоим id'ом, например? Лол, нет. Только в твоём профиле ассет появится в списке купленных, чтоб если ассет обновился - тебя об этом уведомили.
>>500040 > нет вот если я игру скомпилил с функцией сбора статистики - мой ид в игре точно будет. я вообще не понимаю, могут ли тут пруфы быть. может, сам юнити где-нибудь обмолвился-де "мы ничего такого не делаем"? на чем основано твое мнение?
>>500046 > мой ид в игре точно будет Папка с ассетом нигде не кричит "я ассет, пасаны!" Может ты это сам написал. Или ты думаешь что в офисе юнити сидит армия макак, которая каждый билд сверяет с базой ассетов? > на чем основано твое мнение? На пикрилейтеде, например. Один из билдов вполне себе висит в стиме и приносит на хлеб с маслом палить я его, конечно же, не буду.
>>500051 > палить я его, конечно же, не буду палить и необязательно. более того, тебе же повредить может. но пруфы у тебя жидкие (почему их такими считаю - выше писал) - особенно если говорить именно про id аккаунта. > сидит армия макак когда ассеты скачиваешь, юнити показывает какие файлы новые и какие - общие. независимо от их местоположения, по хешу контента. попап "calculating assets hash" опять же. армия макак врядли нужна для уже автоматизированной работы. по факту - до поры до времени юнити на это забивает.
>>500054 я сегодня в магазине сравнивал мороженное и желатиновых мишек. мороженное оказалось лучше. никто не знает почему. с субъективными ощущениями всегда так.
Называйте меня поехавшим, но у меня в скомпилированной игре пропадают кнопки и текст. Перезапуск не помогает, сохранения в игре ещё никакого и нет. Что это блядь такое? В Unity всё в порядке, в игре сначала исчезла кнопка, теперь и часть текст (делаю текстовую игру). Что это блядь такое?
>>500055 > но пруфы у тебя жидкие Ну я тут не убеждать пришёл, а на вопрос ответил. Или ты думаешь что я товарищ майор юнити-разлива и всё жду когда ты спиздишь ассет чтоб тебя повязать? Если хочешь успокоить своего внутреннего параноика — купи и не парься.
>>500058 дружище, я ассеты покупаю (потому что про западный и штатовский копирайты читал и потому что воровать нехорошо). вопрос у меня был не тот, на который ты не можешь ответить. мою надежду найти спеца по кишкам юнити ты не оправдал, благодарю за потраченное время.
>>500061 Ну значит мистика. Хотя вот недавно у меня слайдер исчез, в иерархии есть, галочка стоит что активный, а его нет. Забил хуй, лёг спать, утром проснулся, запустил - всё нормально.
>>500062 > мою надежду найти спеца по кишкам юнити ты не оправдал Да я и не претендовал. > и потому что воровать нехорошо Дык и я не воровал, я уже писал что они мне достались от группы ребят, с которыми я работал и которые сами залили их в проект, а потом были и не против если я их себе оставлю. > благодарю за потраченное время Да не за что.
>>500063 Да, с юнькой иногда классическое "Перезапустии и все пройдет" срабатывает, но очень редко, т.к. чаще всего - это оплошность человека, а не машины
Чуваки, подкиньте норм или не норм туториалов по созданию редактора/конструктора 3д объектов. Например, редактор транспорта, где я могу поставить каркас, колесики, еще что нить (по сетке или свободно), чтоб потом это работало и игралось. Я интуитивно понимаю, что от поставленных объектов зависят свойства/способности сборного объекта, но как это реализовать, понять не могу. Удалось найти только туториалы про редактор лиц (( Еще примеры: Crossout, Robocraft, Sims (дом), Spore, Angry birds с машинками.
>>500095 Дело было не в коллайдерах. С ними всё норм. И, кстати, у коллайдеров нет иерархии.
Мешало rigidbody на parent. Причём при любой комбинации UseGravity и isKinematic. Rigidbody на самом объекте не мешает его крутить, опять же, если на parent его нет.
>>500101 Туториал - это нечто конретное. А твоя задача - нет, ее можно реализовать хуилионом совершенно разных способов. Ты наверное сможешь найти туториал по какому-то одному конкретному способу, но подумай, нахуя тебе это, если твоего абстрактного мышления понять это не хватает.
>>500138 я бы такие туторы тоже посмотрел. к взаимодействию объектов, я уверен, много подходов есть. вот у меня есть генератор уровней. есть стометровки с самопальными joint-компонентами. есть спавнер блоков, который joint'ы ищет - иногда из-за него лаг случается. надо переделать. единственная мысль - при awake джоинта искать спавнера в родителях. а в туторе могут других мыслишек подкинуть.
>>500146 Подкидываю мыслишку: закрой нахуй юнити, и не открывай, пока не сделаешь на любом языке абстрактный сериалайз/десериалайз всех сцен на любой момент времени.
как по-взрослому и для кат-сцен работать с камерой? технически всякие самописные вращения, перемещения и переключение пост-эффектов умею. хочу с камерой нормально работать, а не ворочать ее грудой скриптов и сплайн-ассетами. и не держать сценарий нумерованными объектами в иерархии, а видеть что с камерой происходит. мне камеру красиво тяжело (т.к. я не оператор-постановщик), а тут еще и разные ракурсы, переходы между ними. кто-то делал кат-сцены и раскусил удобные решения (платные норм)? таймлайн стоит ковырять, какие от него плюсы?
>>500163 > как это работает? Монобехэвиор ковырял? Тебя и ебать не должно как это работает, просто прими это как факт. А если уже тебе пиздец как интересно почему это работает именно так — это будет тебе домашним заданием.
Звиняйте за тёмную картинку. Вот, взял отстреленную голову и несу. Но она создана копириванием меши, а раз раньше сидела на плечах, то оффсет сохранился (пик2). Какой он, можно узнать из MeshRenderer.mesh.bounds.center. Исходя из этого вектора и навешены коллайдеры.
Вопрос: как мне сделать по-людски, сдвинув меш к пивоту, т.е. вниз?
Хочу голову крутить и ею бросаться, что при таком сдвиге получается криво.
>>500254 да ты верно дебил. до того как ты их импортировал и после. импортируй ка давай куб с стороной в один юнит. и посмотри. может поменялось чего! вот удивительно то будет!
>>500255 Хуя ты прям помог, импортировл куб со стороной в юнит и сразу всё заработало, заиграли фанфары, мамка пирожков испекла, друзья звонят, поздравляют.
Huley they talk about "non-code content" в отношении asset bundles??? Ведь в сцене всё на скриптах и держица-вертица, блэть! В прифабах-то скрипты не похерятся же
>>500382 Классы компилятся в бальшую дллку, которую можно заранее набить, а всякую мелочь типа новых юнитов и ребаланса нормальные люди обновляют через какой-либо формат данных.
>>500386 Ээ, ну как бы да, "цвет вертексов", но в файле геометрии, а не в текстурах - такое есть? Я хочу просто чтобы дезигнер хуярил коллайдеры/споты под партиклы/итд в своем редакторе, а в юнити-реализацию оно оборачивалось через код.
>придумал идею для хоррор-рогалика с пушками и процедурными канализациями >пока пилил базовую часть, решил что все идеи - говно >начал пилить другую хуйню
>>500500 О, очередной разработчик 2д параши с программер артом закукарекал. Много вас таких за последние пару лет повидал, унылее петухов не сыскать. Никаких амбиций, никаких стремлений, только вечные поклепы унылой шаблонной хуеты и пуканье в тредике. Удивительно, как ты вообще додумался готовый движок использовать, а не сел сначала писать диалект лиспа под себя. Ты жалок и смешен.
>>500510 Но ведь ты даже с готовыми ассетами не сможешь работать, мань. Ты не можешь в постпроцессинг, ты не можешь в шейдеры, ты не можешь такой графон как на вебм, ты не можешь в оптицизацию, не можешь в генерацию, ты вообще ничего не можешь кроме как двигать своего пиксельного аниме рыцаря по мануалам из гугла. Ты - бесполезный кусок червя-пидора, не нужный ни одной уважающей себя конторе, да и самому себе скорее всего тоже. Будь я на твоем месте - я бы давно ригидбадимувнулся в окно, нахуй ты вообще нужен?
>>500512 >>500513 Да нах так прикладывать этого разработчика кликеров для геймджолта с тремя фолловерами из собственного класса? Он же сейчас вскроет себе вены тупой ножовкой, а тред навсегда закроют за доведение
>>500512 > не нужный ни одной уважающей себя конторе вот это система ценностей! комплексуешь, что можешь только на дядю работать, а без указки тебе даже готовые шаблоны не помогут игру сделать? не комплексуй, бесполезного хуйла на этой планете 99%, ты просто такой же как все. это нормально.
>>500579 что за хуйня у тебя в голове то? как собрался реализовывать все это - так и храни. о какой части ландшафта речь? карта высот, карта чего? как float[] храни, нахуй
>>500579 интересно, как такое на юньке вообще сделать. недавно видел ассет про физику, где камни трескались под давлением колес. ассет про воду (с волнами на gpu) тоже видел. про сыпучие пески ничего кроме партиклов с коллайдером не видел. подозреваю, что как там реализовано - так и надо оставлять.
>>500582 лол ну почитай про marching cubes. вообще лучше пойди возьми готовое, пилить воксельный движок даже зная что делаешь это на добрые пол годика в лучшем случае. спизди какой-нибудь Voxel Farm или что-то в этом духе.
>>500583 я не слишком развивал тот проект, если он тебя интересует. сделал в нем эту фичу с тем что можно применять модификаторы к уже готовым картам и решил на этом остановится. и доделать уже важную фичу в моем сраном навмеше. на самом деле я могу весь тред засрать тут своими велосипедами. у меня накопилось много всякого забавного говна. на немножко. (а игр нет)
>>500579 В пример можно привести джпег формат, где одинаковые пиксели в блоке хранятся в виде начала блока, конца и самого значения. Но у тебя так майнкрафт получится.
>>500589 на самом деле это такой мастер-план. в самом начале я поставил цель "сделать процедурный мир с большим упором на ИИ" и не забил. как приделаю пару полезных фич к навмешу то вернусь к основной цели. этот микроскоп оказался очень полезным, им можно сваи забивать, не то что гвозди.
>>500598 пожалуй нет. не могу. так как большинство того что я реализовал имело под собой краткое описание из какой-нибудь статьи, а не какой-то огромный багаж знаний. но вообще если интересно то основная идея взята из этого текста http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/ там все приятно и с картинками. я просто приделал к этому нодовый редактор всяких там шумов и хуйни которые бы накладывались по маскам биом.
>>500599 неа, там ещё интересней чем может показаться. это процедурная анимация. я как-то почитал немного про то как сделана анимация в overgrowth и подумал что хуево что зайчик бегает только вперед-назад но не вбок. а как блендить такое? нужна какая-то хитрая интерполяция. ебанул бленд филд примерно как у меканима где в качестве ноды выступают 2 кривые - движение ноги вбок и в сторону (скриншот). сделал экспорт кривых с готовых анимаций, потягал их пол вечера. по земли стали елозить шарики. потом приделал на энной высоте жопу, к жопе небольшую инверсивную кинематику, стало похоже на ножки. потом чуть интересней - я стал высчитывать предполагаемую акселерацию исходя из текущего движения пятки и эта акселерация стала толкать пружинку под этой жопой. что и делает эти покачивания жопы вверх-вниз. у меня нет видео что там дальше. но дальше я сделал эти покручивания бедра в такт шагу, сделал множественную пружину где каждый следующий сегмент влияет на предидущий, чтобы типа жопа прыгала, но башка не прыгала так сильно. и на этом закончил. потратил наверно неделю на этот клевый прототип. решил что если в моем проекте будут шагающие танки то определенно воспользуюсь этой хуйней.
>>498593 (OP) есть тут кто юзает magica voxel? как центр модели(pivot point) настрить (передвинуть в центр объеката) в самом юнити нету инструмента,и в проге тоже. я заебался выражать через пустой объект,это как-то неправильно. помогите раку ебаному
>>500611 посмотри proBuilder (он нынче бесплатный), другие редакторы. сам я спокойно живу и без редактирования пайвотов, но кнопку "pivot to center" по одному из ассетов явственно помню.
>>500614 > я бы тоже жил,но у меня есть моделька машины,у которой должны крутиться колеса,а когда центр нихуя не в центре колеса они крутятся как земля вокруг солнца по орбите.вообще странно,что такого простого инструмента нет в юнити,типо есть pivot to center,однако он только в редакторе показывает нормально,когда речь доходит до вращения,он естественно сбивается помню делал игрушки на скирре и там была функция в редакторе
>>500626 ну у юнити куда не плюнь - везде что-то не так. посмотри, например, туторы по тряпочным материалам в юньке. или, например, "find reference in scene" есть в project, но нету в hierarchy. а еще как найти в иерархии все по произвольному коду - ну, конечно, написать свой скрипт. как кастомайзить хоткеи? написать свой скрипт. или вложенные префабы: мало того, что их нет, так еще и ссылка на под-префаб сохраняется при неведомом мне стечении обстоятельств. или поворот объекта внутри скейленного объекта приводит (не всегда) к искажению объекта, если оба рендерятся. меш-коллайдер в скейленном объекте пересчитывается (явно не на gpu) по 100мс, поиск по иерархии тоже при крайней необходимости, gc высвобождает драгоценные (нет) 20 метров за пару фреймов, от и до говеный ui ассет-стора и компиляция не работающая при включенном впн... быстро привыкаешь к этому говну и перестаешь его запоминать - а так в юньке на месте только самый базис. но есть и всякие удобные полу-документированные штуки (типа v и ctrl+shift+f).
>>500633 когда отправил вспомнил, что нет возможности выровнять объекты, уронить объекты (роняются только при dnd из префаба). затосковал по 95му ворду, где можно было кучу кнопок вывести на экран и мышкой перемещать их между панельками (вот тут бы юнитивый воркспейс реально пригодился). ну и вдогонку еще косячки в памяти всплыли. слои сохраняются на уровни юнити (а не проекта), слоев 32 штуки и не больше, скейл не меняет радиусы у лимп и партиклов. и на фидбек уважаемым разрабам юнити срать. но ты держись, в 2018й (не пробовал) случилось (ли) подкомпиливание только измененного кода и (смею надеяться) нас покинул кеш ошибок.
>>500551 >а без указки тебе даже готовые шаблоны не помогут игру сделать? Там из шаблонов только текстуры из гугла и модель человека из конструктора. Все остальное я делал сам, а ты просто завидуешь что не способен в такой уровень разработки. Вечный рисовальщик пикселей для аниме рогалика, даже жалко тебя становится.
Господа, начал ковырять ScriptableObject дабы хранить в нём предметы, то есть общую базу предметов, а также инвентарь игрока, содержимое лутабельных сундуков и так далее. Так вот, написал я класс Item, прописал там поля, конструкторы, все дела. Отдельным скриптом, наследованным от ScriptableObject, описал лист этих самых айтемов (ItemList, например), затем третьим скриптом я из этого ItemList создал asset-файл, который лежит себе в папке и хранит всё что я в него засуну. Как я понял, именно так это и работает. Так вот, всё оно хорошо, но возникает вопрос. Это мне что, под каждый список создавать такой asset-файл? Для списка игрока, для каждого ящика? А если у меня 100 ящиков, то это 100 таких скриптаблобджектов в папке будет? Я, конечно, догадываюсь что скорее всего так оно и есть, потому что ну а как ещё. Но как-то оно странно. Ну да, я могу через скрипт на ходу запихивать в списки из базы всё что душе угодно и пока обойтись одним файлом-базой, но в конце концов будет же возможность сохранения и где-то придётся их хранить.
>>500650 > другим скриптом через референс к этому ассету ты просто наполняешь инвентарь сундука Не, это понятно, я так это и делаю. И сундук так наполняю и инвентарь. Проблема в том, что когда я нажму "сохранить игру" когда-нибудь, то надо будет куда-нибудь его содержимое всё таки выгрузить из памяти. > Юзай json Ну вот, ещё одну новую хрень курить. Ну да ладно, пригодится. > редактировать скриптаблы в рантайме нельзя Да вроде можно. Во всяком случае в общую базу (единственный скриптабл что у меня пока есть) я в скрипте через конструктор могу добавлять новые айтемы.
>>500651 >Да вроде можно. Во всяком случае в общую базу (единственный скриптабл что у меня пока есть) я в скрипте через конструктор могу добавлять новые айтемы.
Сконпелируй и еще раз попробуй
>то надо будет куда-нибудь его содержимое всё таки выгрузить из памяти. в json
>Ну вот, ещё одну новую хрень курить. Ну да ладно, пригодится.
Там ничего сложного. Ты по сути сохраняешь класс на жесткий диск, со всеми его переменными
>>500652 > Сконпелируй и еще раз попробуй Попробовал, добавляется. Ну и да и хуй с ним, не важно. > Там ничего сложного. Ты по сути сохраняешь класс на жесткий диск, со всеми его переменными Окей, спасибо, гляну что это за дичь. Уже хочу разобраться с этим сраным инвентарём и забить хуй пилить игру дальше. Хотя хорошо что инвентарь оказался таким злоебучим, хоть что-то новое узнал.
>>500653 >Попробовал, добавляется А новые скриптаблы создаются? Я просто когда сам с ними знакомился, помню что на какой-то подводный камень наткнулся, и с тех пор редко их юзаю, в основном какие-нибудь настройки храню, которые игроку не нужны
>>500654 > А новые скриптаблы создаются? Ага. Я даже вот такую вот хуету написал чтоб ручками на каждый ящик свой файл не создавать. Чтоб по имени файла отдельный скриптабл был, откуда при загрузке подтягивать содержимое. Работает как нехуй. Но если json зайдёт, то это не пригодится.
>>500656 > Беру назад свое утверждение о необходимости использовать json Но тогда я правильно понял, что действительно под каждый ящик надо держать свой скриптабл?
>>500667 Да один класс захуевертить это и так понятно. Мне б список загнать. Можно, конечно, через цикл каждый элемент цикла загонять, но как потом его прочитать?
>>500672 Плагин это здорово, но разве "искаропки" json не хавает списки что ли? Если нет, то конечно придётся обмазываться плагином, но как-то это странно, я ж не многого прошу.
>>500675 Вот тут >>500666 на первом пике обычный класс с полями, на втором - список экземпляров этого класса. Я хочу этот список скормить в JSON, а он мне выдаёт null. А если скормить один экземпляр класса, а не список, то всё нормально.
Ананасы, посоветуйте статью с типсами по использованию платформо-зависимой компиляции. Дали на работке проект, а там пикрил. Ниразу жо этого не видел такого пиздеца, подключение библиотек и объявление переменных в зависимости от платформы. Я уже привык каждый раз спрашивать себя, когда чувствую возмущение по поводу чужой работы: "Мол, а может это ты петушок не шаришь?". Поэтому и прошу подсказок.
Проект собирали в последний раз под WebGL больше полугода назад, все работало, решили накатить обнову. И посадили за это дело меня джун-макака, до этого был чем то между Technical Artist и разработчиком, но разрабатывал только инструменты для таких же technical artist'ов. Никаких гитхабов и прочих систем контроля версий нету (пиздец а не галера) просто один проект под всевозможные платформы. Разумеется, это дерьмо выдает ошибки при попытке запустить в бравзере (abort(x) at error). Крч мне кажется, что это потому что какие библиотеки не зашились в проект и при попытке их вызвать происходит краш. Все это, разумеется из-за таких вот пре-процессинговых директив или нет?.
>>500735 > Проект собирали в последний раз под WebGL больше полугода назад, все работало, решили накатить обнову У меня под WenGL не компилится уже давно. Пару раз попытался разобраться в чём хуйня, а потом забил, всё равно только под форточки пишу. Ну а про платформенно зависимую компиляцию вроде прилично написано, покури, может чего найдёшь. Я эту хуету использую только чтоб держать editor-скрипты для создания скриптаблов в папке с остальными скриптами и чтоб компилятор не ругался при билде.
>>500739 >Я эту хуету использую только чтоб держать editor-скрипты Ну вот и я. А так, если надо под разные платформы какую-нибудь логику, то просто разные ветки. А по поводу объявления библиотек, так это вообще бред как по мне, фишка в том что линкер сам откинет те библы, которые не используются в случае чего. А по запросы "Unity platform dependent compilation" только уроки касательно синтаксиса по всей видимости для тех, кто читать не умеет, в официальном мануале все расписано. Вот и решил поинтересоваться у анона, а может и годный линк поймать.
Спасибо тому ананасу, который посоветовал хранить общую базу предметов в скриптабле, а списки игрока/ящиков хуячить в файл через json. И остальным товарищам спасибо, не часто тут помогают советом, а не сразу хуй за щеку толкают. Пришлось немного покурить эту тему, но по итогу это такое удобное говно, что я себе уже несколько ментальных пощёчин отвесил за то, что раньше в эту тему не залезал.
>>500758 А я пришел к тому, что вообще все данные храню в одном scriptableObject, который сериализую в json, когда надо сохраниться. Т.е. схема такая. При начале новой игры scriptable десериализуется из "пустого" json, который содержит некоторые начальные данные. В процессе игры монобехавиоры не содержат никаких данных, все данные хранятся в scriptable, монобехавиоры хранят ссылку на "свой" кусочек, модифицируя и зная только его. Когда надо сохраниться скриптабле сериализуется в файл, при загрузке десериализуется назад.
Дополнительный охуенный плюс - совершенно похуй на смену сцен, потому что сцена только рисует то, что находится в скриптабле.
Анон, вот какого дъявола? Это все ебаный РКН? Пару месяцев назад все было хорошо. Что делать-то с этим с соединением все в порядке? По треду бегло пробежал - не нашел подобной проблемы.
после полутора дней мучений с дополнительными спрайтами поверх в виде оверлея понял что это гиблая идея и решил попробовать шейдеры. знаю что это такое только теоретически и повтыкав в код шедйера нихера не понил, решил попробовать любезно предоставленный экспериментальный шейдер граф. после еще одного дня за тыканием окошек и рисованием линий начал приблизительно понимать что это за херня и даже получил нужный результат, но внезапно оказалось, что со спрайтрендерером он не дружит в принципе(ибо называет параметры рандомно выставляя наружу только описание, а тому нужны _MainTex и _Color, попытки, как было предложено на форуме, изменить параметры в дебаге привели к вылетам 3 из 5 раз. те 2 раза когда не вылетело - не сработало. пришлось вернуться к коду. благо понимания принципа осталось, вроде даже получилось то что я хочу ( снизу вверх - дефолтный спрайт, спрайт с узорной маской, спрайт со сплошной маской принципиально не отличающийся от просто задания цвета)
>>500771 Твоё кунг-фу по описанию пока сильнее моего я даже не всё понял, хуёво быть мной, потому как я только-только ворвался в это дерьмо, но ты лишний раз подтвердил что это довольно полезная дичь.
>>498593 (OP) Подскажите, как можно "Добавить текстуру в текстуру", желательно с альфа-каналом. Не совместить два полигона с разными текстурами, а именно изменить существующую текстуру, смешав ей с другой по заданным координатам. Я знаю как это сделать попиксельно через скрипты, но это слишком медленно. Есть быстрый способ?
>>500846 >придётся изучать шейдеры, чтобы делать что то нестандартное. это не так сложно как кажется. для эксперимента может поставить ShaderGraph + LightweightRenderPipeline(они еще слишком глючные для реального использования) в отдельном проекте. там удобно визуально рисовать шейдеры и уже понимая что происходит переводить в код.
>>501019 первый варинт был 3д он мог в расстановку тайлов расстановку мехов движение мехов но так как в моделинге я ноль и хоть и смог в блендере сделать хекс, то двигать кубик вместо меха стало скучно. а найти спрайты мехов оказалось куда проще чем вменяемые модельки
Подскажите нубу. Хочу ИИ сделать, что бы он армиями управлял в стратежке, пикрил. Хз, как делать, вообще ничего не знаю.
У армий, в принципи, могут быть следующие задачи: -консолидировать армии -уничтожать армии противника -захватывать провинции -гонять повстанцев -пока все
Парни, поясните за ассетбандлы, пожалуйста. До того, как столкнулся с нуждой импортировать модели, я банально брал папку ресурсов и создавал на компе пользователя её копию. Если добавить туда новые файлы, то игра их тоже как бы видит. Во время игры я либо подгружаю с компа файлы, либо из внутренней папки ресурсов, если запрещена подгрузка. Ну, логика понятная - соответствие папок внутренних и внешних. А с ассетбандлами как это работает? Создаётся AssetBundles папка, и только из неё их можно загрузить? Оно совмещается с папкой ресурсов как-то? Какая там иерархия вообще?
>>501072 Мне так-то нужно только модели импортировать постольку поскольку obj, как оказывается, без анимаций и костей импортируется. Ну, раз и модели импортировать таким методом, чому бы и не прикрутить обычные форматы таким образом как альтернативу. Спасибо за ссылку, покурим.
>>501078 Попробуй открыть любой obj блокнотом. Там банально список вертексов с увишками. Ты можешь это как меш импортировать в рантайме очень даже легко, но ни костей, ни анимаций не будет внутри. >>501072 >>501073 В общем, почитав, я ничего толкового не прочитал. Во-первых, юнити у меня старый (5.2 что-то там), ибо 32бита и нет возможности ничего поменять в этом плане Новые примочки мимо меня проходят, в общем. Будет ли работать такое? В папку ресурсов для эдитора положу ассетбандлы, дам им расширение читаемое (тхт, например), создам из этого бандл When you create your AssetBundle, save it as a .txt file. Then load it as a TextAsset, and create the AssetBundle with AssetBundle.CreateFromMemory( textAssetRef.bytes )., и будто подгружать это в рантайме как обычный бандл, но из папки ресурсов. В папке ресурсов у конечного пользователя делать всё таким же образом. Взлететь должно, думаю. Жуткий велосипед? Что я упустил из виду? Если юнити так и так бандлы читает тем же способом, что выше под спойлером, никакой разницы быть не должно, наверное?
>>501070 мне тоже интересно. при постановке задачи я бы учитывал: 1. важность задачи - оборона пекина важнее атаки на петропавловск камчатский... 2. расстояние до цели (+скорость) - ...катапульта из хабаровска рванет защищать столицу, но штурмующая рио-де-жанейро конница продолжит покорять далекие земли... 3. вероятность успешного исхода - ...чтобы базирующиеся в пекине лучники не целились (из окопов) по сверхзвуковым бомбардировщикам, а метнулись атаковать ближайший вражеский аэродром.
все три фактора - числа от 0 до 1 (расстояние от 1 до 0). имеем список задач. сначала его фильтруем: 1 и 3 должны быть больше 0.2. сравниваем две задачи по сумме 1 и 3. если сумма отличается больше чем на 30% - берем лучшую задачу. если сумма примерно одинаковая - берем цель поближе. числа не надо делать одинаковыми на всю программу: хочешь безбашенную и самонадеянную нигерию - поставь ей x3 модификатор успешности.
далее я бы ввел генералов. им необязательно быть юнитами на карте, могут быть невидимой абстракцией. юниты сами по себе не воюют, только по приказу от генералов. так вероятность успешного исхода может случиться адекватная. т.е. надо захватить хабаровск, защищенный катапультой. три лучника строем пробьют оборону, а три лучника приближающиеся по-очереди также по-очереди и передохнут. это и есть твое "консолидировать армии". плюс, у генерала есть запрос. если у него есть пять лучников, то генералу нужно их защитить от гипотетической конницы - ближайший город знает, что строить надо копейщиков, а не шестого лучника. так же, на уровне генерала ты можешь модифицировать важность задачи: первый генерал про оборону, второй про атаку. чем больше городов юнитов - тем больше генералов.
в атакующих генералах легко идти от задачи. надо захватить город, поблизости есть два атакующих генерала. у первого атакующего генерала вероятность 0.1, у второго атакующего 0.15, но в сумме у них 0.5. говорим первому идти ко второму, второму стоять и ждать. они встретились - перекидываем юниты от первого ко второму. второй идет в атаку. первый телепортируется в ближайший город с запросом initalUnit.
у обороняющихся генералов тоже можно от задачи. штаты напали на канаду: проебываем виннипег, чтобы отстоять оттаву.
т.е. имеем маршала (контроллер генералов), который формирует список целей. имеем генералов, которые знают вероятность успешности действий. имеем юнитов, которые ходят за генералами. если маршал молчит - генералы действуют по своему усмотрению. т.е. если у нас мирное время и ничего не меняется, генералы стоят в городах и пишут запросы на новых юнитов. а если чехия напала на словакию, маршал увольняет всех генералов обороны - все юниты идут в атаку. список целей строим (ситуацию) стоим из: вероятность выжить, вероятность победить. чем ценнее победа, тем более агрессивную страну получим. если цена у победы ноль, то ии не развяжет ни одной войны (швейцария).
>>501080 >Во-первых, юнити у меня старый (5.2 что-то там), ибо 32бита и нет возможности ничего поменять в этом плане Новые примочки мимо меня проходят, в общем.
Это тупик же. У меня подержаный Lenovo X230 под геймдев, да и то с Win10 64-bit
>>501091 Нормальнааа. Чем ниже характеристики у твоего компа, тем гарантированнее игра будет лучше идти на более сильных компах пользователей. Я ж не 2д платформер делаю, а файрэмблемклон, тут много оперативы и видюхи не надо.
Ребзя, короче вот что, приходят ордера по вебсокету, нужно передать данные в другой скрипт (оредрбук), вот думаю сделать это на евентах. Но а что если оредруков будет тысяча, а данные предназначены только для одного? Триггерить 1к рассылку и столько же IFэов это пиздец, ведь я не знаю для какого именно предназначено. А что если передавать в контроллер ордербуков какой ордер пришел, а там уже держать словарь с 1к оредрбуков, дергать нужный, и передавать ему, а? В этом случае хуита с перебором. Ордербука всего два, и по сути похуй на производительность, но интересно как правильно делать, где баланс между производетльностью и лапшой в говнокоде. Второй вариант больше нравится, так как общение происходит только между контроллерами (скриптами, которые управляют другими скриптами/геймобжектами, содержат данные котоыре возможно в сей момент визуализировать не надо)
>>500606 не секрет. медленно но верно приближаюсь к своему тридцатнику. увлекаюсь всем этим наверно лет пять.
>>500649 но зачем? база предметов в скриптабл обжекте это база референсов на ресурсы. сами предметы можно сериализовать любым сраным методом. просто предмет должен содержать в себе поле "чертеж меня номер такой-то" и когда ты говоришь "хочу чтобы этот предмет появился" ты смотришь какой у него чертеж в базе данных, а потом суешь статы этого предмета в то что заспавнилось. ресурсы игры отдельно, предметы отдельно.
>>500579 >>500579 >Как лучше хранить динамически генерируемый разрушаемый ландшафт? Планируется физика жидкости и сыпучих материалов. В текстуре жи
>>500582 >Планета с гравитацией. Изменение ландшафта как в Astroneer, при этом "висячие в воздухе" воксели падают под воздействием гравитации. Тысячи людей это делали и не доделали Хочешь, сурцы мои посмотри https://github.com/Nashet/Interactive-Erosion
>>500598 >Может можешь посоветоваит какой-нибудь литературы напрямую или косвенно связанную с геймдевом (процедурные генерации там, всякое такое) Весь интернет этим завален, просто погугли. Если инглишь знаешь, конечно.
Анон, есть контроллер с rigidbody и capsuleCollider. В коллайдере все настройки дефолтные. Если упираюсь в наклоненное препятствие и продолжаю жать кнопку движения вперед происходит первый пик. Почему так?
Подскажите с анимациями. Тренируюсь на кубах, сделал анимацию скачков (за 60 фреймов z с 0 до 1 и обратно в 0), всё норм, ибо от 0 до 0, а вот захотел анимацию поворота и даже как-то не знаю, что делать. Базовые туториалы скурил, но там не объясняется, как вообще эти значения изнутри аниматора с перемещением в координатах совмещать. Допустим, делаю анимацию поворота по z от 0 до 90 - в аниматоре при переходе к чему-либо 90 в последний момент в 0 обращается. Как мне не допущать разворота обратно? Ещё видел в каких-то видео, как использовали какое-то значение, выражающее, сколько моделька пройдёт игровых метров за время анимации, но в аниматоре я такого не нашёл.
Блет, как же я не люблю когда Юнити виснет. Ушел в бесконечный цикл - завис. Обпатился к несуществующей хуйне - завис. Это блять редактор для прототипов или что? Так сложно задетектить зависание и сказать об этом? Надо жи прощать ошибки пользователя..
>>501225 Если упростить вопрос, я хочу сделать анимацию поворота модельки. Что нужно в анимации сделать, чтобы при собственно повороте (скажем, при нажатии стрелки) поворот модельки был правильным и не сбрасывался? Вот у объекта проигрывается анимация, ок. В анимации координата Х прибавляет 100 на последнем фрейме. В окне просмотра аниматора Х сбрасывается до нуля. Если объект стоит на Х = 0, сбросится ли Х до нуля по окончанию анимации?
Имею сцену весом в 400 МБ даже в упакованном виде. Так мне говорит Asset Bundle Manager. Иерархии всё разложено по полочкам (пропы, хуёты, террейн). Каждая группа собрана чилдренами в "empty"
Получалось грузить сцену из бандла целиком. Теперь хочу по частям. То есть перетянуть с папку проекта, сделав из групп и подгрупп префабы. Их по частям запаковать в отдельные бандлы и грузить по логике появления (террейн, пропы, мобы).
Если у "контейнеров" (empty) координаты были (0,0,0), то так и спавнить.
Где я обосрусь с подливой? Грузить буду асинхронно.
>>501298 если у сцены есть ссылка на префаб - префаб грузится вместе со сценой. т.е. пока не загружен префаб - не загружена и сцена. но если тебе нужно 400мб прогрузить перед тем как что-то показать - то так и надо. сделай сцену "лоадинг" и грузи сначала лоадинг а после асинхронно грузи нужную сцену. и не забудь про небольшую дырку между лоадинг-сцена загрузилась и мы начали грузить следующую сцену (в плеймоде и закомпиленной игрухе лоад сцены ведет себя по-разному).
>>501301 Спасибо, анонче! Геймобжекты из иерархии, конечно, надо пидорнуть, если в планах их спантить.
У меня и есть (пока) сцена start, где тупо гуй с progressBar из слайдера. Сразу грузит бандл, показывая прогресс, и активирует из него сцену. Хотел бы и в самой сцене расставить триггеры, чтобы зашел, остановил время в игре, на панели показал, что что-то грузишь. Заспавнил, похерил панел, включил время и пошел дальше.
С дропбокса можно грузить по ссылке. А потренироваться можно и на локальном сервачке, я так думаю
есть 2 спрайта для подсветки юнитов. 1. обычный спрайт с кружочком, если юнит выбран - SetParent(unit, false), SetActive(true). все ок, перецепляется между юнитами как положено
2. спрайт с анимацией - вращающийся кружочек(по кадровая). то же самое, но при наведении (IPonterEnter - SetParent(unit, false), SetActive(true), IPointLeave - SetParent(uicontroller, false)m SetActive(false) и вот он появляется нормально только первый раз. ворлдкоординаты растут с каждым следующим прикреплением на тысячи, локальные остаются (0,0,0). крепится к правильному объекту(видно в иерархии). больше нигде этот объект не используется. в чем, мать его, проблема?
>>501424 Ты куда-то закидываешь System.IO.File (который тип, а не переменная). Скорее всего ты забыл System.IO.File.ReadAllText() или что там есть вообще, чтобы получить строку или что тебе надо.
>>498593 (OP) Пагни помогите. Как сделать чтобы ФПС контроллер не проваливался под текстуры на стыке генерируемых чанков. Если можно, то объясните попроще, а то я нуб.
>>501344 лол да ну брось полно игр с клевым ИИ. разве что на фоне этого раздела можно кого-то впечатлить.
после того как приделаю к навмешу возможность регистрировать в нем какой-то контент чтобы искать его через навмеш и пару фич с навигацией типа "ищи эту зону" то наверно вернусь к этому проекту. в прошлый раз я таки сделал чтобы этот клевый контролер для ИИ синхронизировался по сети. хотя конечно было бы здорово запилить какую-то форму гпу рэйкастинга.
могу ещё показать немного. ИИ клево бегает, прыгает и пригибается. и немножко более ранняя версия того контролера, но лучше видно че там ИИ думает.
>>501245 а ты не пиши бесконечные циклы. пиши чтобы оно само там делало эксепшен после дохуилиона итераций. на стадии написания прототипа бесконечный цикл это головная боль.
В сцене есть ИИ. Он ходит по локации случайным маршрутом. У персонажа есть фонарик, который можно включать и отключать. Как сделать так, чтобы при включении фонарика ИИ бежал на персонажа, а при выключении терял его и снова рандомно ходил по локации?
>>501450 Набираешь в гугле "game AI free without sms" и читаешь, читаешь, читаешь и выбираешь понравившуюся архитектуру. А можно просто на ифах сделать, стеной кода.
Поцоны, нужна помощь. Есть два скрипта которые должны добавлять всех входящих и выходящих из триггера врагов в List (скрин2), а также, удалять убитых врагов (скрин1) из Lista. Проблемы возникают именно с удалением мертвых врагов из списка. Как сделать чтоб эти дохлые пидарасы удалялись из моего списочка?
Аноны, нужна ваша помощь. Делаю платформер типа пикрил, где игрок по Y прыгает по платформам, есть несколько вопросов
1) Как делать нормальную генерацию, как в том же дудл джампе? У меня плеер либо не достаёт в какой-то момент до платформы, либо наоборот платформы слишком близко.
2) Как уничтожать все платформы которые не видит камера? То есть сгенерировал платформы вверх, игрок прыгает всё выше и выше, а те платформы что камера уже пролетела - удалять.
3) Хочу сделать механику прыжков такой же как и в DoodleJump, но что-то не догоняю как реализовать. В общем, у меня начинается уровень, игрок прыгает, пролетает через 2-3 платформы по Y во время прыжка, и затем улетает в ебеня со скоростью кометы. Как это исправить? То есть нужно сделать чтобы этот триггер не стакался (если игрок на платформе - AddForce.Impulse), после того как я пролечу через другие платформы, до тех пор пока не завершится анимация прыжка. Блять, я не знаю как это объяснить, просто запустите http://vseigru.net/igry-na-lovkost/21959-igra-dudl-dzhamp.html, и поймете что я имею в виду.
>>501481 Сам нахуй иди. Ты предлагаешь совсем ебанутый вариант с еблей в анальную жопу. С таким же успехом я могу отнимать 1 от enemy.Count, каждый раз, когда умирает враг.
Есть пассивный мультиплеер с клиент-серверной архитектурой, есть сверка состояния сумки у клиента с её состоянием в БД на сервере перед любым изменением (будь то покупка, продажа, дроп и т.д.). Если состояние сумки у клиента отличается от состояния в БД, то она синхронизируется с экземпляром из БД, после чего снова происходит попытка выполнить действие и только после успешно пройденной проверки на идентичность происходит запись результатов действия. Так вот, насколько это безопасно? Есть ли какие-нибудь советы по безопасному устройству архитектуры мультиплеера? На что ещё стоит обратить внимание по части защиты от взлома? Сама игра на unity (с#), сервер на php
>>501490 И кстати, анончик, раз уж у меня тут такой каминг аут, то глянь на мою только начатую боёвочку.
С интерфейсом всё понятно, его делать буду позже, а вот с концепцией не определился. Сначала думал сделать полностью безучастный динамичный файт, за которым было бы просто приятно наблюдать (с прыжками на критах, уворотами, блоками, кучей fx и т.д.), а интерес заключался бы в большом количестве пассивных веток умений => большое кол-во возможных вариантов настройки героя.
Но сейчас начал потихоньку сомневаться в целесообразности такого подхода, ведь пилю один, а значит баланс у большого кол-ва пассивных умений сделать не смогу. Да и по всем канонам надо бы игроку дать решать что-то в игре, иначе заскучает.
Интересно твоё мнение, анон! Стоит менять концепт файта или двигаться в этом направлении? Может быть у тебя есть свежие идеи?
>>501484 >>501486 Спасибо. А насчёт прыжков что? Как сделать чтобы прыжок не стакался от каждой платформы, через которую я пролетел? Чтобы персонаж всегда прыгал на одну и ту же высоту, за исключением каких-нибудь ускоряющих платформ, как в DoodleJump. Спасибо.
>>501492 Наверное, вещь хорошая, но я надеялся обойтись без нее для столь тривиальной задачи. На самом задал не тот вопрос изначально задал. Меня интересует 1) как лучше всего сравнить два объекта, например мертвый объект с каждым объектом из списка в данном случае 2) может ли колайдер одного и того же обьекта отличатся, если он получен из разных скриптов?
Снова взялся за старое, вернулся к тикерам. Для одного графика с жирными свечками вполне годно, но теперь нужны более точные и несколько штук друг на друга наложенные. Вот хуйнул 1800 линий, лагает. Не ну можно жить, но это хуйня, если ебануть два гарфика к примеру. В шейдеры не умею, но похоже это единственный выход?
>>501522 Ты ебобо? Иди читай про ивенты на хабре, это сейчас со списка удалить надо,.потом еще звук воспроизвести, очки в стату добавить понадобиться, и как ты это собрался делать без ивентов? Никак, пидор.
Хорошо, то что я тупой я понял. Давайте еще что-то новое о себе узнаю. Стало очевидно, что вся проблема, в том, что по какой-то причине, колайдер в списке отличается от колайдера, переданого в функцию RemoveEnemy, ибо фаза один срабатывает, фаза 2 срабатывает, фаза 3 нихуя не работает! Вопрос знатокам, в чём возможная причина сей оказии? инб4 ты тупой
>>501530 Спасибо, пидор на добром слове, я обязательно изучу данный материал, но хотелось бы здесь и сейчас понять в чём причина нежелания скрипта подчинятся моей магии. Я ведь уже засунул хуй, так стазать, нужно доебать эту тварь до конца, а не говорить, ой у меня не стоит, давай завтра там, давай я изучу ивенты, а потом будем ебатся и так далее
>>501545 в первом ты сам задаешь значение enemy внутри метода и тут же проверяешь. иными словами, у тебя написано: "x=2+2; if(x==4)" - всегда правду вернет, можешь if убрать. а во втором случае ты смотришь ранее присвоенное значение. x!=4 бывает по следующим причинами: "x=2+2" не случилось, случилось "x=3+3", случилось (enemy хранит последний) сначала "x=2+2" а потом "x=3+3".
>>501558 >>501561 Скрипт1 берет колайдер обьекта по вхождению в тригер, добавляет в список. Скрипт2 берет колайдер обьекта после того, как обьект потерят все hit points, вызывает функцию RemoveEnemy из скрипта1 и сравнивает эти два (на самом деле один) обьекта, Если обьекты идентичны, то обьект удаляется из списка. Но почему-то обьект не идентичен сам себе же.
Пдждите, а эвенты типа // rise event on day passed EventHandler handler = DayPassed; if (handler != null) { handler(World.Get, EventArgs.Empty); } они разве параллельно вызываются?
Аноны, помогите нубу в Unity. Подскажите, что можно использовать вместо AddForce.Impulse? Эта хуйня прибавляет силы каждый раз как я пролетаю через объект (или как-то ещё с ним взаимодействую), а мне нужно чтобы сила не прибавлялась. Пытался создать переменную со значением "5f", потом создать класс Vector2, а потом локальной переменной с полем "y" присвоить мою переменную со значением "5f", но так эта хуйня не работает вообще, а почему - не ебу. Что не так делаю?
>>501563 > на самом деле один ну тут или ты мне врешь, или я в https://msdn.microsoft.com/en-us/library/bsc2ak47%28v=vs.110%29.aspx что-то не понимаю. зачем ты проверяешь похожесть объектов? чтобы можно было удалить похожего врага? попробуй сравнение по ссылке (==) - сработает? хотя, не пробуй - если у тебя объект не похож на (якобы) самого себя, то это разные объекты. хотя, попробуй-таки.
>>501584 более того есть старая архитектурная проблема шарпа - все может пойти попизде если в процессе вызова эвентов кто-то отпишется от этого эвента или объект будет удален
>>501580 Зачем мне врать, если мне нужно разобраться в чем причина такого поведения, что бы в дальнейшем я мог решить эту проблему, эсли столкнусь с ней еще раз. Оператор == я первым делом еще использовал, еще до equals, результат тот же. > зачем ты проверяешь похожесть объектов? чтобы можно было удалить похожего врага?
Да, хочу проверять (после потери всего hp) есть ли такой обьект в списке (полученных объектов при попадании в триггер) и удалить его из этого самого списка. Но по какой-то причине объект (любой объект) при вхождении в тригер и при убийстве отличается. На самом деле, если бы небыл таким аутистом, уже забил бы и сделал другим путем, но я не могу, я должен понять почему этот объект сам себя не признает.
Еще раз вставляю вебм. Если рваг входит в триггер и "умирает", то количество врагов в списке не меняется, если враг входит и выходит за пределы триггера, то кольчество врагов в списке меняется, как и должно быть.
>>501610 Да нет же, берет коллайдер у обжекта и сравнивает со списком, а сравнивать объекты я решил для дебагинга. Коллайдер один на обьект. За лист ГО спасибо, если можно, поподробнее, если нет - сам найду.
>>501584 >Нет, они вызвываются синхронно. Внутри ивента лежит список функций, которые вызываются по очереди Т.е. сначала заканчивается выполнение одной функции в очереди и затем выполняется следующая функция в очереди?
>>501625 >Т.е. сначала заканчивается выполнение одной функции в очереди и затем выполняется следующая функция в очереди? да. упрощенно эвент это тупо список делегатов и при его вызове идет foreach(delegate in list)delegate();
>>501632 Да, я потом понял через пару минут о чём речь и даже немного покраснел. Я сделал всё так, но результат остался прежним. Скрипт врага, который передает gameObject в функцию RemoveEnemy https://ideone.com/OyC3Fl Скрипт коллайдера, колайдер является дочерним обьектом "игрока". https://ideone.com/aX3UkT
>>501637 в C#6+ есть кортежи Turple<T0,T1...> Turple<int, string> a; a.Item1 = 1;
в 7+ расширили до анонимных и анонимные rjhnt;b типа var a = (1, "test"); int b = a.Item1; public (int, string) foo() { return (1, ""); } (int a, string s) = foo();
если не ставил инкрементал компилер - объяви где нить темплейт struct <T, T1> Pair { public T Item1; public T1 Item2 } и юзай её
доска оживилась. сразу видно что лето. покажу рисование кругов вокруг сфер.
>>501448 а хуй знает че там у тебя. смотреть че там в его проекте не нравится фпс контролеру я конечно не буду. попробуй воспроизвести это в более маленьком масштабе. попробуй заимплементить свой фпс контролер с rigidbody в конце концов.
>>501450 лол ну если игрок у тебя один то сделай в каком-нибудь сраном синглтоне public static bool который бы говорил включен ли там в игруна фонарик. и обращайся из всех сраных мест туда.
>>501637 либо С#6+ либо сам себе ебани пару-тройку дженерик структов.
1) Как сделать смерть игрока если он падает с платформ на пустое пространство? Платформы генерятся вслед за камерой, а те что камера не видит - уничтожает. Короче говоря, у меня камера бежит по X, и в том месте где она - там генерятся платформы, а если игрок за камерой не успевает по платформам скакать - смерть. Так вот, как мне реализовать смерть игрока, если он попал в ту зону, где платформы уже уничтожены? Тут какой-то метод из юнити типа OnTrigger нужен или что?
2) Как сделать добавление очков единожды за платформу? То есть, чтобы очки начислялись за одно соприкосновение с платформой на каждую платформу. Вроде есть какой-то Once, но это вроде с анимациями связано. Но у меня прыжок это не анимация, а строка кода
>>501651 1. так же как и платформам. а на OnDestroy повесь запуск геймовера/респауна/что там тебе надо 2. ну например public ScorePlatform : MonoBehaviour { public int Score; private bool used = false;
public int GetScore() { int score = used ? 0 : Score; used = true return score; } }
и при регистрации приземления не Score = Score + 1; а Score +platform.GetComponent<ScorePlatform>().GetScore();
>>501665 Делаю скрипт, который записывает в список GameObject все обьекты с тегом врага. После этого атакую те самые записаные обьекты, когда они теряют хп, они должны передавать свой gameObject в функцию и вызывать ее. Функция находится в скрипте тригера, который соберает эти попавшие обьекты в тот самый список и если gameObject убитого врага содержится в списке, то удаляет его из него. Всё. Но по какой-то причине не делает этого. Из нового, то что GetInstanceID() у обьектов всётаки равный, значит обьект один и тот же для скрипта, но почему-то if (enemies.Contains(killedEnemy)) {enemies.Remove (killedEnemy);} не реагирует.
>>501678 По референцу тоже проверял, всё работает. Думаю единственным решением будет проверять на самом враге вошел ли он в триггер, и передавать gameObject врага в список только вот где его хранить и в этом же скрипте врага удалять себя из списка.
Я уже совсем близко подобрался к разгадке кода Да Винчи, но мне всё еще нужна помощь величайших умов игростроя. Выяснилось, что всё таки в листе id не соответствует ни убитому, ни вошедшему обьекту, кроме того цикл выдает сразу три разных id, а List.Count сообщает о том, что обьект в листе всего 1. Чё нахуй вообще происходит? Почему в листе сразу 3 id? Помогите, Христом Богом молю.
>>501711 Да, я пытаюсь удали GO из списка. Врага из сцены удаляю через Destroy. Но я не думаю, что проблема в этом, ибо даже если не убивать врага, а просто проверять лист во время вхождения врага в тригер, цикл по enemies уже выдает эти три enemy GetInstanceID.
>>501714 >>501720 Просто уточнял, ибо Destory превратить реф на объект в null. GetInstanceID должно быть уникально, я хз почему у тебя дупы, где-то в коде навреное что-то выполняется не раз и не два.
Cпециально выделил жирным. Каким хуем это должно работать у того дебила - я не ебу вообще. Что с префабом, что без префаба персонаж будет получать очки только с любой одной платформы в игре, будь это клон или оригинальный экземпляр, потому что присваивается метод из другого скрипта, а в этом методе значение равно int score = used ? 0 : theAmount;
Это будет работать точно так же, как если бы я написал ScorePlatform.theAmount = 0/40/1000/etc;
Соотвественно, я получу 0/40/1000 при соприкосновении с любой одной платформой в игре, от остальных я не получу ничего, потому что там =, а не +=.
>>501770 А причём тут это? Я говорил про Score = Score +platform.GetComponent<ScorePlatform>().GetScore();
Этом дерьмо ни при каком желании очки не будет прибавлять, потому что тут
Score = Score + метод
А в этом методе значение равно 0 или любому другому. А прибавляться ничего не будет, потому что used = true, а потом возвращаем этот score, которому присвоен used. То есть мы как бы говорим "получи очки единожды за игру".
А не работает потому что метод писался от балды, на скорую руку. Так оно работать не будет, потому что из-за used = true ничего прибавляться не будет, потому что никакой прибавки в методе и нет. Соответственно, если мы выпилим used = true - мы не получим значения из прошлой строчки (то есть значение будет 0).
Вот на примере:
int score = used ? 40 : theAmount; used = true; return score; В первой строке мы имеем значение "40", благодаря второй и третьей - мы его получаем ЕДИНОЖДЫ от любой платформы. Иными словами, нам нужна прибавка в методе. А её нет.
И если мы уберем вот эту хуйню "platform.GetComponent<ScorePlatform>().GetScore();" и поставим вместо неё значение, тогда очки будут прибавляться, но не так как нужно тому нубу.
Виновником всему этому - дебил, который этот метод писал. В методе должно быть +=, и проверка был ли игрок на этой платформе или нет. Вот и всё. А ваши костыли ебаные (которые вы создаёте с целью ШОБ ПОПРОЩЕ) работать не будут, потому что вы даже не проверяете как они будут работать.
>>501780 ты че несешь дубинушка? 1. Score в Score += метод это общий счет 2. Score в компоненте - это количество очков за платформу 3. used - метка использованния платформы. 4. и самое страшное Score и used в 2 и 3 индивидуальны для каждой платформы(я бы попытался тебе объяснить чрезвычайно сложные концепции типа и переменной, но это видимо слишком эдвансед тема)
Поясните нубу ебаному в Unity, как сделать проверку на то посещал ли я объект или нет? Ну, то есть был ли он задействован в игре. Испробовал уже кучу хуйни, и activeSelf, и "if(collision.gameobject == true)" - не работает нихуя.
>>501914 Тебе ООП или ДОД решение? По ООП тебе достаточно завести поле у обьекта, в котором записан счётчик твоих посещений. По ДОД тебе нужно завести синглтон, который хранит все свойства всех обьектов в файле. Но читает не весь файл, а только те данные, которые относятся к читаемому свойству. Иначе говоря, когда ты обратишься к ДОД-объекту за количеством посещений, контроллер прочитает в базе данных счётчики посещений всех-всех объектов, найдёт твой и выдаст тебе инфу. Удивительно, но эта хуйня на 0.15 секунды быстрее, чем поиск метода в ООП.
>>501937 Значит был ли вообще задействован объект в игре или нет. Если коллайдер/коллизия объекта не была задействована - сделать что-то, если была - вывести в дебаг что я уже это сделал. Так понятно?
Юнити-господа, как мне заинстанциировать объект в пределах двух линий по типу пикрилейтеда? Ограничения сверху и снизу - то хуйня, там всё норм. А вот слева и справа? Если с прямой линией всё понятно, то вот с наклонной - хуй знает.
>>501955 Сам с неё горел недавно. Кто-то советует закрыть вкладку сцены, мол, "камера" сцены тоже считается за камеру, кто-то ещё какую хуйню советовал. По итогу забил хуй и поставил пустой прямоугольный коллайдер по периметру камеры (ортогональной, понятное дело) и уничтожал объекты по OnTriggerExit
>>501960 Читал я это. Если запустить сцену, взять объект за оси и ручками гонять её за пределы сцены и обратно, то событие, которое прописано в OnBecameInvisible, работает как нехуй. А если запустить объект в свободный полёт, то он улетает за пределы камеры и пидорит в неведомые дали, даже не пытаясь чёто сделать после того как стал невидим.
>>501960 > When running in the editor, scene view cameras will also cause this function to be called Хех, значит правильно советуют > закрыть вкладку сцены, мол, "камера" сцены тоже считается за камеру
>>501956 вариант первый, простой. для трапеции с параллельными оси y нижней и верхней гранью 1. взять уравнения прямых(для этого нужны 2 точки прямой, например там где они пересекаются с отекающими прямыми снизу и сверху 2. испульзуя эти уравнения получить x координаты точек на прямой для заданного y искомой точки 3. проверить находится ли x точки между x координатами точек на прямой
вариант второй, для произвольного выпуклого многоугольника 1. получить уравнения прямой для каждой грани(нужны координаты углов строго по порядку) 2. подставить координаты точки в уравнение каждой грани и запомнить знак результата 3. если знак для всех граней (пропуская нули) одинаков - точка лежит внутре.
>>501956 У тебя всего 4 точки же. Возьми и заспавни в пределах 2 треугольников используя барицентрические координаты. (Когда стороны треугольника являются координатной осью). если хочешь какое-то хитрожопое распределение то вычисли площадь каждого треугольника и используй соотношение их площади для того чтобы узнать какой из двух выбрать для спавна.
Задался вопросом: а возможно ли обратное - в game view например скриптом создать куб (для примера) и сделать его видимым в scene view как постоянный объект?
>>501977>>501945 а хотя. тогда они кучковатся в центре будут. как насчет того чтобы найти края из этих 4 точек брать рандомную точку то дех пор пока она не будет находится в пределах одного из двух треугольников?
>>501985 >>501977 >>501956 а хотя лол погоди я подумал целых 5 минут так как проблема то клевая. смари, можно взять треугольник, сказать что 2 его стороны это оси обычной координатной плоскости. но одна её сторона наклонена. когда берешь рандомную координату, то если она выходит за пределы левого треугольника, то мы отражаем её координаты, чтобы они соответствовали координатам в правом треугольнике но как будто он левый. понял, да? мы по прежнему имеем квадратную координатную сетку, поэтому у нас не будет сраного распределения и координата всегда будет в пределах треугольника, поэтому не надо угадывать координату до тех пор пока она не появится в пределах треугольника.
интересно как эта хуйня называется, наверняка название есть.
Блядь, как же горит порой с этой ебучей юнити-хуюнити, и тупых макак которые над ней работают. Это вообще нормально? Создаю я такой публичную переменную bool, чекаю/анчекаю его в скрипте, внезапно вместо моих 10 очков мне прибавляется 20 очков за убийство врага. Как я это исправил, догадаетесь? Правильно, перезапуском Unity. Сука, в такие моменты я просто ненавижу эту парашу, и дебилов которые над ней работают. А если у меня будет большая игра, как я буду искать почему это говно так работает? Уёбки.
Есть вектор v. На его залупе весит меш. Надо вычислить, какое вращение приложить, чтобы залупа вектора тыкала в [0, 1, 0]
Поясню, чтобы было понятно. Меш = голова пидора. Вершинки сидят со смещением к его очку-пивоту. Пивот могу занулить, но голова как на палке сбоку. Хочу выстроить ее вертикально, чтобы сдвинуть ебало в очку, где ему и место.
Повторяю вопрос. Position обнулён на [0, 0, 0] и запарентин. Центр головы находится по центру коллайдера на ней. Этот вектор надо выправить параллельно [0,1,0].
>>501956 Пусть есть две прямые: AB и CD (левая и правая).
Есть два стула - алгоритм с тремя рандомами и с двумя и математикой. Все числа рандомные лежат в пределах от 0 до 1.
Алгоритм 1. Суть: находим случайную точку на АВ, потом на CD и случайную точку между ними.
1) Генеришь rnd1. 2) Находишь точку P на прямой AB с координатами: по Х: rnd1 (B_x - A_x) по Y: rnd1 (B_y - A_y) 3) Генеришь rnd2 4) Находишь точку E на прямой CD с координатами: по Х: rnd2 (D_x - C_x) по Y: rnd2 (D_y - C_y) 5) Теперь есть прямая PE. Генеришь rnd3 и находишь: X: rnd3 (E_x - P_x) Y: rnd3 (E_y - P_y) Готово вы восхитительны!
Алгоритм можно упростить если брать середину отрезка PE.
Алгоритм 2: обойдемся 2 рандомами, так как вообще говоря это дорогая функция. находим точку P, решаем уравнение для прямой BD, подставляем туда Y точки P и находим E_x. Теперь находим случайную точку по Х между Е и Р
1) Генеришь rnd1. 2) Находишь точку P на прямой AB с координатами: по Х: rnd1 (B_x - A_x) по Y: rnd1 (B_y - A_y) - это Y координата нашей будущей точки 3) Вспоминаешь уравнение прямой: y=kx+b; Работаем с прямой CD - находи k. k_DC = (D_y-C_y)/(D_x-C_x) 4) Находишь b_DC: b_DC = D_y - k_DC D_x 5) Из P_y = k_DC E_x + b_DC получаем: E_x = (P_y - b_DC) / k_DC 6) генерим rnd2 и находим координату по X: rnd2 * (E_x - P_x)
>>502001 ну и дополню, что везде можно сделать функцию в одну строчку если составить уравнения и посокращать всё. Я хз как часто тебе надо генерить точку между линиями. Если часто - второй алгоритм лучше так как рандом по умолчанию дольше сложения и деления несколькхи чисел
>>502005 Проблема не в этом. Предстать, как голова сидит на теде. У тела все меши просчитаны относительно к точке [0,0,0]
Теперь меш копируется, чтобы сделать её отдельной от тела (отстрелить к хуям нахуй блэть!). Её пивот так же останется там "внизу". То есть голова как на палке, если ее вращать. Анимация на неё более не распростаняется.
Мне эти головы по игре надо собирать, а они как на палках. Простое смещение их центра головы в [0, 0, 0] давало умеренно удовлетворительные результаты.и
Поэтому и хочу ту "палку", на которой голова, выстроить ВЕРТИКАЛЬНО, чтобы след.шагом сдвинуть меш к пивоту
Пойми, что если пидор лежал горизонтально, когда я ему отхуярил голову, то и меш головы будет висеть на "палке" (от пивота), висящей ГОРИЗОНТАЛЬНО.
Я их, сцука, навешиваю перед камерой, а они торчат в стороны. А надо выставить вертикально.
>>502009 эй это же весело! вот задают на форуме интересный вопрос, а хопа придумал ответ. а потом хопа и придумал ответ ещё лучше. и идея понравилась и хули бы и не заимплементить. получение рандомной точки на произвольном ограниченном пространстве звучит как что-то полезное!
>>502010 в чем твоя проблема лол схему нарисуй или скриншот покажи
о. поперло. вот так пару дней хуем покрутил и собрал клевую штучку. надо будет ебануть поиск пути который бы искал какую-то специфичную зону и заодно который бы искал путь за пределы какой-то специфичной зоны.
>>501292 >>501294 Продолжаю делать анимации. Приспособил под свои события пример из https://docs.unity3d.com/560/Documentation/Manual/nav-CouplingAnimationAndNavigation.html , но тут несколько проблем возникло. Для теста пока что использую вместо lookat как в примере transform.LookAt. Из-за этого анимации как-то дёргаются. В примере используют anim.SetLookAtPosition и anim.SetLookAtWeight во время OnAnimatorIK() -- правильно ли я понимаю, что это то же самое, что и я использую, только "дружелюбное" к анимациям? Так как двигаю кубы, то анимация у меня для прыжков, и с каждым прыжком из-за остановок с блендами высота куба немного набирается т.е. анимация прыжка не до конца проигрывается. Как нормальные люди такое решают? Первая мысль - разбить анимацию прыжка на взлёт и падение, и проигрывать падение когда значение высоты максимальное пока значение высоты не опустится до нужной позиции. Но я ж нуб, на словах описать легко, а как это воплощать в жизнь? Мне переменные высоты в аниматоре хранить как-то, снаружи их высчитывать или что?
>>502048 у меня зоны и до этого были, просто мало инструментария было для того чтобы их указывать. теперь вот захотел сделать побольше методов указывающих че где. и не за сто баксов а бесплатно. для всех бесплатно.
>>502172 бесплатная версия разве что грид ебанет. зачем оно? там конечно есть всякое говно вроде навигации по тому что ты там ручками сделаешь или совсем что-то смешное вроде навигации по точкам соединенным линиями, но все это баловство.
>Чего тебе-то не достаёт? много чего. кое что я и сам не заимплементил пока что. из того что есть у меня: чтения сплат мапа у террейна для указания стоимости пути отдельной генерации пути который чтобы преодолеть надо пригнутся генерации соединений с прыжками генерации укрытий а ещё в бесплатной версии нет локал авойденса насколько я помню.
я конечно могу ещё перечислить дохуилион всего что хотел бы видеть сверх этого. например возможности регистрировать что-то на навмеше чтобы искать это в достижимом пространстве учитывая стоимость перемещения. или ту фичу как у юнити с особыми зонами которые бы имели ссылку в навмеш из компонента и переключали его проходимость из компонента. или наоборот чтобы навмеш имел ссылку на этот компонент и тогда можно было бы получать путь, но с оговоркой "если хочешь пройти по этому пути то надо переключить хуйню в этом компоненте". тогда можно было бы сделать например чтобы ИИ сначала сходил вставил ключ, чтобы дверь открылась рядом. или какую-то форму гпу рэйкастинга в конце концов. все это здорово если хочется сделать какой-то клевый ИИ.
>>502178 вообще - хуй знает. я стремлюсь к своим идеалам. все мои идеи эволюционировали многократно по мере достижения новых высот. что-то где ИИ имел бы те-же возможности что и игрок и мог бы надрать ему жопу. но не за счет уменьшения возможностей игрока. в краткосрочной перспективе что-то где один игрок бы командовал болванчиками как например в маджести, а другие игроки пытались проникнуть к этому игроку на базу и нажать кнопку. в долгосрочной что-то с самостоятельным миром. например чтобы игрок слонялся по руинам а его преследовали терминаторы. чтобы они сами высылали подмогу, ломали стены, могли пользоваться предметами, обходили сбоку, пользовались укрытиями, имели цепь командования и вертолеты с прожекторами и десантом. и чтобы в траве могли прятаться во время боя. чтобы вот хопа потерял из вида терминатора, побежал в сторону где последний раз видел а он хопа нашел рядом густую траву по пояс, сел и сидит, проходиш мимо а он вскакивает и стреляет.
вообще мелкие прототипы половины этого я сделал, например чтобы ИИ пользовался предметами, цепь командования, укрытия. показывал видосики в треде. но чтобы сделать такое заебись определенно нужно иметь более крутой способ получения, хранения и применения информации о мире. как доделаю то что перечислил в том что хотел бы видеть то наверно вернусь к своим прототипам. хотя конечно много что можно ебануть сверх этого.
Чему у меня в редакоторе починился z-fighting а в webGL все равно пидорасит? настройки Quality одинаковые. Чинил через увеличение Z координаты. Там разве другая камера в webGL?
>>502267 Но гипотетически карта может быть объемной. Да и там в 3д все, хочется 3д. А поднимать выше я координату не хочется - и так видно что флаг не на своей плоскости находится а висит выше Алсо, вот демка, таки запилил юниты ходящие по карте, почти как у взрослых: https://nashet.github.io/Prosperity-Wars/WEBGL/index.html
>>502331 >сообщи Нет, я тогда мгновенно перекачусь с годота на говноюньку и запилю игру, и про HXGI никому не скажу, чтобы конкуренты не успели воспользоваться годнотой!
>>502380 >>502384 >>502392 Это потому что вы не гуглите. Такая проблема со многими англоязычными программами есть. Нужно использовать хотя бы одну комбинацию клавиш НА АНГЛИЙСКОЙ РАСКЛАДКЕ - ктрл+в, ктрл+с, любую - до любого другого действия. Тогда и только тогда комбинации клавиш будут работать. Как вариант - переключите стандартную раскладку клавиатуры на английскую, чтобы при открытии любой программы сразу английский работал. Японская раскладка тоже сойдёт. Любая латинице-базовая, т.е. иероглифы поддерживаются лучше, чем кириллица, лёл.
>>502317 >Но гипотетически карта может быть объемной. Когда она станет объемной твои надписи станут залезать под горы, потому что все буквы в одной плоскости. Для 3Д тебе придется другой способ рендера текста делать.
хитровопрос. допустим у нас есть лист с абстрактными классами который не сериализуется, но наполняется сериализованным говном когда происходит OnAfterDeserialize. а как отобразить его в инспекторе то? я конечно могу сделать CustomEditor для него и реализовать отображение элементов этого листа. но тогда я не могу воспользоваться CustomPropertyDrawer которые уже по человечески написаны для содержимого этого листа. как воспользоваться CustomPropertyDrawer для листа который не сериализуется?
>>498593 (OP) Наверняка многие из вас уже опустили руки, надеясь на то, что в России появится хоть один стоящий игровой проект от русских разработчиков. Не тут то было! Мы готовы поделиться с вами впечатлениями от игрового процесса действительно стоящего Российского онлайн шутера!
Один из действительно стоящих игровых проектов! Чего греха таить, ведь за все время мы не увидели ни одной действительно стоящей и хорошей игры от Российского игропрома. Это обидно и печально, а ведь русские программисты, считаются одними из самых лучших во всем мире. Но судя по всему не в игровой индустрии. Но теперь есть чем похвастаться, ведь еще в 2016 году, разработчики студии «Battlestate Games» из Санкт-Петербурга представили нам анонс одного из действительно добротных шутеров нашего поколения!
Побег из Таркова По-настоящему шедевральный по сравнению с остальными Российскими игровыми проектами шутер. На данный момент проходит закрытое бета-тестирование, но уже сейчас игра может похвастаться великолепной графикой и детально проработанными локациями. Вам предстоит погрузится в противостояние между двумя частными боевыми группировками. Действия игры проходят в вымышленном городе «Тарков». Разработчики довольно тщательно подошли к дизайну игровых локаций и боевого оружия. Игра была разработана на игровом движке «Unity 5», что безусловно дает ей колоссальное преимущество.
Crysis? Не, не слышал! Готовьтесь проникнуть в мир действительно потрясающей и реалистичной графики от Российской команды разработчиков. «Unity 5» наградил игру действительно потрясающими шейдерами и детальной проработкой игровых локаций. Картинка дает знать о себе уже в лобби когда нам предстоит выбрать игрока. Это вам не санитары подземелий!
Когда стоит ожидать даты выхода? Судя по всему, официальный выход из стадии бета тестирования состоится в 2019 году. Безусловно Российский игропром сможет гордиться новинкой от студии «Battlestate Games». Жаль, что подобные проекты выходят в России не так часто, как хотелось бы. Вы тоже так считаете? Тогда ставьте лайк!
>>502662 а я делаю. вообще, после вечера фрустрации и выражения недовольства ебаной сериализации юнити которую делали нелюди, я пришел к выводу. можно заняться той-же хуйнёй что делают эти мудаки. тоесть не делать наследование-хуедование, сделать один сраный тип, сунуть в него пару значений и значение из энама говорящее какого типа эта хуйня и рисовать его значения используя сраный свитч. но это просто ебаный цырк и я такое могу делать только потому что разница между наследниками это пара float
лол юнити что ты делаешь прекрати применил EditorGUI.PropertyField для Quaternion и юнити выдало мне эту хуйню. и тут то я узнал что у юнити нету человеческого метода рисовать в инспекторе кватернионы.
>>502687 >человеческого метода рисовать в инспекторе кватернионы Ты всегда можешь предложить свой инновационный метод рисования четырехмерных векторов.
>>502698 иновационный метод рисования четырехмерных векторов это ебануть все четыре оси в одну строчку, так-же как это происходит с Vector2 и Vector3. ну а для кватернионов могли бы уж сразу сделать рисовалку в eulerAngles. прямо как у трансформа в инспекторе. я, конечно, сделал. но задумался почему не сделали за меня.
>>502456 >какая раскладка загорается, RU, EN или JP? Только родная японская по дефолту. Никаких других клавиатур не ставил. В других "англоязычных" прогах (редакторы, Visual studio) такой хуйни не замечал.
Для справки: в японской винде латиница по дефолту. Для кракозябров надо переключать
Как я понял, у Unity существует два языка для реализации игровой логики: C# и UnityScript. На что будет проще перекатиться бывшему крестовику? Есть ли разница между этими двумя вариантами в плане производительности?
>>502748 >Сидит в своем манямирке за скриптовой решеткой >Думает, что другие должны в первый же день разбираться как он >Не понимает, что люди не сразу осваиваются с новыми вещами, потому что ничего кроме юнити не пробовал
Аноны, подскажите, как сделать фонарик? Без энергии, модельки. Просто свет, который можно, нажав на кнопку, включать и отключать. В интернете не нашёл.
>>502763 вешаешь лайт на персонажа, все для фонарика (включая "блик" лампы) у него есть. по нажатию кнопки включаешь/выключаешь. если >>502768 включаешь кнопкой и стартуешь короутину, которая через полсекунды выключает
>>502716 Я тоже с JP по дефолту сижу. Чтобы хуйни не было, первым делом при открытии моно ктрл+ц, ктрл+в, ктрл+с. После этого дела все комбинации работают, как надо. Нет, я не защищаю моно. Просто видел много программ, в которых не просто комбинации, клавиши просто не работают без предварительного танца с бубном. Ух, сколько я с Gauntlet игрой бодался
>>502806 собственно можно сделать сборку на любом .net языке и подлинковать её к юнити, но писать на C++.clr может только очень сильный извращенец. это же нереально стремный пиздец у которого с плюсами меньше общего чем у c#
Боги юнити, скажите вот такую вещь. Есть у меня в пространстве залупа, которую я через Vector3.MoveTowards двигаю к другой залупе. И всё вроде бы хорошо, но вот что заинтересовало. Я могу двигать её только с определённой скоростью. А можно ли без велосипедов задавать не скорость, а время? То есть, условно говоря, прописать "будь там-то через 2 секунды", а уже от этого оно само посчитает необходимую скорость.
что-то немного более практичное чем абстрактные манипуляции с навмешем. надо будет напильником обработать
>>502706 ха-ха. не первое лето я читаю подобные комментарии. время когда школьники активируются. чё покажешь?
>>502717 >Кватернион -не ротешник, а МЕРА вращения. че предлагаешь то? переименовать Rotation в Rotation Measure?
>>502730 чего на UE то не перекатишься? там тебе кресты. так то в юнити никому ничего кроме C# нахуй ненужно. можно подключать конечно свои библиотеки но это сомнительное удовольствие.
>>502812 воопшем-то только логику. собираешь в обычную дллку, поверх неё делаешь managed сборку(на любом .net языке) с прокси monobehaviour которые дергают функции из либы. учитывая что нормально встроенные типы передать в unmanaged либу не получится - то еще развлечение.
подозреваю то, о чем ты слышал - это il2cpp который переводит нетовский il в код на сях, который уже компилится в нативный для платформы, которые не поддерживают .net
Есть еще аддон за бабки, чтобы IES профили (характеристика реально существующей лампочки, можно качать на сайтах всяких филипсов и дженерал електриков) использовать:
>>502927 Можешь без корутины. Делаешь флоат, каждый тик апдейта прибавляешь к флоату тайм.дельтатайм, если флоат выше 0.5, то вырубаешь свой фонарик. При включении фонарик обнуляешь флоат, чтобы таймер сбрасывался.
>>502952 Это я знаю. Первое - поле, второе - свойство. Это всё заебись, только вот > И так и так это строка, которую я могу вертеть из других классов. Так в чём разница?
>>502918 Проперти - это как метод, только проперти. Ты можешь в get засунуть что хочешь, прямо как в метод. Допустим, get { а++; return a; } set { a = value; }, и каждый раз, как будешь требовать свою проперти, она будет увеличиваться на 1 Олсо, интерфейсы не принимают переменные, только проперти.
>>502918 первое - поле(field) второе - свойство(property) принципиальное отличие поле - это тупо переменная в классе. пропертя - это переменная и два метода - get и set т.е. public string name {get;set;} это тупо синтаксический сахар для private string _name; public string _get_name() {return _name;} public void _set_name(string value) { _name=value;} это открывает тебе 2 фичи 1. можешь написать свой сеттер/геттер например private int _n; public int n { get => _n; set => _n = value < 0 ? 0 : value; } 2. у геттера и сеттера свой уровень доступа, например ридонли свойство public int n {get; private set;}
в контексте юнити еще свойства не попадают в инспектор. приходится писать свой редактор.
>>502954 А быстрая запись get; set; просто быстрая запись, обычно тебе бы нужно было дополнительную переменную использовать, но с быстрой записью не надо.
>>502956 еще одна мелочь для валуе типов возвращается копия значения. соответственно полям структуры нельзя присваивать значения. например transform.position.x = 5 пошлет тебя нахуй, потому что Vector3 - структура а не класс.
>>502954 >>502955 Братишки, я это понимаю. Я почему и написал именно > {get; set;} То есть абсолютно пустые, без нихуя. Натолкнулся вот на такое в чужом коде и понять не могу - зачем? Почему просто как поле не обозначить? И да, интерфейсами там и не пахнет.
>>502959 у многих тупо привычка, ибо стиль программирования на шарпе предполагает свойства, некоторые фичи стандартной библиотеки(включая сериализацию и прочую привязку свойств к чему либо) завязаны на свойства, интерфейсы завязаны на свойства, ну и потом в случае необходимости автосвойство {get;set;} разворачиваяется по необходимости в просто свойство с кастомным геттером/сеттером.
кстати в 8.0 собираются добавить поля в интерфейсы.
>>503038 В смысле когда ты поворачиваешь колеса влево-вправо (стиринг), а не полное поступательное вращение вместе с колесом вокруг оси при езде? Потому как последнее вообще смысла не имеет.
>>503040 Коллайдер при привязке к кабине устанавливается по дефолту под 90 градусов. Вопрос не о повороте. Видно же на скрине что не по оси колеса коллайдер. И вот как это пофиксить.
>>502953 Модификацию через пропёрти можно, если надо, перехватить в субрутине. То есть класс может отслеживать, что в его пропёрти делают. Типо делаеть set {} и в нем проверяешь, что тебе лезит в очко. Ести неформат, то просто игноришь или выдаёшь обрабатываемое исключение
Если просто public, то любая хуемразь может модифицировать, и класс этого не заметит.
В серьёзнос прогроминге тебя обоссут да чисто public, вместо пропёрти. В юнети всем пох. Здесь игры делают
>>503061 зы. пока делал скрины, выпили инкрементал компилер для теста. таки без него юнити может только в C#6.0 сразу поотваливались conditional switch и анонимные кортежи.
и воопше разбаловались с#6 им мало мы тут год назад во всю на огрызке от C#4 писали, где даже инициализаторов свойств не было, а им блжад уже локальные функции подавай!
>>503067 Корутина - это тот же самый обычный метод, но который возвращает IEnumerator (и который должен съйилдить хотя бы раз). В апдейте вызывай, но убери её саму из апдейта.
>>503067 Все эти новомодные языки пиздецки раздисциплинировали кодеров. Вот в старом добром Паскале корутину нужно было бы описывать строго вначале хостовой рутины, перед блоком begin ... end; И это охуенно! Это дисциплина, не дающая кодеру стрелять себе в ногу.
Сцуко юнити такое юнити. Заметил, что OnPointerEnter регистрируется только для части юнита. Сначала подумал, что полгон колайдер хуево генерится(юниту рантайм выставляется спрайт а по спрайту создается колайдер), посмотрел - все ок, но для составного полигона событие срабатывает только для первого многоугольника. 2 часа тыкался пытаясь разобраться что за хуйня. В результате помогло удаление/добавление рейкастера. с теми же параметрами(там параметров то целых 2). хотя до этого менял второй параметр(макс количество проверок) во все стороны.
Пацаны, можно ли с помощью видеокарты и шейдеров распаралеливать вычисления. Есть массив из миллиона элементов, каждый нужно на свое место положить (timestamp), можно ли массив разбить на количество вычислительных блоков видеокарты, типа давайте парни разгребайте?
>>503166 лучше скажи че ты там делаешь, так как скорей всего ты маешься хуитой. так то да, можно. например смотри - я заимплементил хитрую растеризацию на гпу. но ты учитывай что перемещение данных на видеокарту и обратно само по себе требует время, так что если ты там собрался сотни мегабайт перемещать то я бы не советовал.
>>503145 слушай, ты какой-то отбитый. может все-же шарп сначала подучишь, туториалов там посмотришь?
>>503144 шутку про тролейбус из батона думаю мы все знаем.
>>503170 >так как скорей всего ты маешься хуитой Верно, вот есть такая хуйня, думал сделать расчет горизонтального объема торгов, 72 часа -300к элементов, 12 мб вес на харде, хз сколько в памяти. Пока просто интересуюсь, но в будущем, когда будет время и желание, хочется график как на пикрелейтед, с объемами и плавным ресайзом.
>>503180 ну такое то особо без проблем. ты только учитывай то совать и изменять информацию довольно легко, а вот объединять и вытаскивать довольно трудно. потому что все происходит одновременно и синхронизировать проблемно.
>>503184 лол где эта хуйня, какое-то время назад тут поднимался интересный вопрос про формирование процедурных linq запросов. смотри как клево! ух! linq - благо! но вообще что за хуйню ты понаписал то? чейто?
>>503188 >но вообще что за хуйню ты понаписал то? чейто? поиск пути для робадов. ранее использовал тупо дейкстру(ибо надо было чего дебажить и нужны все доступные клетки для подсветки) теперь дошел уже до реальной реализации а в ней проблема с тем, что на поворот робада тоже тратятся очки движения. первое выражение рекурсивно получает все возможные пути с учетом поворотов, второе из этого списка отсеивает только самые короткие.
Сап, никто кастомные едиторы для интерфейсов или листов интерфейсов не писал? Если есть у кого, или сцылочки на подходящие статейки - кидайте, с меня - как всегда
>>503184 >var list = run_list.Select(i => i.coord).Distinct().Select(coord => new path_target{..}).ToList(); Да ты охуел. Мозг же сломаешь от количества точек.
>>503290 > чтобы перемещался не сам объект, а только его камера Если в этом вашем юнити есть локальные координаты, то тебе надо двигать локальные координаты камеры, которые локальны относительно родительского объекта.
Пытаюсь реализовать перемещение камеры без поворота самого объекта. Почему-то хоть я и указываю локальные координаты, камера не поворачивается в родительском объекте, а поворачивает сам родительский объект. Аноны, вы знаете причину?
>>503498 linq не предназначен для выскогопроизводительного кода игр, тупая ты свинораха, это для продакшена с большими тимами где читабельность важна и кодомакаки меняются каждый день. >linq >в играх >с реал-тайм бюджетом в 16ms
Впрочем, если ты делаешь говноВН или ты YandereDev (ему персонально можно) - тогда похуй, соси
какую клевую хуйню сделал. возможность добавлять зоны не из словарика. зоны теперь могут содержать в себе обжекты и возвращают их при поиске пути через них. агент сначала ломится к зеленому квадрату, видит что у него на пути какая-то хуйня, а хуйня ссылается на координату кнопки. когда агент заходит на кнопку то она переключает bool внутри обжекта который референсится при поиске пути. и тогда агент хопа и понимает что ему можно ходить по синей зоне и идет к зеленому квадрату. абстрактненько. можно ведь любую хуиту сунуть которая будет появляться только при поиске пути через конкретно это место.
>>503190 лол интересно как ты дебажиш такие конструкции когда что-то идет не так. реализовал бы нормально, с heap и прочим говном.
>>498593 (OP) Поцоны, хочу сделать управление на босе, чтоб игрок мог бегать(скользить) только вокруг оси боса. Но с одним условием, чтоб после того, как я отжимаю кнопки управления, игрок еще немного скользил по поверхности по этой же оси, собственно по этому RotateAround мне не подходит. Подскажите как такое реализовать?
>>503541 Возможно по формуле (x-a)^2 + (y-b)^2 = r^2 можно высчитывать местоположение игрока. А инерцию наверное надо реализовать через определение ускорения игрока на момент отжатия кнопки и сделать передвижение по этому ускорению так, чтобы оно плавно стремилось к нулю.
>>503626 ой не тот хоткей двач зачем ты так. продолжение: прибавь к радианам сколько там тебе надо. получи вектор обратно: Vector2(Mathf.Cos(radian), Mathf.Sin(radian)) экзампл надо?
>>503472 1000 и один способ сделать "по-другому", столкнувшись с юнитевскими багами. Понятное дело, что в здравом уме не стоит юзать юнет, а если хочешь гибкости, то сразу качаешь тмПро. Просто такой подход, "не нравится что-то дефолтное, качаешь ассет или пишешь своё". Мне норм.
Пишу стратегию. Собираюсь сделать возможность выделять юниты мышкой. Я сделал эту функцию, но я не знаю каким образом ее отрисовывать. Создавать объект и рендерить что ли под область мышки?
Кто-нибудь мне объяснит наконец-таки человеческим языком как исправить регулярно выплывающие ошибки в консоли "Refresh case sensivity failure" связаную с .meta файлами? Что за ? Что хочет от меня этот Юнити, что ему не нравится? Что на семерке, что на десятке одинаково парит мозги этой темой. В гугле ответы по этой теме какие-то унылые, не хачу такие. Хочу послушать вас.
>>504415 ты добавляешь левые файлы. (например винда добавляет Thumbs.db если в папке есть картинки) юнити создает к ним мету. потом левые файлы удаляются/меняются, юнити проебывает метаданные и начинает нести хуйню.
Шоу "ебанутое поведение Юнити" снова в эфире! Функция UnloadSceneAsync может вернуть null (что в документации не сказано!) и из за этого говна мене прямо по середине выходных надо срочно ехать час в офис заниматься билдами в аппстор потом что дедлайн уже вот сегодня. Вместо того чтобы бухать как все нормальные люди.
Как сделать свой сорт оф логгер в игре выводить сообщение что хуйня нейм началась Но тут вопрсоа два, первый это как сделать для юнити обжектов, второй как выводить из класса без наследования от монгобихейвор?
>>504522 Юнити безальтернативная, увы. Наличие возможности например купить готовые сплайны с редактором перевешивают все недостатки с точки зрения бизнеса. Я вообще год за Cocos2D в конторе топлю, уеч слишком велик для наших говноигрулек.
>>504559 Можно подумать, у тебя кокос не будет хуйню делать. У меня, кстати, юнька работает отлично, все косяки, которые встречались, были только из-за моего кривого кода.
>>504563 Я хотя бы могу узнать что именно он делает, а не работать с недокументированным чёрным ящиком. Ты не представляешь как в уече помогает доступ к исходному коду. Возникает вопрос - смотришь код - вопрос решается. > У меня, кстати, юнька работает отлично, все косяки, которые встречались, были только из-за моего кривого кода. Ну это пока. До тех пор пока ты не наткнулся на ещё одну функцию что ведёт себя не так как указано в документации.
>>504535 > Синглетон Буээээ.... Сильное связывание в своём худшем проявлении. Прячешь логгер за интерфейсом и инжектишь его через DI. >>504533 Debug.Log* не требует вызова из монобехевиора исключительно.
>>504641 Мальчик, ты вообще в курсе что это просто банальная прослойка между .NET и нативным кодом? И что UnloadSceneAsync уходит прямо в нативный код? Разумеется не в курсе, иначе бы не гнал хуйню.
Анон, у меня есть класс Team в нем Enam TeamList и переменная TeamList teamList. Есть еще класс Unit и он должен знать какой команде принадлежит, и в зависимости от значения teamList по разному реагировать. Сначала подумал что у юнита может быть свой список команд и переменная в которой хранится значение его принадлежности , но как оказалось их нельзя сравнить, как это решить?
>>504736 так и сравнивать public class A { public enum E { e1, e2} } public class B { public A.E e; public void Foo(){ if(e == A.E.e1) do_something(); else if(e == A.E.e2) do_somthing_other();} }
>>504780 Раньше проходил какой-то тутор аля "СДЕЛАЙ ШУТЕР И СТАНЬ ОЛОЛО ГЕЙМДЕВЕЛОПЕРОМ С БОРОДОЙ С НУЛЯ", но как-то не особо пошло. Хочу в этот раз хорошо усвоить все основы и не торопиться, благо время есть.
Здарова, бандиты! Начал вкатываться в моделирование, хотел бы уточнить, сколько примерно faces, на одном экране, может вывести на 50-60 фпс современный нищий Xiaomi, ну например снапдрагон 430?
>>505113 ах хоткеи двача интересно как их отключить лучше бы капча была делал чтобы из текущей сцены сохранялся массив геймобжектов в скриптабл обжект. получился хуй. но лол юнити мне пытается что-то сказать и я не совсем понимаю что
>>505245 лол да знаю я что он неправильный. на самом деле он правильный. он имеет тип геймобжекта и суется в него геймобжект и я его обратно получаю. но сериализацию оно разумеется не пережвает. просто этот обьект находится в проекте, а то что я пытаюсь в него сунуть находится в сцене. а юнити такое не делает.
Хуйнул примитивный логер для вывода сообщений, надо же смотреть когда с базы дозагрузится говно. Логер устрен элементарно, статическую функцию накидываю сообщений в лист, апдейтом лист обрабатывается. Ну норм вроде, а вот только как быть с несколькими потоками. Ну как обычно первое что в голвоу пришло это скидывать сообщения в потокобезопасный мешок и дерьгать оттуда. Может быть это неправильно?
Анон подскажи что нужно делать. Создал простенький шутер с мультиплеером на uNet, потестил на локалке, вроде все нормально работает. Что нужно сделать чтобы я мог хостить, а ко мне могли подключатся без локалки/хамачи, т.е. по IP? Кстати статический ip провайдер мне уже выдал
Покидайте идей как сделать реестр инстансов компонентов, ну или префабов чтобы можно было их в массиве перебирать. Причём нужно создавать несколько реестров для разных типов объектов (например разных типов юнитов). FindObjectofType юзать не хочу так как он медленный. Вот если бы кеширование к нему прикрутить.
>>505673 Через Threading, с помощью Threadpool. На самом деле всего один поток пока что, который либо постепенно пишет в базу чтоб не превышать рейтлимит, либо извлекает пару лямов позиций. Я вот хз что будет если приложение снять через диспетчер, поток тоже умрет?
Help, намутил апк - на xiaomi с 8 ядерным хз чем и андроидом 8.1, запускается норм. На Sony с arm64 Snapdragon 835 MSM8998 под андроидом 8,0, не запускается, сразу ошибка. В настройках поставил галку на arm64, всё обновил - и Юнити от 12.10.2018 и в андроид студии все инструменты обновил и джаву. в гугле ответы только от 2017го года, где обещают завести поддержку arm64, а в нынещней юнити оно уже есть но не робит. ПОМОХИТЕ!!!
Прошлый тред:
Официальный сайт: 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