24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
Планирую запилить пару-тройку статей по кодингу на юнити. Какие темы анонам интересны? Когда-то заебал всех ховербордами, вроде, анону тема интересна была.
>>277267 >>277297 К сожалению, моя сетка это и есть грабли и велосипеды. Так как дефолтная сетка юнити это "точка-точка". По идее, можно поднять где-нибудь юнити и держать всегда включенной в качестве сервера, но это изврат. Но да, точка-точка через юнити это очень хорошо и удобно, ведь не нужен дополнительный сервер. Но увы и ах, сам этой темой особо не интересовался, так что и рассказать мне об этом нехуй.
>HLAPI + своё самописное решение Только если купишь сорцы юнити. У меня таких денег нет.
>>277358 Меня не общая архитектура юнити интересует и расположение окошек. Меня интересует структура проекта, как сцены грузить, когда, как инпут по-уму сделать, графоний как учесть, рамеры экрана, локализацию как заложить, где логику аи делать.
>>277349 Ну хуууй знает. Пожалуй создам девлог в виде серии туториалов, опенворлд с авторитарным сервером или менеджер посёлка в воксельном мирке. Или не буду строить из себя гуру, заткну ебало и съебу нахуй.
>>277356 Предусмотрели и они это продают, как там на пике и сказано. Мне, честно говоря, не очень интересно покупать у них сервер ради того, чтобы пользоваться их высокоуровневым апи.
>как инпут по-уму сделать Вот с инпутами в юнити пизда. Больно смотреть на проверку кнопок в апдейте, лол. И, по большей части, это из-за политики, что всё должно работать везде и билд на иос и пк отличается только в выборе таргет платформ. Можешь посмотреть на стандартный ассет "кроссплатформ инпут контроллер". Событий на инпут нет, точнее, у тебя нет событий а-ля "button w keydown", в лучшем случае мы сами можем создать скрипт, который будет проверять нужные нам кнопки и уже из него запрашивать состояние кнопок. Как в кроссплатформ инпуте, но только с целевой платформой. Ну, конечно, поверх этого можно и события прикрутить, только нахуя.
Меня с инпутом корежит что в каком-то префабе , в глубине компонентов висит скрипт в котором что-то в апдейте по инпуту делается и отдебажить это иногда заебательно или надо туда передать кучи левой инфы.
>в котором что-то в апдейте по инпуту делается Инпут это бул, так что ты смело можешь заменить его на любой свой бул и подвесить его сеттер на гуикнопку.
>>278104 Там же даже картиночки уже добавлены, всё разжёвано. В принципе, это не туториал по C# или юнити апи, если я начну пояснять, что такое мешфильтер, то урок растянется на сорок томов. Я хуй знает, начало там всё пояснено, а дальше только переиспользование того же кода. Ну не надо, так не надо.
я знаю мне тут точно ответят такая фигня в двух последних играх на юнити, фпс нет, видяха не раскачегаривается, частоты как в простое, 324Mhz может установить чего надо
Пацыки, скажите вот что, допустим у нас есть много псин, наследуемых от архипсины, нужно чтоб каждая гавкала по разному, мы просто каждому наследнику подключаем интерфейс и уже реализуем гавканье по разному, а абстрактный класс нужен когда у нас есть вообще разные мутанты нахуй, у которых как раз только общее это лай, а внутренние кишки совсем разные, ибо нахуя абстрактный класс использовать там, где внутренности объектов совершенно одинаковые, верно? Или нихуя не верно?
>>278179 Лучше забудь о наследовании, особенно в Юнити. Используй компонентный подход и интерфейсы.
>>278179 >а внутренние кишки совсем разные Читай про принцип Барбары Лисков (но только не на вики, а где попроще написано). Если он нарушается, значит наследование у вас хуёвое и оно приведёт только к проблемам.
>>278179 Ну я вон выше писал про кубы, но никто не понял, там эта хуйня реализована ммаксимально гибко. Есть класс архикуба, от которого наследуются кубы. Методы этого класса виртуальные, так что можно от него наследоваться и перезаписывать всё. Это очень удобно, без разницы общее у нас только что-то одно или вообще всё.
>>278186 >Лучше забудь о наследовании, особенно в Юнити. Лол. Так там каждый компонент наследуется от MonoBehaviour. Если хочешь делать наследование - вперёд.
Что можно почитать о создании изометрических тайтловых игр типа первых двух фоллачей? Может есть какие-нибудь готовые шаблоны-бойлерплейты чтобы не велосипедить.
>>278191 Ну ты и бака, давай, попробуй наследовать еще что-то поверх монобехейвор. Ничего кроме интерфейсов ты не сможешь наследовать, потому что добро пожаловать в Шарп.
>>278219 >Ничего кроме интерфейсов ты не сможешь наследовать, потому что добро пожаловать в Шарп. С этого момента поподробнее. Наследую как полоумный, брат жив.
>>278226 Почти в каждом скрипте ты наследуешь от монобехейвора, чтобы иметь доступ к функциям движка. Но, чтобы иметь ещё одного родителя, тебе придется задействовать множественное наследование, которого в шарпе нет. Интерфейсы это исключения, их ты можешь реализовывать столько сколько захочешь.
И таки да, в комплектно ориентированном движке использовать наследование вместо композиции это моветон.
>>278219 Есть класс, наследуется от монобеха. От него наследуется ещё один. Всё работает. Виртуальные функции, массивы, флоаты. Сейчас вот добавил материал с перегрузкой. Другой вопрос, надо ли в наследуемых классах наследоваться от монобехавиор. Мне - нет. Собственно, интерфейсов в явном виде у меня вообще нет.
>>278244 Как-то это дико, тебе не кажется? Я наоборот, везде где нужна универсальность при доступе использую интерфейсы. Удобно, но юнити немного неадекватно с ними работает. Не отображает в инспекторе и функция GetComponent() их не находит, что меня огорчает, приходится использовать GetComponent<>(), а ему на вход string не передашь для поиска компонента.
Вот такой вопрос: Есть сцена Мар - там рисуется карта с локейшенами, на них можно тыкать, подгружаются сцены, то, се. Есть скрипт, который по ответу в диалоге анлочит локейшены. Скрипт вызывается в диалогах, диалоги происходят между персами в сцене напрмер TalknFight. Как их соединить? Тащить в диалог карту?
>>278327 Можешь на юнити делать же, хотя у него документация тоже примерно по такому же принципу устроена. Спасает стековерфлоу и форум юнити, там уже обо всем за тебя догадались, так что попробуй его, серьезно. Для твоего жанра юнити отлично подходит, камеру можно настроить в два щелчка под изометрию, будет что-то вроде транзистора.
>>278284 >финальный результат Суть в том, что это девлог в форме туториалов, финальный результат не далеко ушёл от конца первой портянки. Цель же - менеджер посёлка, в котором живут пезане. Управление пезанами непрямое, можно задавать задачи, которые они будут решать. В принципе, можно будет просто пройти по первым 3-4 статьям и взять себе один террейн для фпс\тпс кубача. Коменты там для анонов открыты, можете смело писать, что не понятно.
>>278293 Честно говоря, я не очень люблю всё это ооп, а вот к компонентам уже привык. Так что кому как удобнее, не вижу никакой дикости. Наоборот, всё это очень круто - есть масса возможных решений и каждый выбирает что-то своё.
>>278312 Можешь тащить карту. Можешь сделать поиск объекта, на котором карта и геткомпонент. Можешь сделать доступность локаций паблик статик и обращаться к ним вообще откуда угодно.
>>278383 В том то и вопрос, зачем это делать? В чем преимущество их на жестком диске хранить? Иди для чего это используется, я серьезно догнать не могу.
Анон, проясни за пиратство в Юнити. Я понимаю, что за модельки из крузиса получи пизды. Но что насчет, скажем, Shader Forge или Ultimate FPS? Как меня могут вычислить, если я их спирачу?
>>278378 Генерация вершинами полностью виртуальная. Можно наследоваться от куба и переписать вершины. Кубы? Можно рисовать хоть звёзды. Но на самом деле это больше для рамп сделано, ну и, может, ступенек. Не решил пока, какие части будут воксельные, а какие мешами. Хочется добавить меши маленьких домиков, персонажей, может, оружия и некоторой фурнитуры. Жаль, что нет артиста. Ещё будут полностью пустые кубы, без вершин и мешей. Это даже важнее рамп.
>>278387 У тебя есть в игре магазины, допустим. И в них один контент. Хотя лично я использую префабы со списками, тоже ничего.
>>278389 >Как меня могут вычислить, если я их спирачу? Могут, но всем похуй. Даже если ты продашь миллионы копий игры. Используй спираченную версию, а потом, если заработаешь, купи (не будь хуем). Я так делаю.
>>278697 Меш состоит из многоугольников, в том числе треугольников. В русском языке вместо английского термина "mesh", обычно используется "полигональная сетка".
>>278697 Меш может быть треугольником. Но чаще всего меш это дохуя-дохуя треугольников, скучкованных вместе. Тот же куб - каждая его грань это два треугольника.
Спрашивал в прошлом треде, тоже не ответили, есть системы звездные, содержит в себе корабли, но сами корабли содержат в себе звездную систему, этакая ссылочная петля. Ну вроде норм, сливаешь ссылку на корабль пушке, а она там уже смотрит в корабельной звездной системе, кто рядом, кого опускать а кого нет. Так делать нормально?
>>278747 >Так делать нормально? Вполне. Если тебя это сильно напрягает, то можешь ограничить работы со звёздной системой через интерфейсы, и аналогично работу с кораблями. Пилишь интерфейсы, с минимум методов и свойств, которые нужны и по ним передаёшь ссылку на нужные объекты.
>>278728 >Input.GetAxis() Те же яйца, только в профиль. В юнити есть система событий, допустим, такой код
Event e = Event.current; if (e.alt) if (Application.platform == RuntimePlatform.OSXEditor) Debug.Log("Option key was pressed"); else if (Application.platform == RuntimePlatform.WindowsEditor) Debug.Log("Alt Key was pressed!");
Кто-нибудь уже использовал новомодный Unity Multiplayer? Он лучше PUN?
Ещё меня их цены что-то настораживают. Получается, что нужно будет платить в несколько раз больше, чем в PUN. Платить в далларах, что с нашим курсом не очень приятно. Зато нет никаких ограничений. Платишь только за трафик.
>>278809 Не понял, что это за чушь и зачем ты это написал. Это события - лютое говнище, которое было написано для не менее уебищного immediate GUI юнити и исползуется только внутри движка для рисовки окошек.
>>278816 >события Какие это события лол. Наркоман штоле. Ты точно так-же дрочишь это все в апдейте. Этот Event используется затем, что у юнитивского ГУЯ есть несколько фаз (т.е. OnGUI вызывается несколько раз за фрейм), типа отрисовки, обработки ввода и т.д., и в этом глобальном классе хранится инфа для каждого такого состояния и это нужно чтобы отличать в OnGUI какая сейчас идет стадия.
Как написать метод, реагирующий на появление или исчезновение объекта из вида? Примерно представляю как это сделать расставив по углам тригеры, может есть метод из коробки?
Смотрите, допустим у моего меча есть меш коллайдер, который триггер. И при пересечении хитбокса врага OnTriggerEnter у него отнимается хэпэ. Но, допустим, меч очень быстрый, и проходит полукруг за 2 кадра, и иногда попадание не засчитывает, потому что в одном кадре меч еще не пересек, а в другом уже находится за хитбоксом. Это мне так кажется, точно я не знаю почему порой не засчитывает. Как решить эту проблему?
>>277225 (OP) Нюфаня итт. Допустим игра сделана на Юнити. Чья-то другая инди йоба. Могу ли я как-то открыть эту самую игру в Юнити? Ну там в скриптах покопаться, посмотреть на игру в Scene View.
Нужна помощь с шейдером. Сурфейс с этим шейдером должен плавно "затухать", постепенно становиться прозрачным при соприкосновении с другими поверхностями. Вроде бы просто нужна попиксельная проверка z-буфера, но я не знаю как делать в шейдере такиую проверку.
>>279113 Юнька на телефонах нормально работает, а ты тут про девайс. Ты чет перемудрил прост. И шейдер не самое хуевое, судя по всему. Без профайлера трудно сказать.
Пилю 2д, заметил такую проблему, персонаж прилипает к объектам с коллизией, т.е если прыгнуть, упереться в блок например и не отпускать клавишу прыжка, то персонаж просто застрянет и зависнет, как фиксить?
>>279192 Если есть коллизии справа или слева и не касаешься пола, добавляй отрицательной скорости по оси Y, пока не достанешь до пола. При желании можно сделать замедленное соскальзывание.
>>279325 Ты видео то смотрел? смотри там какой сценарий: 1 сцена один 2 сцена один|сцена два 3 сцена оди|сцена два 4 сцена од|сцена два 5 сцена о|сцена два 6 сцена |сцена два 7 сцена|сцена два 8 сцен|сцена два 9 сце|сцена два 10 сц|сцена два 11 с|сцена два 12 |сцена два 13 сцена два
Как мне это реализовать? При выгрузке следующей сцены предыдущая исчезает, а мне надо, чтобы не исчезала. Ты видео смотрел? Там предыдущая сцена не исчезает. То есть появляется вторая сцена и накрывает первую. Посмотри видео. Там сначало идет первая сцена потом сбоку сползает вторая, а первая не исчезает. Там на второй минуте в видео будет видно. Можно не смотреть все эти две минуты, а сразу кликнуть на две минуты. Вообще в видео есть тайм код, можешь открыть в новом окне, там будет видно переход, такой, что первая сцена не исчезает при появление второй. Ты не знаешь как такое реализовать? Ты не мог бы мне помочь? В звездных воинах такой переход был. Там сцена, сменяющая предыдущую накрывала ее сверху, как шырма. Понимаешь? Я видео прикрепил, где в игре ангри бердс по мотивом звездных войн реализован этот переход. Ты знаешь как реализовать его в юнити? Я в детстве игрался с видеоредактором там были переходы между кадрами, там был такой эффект. Как реализовать его в юнити? То есть один кадр сменялся другим, выплывающим сбоку или сверху или снизу или с другого бока или с другого низу. Только в юнити я не понял как так сделать. Может есть какой-то способ? Вот при загрузке новой сцены предыдущая удаляется. А мне так не надо, надо чтобы вторая какбы покрывала первую и только после покрытия удалялась. Понимаешь? Я искал видео на ютюбе с подобным эффектом. и нашел видео с гемплеем игры про злых птичек, там игра по мотивом фильма ззвездные войны, там на второй минуте видно как это происхдит я прикрепил видеотам на второй мниуте поежешь пмочоь? юнити помоги видо вторая минута сменакадров как в звездных воинахпожалуйста сценадва\сценаодин она наезжает напредыдущуюсуену тамтаккак ввоинах звездныхюнити
>>279377 Ну ты перед тем как пиздеть, посиди и подумай, как это реализовать. И если тебе лень, то блять не пизди. Вот придет какой-нибудь нормальный анон, увидет что на мой вопрос будто есть ответ и подумает что он на самом деле есть, а его блять нет.вот уже прошло три поста, где я поянсю тебе что ты обосрался, ты насрал и мажешь себя этим говном, а мой вопрос уже смлыло и гео никто не прочитает. Нахуя ы пиздишь про то что не знаешь? ты подума просто, прикинь варианты где есть две сцены где одна переходит в другую, как на видео. ты понимаешь что ты несешь хуйню ты нихуя не помог, ты только делаешь хуже смывая вопрос выше и выше . просто перестань мен отвечать. хватит пиздеь я уже поянл что ты нихуяя не знаешь какэ то реализовать . просто не пизди. ты блять вооб ще соображаешь? просто сяди и подумай вот есть у тебя сцена которыю ты решаешь не уничтожать есть другая сцена которая в этот момент появляется какого хуя объекты соо второй сцны должы блять покрывтаь первыеони все нахуй смешаются в сцене и блять никакого перехода не будет никакой ширмочик бялть. ты просто восроизведи этот пиздей в голове у себя. блять. просто возьме сцену блять чтобы тебе было проше с кубом. это сцена один и возьми с цену с шакрикм это врторая сцена. какого хуя чтобы могло проихзойти чтобы ониблять пресеклись блять изиди нахуй даун. ты просто ожешь понять. вот нахуя ты мне отвчешаешь? нахуя пиздеть про точто не знаешь просто не пизди заткнись нахуй. можешь не отвечать на мои вопросы? нахуя ты городишь про то что не знаешь каой нахуй ссценменеджер какие нахуй префабы ты пробовал подумать у себя в говлове воспроизвести? сколько раз тебе нужно повторять ты вообще игры делал когда-нибудь ты юнити запускал про что ты рассказваешь? ты думаешь что пишешь перестань мне отвечать если не знаешь что ответить
>>279386 Все, иди нахуй. >>279387 Это как если бы на вопрос как создать куб мне бы рассказывали как повернуть камеру, а когда я бы жаловался, что мне объесняют совершшенно нето, мне бы предъявляли чтобы думал сам. Тут один в один ситуация. Нахуй вы рассказываете эту парушу. Вы ширмачку мне сделайте.
>>279416 Вот это уже больше похоже на правду, извини за вчерашний неадекват. >>279441 Вот это уже пиздец как охуенно, все как мне нужно и уже готово, спасибо больше
>>278387 Затем, чтобы не писать километровые конфиги с редакторами. К примеру, у тебя есть йоба-скрипт, который двигает объект со скоростью float m_Speed = 5, а потом ты захотел, чтобы другой объект двигался со скоростью 3. Будешь писать другой скрипт или вообще загрузчик конфигов? (ScriptableObject мы не рассматриваем, только монобехи, только хардкор). Ну так вот, когда ты хардкодишь константы, как я показал выше, то с этого момента ты типичный байтоеб и лох, который дрочит себе в рот. А если ты делаешь так [SerializedField] float m_Speed и уже в редакторе настраиваешь какое значение скорости будет у объекта, ты переиспользуешь скриптец и можешь создавать сраную тучу объектов и все будут двигаться с разными скоростями.
В этом вся прелесть Unity как движка, то что тебе не надо городить велосипеды, как это делают плюсобляди у которых ВСЕ ЛУДШИ.
>>279491 Если например запилить редактор чего-нибудь (тайловых карт например) для работы в Editor'е, то необходимо, чтобы юнити сохранял все то, что ты наделаешь в этом редакторе. А засирать инспектор полями не предназначенными для ручной правки не лучшее решение.
>>279490 Долбоеб, вопрос был в том зачем сериализовать переменную и потом скрывать её в инспекторе. То что ты описал очевидно любому, даже самому тупому анону, севшему за хуюнити два дня назад.
>уже в редакторе настраиваешь >засирать инспектор полями не предназначенными для ручной правки не лучшее решение Если это один анон, то у него проблемы с его шизофренией, лол.
>>279509 >А засирать инспектор полями не предназначенными для ручной правки не лучшее решение. >Хуюнити по умолчанию сериализует все публичные переменные. И читаем мы как всегда жопой. >>279540 А если не один, то нет проблем. Нахуя ты это написал? Я так то просто мимо проходил.
>>279491 Инкапсуляцию нарушает епт, что хорошего, если все классы начнут видеть переменную, котрую надо редактировать только через редактор. Для этого и есть [SerializedField]. Он позволяет привейты делать доступными для редактора.
>>279588 Когда класс "враг" (как и другие классы) будет открыто иметь доступ к полю "деньги", класса "игрок", нельзя будет гарантировать, что в каком-то месте в проекте поле "деньги" не может изменится из-за каких-то обстоятельств. А это в свою очередь убивает и читаемость, и логичность кода.
>>279592 А если говорить о публичных полях в контексте Юнити? Зачем такие поля, которые задают поведение объекта, делать закрытыми? А если это ссылка на другой объект? И я уж молчу о тестах. Получается некий чёрный ящик, который откуда-то берёт значения для закрытых переменных.
Потом, какой смысл делать публичной переменную "Деньги" у скрипта игрока? Если ты хочешь задать начальное кол-во денег, то задаёшь публичную переменную int initialMoney, а после в методе Start задаёшь приватную переменную money, которая хранит актуальное кол-во денег: private void Start() { money = initialMoney; } Собственно, в этом смысл таких переменных в скриптах по большей части.
>>279592 >нельзя будет гарантировать, что в каком-то месте в проекте поле "деньги" не может изменится из-за каких-то обстоятельств. Они изменится, если только ты его изменишь. Ты совсем ебанутый штоли? Ты же не бизнес-приложение делаешь. В игрострое ООП дроч скорее мешает
>Устаревший ООП в движке с компонентной системой >Скрываем в редакторе переменные, доступные для редактирования только в редакторе >Не можем гарантировать, что делает наш код Ёбаные наркоманы.
>>279595 Есть три сценария, при которых это может произойти: 1) с твоим кодом работает другой человек 2) ты сел работать бухим 3) ты пишешь нечто большее, чем платформер, из-за чего возникает необходимость вводить тонны функционала, пробовать множество новых фичей и всего такого, и проверь мне, рано или поздно ты из лени возьмёшь да и изменишь публичное поле одного объекта из другого объекта. А потом забудешь на неделю. А потом охуеешь от мелкого бага и начнёшь искать его причину. А потом вдвойне охуеешь, из-за того что весь твой код превратился в вермишель и от архитектуры там одно слово, из-за чего проще все с нуля переписать чем рефакторить.
>>279597 1) таки компонентной подход есть развитие ооп, так что принципы ооп для него тоже справедливы. 2) в голос 3) это норма для начинающих разработчиков
>>279604 >Соблюдайте ооп, щенки. Нет. ООП не для игор. Для игр лучшем решением является не прятать переменные, а наоборот сделать их как можно открытее: использовать глобальные статики где только можно, все поля сделать публичными.
>>279613 Шейдер должен быть вертексным. Во фрагментную часть, естессна, надо передать вертекс. Потом надо захуярить текстуру глубины. _CameraDepthTexture это sampler2D_float, который надо объявить заранее.
>>279630 Ничего толстого. Со статиками в разы удобнее работать. Не нужно думать как передать ссылку на тот или иной объект. Всегда все под рукой в любом скрипте. И NullPointerException гораздо труднее словить с ними.
>>279619 >использовать глобальные статики где только можно, все поля сделать публичными. Спасибо что напомнил данное себе обещание никогда не качать игры местных юнитидебилов.
Анон, что не сильно сложное можно сделать ньюфагу? Сделал переписал пару учебных проектов с офф.сайта, а что делать дальше не знаю. платформеры идут нахой
>>279681 Я представляю как его реализовать в примитивном виде, просто спавнить пулю и двигать ее вперед, пока не среагирует коллайдер. А на персонажа вешать characterController. Нужно что нибудь новое, или какие то механики к этому приделать. я без фантазии >>279682 Это как новелла что ли? Для них можно и без движка обойтись.
>>279689 >Я представляю как его реализовать в примитивном виде Реализуй в нормальном виде. С разными видами оружия, с противниками, с инвентарём и переключением оружия, с возможностью смены надетого оружия и тому подобное. Пили Half-Life 3
>>279667 Причем тут коллеги на работе, полуебок? Я тебя про игру на юнити говорю. Например я в классе Game сделаю статки для игрока, для уровня, для всего и в любом скрипте я парой строк могу сделать все что угодно. Мне не надо городить хуйню и абстракции и придумать где что и как передевать, куда влаживать и т.д.
>>279629 От души, серьёзно. Пока раскурю шейдеры, пойму смысл этих магических рун, но в целом логику-то я понимаю, мне скорее нужно было именно синтаксис и предефайнед слова для замера глубины, потому что в документации нагуглить не получилось. Ещё раз, спасибо.
>>279737 Если всерьёз решил курить эту херню, загляни-ка в стандартные ассеты, в шейдер воды. А особенно посмотри на edgeBlendFactors и foam. Я, наверное, в процессе работы с кубизмом тоже буду делать воду с подобным шейдером, так что будет, что почитать, лол. Но до этого рановато.
>>279756 >Майнкрофт >>278362 >Цель же - менеджер посёлка, в котором живут пезане. Управление пезанами непрямое, можно задавать задачи, которые они будут решать. Воксельный колхоз. Анон назвал это майнкапф+маджести. Но я в него не играл, лол.
>>279777 Возможно. В них я тоже не играл. Но с ностальгией вспоминаю казачки и постараюсь добавить чуточку оттуда. С упором на сельское хозяйство, лол.
>>279779 Тыжпрограммист, ты должен понимать, что надо отделять логику от отображения. У меня есть структура, состоящая из вокселей. Которую я отображаю с помощью меша. По сути, невозможно сделать в юнити "тру-воксельную" графику, это всё равно будет куча треугольников и текстуры. Ну да, каждый куб можно залить одним цветом, чтоб графон стал как земля. Но это один хуй не будут воксели. А вот сама логика пока что воксельная. Так если доёбываться - все 2д пиксельарт игры на юнити нихуя не 2д и не пиксельные.
Совсем не понимаю как работать с камерой в юнити, что и как делать? Где пиксели? Хочу например сделать для мобильного телефона с 480х854, как это делается? А если для айпада с его 4:3? Неясн.
Я совсем тупой, ибо даже гугл мне не помог, поэтому надеюсь, что хоть тут мне помогут. Есть одна анимация, которая отказывается проигрываться. Использую Animation, а не Animator, поскольку объектов куча, а анимация только одна. Все в 2D.
>>280096 Нагуглил, что раньше можно было проигрывать анимацию обычным компонентом Animationуверен, что и сейчас можно, но у меня просто руки из жопы. Есть же такой компонент
>>280091 >>280098 Спрошу еще кое-что и свалю. Допустим, у нас есть тысяча одинаковых объектов с одинаковой анимацией, но проигрываются в разное время + анимация только одна. Нормально ли для каждого из этих объектов создавать Animator? Приношу свои извинения за тупые вопросы
>>280107 Тогда убери Вообще, если спрайты анимируешь, то в какой-то из версий с этим проблемы были, а может и во всех. Короче не анимируются они через Animation. Так что либо Animator юзай, либо другой движок. ВЕЛКАМ ТУ ЮНИТИ
Есть сцена. На сцене 3 камеры. Одна под юай, одна под скайбокс и фоновые удаленные объекты, и одна под все остальное.
У фоновой камеры обрезка в диапазоне 20к - 40к. У обычной 0,3 - 3к.
Есть объект (космический корабль). На нем висит скрипт, который раз в какое-то время заставляет корабль вылетать из-за спины наблюдателя (камеры) чуть снизу, и двигаться в закат. После того, как корабль преодолевает определенное расстояние, он возвращается в стартовую позицию.
На корабле висит 4 объекта с системами частиц: типа реактивная струя от движка.
Я столкнулся с такой проблемой. При первом запуске корабля все заебись. Но на втором системы частиц не отображаются в игровом виде. Если переключиться на сцену, то там все норм, и после переключения назад в игровой вид, партиклы становятся видны.
Сначала все отображалось, а потом вдруг перестало.
Чуть раньше я сталкивался с этой же проблемой, в случае, когда целевая точка движения корабля выходила за границы рендера камеры. Но потом я добавил дальности, и проблема пропала. Но сейчас появилась снова, и я хуй его, что делать.
Пробовал гуглить, но ничего не нашел толкового. Я даже не знаю, как правильно запрос написать, лол, чтобы проблему описать в двух словах.
>>280142 Изначально партиклы запускались на эвейке, и лупились бесконечно. Но с появлением проблемы я пробовал разные варианты, в том числе включение из кода. Не помогло.
На картинках суть проблемы.
Пик1: второй вылет корабля, партиклов не видно. Пик2: переход в сцену. Тут партиклы есть. Пик3: возврат в игру. Партиклы магическим образом появились (до следующего запуска корабля). Пик4: собственно настройки системы частиц.
Соскучился за вами, короче опять вопросы. Есть корабли, 10 шт пусть, летают там себе, петушатся, вот один сдох, ну и короче дохлого надо из списка удалить. Можно перебрать список и вычислить по id петушка, но а может есть способ получше? А то возникает чувство что переборы это уже обсёр.
В голову ничего не приходит, список же меняется, хуй проссышь кто есть кто. Вот если бы каждый корабль знал какой элемент списка на него ссылается, можно было бы этот элемент удалить. Но такого же вроде не завезли? Вроде вот можно использовать массив, и если что расширить, пустые ячейки можно залеплять новыми построенными кораблями. id корабля равен числовом индексу, всем норм, малафья льется, перебора нет. Какие подводные камни у дырявого массива?
>>280445 Если хочешь ебаться с массивом, можешь при построении давать элемнту знать свой номер, а при удалении - менять его местом с последним, удалять, а переставленному пересообщать свой номер. типа так.
Ананасы, как нарисовать широкую плоскую линию перпендикулярную земли? Юзаю LineRenderer, но он создает иллюзию объемной линии, всегда поворачивая ее за камерой. Нужно чтобы было например как на 2 пике.
>>280546 Переопределение дефолтного метода object. Дурной тон. Тем более он уже у unity object переопределён. Нужно делать проще и понятнее. Хочешь разбить объекты по айдишникам? Так и пиши GetId() хуё-маё.
Ребят, пояснить за Ray и raycast и всё это, пиздец туплю, не могу понять, как его юзать. Или гайды по нему какие-нибудь. Документацию читал, но что-то очевидного понять не могу.
>>280562 Создаешь переменную HitInfo и в неё через out передаешь данные о точке попадания луча. Из неё же через точку все что тебе нужно извлекаешь, будь то ссылка на объект, координаты столкновения или что-либо еще.
Сам же луч кастуешь , передавая ему координаты начала луча, его направление и, по желанию, Layer бывает нужно, если тебе необходимо кидать луч игнорируя некоторые объекты, например при стрельбе сквозь деревянные доски. Также эта функция возвращает bool факта попадания.
>>280569 Даун блять, как твой пост вообще относиться к оригинальному вопросу. Того куна не устраивал перебор элементов, значит оптимальным решением будет использование словарей.
Импортировал obj-модель, теперь не могу нанести на него текстуру. Модель просто принимает оттенок тектстуры, но не саму текстуру. Пикрелейтед, слева обычный созданный куб, рядом модель, на низ одна и та же текстура и её параметры.
>>280505 Ты охуел? Чем тебе это не велосипедное решение? Создать блядь 4 вертекса с определенным интервалом, ты даже на это не способен? Пошел нахуй из моего треда.
>>280597 UV2 нужен вообще-то, но как сказал >>280604 -господин выше, в твоей кастрированной пираской версии не завезли. Либо качай нормальную, либо зашивайся.
>>280445 >10 кораблей >НУ МАМ Я КРУТОЙ ПРАГРАМИСТ ПИРИБОР ЭТА ДОЛГА >между тем в апдейте у программиста getcomponent придает импульс физическому телу, а sendmessageupwards - обновляет параметры в скриптах на объекте
>>280605 > велосипедное решение Долбоеб, где решение то? То что ты высрал в 1 предложение, у меня было первой мыслью, но не стал закапываться, потому что неебу как сглаживать, как считать сочленения на поворотах и прочую хуету. Ты либо предлагай решение, либо иди нахуй.
>>280657 Эм, это какбэ один из самых графически навороченных движков. Странный вопрос ты задал, конечно. Юнитимужики каждый новый серьезный апдейт выкатывают. Но здесь нет большой красной кнопки "сделать заебись", если хочешь увидеть действительно хороший графон на юнити пиздуй на поликаунт. Местные васяны не умеют ничего кроме таскания кубов.
>>280668 Об этом? Нигде. Просто представь, что ты каждый фрейм доебываешь несчастный компонент тычками Вт бочок, вместо того чтобы сделать это всего один раз. Ибо одного раза достаточно. В апдейте нормально вешать инпут, да и только. Все остальное там держать, по большей части, моветон. С системой событий знаком? Вот что-то вроде этого. Это как с клавиатурой, кстати. ОС может с ней работать в двух режимах, в первом она опрашивает все клавиши один раз в сколько то миллисекунд на предмет того нажата она или нет, а во втором сама клавиатура отправляет сообщение о том что её нажали непосредственно самой системе.
При инициализации объекта (в эвейке, страте, либо в специальном публичном методе, который вызывается фабрикой при инстанциации) делай один раз геткомпонент, и схороняй в приватную переменную (это будет ссылка на объект класса, то есть на конкретный компонент, на конкретном геймобжекте), а потом обращайся к ней. Гет компонент, по сути, это перебор всех компонентов, висящих на геймобжекте. Вызов huypizda.transform, работает тоже через геткомпонент, потому трансформы тоже кешируй.
>>280674 И так кеширую. Я другой анон, мой вопрос был в том чем плох такой способ коммуникации и какая есть альтернатива ожидаю поток шизи от фаната симпатичных переменных
>>280550 >Переопределение метода GetHashCode >Дурной тон И тут мне стало грустно и стыдно за юнити тред >>280445 >10 элементов >переборы это уже обсёр. Разница хотя бы в миллисекунду появится когда у тебя будет их как минимум несколько десятков тысяч. И то эта разница будет из за сдвига элементов массива. Если на место удаляемого элемента просто переместить последний, то и тут до сотен тысяч спокойно можно работать. Завязывайте этот ярый дроч за такты процессора. Ни к чему хорошему это не приводит. >>280673 А клавиатура как узнает что клавиша нажата, чтобы потом отправить эту информацию в комп? Не неси чепухи. От опроса клавиш каждые N мс. никуда не спрятаться. >>280674 Опять дроч на такты процессора даже без отдаленного понимания как это все работает. >Гет компонент, по сути, это перебор всех компонентов, висящих на геймобжекте. Нихера там все не перебирается. Там Dictionary, из которого доступ к компонентам получается почти за константное время. >Вызов huypizda.transform, работает тоже через геткомпонент, потому трансформы тоже кешируй. Опять обосрамс. Юнити кэширует трансформ сам и делать это повторно нахуй не нужно. Оптимизировать игру оставив минимум GetComponent конечно можно, но это будет 0.01% от остального говна, который вы наворотите и который уже НУЖНО оптимизировать, а не МОЖНО, как с GetComponent
>>280713 >Опять обосрамс. Юнити кэширует трансформ сам и делать это повторно нахуй не нужно.
Маня, ты бы хоть прочитал статью, на которую я сослался.
>Это может работать медленно, если среди них достаточно много бегущих одновременно. Небольшой известный факт: все поля для доступа к компонентам в MonoBehaviour, такие как transform, renderer, и audio, эквивалентны соответствующим вызовам GetComponent(Transform), и потому они работают немного медленно. Метод GameObject.FindWithTag был оптимизирован, но в некоторых случаях, например, во вложенных циклах, или в скриптах, которые запущены на большом количестве экземпляров, оно тоже может работать немного медленно.
Хочу перекатиться в это ваше унети с либгдх. Да не просто перекатиться, а на твг пилить на унетях игру. Много ли там всего надо знать чтобы хоть что-то запилить?
>>280756 Ну давай разберем по частям тобою написанное >Если я накидаю в сцену объектов, и выключу их - это скажется на чем-нибудь? Объектов не больше сотни, на них скрипты и списки со всяким инвентарем. Нет, не скажется >Мне нужно хранить всех юнитов для менджмента их инвентарей Используй базы данных или еще что. Такой подход полное говно.
>>280756 > это скажется на чем-нибудь? Потенциально это положительно скажется на производительности. Выключенные объекты, имеющие меш, не участвуют в сортировке сцены. И на них не выполняются скрипты, кроме явных вызовов из других скриптов. То есть выключать ненужное - хорошо и правильно.
Ну что, поковырял я ваше юнити - ну 10\10 же(только си шарп я не знаю, только кресты и жабу, но это не важно как я понял), почему я раньше не знал какая это годнота?
Какие в нем подводные камни, если я собираюсь пилить 2д(пока что) игры под десктоп и андроид?
>>280899 >Какие в нем подводные камни Никаких. Недостатки конечно есть, но они есть у всех и на данный момент это лучший движок на рынке. Шарп от жабы кстати мало чем отличается. Я тоже с джавы перекатился, поставил себе IDE от JetBrains и часто забываю, что пишу на шарпе, а не жабе.
>>280912 > IDE от JetBrains Это который ReSharper? Там есть возможность дебага проекта юнити? И как ты его поставил, а то я пердолился и не смог настроить его на работу с юнити?
>>280920 Не, который с ReSharper пока не адаптировали для работы с Unity. Пока пользуюсь Consulo. Дебаг там есть. Багов тоже конечно хватает, но это в десятки раз лучше чем мерзская студия и в тысячу раз лучше убогого монодевелопа.
>>280924 >Кривое джаваговно лучше bloatware говностудии Посмеялся над убогими. Вам дали идеальную IDE: быстрая, красивая, компактная, занимает мало памяти, есть ВСЕ. Нет, хотим есть кал.
>>280924 Ничего не путаю. Это очень сложно донести. Примерно как пытаться слепому с рождения описать что такое цвет. Нужно просто поработать с идеей какое-то время и все станет ясно. Ну и да, если ты еще не вырос из возраста "все джава приложения - гавно!", то нам с тобой не о чем говорить конечно же. Алсо, без ребят, которые сотворили это "джавагавно" студией вообще пользоваться невозможно и она становится не сильно лучше того же монодевелопа.
Жесть, как вообще чем-то можно пользоваться, кроме студии с решарпером. Пересел бы на ридер, но он пока глючит. Монодевлоп это же вообще пиздец какой-то.
>>280929 >без ребят, которые сотворили это "джавагавно" студией вообще пользоваться невозможно и она становится не сильно лучше того же монодевелопа Вообще-то все функции reshaper'а есть в monodevelop из коробки.
Я не понял - в 2д можно использовать тени? Еще желательно чтобы на телефонах работало. Ну или не тени, а чтобы просто свет за стены не выходил(хоть это и есть тени лол).
>>280943 Накатывал этот ваш решарпер, все так цветастенько становится, всякие пояснялки тут и там))))))))))) Вобщем удалил эту блевотину, так как кроме автокомплита лично мне ничего не нужно.
>>280973 Ставить тормозное платное говно только ради того чтоб в автокомплите нужная переменная была в списке на пару позиций выше? Может сразу в уе на блюпринтах писать?
>>280974 Эх... Как же мне жаль таких упоротых. И ведь при всем желании не получится им объяснить, что они жрут говно и просят добавки. Впрочем с возрастом наверное придет понимание.
Поцаны, а как лучше делать проверку на клик? Рейкастом или void OnMouseUp() для 2d? А еще как без велосипедов с состояниями, сделать проверку, что объект находится под UI, и не кликать на нем*
>>280998 >>280998 >Поцаны, а как лучше делать проверку на клик? Рейкастом или void OnMouseUp() для 2d?
Создаешь класс ClickableBase, который наследуется от MonoBehaviour и имплементриует интерфейс IPointerDownHandler, и реализует метод OnPointerDown, как абстрактный, или виртуальный.
Описываешь наследников этого класса для каждого типа геймобжектов, которые должны реагировать на клик. У каждого из наследуемых классов переопределяешь метод OnPointerDown (вызываешь в нем нужный код).
На каждый геймобджект вешаешь соответствующий компонент.
Пацаны, я тут код рефаетарнул и грузится все стало в пятьдесят раз быстрее. Это из-за того что я отказался напроч от List<>, а следовательно и от библиотеки дженериков, или из-за того что почти все переменные сериализовал?
>>281020 Есть одна такая, но названия не помню. Но оно для автолодирования. Мог бы у знакомых название узнать, но ты её хуй добудешь, она стоит как твоя конура и продается только если ты крутая компания.
Чаще всего это делается руками в максе/майке. Алсо, тебе же это для лодов? Если нет то ты ебанутый.
>>281022 >Мог бы у знакомых название узнать, но ты её хуй добудешь, она стоит как твоя конура и продается только если ты крутая компания. Ну такая мне точно не подойдет. >Чаще всего это делается руками в максе/майке. Неумею. >Алсо, тебе же это для лодов? Да.
>Это из-за того что я отказался напроч от List<> Я не знаю как в шарпе, но вообще списки лучше не использовать. Будут частые cache-missing. Хотя, скорее всего, в шарпе точно есть хэш таблица, в которой все кэшируется (Но при итерировании это особо не помогает)..
>>281024 Не думаю, что это могло так радикально повлиять на скорость загрузки сцены. Но вдруг юнька как-то чрезжопно с дженериками работает, и именно загрузка стандартной библиотеки даёт такую задержку?
>>281030 Да простой будничный рефакторинг, причина которого была не производительность, а тот факт, что архитектура от тотального насилования во все щели новым функционалом начала сыпаться. Я оптимизировать планировал в самом конце, а тут такой неожиданный подарок судьбы, о котором я даже не просил.
Да и, опять же, загрузка сцены а не рантайм. Профайлер это не отслеживает.
Поцоны, короче такая хуйня. Частицы, которые выпускает персонаж, при попадании по цели должны добавлять + в счёт. Проблема в том, что когда частица попадает в цель - счёт обнуляется, так как это клон обьекта частицы и скрипт на ней. Как это пофиксить? https://ideone.com/u7lN4B
>>281065 Можно. Через GetComponent переменная должна быть public ну или иметь правило, если не хочешь видеть эту переменную в инспекторе пиши над ней [HideInInspector], ну или тупо сделать переменную public static и обращаться к объекту напрямую, но учти что статик переменная с одним именем может быть только одна на сцене. Кстати никто не в курсе как сделать чтобы public static переменная отображалась в инспекторе без велосипедов?
>>281076 Таки лучше это делать через вызов методов, которые эти самые переменные и меняют. Менять переменные одного скрипта напрямую из другого скрипта не очень правильно.
>>281082 Нет, это говно вообще не используй. Короче, пишешь например скрипт на нпц, который отвечает за его жизнь. В нем создаешь приватную переменную hp_ и публичный метод SendDamage(int hp). В этом методе вычитаешь из приватной переменной hp_ количество урона, которое этот метод принял в качестве аргумента. Всиуо. В качестве бонуса ты можешь в этом же методе ввести зависимость от класса брони, вести лог, записывая кто и сколько раз этот метод вызвал и все такое. Очень хорошо помогает не выстрелить себе в ногу и вообще это хороший тон.
>>281079 >>281082 У меня есть 2 скрипта, один с каунтером считает количество колизий, когда обьект получает 100 колизий он умирает. И есть еще клоны этого обьекта. Так вот, как мне вызвать все каунтеры из этих обьектов и записать их в один общий счет?
Ну а вообще первое что приходит в голову, это добавить к твоему скрипту публичную переменную GameObject, и каждый удар коллизии вызывать в этом геймобжекте компонент счетчик, увеличивая его на единицу.
>>281090 Я пытаюсь получить во втором скрипте переменную из первого скрипта: https://ideone.com/iEElcE Выбивает NullReferenceException: Object reference not set to an instance of an object TotalScore.Update () (at Assets/Scripts/TotalScore.cs:8)
>>281085 Ну можно и так. Хотя я лично не вижу особой разницы. >>281089 Я бы лично не тупо создал скрипт, повесил бы его на главную камеру или на еще какой-нибудь объект который будет всего 1 и не будет уничтожаться во время игры создал бы в скрипте перемеренную public static int TotalDamage; И каждый раз при коллижене обращался бы к нему. Например Camera.main.TotalDamage += 1;
>>281097 Не с телефона же. Да и писать то нечего, по сути, задача же простая что пиздец. Я больше про использование статиков. В реальности есть очень мало ситуаций, где из использование было бы оправдано.
>>281076 А, типа когда пуля столкнулась с врагом мы берем какой-то компонент который у нас за хп отвечает и с ним работаем? я просто первый день еще вкатываюсь
>>281100 Ах да, берет этот компонент сама пуля. Да и слово "берет" неправильно отражает действительность. Она его сначала ищет, и если находит то обращается к нему, передавая какое-либо сообщение. Это называется вызов метода. Вместе с сообщением ты можешь переслать какие-либо данные.
>>281103 Вешать то можно, только статичной её не делай. Статичная переменная доступна из любого скрипта, она может быть только в единственном экземпляре. Это реально очень специфичный инструмент. Если ты сделаешь десять клонов, и у каждого будет глобальная переменная хп, то если одному из них прострелят яйца - без яиц останутся все.
>>281106 А я могу запилить скрипт-компонент, сделать в нем статичную переменную, но при этом не добавлять этот компонент ни к одному объекту - переменная же инициализируется все равно и я смогу к ней доступ из других скриптов получить?
>>281105 А, тогда сорян, все это ты и так знаешь. Ну, у нас не ООП, а компонентно ориентированный подход. Так и гугли. Что-то вроде развития идеи ооп. По сути, чтобы компоненты обращались между собой, тебе нужно как-то для них добывать ссылки. Делать это можно через физику, например при соприкосновении двух коллайдеров они оба могут получить ссылки друг на друга. Либо можно кастануть луч вперед себя и получить ссылку на тот коллайдер, с которым он столкнется. А уже через ссылку на коллайдер можно получить ссылку на любой другой компонент, который есть в этом же объекте.
Только юзинги лишние потри. Я писал в одном файле, не все юзинги нужны в обоих.
И да, TotalScoreView - синглтон. Не навешивай на сцену больше одного экземпляра. Да и вообще, лучше синглтоны лишний раз не использовать. Но мне впадлу пояснять тебе, как там связи пробросить, и я не ебу, какие скрипты и на чем висят. Просто замени свой Score на объектах на ScoreView, а тоталскор на TotalScoreView. Нихуя назначать не нужно. Должно и так робить.
Анон, как, по твоему мнению, можно реализовать систему "поля зрения"? Я уже видел (насколько я понял это самая удобная реализация) как люди делают в три этапа - круг зрения, потом введение угла, потом проверка на наличие препятствий с помощью рейкастов. Меня интересует третий этап. Если у меня много объектов в поле зрения, то эти рейкасты не сильно понизят фпс? У меня в планах сделать поиск пути (хотя бы по алгоритму А*, для начала) на свой манер - связать это с полем зрения. Ясное дело, что из-за этого придётся кастовать кучу лучей. Ты бы одобрил такой подход, анон? Если нет - то как пойти другим путём?
>>281116 >У меня в планах сделать поиск пути (хотя бы по алгоритму А*, для начала) на свой манер - связать это с полем зрения. Чтобы путь прокладывался только в поле зрения? Или как? Я не понял.
>>281125 Вообще-то я напиздел. Это не префаб, а ScriptableObject ассет в котором предмет инвентария, например. То есть я как-бы добавляю в массив две ссылки на один объект, но это как-бы два уникальных предмета. Понимаешь?
>>281129 Там тогда начнется идиотия клон-не клон. Тем более не существует нормальных способов определить является объектом инстансом или ссылкой на префаб
1) сделай два префаба 2) сделай в Awake() создание инстансов из одного префаба 3) добавь на сцену два экземпляра этого префаба и помести их в свои поля Нахуя тебе вообще ID префабов?
>>281132 >Нахуя тебе вообще ID префабов? А как-ты будешь синхронизировать данные и вид? Например, у меня массив с предметами и массив виджетов с инфой об этих предметах. Я удаляю предмет из середины списка данных, и как ты поймешь как надо обновлять виджеты?
Можно конечно при обновлении вида тупо удалить все виджеты и создать заново
>>281233 Затем, что в одном ассеты, а другом геймобъекты из canvas на которых Text, Image и т.д. настраевые таким образом, чтобы показывать инфу об ассетах
>>281116 Кстати похожий вопрос только с "зоной покрытия" ну или круговым полем зрения - есть обжект, который "излучает" и есть объекты вокруг него - условно просто-кубы и кубы-препятствия. Я поле зрения делаю круговое с помощью сферкаста, а дальше как? Он покрывает все просто-кубы в поле каста, но требуется, что если между излучателем и просто-кубом есть препятствие, то соответственно он не покрывается попадание в зону символизируется сменой текстуры. Делать это простым рейкастом? В зоне покрытия может быть до сотни просто-кубов, не дохуя ли долго это будет делаться?
Анончик, подскажи, как бороться с застреванием в текстурах? Вот например есть у меня персонаж который прыгает на платформу, если я не запрыгнул на платформу, а уперся в нее животом и зажал клавишу прыжка персонаж висит на этой платформе.
Хочу программировать говно по типу покемонов. Что учить кроме школьной программы? Какие там инструменты для позиционирования в пространстве и дополненной реальности?
>>281364 Каким образом? Просто приведи реальные факторы возможных проблем. Ведь я для этого и спрашиваю совета. Понятно, что одному не потянуть. Нужна команда и всё такое. Так я хочу выбрать сферу деятельности.
>>281365 У тебя нет денег ни на разработку, ни на сервера. Ты и близко к покемонам по качеству не приблизишься, и людей ты тоже не найдешь, а тех что найдешь потеряешь через три недели потому что им надоест и мамка гонит в вуз.
>>281366 я хочу сделать гигантские грибы. Будет называться ГИГАНТЫ МУШРУМС. Боровики там, всякие лисички. И они будут расти. Ты такой тихий охотник. Ещё будут ядовитые и съедобные грибы. И слизни. И лесник.
Как сделать так, чтобы объект-наследник двигался/вращался вместе с объектом-родителем, но с задержкой? То есть, если бы они не нужны мне были в такой иерархии, то я бы сделал следование с lerp, но как сделать это с родитель-наследник?
>>281374 Запоминаешь позицию родителя. Создаёшь ссылку на каждый дочерний объект в родителе. Сравниваешь позицию родителя с той, что запомнил. Если двигается - вычитаешь от позиции дочерних объектов дельту.
Блджад анон, у меня проблемы с импортом объектов. Началось всё с того что все изображения которые я добавляю в папку ассетов определяются как 2дспрайты, хотя всегда раньше сразу определялись как текстура. Но хуй с ними, просто теперь походу и модельки FBX поломались - любая фигура из блендера добавляются с поехавшими UV или хуй знает чем, суть в том что на любую фигуру созданную в блендере и перенесенный в юнити невозможно нанести текстуру, она тупо принимает только её цвет\оттенок. Пикрелейтед, куб слева создан в юнити, куб справа в блендере, на них одна и та же текстура. Очевидно что тут такая же проблема со сбитыми настройками импорта, помоги настроить их так чтобы их можно было нормально текстурировать. Настройки стоят пикрелейтед (пробовал только галочку swap UV щелкать - не помогает). Я уверен на 100% что у меня тупо какая-то хуйня с настройками программы или освещения, ведь началось все недавно.
Я уже спрашивал но меня послали с UV2, я не смог разобраться что это за хуйня и почему она у меня не выбирается, говорили пиратка, но проблема не в ней, ведь месяц назад все работало. Умоляю аноны, я уже все кресло прожег, два дня сижу мучаюсь. Также пробовал ставить самую последнюю юнити с рутрекера, 5.3.5р8, всё тоже самое, видимо неверные настройки подхватились со старых версий
>>281399 > с рутрекера, 5.3.5р8 Последняя версия, кстати, 5.3.5f1. Скачивай с официального сайта.
>>281374 Сделай оба объекта дочками другого объекта и двигай/поворачивай по нужным тебе законам. Когда надо будет сдвинуть всю конструкцию, сдвигай родителя. Когда нужно "рассинхронное" поведение, двигай каждый дочерний объект по отдельности.
Парни, тупой вопрос. Игрок во время игры инстанциирует объект с кучей настроек, которые вытирает сам. У этого объекта много дочерних объектов и вообще он очень сильно набит всякой разной логикой.
Как мне его сохранить во время игры? Как я понял, создавать во время игры префабы невозможно. Неужели придется для каждого ебаного объекта создавать XML и туда пихать о нем данные, а потом при загрузке по этим данным его восстанавливать?
>>281575 Я написал для себя простой скрипт, который сохраняет отмечанные атрибутом поля в MonoBehaviour. Могу его тебе продать. В таком поле можно например сохранить состояние объекта, а потом восстановить его.
>>281704 На скрине виден размер куба, и их там не может быть 512 по стороне. Это не важно. Суть в том что кубами чанки пилят только слабоумные дегенераты и школьники. Там же у него каждый куб это GameObject, блядь! Надо генерировать меш, причем не просто ебучие кубы а только те плоскости которые видно.
Снял верхнюю грань для особо ебанутых, которые думают, что там вообще существуют кубы. Размер мира 6х6 чанков по 32х32 куба х 64 слоя по высоте. Более 2М кубов, 28М трисов. Должно было бы быть.
>>281711 Ну, начнём с того, что батчи это не дк. Вообще, если сделать как надо, то должно получиться 21 или 22 дк - материал везде один, должно сбатчится по полигонажу, а 1.5М влезет в 22 дк. Ну если совсем задрочить, то можно полигонаж ещё в пару раз уменьшить, но лень. Но да, есть перформанс хит из-за того, что каждый слой существует, независимо от того, видим он или нет. Хуёво для производительности, но хорошо для меня. Это потому что я пилю не майнкампф. Вообще я писал, как добиться моего результата и там же - как сделать гораздо меньше дк и поликов для классического кубача. Но не взлетело. Ссылка находится в треде по слову landfill
>>281515 Я конечно нуфаг в юнетях, но я бы сделал компонент для хранения настроек(скрипт), там бы публичные статичные переменные, и в твоем объекте от туда бы значения таскал.
Еще как вариант можно создать компонент с настройками, потом при создании объекта пихать этому самому объекту настройки.
>>281724 >вот тут можешь глянуть: >Legacy Нахуя читать старьё, когда есть актуальная информация? Читай справку https://docs.unity3d.com/Manual/RenderingStatistics.html Дк это SetPass, а не батчи. Батчи немного другое. >Переделывай Нахуя? Мне нужна именно такая схема.
>>281729 Где тогда дк посмотреть, а? а? Если ты запилишь на старой юнити это кубоговно и там покажет те же 4К, но не батчей а дравколлов, почему их стало 2, куда они испарились, а? Закинь на пустую сцену куб, посмотри как меняется батчес. Закинь к кубу сферу, плейн и посмотри как меняется значение. Что это если не дравколы?
Из актуальных доков >“Batching” is where the engine attempts to combine the rendering of multiple objects into a chunk Успешные попытки - saved, а твоя дрисня рендерится по-отдельности судя по стате.
>>281738 >дк это SetPass Ты не прав. Это не одно и тоже. Сперва идет батчинг, потом вызов отрисовки, а уже потом рендер проходит через шейдер, это и есть SetPass Call. Вы похоже тут оба не особо понимаете о чем спорите.
>>281742 Тэтры упаковываются в любой объем и состоят из 6 треугольников, этоя тебе как КЭМ-инженегр говорю. Хотя кубы канешь проще по осям выстроить и пердолить в объемах.
>>281742 Буду с тобой, а не со справкой. Один дк и один проход рендера это не одно и то же. Дк может быть больше одного перед тем как рендер проходит через шейдер. Ты бы это знал, если бы штудировал не только справку, а еще и на практике все тестировал.
>>281743 Видимо, я не до конца понимаю, что ты имеешь ввиду под тетрами. Если ты про пирамидальные треугольные фигуры половина от второй фигуры на пике, то здесь слишком много пердолинга для меня. Смещения по осям, проблемы с ровными поверхностями. У меня была цель сделать "слоёный пирог" с удобным выключением послойно, из-за чего получилось дохуя объектов и лишних треугольников, но на это похуй, ведь я не намерен рисовать более 10 слоёв одновременно.
>>281744 Спорь лучше с тем поехавшим, у которого дк это батчи. Раз на то пошло - дк DEPRECATED и больше в профайлере не отображается вообще. Но сетпасс это почти дк, лол. Ну и если учитывать тот смысл, который всегда вкладывали в дк - то это сетпасс и есть. Но это такое.
>>281738 Почему у меня 2 недравколла а не 8? У тебя пидора еще дк на тени (каст и ресив это отдельные дк) расходуются, тебя дебила послушать так графон вообще бесплатно рисуется за 2 прохода.
>>281748 Сразу надо объяснить почему 8 чтоб пресечь кукареки. 1 - очистка экрана 2 - куб 3, 4, 5, 6 - по дефолту стоят каскадные тени в 4 уровня, рендеринг 4-х шадоумепов 7, 8 - проходы при рендере материала, сам материал и наложение тени.
>>281747 Во-первых, это не почти дк, а это "дополнительные" дк, а не общее количество отрисовки. А, во-вторых, с тем поехавшим нет смысла спорить, он невменяем.
>>281750 Итого, у тебя должно быть - очистка экрана, куб, материал - у куба есть DEFAULT материал. Итого 3. Но у тебя на скрине 2 батча и 1 сетпасс. Очень похоже, что ты запизделся.
>>281742 >>281744 Да вы тут все чушь пишите. Объясняю: draw call это когда в коде вызывается функция, например, директикс Draw(), DrawIndexed() или DrawIndexedInstanced() (последняя с поддержкой хардварного батчинга). В этот момент в видеокарту копируются указанные в параметрах буферы данных (если они еще не там), и видеокарта их рисует. Рисует она их не просто так, а в соответствие с заранее заданным состоянием. В это состояние входят: указанные текстуры с какими надо рисовать, шейдоры и состояние блендинга с каким надо нарисованный результат смешать с тем что уже было нарисовано в буферный кадр ранее (вся эта инфа по видимому включена в материал и переключения состояния видеокарты обозначено как SetPass calls).
>Опенсорц код с комментариями. Отдельные объекты только чанки, не кубы >Скрины, где кубов нет вообще, объекты - только чанки. >У тебя кубы в чанках это отдельные объекты, коооо-кок-ко!
>>281751 Давай договоримся, что дк больше нет и хватит об этом, лол. А то и пиздануться недолго с этим шизиком. Да, у меня овердохуя сетпассов и батчей - так пока что и надо. Ради возможности смотреть сквозь пол - рисуется пол нижнего уровня. Конечно, рисовать до самого нижнего уровня не надо, так что я буду выключать уровни.
>>281770 Скачать мои сорцы нельзя, можешь из статей повыдирать код, ссылка в начале треда. Там с самой первой статьи указано, что кубов нет, а во второй выключаются невидимые грани. Даже более того, с самой первой части указано, что для кубов объекты не создаются.
>>281785 >дк больше нет ДК УПРАЗДНИЛИ, ЗАЕБЦА МОЖНА МАЙНСРУФТ ИЗ КУБОВ ДЕЛАТЬ! Короче пили свои кубы с 4К дравколлами и показывай друзьям в школе, может когда вырастешь и правда любое говно за 2 дравколла будет рисоваться.
Господа, как перенести карту высот на terrain? Есть процедурно сгенерированная в unity карта высот. Нужно создать terrain на основе данных с карты высот? Как проще всего это сделать? И что вообще можно почитать по процедурной генерации ландшафтов? Именно книги или работы
>>281651 >Алсо, заплачу тебе картинкой с лолей если дашь глянуть скрипт. Ишь какой хитрюга. Но нет, я свой чудесный скрипт буду ассетотаскателям в ассет сторе продавать по девять долларов и девяносто девять центов.
>>281874 Ну всмысле не будет? Публичная статическая переменная, она видна всем скриптам. Например у нас есть враги и у них какой-то скрипт для атаки, нам надо абсолютно всем врагам сделать урон 40 например, мы меняем статическую переменную, а в том атакующем скрипте в качестве наносимого урона тянем какую-то парашу вроде EnemiesParameters.damage Теперь при изменении EnemiesParameters.damage будет меняться урон врагов Или он что-то другое имел в виду?
>>281862 >интернеты набиты сериализаторами до отказа Что же ты еще не взял его из интернетов в таком случае?
>>281874 >не будет Ты не объяснил что тебе нужно. Тебе непременно нужно строить иерархию объектов и создавать компоненты в рантайме (нахуя?) или достаточно просто инстансировать префаб с этой иерархией и просто настроить поля? В последнем случае нет ничего сложного. Сохраняешь все данные из таких полей в классе, а потом сериализуешь его. А потом восстанавливаешь обратно
>>281881 Затем что не могу по объективным причинам. О которых я умолчу. Потому что я котик. Да, в моем случае поведение объекта зависит от того, какие в нем есть компоненты и что у него в иерархии. И это меняется в рантайме. Да, это самый адекватный способ конкретно под решение моей задачи и отлично себя показывает.
Короче, вариант как решить проблему нашел, отсталость его опробовать.
Анон есть вопрос. Есть контроллер, он нерушим как скала, я в него складываю разные полезные функции. Есть обьект в сцене, точнее это гуи елемент, кнопка. При клике на кнопку вызывается функция из контроллера. Меня интересует, на какой обьект ссылается при выполнении скрипта, допустим, перменная геймобжект, на контроллер, или на обьект, который вызвал функцию, то есть на кнопку?
Посоны, я конечно извиняюсь, я нюфаг полный, в-общем как создать кхм.. отверстие в объекте? По сути я хочу создать комнату с окнами и дверными проемами. Обычную комнату из четырех кубов за секунду можно создать, но как сделать в них двери и окна? Я вот только сейчас понял что нихуя не понимаю как это сделать, не прибегая к блендеру и 3д максу (там во-первых сложно рисовать, во-вторых надо правильно размещать UV-мапы, иначе текстуры не наносятся, короче пиздец). Можно конечно сделать как на пикрелейтед, но это сами понимаете, говно. Уверен есть какой-нибудь инструмент или скрипт позволяющий делать хотя бы прямоугольные вырезки из плашек или кубов. Алсо, пробовал качать всякие программы по созданию интерьеров, там очень легко и просто это делать, но вот импорта модели либо нет, либо она импортируется в ОBJ, где опять же нет UV отчего текстуры не нанести. Помогите
Охуительные динамические тени. 10 фонариков из 10 просто. Можно даже объявить это фичей, тип это не тени, а души, которые пытаются вырваться из зомбей))0
>>282295 Для коллизий у меня свой алгоритм проверки высоты объекта относительно поверхности кубов под ним. Без рейкаста, по координатам. Очень оптимизировано! Намного лучше коллайдеров!
>>282295 >PhysX Это. Не вижу смысла не пользоваться быстрым физоном. Тем более, со своим фейко-физоном соснёшь с навмешами, соснёшь с райкастами, соснёшь с другими коллайдерами.
>>282299 >высоты объекта относительно поверхности кубов под ним Соснёшь с норами.
>>282384 А как ты присобачишь к кубу коллайдер, если у тебя куба нет? Но, с другой стороны, коллизии с кубами и не нужны. Точно так же, как не нужны невидимые грани - не нужны и коллизии с невидимыми гранями. У кубов нет коллайдеров, они есть у чанков.
>>282382 >Это. Не вижу смысла не пользоваться быстрым физоном
Физикс медленно коллайдеры считает в рантайме, слишком медленно для того, чтобы можно было его использовать в майнкрафте. Тут тебе без вариантов надо писать свои коллизии, иначе рискнуешь соснуть. И не говори мне, что ты юзаешь не мешколлайдер, а лепишь чудовищные костыли с боксами
>>282382 >Тем более, со своим фейко-физоном соснёшь с навмешами, соснёшь с райкастами, соснёшь с другими коллайдерами.
Поэтому ты хуй найдешь нормальный клон майнкрафта на юнити микропараши с закрытыми мирами не в счет, потому что кириллу кастомный фейковый физон просто не осилить, и гайдики по кубам тут не очень помогут.
источник: сам пилил трехмерные кубы на юнити, закономерно соснул, и запилил двухмерные - со своим освещением и физоном, после чего к идеям клонов минесруфт-подобных игорей несколько охладел
>>282401 Ну прост скачай хуюнити и попробуй сделать чо, смотри видео, читай доки, пользуйся гуглом и не велосипедь без нужды сам я где то 4 месяца с перерывами в сишарпе с хуюнити, но до этого несколько лет назад пилился на гейм мейкере
>>282398 У меня дохуя режимов. На скрине, где полмиллиона кубов высота чанка 20 кубов и рисуются только границы чанков. А на втором скрине с 65к кубов включены все грани каждого куба. Мам, это только для скриншота. Основной режим это чанки 32х1х32 куба без внутренних граней. Для тру-майнсруфта не годится.
>>282401 Читай мои высеры, очевидно же. >>278017 Я доступно всё поясняю, да и скилл у меня "начинающий говно игродел".
>>282426 >Физикс медленно коллайдеры считает в рантайме, слишком медленно для того, чтобы можно было его использовать в майнкрафте. Уничтожал по 3-4 куба в секунду, есть лаг только в режиме со внутренними гранями - слишком тяжёлый меш. По идее, если скинуть в фоновый воркер, то лага не будет. Но нахуя. Юзаю мешколлайдер, говорю же - кубы это просто иллюзия, нет никаких кубов.
>>282431 >потому что кириллу кастомный фейковый физон просто не осилить Я не считаю для себя лично это неподъёмной задачей, просто не вижу смысла. Фейковый физон будет для жидкостей и, возможно, для обрушений. Но он однозначно будет медленнее, чем шизикс, как и любой костыльный фейкофизон.
>>282440 Уничтожение одного куба вызывает полную перестройку меша чанка и коллайдера. >если у нас форма чанка генерится А форма чанка и так генерится на основе перлин нойз.
>>282464 https://docs.unity3d.com/ScriptReference/Mathf.PerlinNoise.html Обычный такой шум, самый распространённый в этих ваших игровых делах. По сути, чёрнобелая пикча с волнами. Весь профит этого шума в том, что пикча потенциально бесконечная, а просчитывать всю сразу не надо, можно попиксельно получать от юнити.
>>282469 Возьми библиотеку для перлин нойза, юнитивский плох. Например нельзя указать seed. Пилил кубач на юнити как ты, пока случайно не удалил папку с проектом при чистки говна с пека, с последующей дефрагментацией.
IK делаю при помощи набора скриптов "Sprites And Bones".
Вчера с анимацией вроде всё было нормально.
Сегодня - анимация отображается ПРАВИЛЬНО в следующих окнах - сцена, превью игры (окно Game, когда не нажата кнопка плей). И НЕКОРРЕКТНО в окнах - Game (когда нажата кнопка плей) и в окне скомпиленого билда. Тело по задумке наклоняется вслед за поворотами IK головы. В "рабочих" окнах всё как надо. А в игре - тело не двигается за головой.
Я скоро ебанусь, перебрал все варианты, гугл не отвечает. Может что-то с иерархией кусочков тела, хз. Но почему тогда в "рабочих" окнах всё ок?
>>282472 Это херня на самом деле. Если тащить дополнительную либу, то уже с каким-нибудь другим шумом. А так можно брать дефолтный, вместо "зерна" брать рандомные множители по x,y,z и офсеты. У меня больше проблемы не-кубачевского характера, лол. Начинаю понимать, что плоские чанки это не так уж хорошо - надо отображать мир, иметь возможность скрыть этаж и чтоб не тупило. Получается, что много слоёв сразу я использовать не могу. А брать кубический чанк, то при въезде камеры в чанк - там будет пустота. Особенно пиздецки будет смотреться, если по чанку проложены норы. С фпс\тпс контроллером такими проблемами и пахнуть не будет.
>>282535 А если Smoothness на 0 поставить? Ну и металик тоже.
Парни, че за хуйня? Почему не подхватывает изменения в файле? Рфреш/реимпорт не помогает, если заново импортнуть - то все нормально, но обновлять не хочет. Должна же вообще сама любые изменения сразу подхватывать.
>>282543 Так ты хочешь сделать типа дварф фортресс, только с графеном? Просто тогда можно делать топ даун камеру с просмотром конкретного слоя и 3д для лулзов
Бля посоны, поясните плес - вот есть куб который излучает рейкаст. Вокруг него есть многокубов слоя не-N и есть один куб например слоя N. У всех кубов есть колладеры. Я делаю рейкаст к какому нибудь обжекту hit.
if (!(Physics.Raycast(transform.position,hit.transform.position,Mathf.Infinity,layMask)) { //действие, меняем цвет кубику например. } layMask в данном случае - маска слоя в котором находятся все не-N объекты и излучающий этот рейкаст куб. В данном конкретном случае это номер 9. Так вот - на пути рейкаста точно есть объект из маски N, но код все равно выполняется хотя не должен ЧЯДНТ?
>>283083 Блядь, тебя тяжело понять, в следующий раз прилагай скриншоты. Объекты, Layer которых отсутствует в маске, для рейкаста становятся прозрачными, он бьет сквозь них.
>>283208 Полагаю, ты сделал с юнити нечто крайне специфичное. У меня такое было всего один раз, когда я загрузил стандартный ассет для юнит тестов и добавил на сцену из интереса два менеджера интеграционных тестов.
>>282459 >Уничтожал по 3-4 куба в секунду, есть лаг только в режиме со внутренними гранями - слишком тяжёлый меш. Так в этом же и суть проблемы, или тебе норм? А если там динамит ебнет, и надо будет пересчитать 5-6 смежных мешей? Хуй знает канеш, смотря какие у тебя там задачи вообще
>>283193 С рейкастом разобрался, только он нихуя не работает как надо. По идее кубы, до которых рейкаст от красного не дотягивается, не должны подкрашиваться. У деревца-куба слой №8 , у красного слой 9 а у красных кубов-клеточек номер 10.
>>283235 >в этом же и суть проблемы В игре не может возникнуть ситуации, когда рисуется каждый куб чанка. Максимально сложный меш это шахматка, где каждый второй куб уничтожен. А это уже вдвое меньше напрягов, чем с отрисовкой 100% кубов. >динамит ебнет, и надо будет пересчитать 5-6 смежных мешей? Я вернулся к кубическим чанкам, т.е максимальный пересчёт - 4 чанка. В очень редком случае. Но на самом деле хуй знает, лол. В крайнем случае сброшу пересчёт мешей в дополнительный тред, чтоб не подвисало. Если замечу лаги на своей некропк.
Ньюфаг ИТТ. Антон, дело в том, что я могу в рисование, концепт-дизайн и моделирование. 400-500 лойсов на артстейшене стабильно за работу Но я тугой олень, совершенно не могу в программирование. Последний раз писал простенькую хуиту на C# в ВУЗе лет 5 назад, и с тех пор даже не вспоминал ничего про программирование.
Суть такова - хочу запилить игру визуальную конфетку, но без геймплея как такового. Симулятор ходьбы с зайчатками сюжета.
Придётся ли мне рвать жёпу и вспоминать всё программирование, или там требуются лишь минимальные познания в этом ремесле? С моделями, текстурами и прочим проблем не будет - делаю всё сам, запекаю нормали и прочие карты, довольно придрочен в этом.
Всё что меня пугает - это программирование. Так ли оно страшно в Юнити?
>>283823 Есть готовые ассеты с контроллерами хождения от первого или третьего лица. Их ввинтить - дело 5 минут. Если захочешь интерактива - его можно собрать на коллайдерах с тупой логикой за неделю.
доволен. сделал сорт автоматической расстановки укрытий и потенциальных мест для спрыгивания-запрыгивания (и возможно перепрыгивания с одного на другой). осталось с физоном юнити связать.
Котаны, как лучше реализовать текст переливающийся разными цветами на новом UI? Проблема в том, что переливаться должна только часть текста, поэтому не получится изменять color у компонента Text. Есть вариант использовать RichText и каждый раз его перестраивать изменяя цвет при помощи тега color, но это как-то не очень. Несколько раз в минуту перестраивать меш только, чтобы изменить цвет.
>>284238 Ладно, хуй с этим, но ответьте на один вопрос - если у меня два куба ровно на одних координатах и размером равны 1х1х1, но в разных слоях, то рейкаст для одного слоя вернет какой из объектов?
>>284142 нет, за исключением функции растеризации полностью моё решение. история уже довольно долгая и это история полная ошибок. и началась история с того что мои идеалы подсказали мне сделать процедурный шутероподобный мир который мог бы меняться в процессе. он должен иметь динамические обстаклы, должен иметь возможность перестроить нужную область и возможность делить область на зоны с разной проходимостью. стоит сказать что к решению проблем я подходил сначала пробуя своё решение, потом пользовался гуглом. кажется, где-то в процессе я познал глубины своего безумия.
https://www.youtube.com/watch?v=R29OY7KbrlA последней ошибкой, кстати, было моё желание сделать динамический размер агента. я решил все проблемы которые были, но решение было так себе. в итоге за последний месяц снова переписал половину имеющегося кода.
>>284247 можно сделать несколько канвасов. один для переливающегося текста и сделать переливание текста просто через освещение его фонариками разных цветов. например в https://www.assetstore.unity3d.com/en/#!/content/25468 посмотри как это сделано в экзамле где панелька с текстом светится и сверкает. элементы интерфейса же такие-же геймобжекты с материалами и хуйнёй, по моему это хороший метод это использовать.
>>284594 Большой код получился? Что как вообще организовал? Надеюсь кто-нибудь купит эту наркоманию у тебя и мы будем играть в шутаны с рандомными картами
Юнити не импортирует анимации добавленные в файл после его импорта (т.е. если перезаписать уже импортированный). Что делать, удалять, имопртировать и настраивать все заново?
>>277225 (OP) Где можно достать пример 2д игры где все было бы сделано "правильно"? Суть: Хочу посмотреть хорошие/стандарные решения обычных задач. (типа управление персонажем, переходы, обработка каких-нибудь пересечений). Понятное дело я все могу и так сделать, но может есть решение лучше.
И сразу вопрос: Как нибудь можно сделать чтобы один объект перескался/тригирлся только один раз даже если он состоит из двух колайдеров. Пример: Герой состоящий из двух кругов (как цифра 8) врезался в "стену смерти". Пересечение с этой стеной произошло два раза изза того что два круга, но мне достаточно и одного -_-.
>>284970 Каждый коллайдер регистрирует столкновения. Хочешь одно столкновение - делай один коллайдер. Полигональный,например. Полигонами себе восьмерку и нарисуешь.
доволен. вбил один костыль чтобы исправить то что меня долгое время раздражало и мешало. сдвинул весь грид на пол вокселя в направлении -X / -Z. сделал клевое примагничивание спотов для кавера к краям навмеша, если далеко от него. и вообще много всего интересного там написал.
и немного стареньких скриншотиков.
>>284671 а на видео агент сделанный за вечер пытается следовать маршруту из навмеша который строится в реальном времени. видно в начале как навмеш строится. для веселья включил рут моушен чтобы двигать не через контролер, а через анимации. и так как скорость учитывается плоховато можно наблюдать то как он весело свалился в канаву но все равно нашел путь.
>>284864 ну прилично так. 9-10к строк. учитывая что я не открываю скобочки в новой строке и не люблю ставить лишние пробелы. (количество закоменченного кода наверно под 55-70к строк ололо)
вообще я не против написать про организацию стену текста. все равно нюансы в деталях. параметры агента и всякая хуйня вроде размеров вокселя у меня хранятся как скриптабл обжект, при обращении к навигации он становится ключиком к словарю чтобы вернуть навмеш для этого типа агента, таким образом сделал чтобы не было той волшебной еботы что юнити предлагает делать для достижения схожего эффекта. на скриншотике выше я показал как я получаю перемещабельную поверхность. это частично спиздил у rain но потом получше написал чуток. так как у меня не весь навмеш разом делается, а только небольшие его чанки то могу особо память не экономить. один хуй расход можно контролировать количеством обрабатываемых чанков в тредах. у меня есть абстрактные примитивы для каждого типа коллайдера, я подставляю примитивы на место коллайдера и растеризую в воксели. воксель описывает минимальную и максимальную высоту коллайдера в этой координате (да, я не могу иметь С-образные коллайдеры потому что они станут О-образными, но хули можно и сделать какой-нибудь компонент который бы указывал что надо делать это по другому. или просто делить коллайдер на два), имеет int в байтиках которого собираются флаги из enum, имеет отдельно проходимость из enum : int (раньше она была в байтиках но это была боль), массив из четырех соседних вокселей, ссылку на территорию которой принадлежит и отдельно список из "зон" которым принадлежит. дохуя конечно впихнуто, да. потом привожу воксели в порядок убирая перекрываемые, получаю проходимость (стоя, присев и непроходимую), нахожу соседние воксели, делаю отступ от ближайшего края навмеша на радиус агента. потом делаю важное - делю весь грид вокселей на несколько 2д плоскостей, которые не пересекаются через "затопление". выстраиваю все воксели сначала по высоте, потом по X потом по Z и проверяю может ли воксель захватить в плоскость которой принадлежит соседние воксели. если нет - создаю новую плоскость, если воксель уже принадлежит плоскости то проверяю можно ли их объединить. потом каждый такой слой делает всякие важные карты и скармливает их последовательно marching squares (где я сделал хитрость с тем чтобы они ходили только вдоль границ. экономит время охуеть) отдельно для каждой зоны и проходимости. стоит сказать что ноды находятся все в одном пространстве для всех зон и проходимостей, много ебался с тем чтобы они хранили эджы удобно. потом весь тот пиздилиард эджей и нод упрощается через рамера-дугласа-пекера и я получаю контур навмеша. потом я через самописную триангуляцию (на самом деле какая это нахуй триангуляция. не триангуляция это, просто слово подходящее) делю контур сразу на конвексные области, через "зоны интереса", те углы которые смотрят вовнутрь навмеша ищут ближайшую ноду в области которая равна градусу угла (если подходящей ноды нет то берет подходящую ноду справа и слева наиболее близкую к нормали угла). ну а дальше всю эту хуйню я скармливаю графу который строит из неё готовый навмеш, после чего встает в очередь основного потока где в корутине разные чанки навмеша получают сведения о соседях. так что я могу и выдернуть какой-то квадрат после чего построить его заново и из-за того что "триангуляция" сделана не через зад как у rain я могу потенциально иметь динамические обстаклы. хотя я про много что не рассказал, про клеточный автомат, про хуйню, но это в общих чертах.
ну и теперь ещё в процессе получаю сведения о укрытиях. на самом деле там просто переиспользуется код marching squares и рамера-дугласа-пекера, просто скармливаются немного другие карты с каждого слоя и ноды попроще. и те самые "зоны" из вокселя которым он может принадлежать пропихиваются через и ту и другую хуйню и я знаю какие эджи находятся вблизи нужной мне зоны которая указывается вокселями, что сильно всё упрощает. таким образом делаются эти зоны для прыжков-подтягиваний и частично укрытия.
много времени потратил на написание своей тулзы для дебага, архимного времени потратил на совершенные ошибки. marching squares у меня сожрали наверно месяц, если не больше и те ошибки которые я в нем совершил привели к тому что я переписал проект с нуля. то как я храню эджи тоже наверно у меня столько-же сожрало. а если учесть сколько раз оно мне аукнулось то даже больше. раньше я хранил обе последовательности, я знал эджи которые впереди и эджи которые сзади. и это был пиздец. в результате два раза проект переписывал наверно, в итоге оставил только одну последовательность. хотя про ошибки я могу долго рассказывать.
>>284912 как доделаю навмеш то примусь за ИИ. для агента GOAP, чтобы была возможность указывать нужные цели, отдельно напишу стейтмашину для командования сквадом агентов, чтобы он раздавал эти самые цели. (а может не стейтмашину а нейросеть попробую ололо. давно хотел получить опыт имплементации). потом приделаю к основному проекту. периодически тут всплываю с ним показывая генератор острова. а потом когда навмеш и ИИ перестанут радовать меня оказиями может в ассетстор выложу, а может даже бесплатно и предложу давать мне донейшены.
>>285180 на самом деле это очень легко. нельзя к апи юнити обращатся в тредах, но это не проблема.
>>285245 >(количество закоменченного кода наверно под 55-70к строк ололо) Мусор. Просто поставь себе cvs, заведи локальную репу и выкинь это все нахуй по частям с пометками от чего "нужного" ты избавляешься на этот раз. Потом можно будет в любой момент посмотреть чо ты там понаписал раньше.
>>285245 >на самом деле это очень легко Пересчет мешей вообще на производительность не влияет почти, он похоже хочет сделать пересчет меш-коллайдеров в отдельном треде. Я и спрашиваю, как
Привет. Ъотел спросить нормально ли в юньке использовать наследование? То есть грубо говоря класс монстр. А отт него наследуются все монстры конкретно с переопределением местодов.
>>285542 На самом деле задача такая. Есть много разных объектов, но по событию часть из них должна совершить какое либо действие (допустим часть пойдет налево, а часть направо). Как бы вы сделали? Самое очевидное решение: Пройтись по списку с этими объектами и вызывать нужный метод. Возможно ли вызывать этот метод не создавая список?
Аноны, нубский вопрос но все же спрошу. Есть ли толк от визуального программирования в Юнити? Не спрашиваю про конкретный плагин, а в общем. Если Кирилл не программист а художник, например, то ему будет проще формочки таскать, чем писать код? Или один хуй и все равно нужно знать теорию ООП, C#, требования к архитектуре, паттерны и прочую хуйню, а визуал только спасает от ошибок синтаксиса и путаницы в скобочках.
>>285589 Настоящий Кирилл делает свою игру мечты единолично. >>285590 Не то, чтобы я совсем не умею кодить. Просто процесс кодинга, а особенно чтение scripting api, доставляет мне страдания.
Анон, я слишком даун в юничке объясни плз, почему не работает отрисовка кубиков по гизмосам? http://pastebin.com/02aB2mkb Это буквально второй мой скрипт, я не очень понимаю, что творю. Пытался сделать сетку для А*, как в одном туторе, но вместо квадратной сетки хотел сделать шар. В теории эта штука на основе двух параметров - радиуса сферы и радиуса секторов сетки - должна сначала сосчитать количество вертикальных слоёв, потом количество окружностей на каждом слое, а потом расставить на всех окружностях секторы на определённой дистанции. И всё работает, но через гизмосы нихуя не отображается. Прогнал почти каждую зазубринку скрипта через дебаг, всё работает кроме проверки if (navGridArray != null) в гизмосах. Что не так, блядь? Уже закипел.
>>284146 > Если между кубом и другим кубом есть объект из слоя коллизий Ну дак проверь рейкастом есть ли там этот слой, и если он есть, то не выполняй код. В чем проблема то конкретно?
>>285659 В том что для проверки используется физика, в то время как стандартный навмеш запекается по совершенно другим принципам и, в силу нативности, работает куда быстрее.
Видео нормальное, если ты хочешь понять принцип, но в реальном проекте я бы точно его использовать не стал.
>>285672 Тогда хз, потому что у меня работает все кроме расчетов в методе CreateLayers в промежуточных расчетах получается либо NaN либо 0, и в итоге все 0
>>285673 Сейчас заменил массив на лист - всё работает отлично. Только я с раскидыванием дотов по окружности зафейлился, получился пикрил. Странно, почему с массивом не работало?
Поясните про соотношение сторон и ориентацию. Почему, например, камера в юнити зависит от размеров окна? Как сделать так, чтоб соотношение сторон не менялось? Обрезается фон при малых разрешениях, как его уменьшать? Хочу вертикальное окно, но под винду такие не делаются, как? Ничего годного на эти вопросы не нашел.
какая досадная неожиданность. результаты для включенного и выключенного плеймода неожиданным образом различаются. тот-же самый инпут, но когда я в эдитмоде то Physics.CheckCapsule и Physics.CapsuleCast волшебным образом игнорируют деревья. интересно находится ли причина в моей власти.
>>285248 meh. то что долго закоменченное просто переношу в конец и прячу под регион с говном. ну и периодически если где-то на меня больно упал костыль то переписываю весь тот сегмент кода и то что там закоменченное было улетает в анналы истории вместе со всем классом. хотя периодически и вытаскиваю старые решения.
>>285275 а хуй знает как там это всё структурировано то. грид довольно большой, я не знаю как там треугольники делаются и вся хуйня. я не против узнать.
>>285554 если объекту не надо сообщать правый он или левый пользуясь его параметрами извне то наверно погугли BroadcastMessage.
>>285588 если кирилл один и он артист то ему следует задать важный вопрос. учитывая предполагаемые размеры проекта превосходят ли страдания от обучения погромированию те страдания которые он получит пользуясь визуальным погромированием? последнее не подвергается сомнению.
я вот знаю одного мудака и он полный артист. тягал он спагетти в UE, тягал и сдался. он однажды показывал мне как он эти спагетти тягает и я пришел к выводу - погромирование это знание методов и способов их применения. а это визуальное погромирование в итоге только мешает. дольше выбираешь всякие функции-хуюнции, один параметр может превратится в огромную такую спагетину на весь класс, на экране умещается меньше читабельной информации, много времени тратится на то чтобы убрать руку с клавиатуры и переложить на мыш, если надо ей что-то подрыгать. ну и конечно найти документацию и советы к нормальному языку гораздо проще чем к хуйне. а знание синтаксиса не такое большое дело. я сам немного подергал эти спагетти и мне понравился только один важный аспект - распутывать приятно. расставлять их красиво чтобы по феншую.
>>285662 на самом деле учитывая пропорции грида в отношении к размеру обьектов все это одна хуйня. a star кстати когда я последний раз смотрел тоже глобальный грид делал через физон. и это гораздо быстрей чем проверить треугольники всех объектов чтобы составить тот-же самый грид. при желании заодно и весь грид можно двигать вместе с агентом, если он один. будет довольно высокая точность маршрута даже при низком разрешении грида, из-за того что сам грид двигается.
Вот код в юнити пишется на шарпе. Однако ж юнити работает и на консольках, и на мобильниках. Каким образом там запускается шарповый код, если шарп заточен под форточки, а с кроссплатформенностью у него не густо.
>>285657 >>285658 Лал, разобрался таки с этим - рейкаст с дистанцией чото не давал нужный результат, выдавал хуйню, сделал лайнкастом на строго заданное расстояние.
>>285783 У него "идея" блджад, а так он красный диплом защитил в тех вузе, то есть хорошо знает математику, физику, может считать любую хуйню для сложых муток. Могу вас связать.
>>285802 Та не, он со своей красной корочкой грузчиком работает считай. Я ему тоже самое говорю, но он наотрез не хочет кодить. Хули, пообещал написать, пишу вот вам. Я ему говорил что везде на хуй пошлют.
>>285804 Я за него еще и в твиттор писал. По мне так если ты не можешь пойти на двач или зарегаться в твитторе, то значит не очень и хочешь в геймдев, но блядь, я понял, что никого ни в чем сука не убедишь, люди в основном убертые пиздец, еще и обижаются если им что-то советуешь. Только и остается сделать, что попросили, имхо помогать друзьям надо, даже если они долбоебы.
>>285803 Ну объясни ему, что идеи есть у всех, а возможности для реализации - нет. Рисовка, звук, кодинг - вот что действительно нужно. Идеи, геймдизайнер-киррил, руководитель - не нужно, без сопливых разберемся. >>285804 Двачую, лел.
>>285805 Он не прячет идею. Хочет какую-то тбс запилить, он уже и мир прописал и статы персонажей. Основная мечта запилить какой-то ебанутый клон квейка 3. В первое верею, потому как он и вправду способен запилить какой-то баланс, это вообще его тема, дрочит на циферки во всяких стратежках.
>>285808 >Ну объясни ему, что идеи есть у всех, а возможности для реализации - нет. Уже несколько лет объясняю.
Ребята, мне все и так понятно, срсли, кто захочет, отпишите, я скину какой нибудь его контакт, а так не хочу засирать оффтопом ваш тред, думаю мудаков тут и так хватает.
>>285806 это скриншот с конца 2013 года ололо. как-то мало опций было.
>>285811 как-то не выглядит охуенно. вот у меня есть друг-мудак который вообще на все цыферки дрочит. с ним можно пойти подрочить в совершенно нелепое говно, спросить "что это за парашей мне по ебалу проехались и почему она была такая охуенная" и он ответит что оказывается в каких-то там кондициях проценты резистов хуйня муйня. откуда он это знает? я не знаю. и кстати красного диплома у него нет, он любит доту, курить и чужие страдания. полагаю последний фактор самый важный в этом вопросе.
>>285812 Я бы даже сказал, что помогая ему ты только делаешь хуже. Человек должен сам взять в руки ответственность и принять решение, сделав первые шаги. А так подрываешь одну из составляющих мотивации, которой у него итак маловато.
>>285245 кстати, на тему того костыля что грид сдвинул. помимо этого поменял недавно то как делаются края чанка. с хуёвого неадекватного метода на красивый и хороший с флагами в байтиках, дополнительными самплами по краям и вообще. теперь края разных чанков соединяются гораздо лучше без всяких читов вроде снапинга. сделал на эту тему видео с рисованием. доволен. https://www.youtube.com/watch?v=Cjf7QEJ4HCM
Я недавно зашёл во вкудахтоигры и малость прихуел. Неужели людям не стыдно делать ТАКОЕ? И все на этом вашем юнити. Немного стыдно это говорить, но меня заинтересовали эти недоигры. Либо их делают отбитые великовозрастные ебанаты, либо школьники. А если у них это получается, то чем я хуже? Что вообще для этого нужно? Не думаю, что когда-либо осмелюсь показать свой высер кому-то, кроме пары знакомых, но, я думаю, в каждом человеке есть ребёнок, который мечтает о своей игре или о каком-то мультике, ну или кто там о чём мечтал. Что нужно для работы с юнити? Я никогда не занимался программированием, кроме уроков информатики, но мы там обычно бесились. Так вот, чем нужно обмазаться, чтобы у меня хоть что-то заработало на это вашем юнити? Хотелось бы гайдов. Если на ангельском, то лучше в текстовом формате, ибо речь воспринимать я так и не научился. Не бейте.
>>285896 да ничего и не нужно. ни красного диплома, ни знаний. слава прогрессу. скоро и мозгов не понадобится. вот я например сел писать навмеш, а реально знания дальше этак класса шестого не использую. как погромировать узнал посмотрев этого бородоча https://www.youtube.com/user/BurgZergArcade а дальше пошел творить следуя своим идеалам. один хуй это больше вопрос личного опыта, а не теоретической хуйни.
>>285908 вот только жаль что это часть в юнити писали подозрительно странные личности и NavMeshBuilder находитсяв неймспейсе UnityEditor, что несколько мешает адекватному его использованию для процедурных карт. если конечно не играть в игры в эдиторе.
а ещё там нет каверов, использовать агентов разных размеров можно только через жопу, нельзя перестраивать отдельные куски, нельзя генерить карту для перемещения присев и вообще. вот не пересеклось с моими идеалами. пришлось своё делать чтобы было всё как я хочу и я мог залезть внутрь и поменять всё. но сделали и правда заебись.
>>285910 самое большое. где он хак н слаш рпг делал (и не сделал). как по мне чем больше хуйни последовательно выстроено тем больше элементов которые можно связать между собой. только про ссылочные и валуе типы почитай в процессе, эту часть он хуево показал.
Анон, как сделать такой материал, чтоб одна и та же поверхность была глянцевая, но местами диффузная? Хочу сделать "грязное" стекло с разводами, имеется текстура этих самых разводов с альфа-каналом, а как всё сложить в кучу - хуй знает. Даже не знаю как такое гуглить.
Как правильно анимировать сложные катсцены, где персонажи взаимодействуют с окружающим миром и между собой? Адекватно ли в таких ситуациях использовать глобальный Ainmator Controller на сцене и анимировать сразу несколько объектов одной анимацией, чтобы получить больше контроля над ситуацией? Или же следует всегда использовать отдельные контроллеры? Поделитесь мыслями и материалами по этому вопросу. Работаю над 2D эдвенчурой в Adventure Creator, поэтому катсцен и уникальных анимаций в игре будет много.
bool CheckForEnemies() { bool result = false; RaycastHit[] hits = Physics.RaycastAll(transform.position, GetDirectionToEnemyRespawn()); for (int i = 0; 0 < hits.Length; i++) { Debug.Log(i); if ( (hits.transform.tag != _side) && ((hits.transform.tag == SOV_SIDE) || (hits.transform.tag == GER_SIDE)) ) { result = true; break; } } return result; }
Вызывается оно из класса Update(), так что цикл for - норм. Ругается: IndexOutOfRangeException: Array index is out of range. Не могу понять, в чем прикол.
Алсо, убери вот этот пиздец >(hits.transform.tag != _side) && ((hits.transform.tag == SOV_SIDE) || (hits.transform.tag == GER_SIDE)) ) Не пиши сопли в условиях, лучше заведи отдельную переменную, посчитай условие в нее и потом отдельно проверь. Я бы вообще переписал:
var hits = Physics.RaycastAll(transform.position, GetDirectionToEnemyRespawn()); var enemiesFound = false; foreach (var hit in hits) { var tag = hits.transform.tag; if (tag == _side) continue;
var isCorrectSide = (tag == SOV_SIDE || tag == GER_SIDE); if (isCorrectSide == false) continue;
>>286005 Спасибо, добрый человек. Очень я люблю допускать подобные мелкие косяки, а затем полдня рвать волосы на жопе в их поиске. По поводу соплей в условии. С одной стороны - да, но с другой интуитивно хочется сокращать количество переменных - вот и получается такое. Энивей, еще раз спасибо, буду исправлять.
>>286003 >>286005 Зачем вы вообще с _side сравниваете? >>286008 Ты дебаггер запускал хоть перед этим? За 20 секунд же сам мог увидеть, что он зашел в цикл, например, в третий раз, хотя попаданий всего два было.
>>286002 >>286005 два наркомана. transfrom же теперь кешируется самим юнити, можно больше не писать такую хуйню. можно написать что-то вроде этого, или даже такого. это же читабельней чем стена кода с перебором массива, continue и прочим.
>>286000 боюсь это не та информация которую можно уместить урок. если ты не знаком с языком то это тот сорт информации который запутает тебя ещё больше, если ты знаком с языком то я выше описал основные шаги, имплементируй их как понял.
в сишарпе же столько всего написано за тебя. напиши себе гденибудь снизу что-то вроде void DebugTags(IEnumerable<Transform> transfroms){ string s = ""; foreach (var trans in transfroms) s += trans.name + " : " + trans.tag + "\n"; Debug.Log(s); } если часто там сям смотришь теги у коллекций трансформов и сомневаешся в их содержании. надо всё делать удобно.
>>286033 это не тот код который вообще надо отлаживать. это код сорта "эй говно дай мне хуйню", где понятие о хуйне умещается в bool. если что-то не так то спасибо прогрессу, ребилды юнити очень быстрые. можно и пописать хуйни в предикт, поиграть в угадайку. или, для начала, проверить инпут.
>>286032 Тебя блядь просто с ноги надо уебать за Linq, а потом обоссать. Ты понимаешь, что это говно самое тормозное говнище эвар, которое срет тонной мусора?
>>286037 абстракция это великая сила. а с великой силой приходит великая ответственность. за ту хуйню которую ты пишешь.
>>286036 не пиши хуйни, я даже не знаю о каком мусоре ты говоришь. я уже довольно продолжительное время медитирую на результаты работы linq с десятками тысяч самых разных элементов и вот что я скажу: это просто заебись. еблан тот кто не пользуется тем что написано за него.
и это гораздо лучше этого безумства которое описано выше. то что делает функция должно быть понятно из того как к ней обращаются. тот кто пишет все эти if continue var hits var enemiesFound var isCorrectSide для такой хуйни как проверка тегов в результатах рейкаста - тратит время впустую.
>>286039 Очередной джуниор дрочит на компактность кода в ущерб читаемости и предлагает использовать замыкания там, где достаточно простого if-а. Все были такими дебилами когда-то. Лет через 5 ты поймешь, а сейчас тебе бесполезно что-либо доказывать.
>>286041 вопрос не в компактности кода. вопрос в том что предикт проще читать и его видно из места обращения к той хуйне которая написана ниже. так вот открываешь код а там какая-то хуйня if(CheckForEnemies()). это что, блять? что оно делает? жамкаеш "Go to Definition" а там это полотно, которое все что делает в итоге - делает сравнение стрингов. это конченым надо быть чтобы писать код в котором надо скакать по всему классу чтобы понять что он делает. не говоря о том что а) использование IEnumerable в таких условиях исключает то что напорешься на null б) прочитать .Any(x => predicate(x.transform)); гораздо, блять, быстрей и проще чем гору хуйни. это вообще делает функцию из одной строчки которую при желании можно даже в /// <summary> </summary> скопировать чтобы даже не возникало вопросов с тем что же эта хуйня делает.
>>286042 >вопрос не в компактности кода Тут всё скорее просто на любителя. Вот я не люблю слишком компактный код. Обычно люблю всё расписывать, заводить дополнительные переменные тупы для пояснения алгоритма.
Но ограничивать себя в использовании Linq руководствуясь производительностью - глупо. Это преждевременная оптимизация, которая большое зло и коду только вредит.
>>286041 Самое смешное, что через лет пять поймёшь ты, а он-то уже понял. Грамотное использование функциональщины почти не бьёт по производительности (зависит от "умности" компилятора), но убирает огромную кучу ошибок (например, если бы тот парень изначально писал так, как говорит мелкобуквенный, то этого разговора бы не было, потому что той ошибки в цикле не произошло бы). >>286044 Разбор файла настроек (ключ = значение\n) на бейсике (string - уже считанный файл в виде строки; алсо, считай, что удалением пробелов занимается SetConfigVar): i = 0 while i < StringLength(string) eq = find(string, "=") if eq <> -1 then nl = find(string, "\n") key = mid(i, eq) value = mid(eq + 1, nl) SetConfigVar(key, value) i = nl + 1 else error("invalid key") endif wend Проблемы: если в конце файла нет перевода строки, то последняя настройка не будет считана (и произойдёт ещё хуй пойми что, потому что i не сдвинется); сообщение об ошибке совершенно непонятно - invalid key, а какой и почему - хуй его знает; нет защиты от key = value = garbage; возможно, ещё что-то, что я не вижу сейчас. Всё это я рекомендую тебе исправить самостоятельно, чтобы ты прочуствовал. То же самое на питоне: def print_error(e): print 'error in key', e[0] vals = map(lambda x: x.split('='), string.split('\n')) map(print_error, filter(lambda x: len(x) != 2, vals)) map(lambda x: SetConfigVar(x[0], x[1]), filter(lambda x: len(x) == 2, vals)) Проблемы: если в конфиге будет пустая строка, то print_error упадёт - правится одной строчкой (либо try, либо ещё раз отфильтровать); вроде, всё. Что легче понять? Где легче ошибиться? Почему, по-твоему, первый код хороший, а второй плохой?
что-то новые охуенные возможности навмеша с трудом поддаются обьяснению их агенту. раньше то всё просто было, был один тип соединения, а теперь есть тип соединения требующий какие-то дополнительные действия. три часа в код пустым взглядом смотрел, час обьяснял резиновой уточке свои проблемы и ещё полтора живому заменителю уточки. и как-то не пришел к решению которое бы мне нравилось.
>>286044 >>286045 ты делаешь странное. если хочется расписывать подробно что делает функция то на мой взгляд надо выбирать подходящий для этого язык. по моему в данном случае все что хочется описать как подробности следует писать в комментариях, которые действительно могут быть чем-то хорошим. использовать язык погромирования для этого неадекватно. это не язык общения. на мой взгляд если я "не абстрактными" словами словами быстрей расскажу что надо делать, чем напишу это кодом, то это значит что код скорей всего плох. потому что язык не исполняет важную функцию - сообщение комплюктеру того что я от него хочу. (под абстрактными словами понимаются такие как "хуй, говно, пидор". ими то легко всё обьяснить, жаль комплюктор их не понимает)
а то набросились, блять. "очередной джуниор", "через пять лет поймешь", "LINQ тормозное говно", "дебажить код из одной строки вообще найс". осталось только ещё этот петушиный крик процитировать, но для такого надо совсем охуеть.
вот читаю я чужой код, читаю свой код, пишу свой код, делаю всякие ошибки, вижу чужие ошибки. и я поделюсь очевидным наблюдением. чем сильней размазан код (внутри класса и внутри функции) тем дольше его читать. наверно размазанный код признак прокрастинации.
>>286038 Во-первых, ты манда тупая и смотришь не тот гитхаб. У юнитеков свой форк моно, 8-10 летней давности, который распидорасило неплохо так.
Во-вторых, я вас уебанов устал учить простым вещам -- то, что работает в энтерпрайзе никогда не работает в геймдеве. Тут чем тупее пишешь -- тем лучше резалты получаешь. Читай про KISS, тупица.
В-третьих, Linq при любом сука запросе начинает пердеть созданием Ienumerable, array и прочей залупы, которая будет тебе бить по производительности. Почему? А потому, что ты с каждым запросом начинаешь выделять память, которую в последствии не будешь использовать нигде. И вот когда у тебя место в куче закончится и у тебя тригернется gc, чтобы вычистить всю ту хуйню, которой ты насрал, тогда ты будешь сосать сверкающий болт 90 мс на кадр, вместо стабильных <16 мс.
Засунь в жопу свою читабельность и практики хорошего программирования, экономь, сука, ресурсы.
Посоны, я так понял из гугла, что юнитипидорасы как похерили партиклы года три назад, так и не собираются их чинить. Ну то есть не зацикленные партиклы нельзя проиграть. Не подскажите, какие сейчас есть костыли для обхода?
Вечера. Не знаю, как забить вопрос в гугль, поэтому пишу здесь. Суть такова: 2D игра, вид сверху. Нужно, чтобы объект вылетевший за край карты вылетал с противоположной стороны, типа как в Asteroids. Подскажи, анон, ну или ткни в гугль.
>>286224 Добавь на локацию большой куб-триггер. Как только кто-то будет выходить за его пределы, ты будешь об этом узнавать через OnTriggerExit. Потом берёшь позицию этого коллайдера локации и отнимаешь от него позицию объекта, который вышел за пределы. Так ты узнаешь направление от объекта к центру.
быдло с 5 классами тригонометрии врывается в тредАноним31/07/16 Вск 17:59:13#713№286701
Вот есть геймобжект. На геймобжекте висит скрипт, в скрипте объявлена Vector3 с заданной точкой в пространстве. Вот как мне поворачивать эту точку вслед за поворотом геймобжекта? Так, например, чтобы она всегда была у него за спиной. Спасибо.
>>286701 Присобачить к объекту дочерний пустой объект на нужном месте, завести в скрипте public Transform твойДочернийОбъект, запихнуть его в инспекторе в родителя.
быдло с 5 классами тригонометрии врывается в тредАноним31/07/16 Вск 18:48:00#717№286724
>>286722 >Присобачить к объекту дочерний пустой объект nope
>>286729 > как мне поворачивать эту точку Долбоеб, ты не можешь вращать точку. Если нужно найти именно вектор от нее до твоего геймобжекта, то геймобжект_позишн - точка, нормализуешь результат и получаешь вектор. Дальше ставишь ее за спину. или суешь за щеку
быдло с 5 классами тригонометрии врывается в тредАноним31/07/16 Вск 19:01:45#722№286743
>>286739 >Долбоеб, ты не можешь вращать точку Точка должна вращаться вместе с объектом, ось - центр объекта, направление то же самое что у объекта Я жопой чую, что к координате нужно просто прибавлять какой-нибудь ебучий косинус, но у меня с тригонометрией совсем все хуево, поэтому спрашиваю тут
>>286743 Тогда просто закрепи точку на определённой позиции относительно объекта. Например сзади. Объект вращается - точка вращается тоже, сохряняя позицию относительно объекта. А вообще иди нахуй, быдло.
>linq, дроуколы, кулинг, батчинг Блядь, полный энтузиазма, хотел продолжить пилить свою первую йобу, обучаться, но вот читая сей тред появляется зудящее ощущение в области ануса. Чувствую себя конюхом подслушивающим разговоры родовой феодальной знати. Как же мне неприятно.. Нужно ли вникать в этот ваш вычурной LINQ и активно использовать его, если ньюфаг? Или только ознакомится? Как раз йоба на всяких if-ах и тд. Но йоба не простая, будет постоянно разрастаться, покуда есть силы.
>>286752 >Это хуевый и тяжелый способ. А у меня корабли летают с помощью этой хуйни, корабль определяет в какую сторону поворачиваться, далее строит вектор уже повернутый на какое-то количество градусов, покуда цель не будет впереди его. Это нормально? Какие есть альтернативы?
>>286838 Синусы и косинусы считаются через извлечение квадратного корня. Как известно, извлечение корня очень процессорозатратная функция. Если тебе нужно посчитать это несколько раз, то похуй. Если же ты суешь эту хуйню в апдейт, то это плохо. Если это считается еще и для большого количества точек, то это пиздец. >Какие есть альтернативы?
>>286916 >Vector3.RotateTowards подойдет? Я ебу, что ты там хочешь сделать. РотейтТовардс, это линейная интерполяция ротейта. Эта функция поворачивает не на указанный тобой угол, а на его часть. Используется в корутинах, для плавного равномерного пошагового поворота, а не моментального. Эта функция не перемещает объект в пространстве, относительно оси, а ПОВОРАЧИВАЕТ его, оставляя его на том же месте.
Если тебе нужно пересчитывать позиции объектов при повороте вокруг оси, то тебе нужны матрицы переходов.
Проблема с синусами и косинусами решается таблицей значений. Создай метод, который запишет значения синусов и косинусов в тхтшный файл для всех значений угла с точностью до какого-то символа после запятой. При загрузке сцены, в которой будет много поворотом, парси тхтшник в два дикшнари (один для синусов, второй дял косинусов). ПРи необходимости получить значение, просто дергай их из словарей.
>>286939 Таки можно посмотреть, но придется декомпилировать библиотеку (если она не обфусцирована). Но проще написать свою реализацию, если не уверен, что тебе подойдет реализация уже существующей.
>>286949 >Я ебу, что ты там хочешь сделать. Смотри, только не бей, есть корабль с позицией в пространстве и его угол повтора (пусть 93 ) . У корабля сзади двигатель который толкает его вперед, нужно получить новую позицию с учетом того что корабль пролетел столько-то и повернул на столько-то, 3 градуса влево например.
Сколхожено было примерно так
ship.position += YobaVector(93-3 );
vector2 YobaVector(angle){
Разворачиваем единичный вектор на angle, возвращаем }
Хм, а действительно, в таблице будет всего 360 значений, вполне годно, что скажешь? О безкосинусном способе так и не понял, сложно сука, эти все матрицы поворота, ой.
>>286949 >Проблема с синусами и косинусами решается таблицей значений. Нет никакой проблемы, поехавший. Все оптимально и зделано уже до тебя. >>286982 Не надо чинить то что работает. Пошел нахуй.
>>286112 >У юнитеков свой форк моно, 8-10 летней давности ты на полном серьёзе считаешь что их имплементация .Any() отличается? что она вообще может отличатся?
>Тут чем тупее пишешь -- тем лучше резалты получаешь на этапе написания кода до его оптимизации гораздо более верно "чем тупее пишешь - тем дольше пишешь".
>Linq при любом сука запросе начинает пердеть созданием Ienumerable, array и прочей залупы очевидно что только при тех при которых это требуется. к тому-же ничего не мешает своими руками, или периодически вызывать GC.Collect() чтобы не происходило описанной хуйни.
>>286838 >Нужно ли вникать в этот ваш вычурной LINQ и активно использовать его, если ньюфаг? Или только ознакомится? ознакомься, но не применяй. по мере личной прогрессии находя новые сложности можно не всегда понимать где эти сложности на самом деле и начать решать проблему не с того конца. а зная что где-то что-то решает подобные проблемы можно уже и раскопать информацию на эту тему.
>>286982 зачем такие сложности? вообще, нахуй ты позицию корабля высчитываешь руками? а вдруг астероид? отдать на откуп физону не?
>>287067 >чем тупее пишешь - тем дольше пишешь Пиши быстро - тормози на релизе!
Вообще быдло сверху в чем-то право. Линк это стильно, модно, молодежно, но есть ряд подводных камней. 1) Приведение колекции к IEnumerable - создание нового объекта-интерфейса, который потом нужно будет убрать. 2) Доступ к элементам через IEnumerator - тоже объект-интерфейса. 3) Сопли вида "(x) => very long soplina" - конпеляются в отдельные анонимные методы. Их вызов происходит на каждой итерации. Оверхед на вызов функции не то чтобы большой, но он есть хотя бы в предаче двух обязательных параметров. Тут немного спасает, что конпелятор умеет в инлайн, но он работает только для простых предикатов без циклов-ифов-достув к левым объектам.
Вот. Если просто взять фор и перебрать по индексу - то всех проблем выше можно избежать, гц даже не проснется.
>>287121 >Пиши быстро - тормози на релизе! это всё-же лучше чем тормозить вообще весь путь.
>Линк это стильно, модно, молодежно, но есть ряд подводных камней. дааа~ я знаю про то как работают анонимные методы, интерфейсы и что синтаксический сахар не совсем и бесплатный. но с другой стороны в случае с IEnumerable важность таких минусов коррелируется с размером коллекции. как по мне лучше знать где эти камни расположены, чтобы потом вытащить их если слишком большие, чем бетонировать все подводное царство.
>взять фор и перебрать по индексу а если взять foreach то можно так-же избежать и ошибки с null, но о ужас оно что-то делает в стаке и ест его ресурсы.
>>287067 >к тому-же ничего не мешает своими руками, или периодически вызывать GC.Collect() чтобы не происходило описанной хуйни. Я бы не рекомендовал. Периодически то он будет сам вызываться. Разве что можно его вызвать в периоды вообще без действий, в какой-то загрузки следующей локации, например.
Можно логировать в юнити? Писать в отдель6ый файл было бы заебись. Ну типа посрал, поссал, вы так кстати делаете? Или как-то разделить дебаги, типа в одном все выводится, а в другом только нужное.
>>287287 так сам напиши, че ты. публик статик класс дебуг статик лист <стринг> и пубичные методы чтобы пхать в этот лист что-то или собирать в стринг и выводить в Debug.Log когда тебе там хочется. и писать такое довольно важно, учитывая то насколько тормозным может быть Debug.Log.
столкнулся со следующей проблемой. Как задетектить самый отдаленный по выбранной оси мэш-фейс объекта? В общем, моя игруля в зачаточном состоянии. И то над чем я сейчас работаю - это генерация race trackов процедурально при помощи различных префабов, некоторые элементы из которых предусматривают поворот трассы на 45 градусов. Для генерации платформ использую следующий код: http://pastebin.com/abwQYQ4v
Т.е. позиция следующей платформы определяется пока примитивно.
Моя цель - добиться того, чтобы генерилось что-то вроде того, что я ручками нахуячил на 2й гифке.
Самое очевидное решение, что я вижу: 1. Пройтись в направлении forward. 2. найти самое отдаленное, лицо, по направлению этой оси. 3. манипулировать трансформацию следующей платформы, аттача ее на это найденное лицо.
Или же проидентифицировать на каждом типе платформы важные лица, которые будут соединять элементы дороги.
К сожалению, пока не знаю как выполнить оба варианта. Поэтому надеюсь, что двач поможет мне с поиском ответа
>>287315 Кури паттерн "абстрактная фабрика". Можно обойтись отдним статик-классом, в котором десяток приватных методов с одной сигнатурой, которые возвращают объект типа бейзШип. Внутри методов прописана логика создания для каждого кораблся. В классе присутствует дикшнари (или макаронина из ифов/кейсов), которая выбирает нужный приватный метод по в зависимости от аргумента паблик функции, выполняет его и возвращает результат.
>>287316 Я не очень понял, что тебе нужно, но ты можешь сейчас меня закидают говном за неоптимизированность присунуть каждому префабу трэка по паре дочерних Empty GameObject и просто брать их координаты.
Это как раз твой второй вариант. Создаешь компонент типа RaceTrackSegment, у которого будет два public Transform StartNode (и EndNode). Кидаешь его на трек, присоединяешь ноды и вуаля, твой кусок тека готов.
>>287543 спасибо, затесчу на досуге. Пока ты еще не заснул надеюсь, хотелось бы узнать как сделать так, чтобы локальное направление шарика, которым я управляю, менялось? Другими словами, я не хочу чтобы шарик смещался в сторону, как у меня это происходит в этом коде: http://pastebin.com/UWh1iEFg
>>287577 Сделай перемещение, как Transform.position += Vector3 и этот вектор считай, как сумму текущей инерции и вектора силы. Вообще, если не хочешь ебаться с физикой (а тебе, по сути, надо будет), то нужно делать Инерция = Инерция + Ускорение Инерция = Инерция - Инерция * 0.3 (или что еще от 0.00001 до 0.99999), а в случае с физикой. Использовать AddForce() для физического компонента и шар сам покатится как надо.
Что за опция если выбрать объект и нажать W, камера перемащется к нему. Как ее выключить нахуй. Она у меня рандомно активируются, что дико бесит т.к. мешает управлять камерой в FPS режиме
>>287465 Покурил , если правильно понял, то сей паттерн позволяет менять кишки корабля, радар , поведение , короче вместо копания в наследнике, копаемся в фабрике, не нужно делать пиратэШИп, треэдорШип, делаем просто шип, а фабрика ему сама разложит все?
Сделал макаронину, а потом в паттернах нашелся Activator.CreateInstance. Вот бы в функцию передавать просто тип, без параметра, ибо подсвечивает.
>>287600 Типа того. У тебя есть Ship с параметрами (Name, Class, Fraction и куча еще всего) и есть статичный Колян класс ShipFabric с не менее статичным методом SpawnShip(~параметры создания~) и возвращающим твой Ship уже настроенный и все такое. Только фишка вот в чем - у тебя же может быть несколько префабов этих самых кораблей. пусть фабрика инстанциирует определенный префаб, докручивает его и выдает тебе в нужную точку пространства, вот и вся магия.
А тип в функцию можно передавать, например с помощью enum.
>>287587 Я проснулся и понял - тебе, ясен красен, нужна физика, у тебя же шар по треку катается. Кидаешь на него Rigid Body и в компоненте со скриптом движения толкаешь его через разные виды AddForce().
Привет, посоны. Пишу плагин на ассетстор и планирую добавить в него интеграцию с другим плагином. У человека либо может быть этот сторонний плагин в сборке, либо нет. Если я пишу компонент интеграции, он ссылается на класс, входящий в сторонний плагин, и все хорошо, но если стороннего плагина нет, то выплывают ошибки, говорящие о том что этот класс не найден что логично. Шо делать, братцы? Комментировать куски кода с предложением покупателя их раскомментировать в случае необходимости не хочется.
>>287656 Погоди, разве препроцессору юнити можно свои условия задавать? Из стандартных только выбор платформы или версии движка... И да, кажется в самом конце документации что-то об этом есть. Если не затруднит, скинь пример. Спасибо!
>>287669 Все классы наследуются от базового Object class. Си шапр - язык строго типизированный, поэтому ты не можешь просто искать "а если тут такой-то класс?", если ты обращаешься к классу напрямую, это значит он уже должен быть полюбому. Если нет, вылазит твоя ошибка. Поэтому,когда ты ищешь, существует ли какой-то класс, ты должен работать с Object, с классом всех классов. Ну правда тебе и весь код потом надо будет с учетом этого строить.
>>287672 Класса нет. Просто нет. Но он может быть с некоторой вероятностью. Прими это как факт. Да, сисярп соснул, очевидно, и помогут мне тут только макросы.
>>287678 Ладно, раз уж тут столь прошаренный анон, у меня есть два вопроса: 1) что думаешь по поводу использования наследования вместо композиции? 2) есть ли смысл в использовании свойств вместо полей, если при обращении к свойству не происходит никаких проверок?
Как бороться с размытыми шрифтами? В первой менюшке всё нормально, в любом подменю - шрифт размывается. Pixel Perfect и Refernce Pixels per Unit вообще никакого эффекта не дают.
>>287300 Бро, а как потом вывести в файл например? Дебуг еще показываает в какой строке произошло событие, я не знаю как такое делать, короче я маленький, мне погремушку пожалуйста. Неужели нет готового решения? Можно ли сделать несколько консолей, и в каждой выводить разное?В одной лог поведения, во второй лог боя, потому что с одного места разгребать все пиздец, при том что по сути нихуя не написано.
>>287316 делаешь странное. взял бы кривые безье, сделал бы через них генерацию дорог любой формы. если не хочешь то просто указывай места соединений примитивов. гораздо быстрей, проще и лучше любой автоматической хуйни будет.
>>287845 Есть возможность добавить материал, но у меня он не добавлен. Да и как он повлияет на тот факт, что тот же самый шрифт, с теми же настройками в разных меню выглядит по-разному?
>>287939 Наверняка влияет настройка фильтрации текстуры при растягивани-сжатии. Для пикселей нужен Рoint, по дефолту там Linear. Хз где это в юните крутить, у меня в велосипеде все ясно и понятно.
1. Почему все получается на ебаных if-ах и переборах, сдается так не должно быть. Ну ладно, может в некоторых местах действительно лучше использовать их, но они повсюду. Вот смотрите, есть пять функций MoveTo, который двигают корабль к планете, или другому кораблю. Корабль стоит в доке, флаг "док" тру. Что делать? Городить очередной if в функции поведения , который будет проверять "если задание сидеть на жопе, то дальше тру, а если нет, то фолс". Но проверок таких может быть дохуя, в доке, в гипере, в сраке, страшно жить. Может юзать события, типа док и все остальные кому надо подписались на событие движения и всем норм. Но я так, мысли вслух, жду напутствий, и желательно пояснений за события. Медленные/быстрые, любят ньюфагов и тд?
2. Как убрать пидорский Random из System, чтоб остался только от юнити и не нужно было указывать пространство имен, или как это называется. Или наоборот, но от System ничего не подсвечивает, когда ставишь точку, схуяли?
3. Не до конца понимаю тонкий смысл переменных начинающихся на is.
>>288106 1) Заведи кораблю стейт. Проверяй в нем только те условия которые могут перевести корабль в другой стейт + что- важное. При смене стейта - меняй сам объект стета с логикой проверок состояния. Короч: http://gameprogrammingpatterns.com/state.html Квест: найди перевод. Он точно есть.
2) Никак. Пидорские проблемы на самом деле.
3) Соглашение об именовании логических переменных(bool). Просто удобно писать и читать // если оружие не в кулдавне то делать что-то if (!weapons[j].IsCooldоwn) {
>>288120 Что ты туда два раза один объект не подсунешь в качестве ключа. Вот нужно тебе будет заиметь по два флоата на один объект и ты будешь соснулей писать велосипед. Продумай это сразу.
>>288115 >у них хеш это адрес в памяти. Ахуенные истории ИТТ >>288090 Работать скорее всего будет, но ты начинаешь делать такое дерьмище... Добавь компонент с этим флоатом
>>287939 Я не видел твой проект, не видел настроек текста и материалов. Такое может случиться если у тебя нет материалов на одних компонентах, а на других есть. Это может быть из за настроек канвы, а я практически уверен что на каждое меню у тебя минимум отдельная канва, а максимум - отдельная сцена. Если бы ты все сделал как положено, на одной канве с одними и теми же компонентами - в любом меню все было бы идентично. Значит обосрался именно ты. Ищи в чем.
Бесит герой иногда задевает стыки (после приземления после прыжка) и поэтому начинает подскакивать -_-. Может тут кто нибудь делал игру с тайлами? Может кто дать советы как на юньке лучше делать тайловую игру?
>>288318 Если не пишешь клон террарии, где уровень будет непредсказуемо меняться в процессе - отдели логику тайлов от логики платформинга. Проще говоря - лепи тайлы без коллизий, а коллизию делай одну и большую. Можно написать код, который бы делал PolygonCollision, анализируя твою тайловую сетку.
>>288332 Хуя, у меня на стейтах написан "ИИ" юнита в RTS, отлично работает, отлично выглядит в коде. Это ИИ самолета, поддерживает двухэтапную посадку, взлет, заходы на атаку, отходы на перезарядку, уклонение от препятствий
>>288334 Если у тебя "застревает", значит ты что-то накриводелал. У тебя физический материал назначен или дефолтный стоит? Может стоит ему боунс скрутить до нуля?
Итак, вернёмся к вопросу, который был озвучен пареньком выше, про бесконечные нагромождения if-ов в коде. Никто так однозначно и не решил, как же их правильно оформить. В виде стейтов? В чём тогда проблема того анона, которому жопу от стейтов рвёт? Может есть другие способы, которые всех бы устроили? Я хотел бы точно знать, как мне делать, чтобы потом не было проблем ни с читабельностью кода, ни с, тем более, производительностью игры. мимо-другой-анон
>>288569 Стейты - хороший вариант. Жопу рвет зеленому жирному, который почему-то решил, что паренек будет прямо в теле switch-case есь код писать, а не выносить его в отдельные методы.
Я линчо if-ы использую, зачастую, тогда, когда код, в них выполняемый, умещается в одну строку (и можно оформлять без скобочек)
>>288569 >В виде стейтов? В чём тогда проблема того анона, которому жопу от стейтов рвёт?
То, что там, это не стейты, а замена ифовой макаронины на кейсовую. Стейты, это такая стратегия, заточенная на автоматические переходы между состояниями. В правильных стейтах нет ни ифов, ни кейсов.
Там есть интерфейс с методом (или абстрактный класс с абстрактным же методом). Есть несколько имплементаций интерфейса, с разной логикой в этом методе. Есть класс, имеющий поле, куда при переходах между стейтами схороняются ссылки на разные реализации интерфейса. А метод всегда вызывается один и тот же, без всяких ифов. Но так как в разных ситуациях в поле хранятся разные объекты с разной внутренней логикой, то и результат выполнения будет разный.
Отличие от стратегии, грубо говоря, только в том, что в реализации еще зашита логика перехода между состояниями в процессе выполнения.
У меня есть две сцены и один куб. И этот куб выглядит в разных сценах по разному. Это буквально один куб, один префаб, я ньюфаг не знаю как объяснить. Даже сам материал имеет разный цвет то есть даже неперетасканный на сцену там в окошке на скришотах видно. Щито это? Это какая-то глобальная настройка?
>>288636 Ну понятное дело, что такое бывает и что рестарт помогает. Но я вот заебываюсь это проделывать каждый день. Так в чем собственно суть проблемы никто не знает? И почему ее решения до сих пор нет?
>>288642 Может быть проблема с правами доступа, хуй знает. Иногда бывает что юнька не подхватывает сохраненный код из-за этого. Логично предположить. Алсо, есть функция перезагрузки данных в самом монодевелопе.
>>288627 неужели у меня одного такая хуита? Иногда помогает создание нового проекта и перетаскивание ассетов из предыдущего, но есть же какие-то способы устранить вот это все.
>>288660 Настройки освещения и камера в сценах одинаковы. Да и потом даже когда объекты расположены не на сцене, то в окошке asstebundle из скриншота материалы отображаются по разному >>288627
>>288704 ничего, сейчас скомпелировал эти кубы. В одной сцене он светлый, в другой темный. Создавал новые сцены, в них опять все темно. Оди и тот же материал становится темнее, что это за аномалия такая? Это кстати после обновления стало появляться. у меня сейчас 5.3.5f1
>>288707 Ну и поставил на закачку 540f3 может там такого нет. Вообще я где-то слышал что весь проект от начала разработки и до релиза нужно делать на одной версии юнити, может проблема в этом? Это не из каких-то официальных рекомендаций, на форуме каком-то может даже здесь. Это пиздежь или я на этом и проебался?
>>288627 Я просто сделал копию сцены в которой материалы отображаются коректно удалил из нее все объекты и теперь вместо созздания новой сцены копирую и переименовываю новую сцену, это пиздец, долго объяснять но там публичный массив из почит ста объектов который я перетаскиваю из оокошка вручную в инспектр. С этим багом это преваритлось в ебаый ад. Кто-нибудь может подсказать, что мне с этим делать?
>>288737 Я уже обновил юнити и все файлы реимпортировались. Я вообще прлолистал баг репорт из последний верисс там упоминались некоектные цвета, но в другом контексте. Это какая-то редкая ошибка. У меня в планах клепать проекты на две, три сцены, так что это не такая ужж и большая проблема для меня. Заебывает конечно, но даже на русскм языке я нем огу объснить в чем суть ошибки не то что отчет составлять. положу хуй до поры до времени. Но если кто-то сталкивался, то отпишитесь, что проблема не единичная.
>>288740 Готовься, будешь StateManagerom сцены менять, в редакторе у тебя по пизде снова все пойдет (а вот в скомпилированном проекте все норм будет), так что не пугайся
Анон, если я хочу использовать float в виде "x,xx", могу я это сделать как-то без постоянного округления? Ну то есть есть ли такие типы переменных, где есть только одна-две цифры после плавающей точки и всё?
Хотел еще кое что спросить. Есть ли в юнити может какая настройка для времени обработки пересечения? Суть: Карта состоит из кубиков. И когда герой прыгает на них он на пару кадров проникает в блоки и сразу же выныривает. Такое ощущение что он не успевает обработать пересечение. (Хотя если поставить большой блок (из одного большого колайдера) то такого безобразия не заметно).
>>288964 Ну как бы нет -_-. На юнити надеюсь. "Расчет физики" - Это типа: поставить тригер внизу героя. Если во время пересечения тригера с объектом и rigibody2d.velocity.y < 0 то герой приземлился?
Мне нужен материл, у которого будет только diffuse и emission в параметрах, то бишь только текстура и чтобы она светилась. Как это сделать? В стандартных шейдерах такого нету, ну в смысле есть standart shader, но там много параметров, а мне нужно два. Можно как-то просто накидать нужных параметров самодельному шейдеру, или только кодом? И да, есть ли смысл? Или на производительность не влияет и можно использовать стандартный с множеством ненужных параметров?
>>289192 >>289179 Баки, не шарите в шейдерах - не пишите. Никаких просадок по оптимизону на стандартном шейдере от неиспользованных параметров не будет, даже малейшая задержка относительно самопального шейдера исключена.
Короче поцоны, пошел читать паттерн статер, заодно в другие заглянул. Есть паттерн стратегия, и не совсем ясна их разница. Смотрите, вот в пример со статером был дан принтер, у него там методы On(), Off(), Print(), AddPaper() и состояния, тоже 4. Если игрок раздрачивает принетр то збс, а если ИИ, то должно что-то же управлять свыше. Ибо откуда знать что нажимать? В моем случае в менеджере перебираются все корабли и вызывается Behavior(). Ну и норм, выполняется один алгоритм, если что пошло не так, заменил сам себя другим. Выходит что "стратегия" как бы урезанная версия статера, где алгоритмы по сути состояния, но только метод у них один. Или не?
От if-ов не удается избавится, но разложенное по классам удобнее, нежили городить в одном месте. Ведь состояния же переключатся внутри себя тоже всякими иф-ами, и от этого никак не уйти, а? а? Ну скажите.
>>289176 Спасибо, но можно ли избавиться от небольшого осветления объекта? Если использовать diffuse то текстура будет такая же, как и нарисовал, а стандартный ее немного обеляет.
>>289252 Он её обеляет потому что PBR. И это правильно. Но если это тебя так напрягает, заюзай legacy шейдер на самом деле нет, не надо, блядь, пожалуйста, не делай этого, из-за таких как ты люди начинают считать, что в юне нет графена
Анон, поделись мудростью с ньюфагом. Сколько реально свободного места должно быть на системном разделе пекарни для установки Хуюнити с нуля? У меня установщик уже сожрал пять свободных гигов на системном разделе, хотя я перед установкой указывал для загрузки путь на совершенно другой раздел.
>>289287 >>289288 Спасибо. Алсо, как оказывается, основная проблема была в Visual Studio, который как раз эти пять гигов и сожрал. Если его не устанавливать, какие подводные камне меня ожидают?
>>289297 Анон, я и правда ньюфаг. Типа как полный ньюфаг. Что в практическом смысле будет означать неустановленный супертяжелый кусок говна от микрософта в плане разработки игоря? Мне будет не хватать жизненно важных библиотек, или типа того?
Поясните за музыку/звуки в игре. Почти закончил первый проект для андроид, он совершенно безвучный, откуда пиздить? и нужно ли вообще? я сам музон отключаю на играх, но может есть какой-нибудь генератор бесконечных амбиент мелодий?
>>289300 > Что в практическом смысле будет означать неустановленный супертяжелый кусок говна от микрософта в плане разработки игоря? Просто не будет Клёвой Тёмной Темы™ из коробки. И, возможно, винда не обновится без спроса, и после перезагрузки у тебя всё ещё будут запускаться 32-битные приложения.
Сап. Хочу угореть по геймдеву, а в юнити нужен шарп. За сколько примерно можно выучить шарп только для юнити, без всяких дотнетов? Имею опыт node.js, python, go.
Поясните за использование кода/ассетов, которые в свободном доступе в интернете. Понятное дело ассетсторе, где все что бесплатно - используй как хочешь. Но вот допустим кто-то выложил на гитхаб или дропбокс свой скрипт, можно его использовать и потом продать результат с ним? Если он ничего про это не писал, то значит что можно, или наоборот нельзя?
Братишки, поясните за проваливание в текстуры когда используешь полигон коллайдер 2д, как с этим бороться? И еще вопрос: как сделать 2д лифт в игре? Пробовал создать с помощью анимации, так персонаж скакал и дергался как припадочный в этом лифте.
>>289715 Внезапно сделал по-другому, доволен как слон. Пытался реализовать что-то вроде покупки вещей для игрушки на андроиде, ебался почти два часа, пойду спать
>>289523 GitHub в своих правилах написал, что если не оговорено иное, то у выложенного на нём кода лицензия GNUv3. То есть ты можешь этот код использовать сколько влезет, но ты должен будешь на него сослаться в своей работе, а также свой код также сделать открытым. Но я плохо помню уже, лучше загугли.
>>289792 Извиняюсь, я всё перепутал. https://help.github.com/articles/open-source-licensing/ Если лицензии нет, можно сделать форк кода, а потом его использовать. Но вообще более-менее приличные люди как правило пихают наиболее понравившуюся им лицензию в исходники. Стоит обратить на неё внимание.
>забыл поставить приватным полям атрибут SerializeField >полдня ебался, пытаясь выяснить отчего же скриптаблы отказываются как следует сохраняться >еще один день без ощутимого прогресса
Ньюфаг вкатывает в тред. Нужно сделать эффект затенения картинки с одновременной подсветкой некоторых объектов (типа оутлайна). Подскажите, аноны добрые.
Товарищи аноны, есть какой нибудь ассет, который творит Boolean Mesh магию в реал тайм? Boolean Ops не подходит, т.к. он только для едитора, а мне нужна такая срань - падает объект сложной формы и "просверливает" в меше дыру по форме себя. Как это реализовать?
Заебался, пытаясь сделать в Юнити pixel-perfect графику. Вычисляю текущее разрешение и подгоняю размер камеры так, чтобы по вертикали получалось целое число пикселей. Тем не менее иногда возникают артефакты, почему-то только на вертикальных полосках пикселей. Выглядит это как будто половины пикселя нет. Есть теория, что это связано с горизонтальным разрешением, но хз. Горизонтальные артефакты победил путем перерисовывания всех спрайтов под 10 PPU. Пересмотрел все гайды в сети, попробовал кучу разных камер и подходов. Даже купил еба-камеру за 40 баксов. У кого-нибудь получалось заставить эту ссань нормально работать?
>>290595 Size камеры = разрешение окна игры по высоте, деленное на две высоты спрайта и твои пиксели будут идеальными как жопа Лопес. Например 1080/(2 x 16), укрупнить пиксели в 2 раза = поделить результат на 2 и т.д.
>>290603 Этот метод тоже пробовал. Работает как-то странно. В начале дает артефакты на некоторых разрешения, но после первого срабатывания Rigidbody (просто тыкаюсь персонажем в стену) все становится идеально.
Вообще просто пиздец у меня горит с этого Юнити. Сраные флоаты, ошибки округления какие-то, текстуры друг на друга наползают. В моем уютном вебе такого нет.
>>290610 Поставил персонажу начальные координаты (0.001, 0.001), все прекрасное работает, поставил (0, 0) — лезут артефакты. Это говно выше моего понимания.
Посоны, может ли кто нить пояснить принцип, почему тут используется такая строка http://docs.unity3d.com/Manual/Layers.html >int layerMask = 1 << 8; То есть это равно 256, хули тогда он учитывает все, кроме слоя 8?
>>290668 Чтобы ты мог указать несколько слоев используется битовая маска, где позиция бита определяет индекс слоя, к которому он относится. Если тебе например надо выбрать первый и третий слой, то это будет 1010. Если третий, шестой и восьмой - 101001000.
Ребзя, есть комната, когда присоединяется игрок в ней спавнится стул(Одновременно может быть максимум 2 игрока). Как идентифицировать эти стулья, дабы распределить на них пики точенные и хуи дроченные?(С условием что первый игрок получает только пики, а второй только хуи)
>>290595 1. Ставишь камеру в режим ортографик. 2. Ортаграфик сайз должен равняться половине высоте экрана. То, есть ели у тебя девайс в высотой экрана в 640 пикселей, то ортографик сайз должен равняться 320. Ты можешь в рантайме делить высоту экрана на два (типа для всех экранов подойдет), это будет выглядеть примерно вот так:
Анончик, поясни за LOD в юнити шейдерах. У меня есть шейдер с двумя лодами 200 и 100, где 200 кукурузисный, а 100 для объектов подальше. Но естественно все это дело ничего не делает само по себе. Единственное что я нашел, это то, что можно для шейдера(или материала) перерубать максимальной LOD скриптом. Дело в том что у меня в целом используется всего один экземпляр материала, а значит, если я поменяю макс лод, то объекты на переднем плане тоже врубят пониженный лод. Должен же быть какой-то чудо способ автоматизировать все это дело по дистанции? ЧЯДНТ?
CG адепты, выручайте. Как заставить transparent shader нормально работать на моих процедурных кубах? Вершины/треугольники раскиданы по примеру стандартного кубического примитива юнити, нормали пересчитаны, тангенсы назначены. Не могу сделать нормальную воду из-за этой хуйни.
>>277225 (OP) Почему юнити говно? Потому что разрабы ебанутые параноики: Ограничения на встроенное программное обеспечение. Вам не разрешается непосредственно или опосредованно распространять контент лицензиата, установленный более чем на 1 000 электронных устройств или систем, если такой контент лицензиата обеспечивает пользовательский интерфейс или первичную функциональность таких электронных устройств или систем без отдельной лицензии, полученной от Unity. Это ограничение не препятствует Вам в распространении контента лицензиата, который был предварительно установлен на персональных компьютерах и потребительских электронных устройствах, таких как мобильные телефоны, планшеты, телевизоры или телевизионные приставки при том условии, что такой контент лицензиата не обеспечит пользовательский интерфейс или первичную функциональность такого устройства.
Коротко: Игры ты делать можешь, и продавать можешь, но распространять нет. Что за ебаный бред?
>>290824 ээээээ.. ЭЭЭЭЭЭ... Если все отличе материалов только в йоба-текстурах, то смысла в таких лодах нет. Текстуры генерят и переключают лоды автоматически. При загрузке текстуры есть опция - генерить мип-мап уровни. Например для 8к х 8к текстуры лоды будут со сторонами 4к, 2к, 1к, 512 и т.д. до 16 пикселей. Памяти займут столькоже сколько и исходная текстура. В шойдере когда ты выбираешь из текстуры то сразу учитывается нужный лод (сколько пикселей занимает объект на экране, под него ищется ближайшый подходящая мип-уровень по размеру, чтобы вибирать из него поменьше). ВСЕ ЭТО РУЛИТСЯ НА УРОВНЕ ДЕВАЙСА БЕЗ УЧАСТИЯ ВЕРХНЕГО МОСКА ЧЕЛОВЕКА.
>>291452 >встроенное программное обеспечение >обеспечивает пользовательский интерфейс или первичную функциональность таких электронных устройств Ты идиот? Это значит ты не можешь сделать интерфейс для своего телефона или другого устройтсва на юнити
>>291451 В моем случае у меня два сабшейдера, где первый использует тесселляцию, генерацию нормалей, дисплейсмент вертексов, статичную нормаль, соответственно текстуры нормали и дисплейсмента, а второй сабшейдер с пониженным лодом, использует только цвет. Ну и я хочу при достаточном отдалении перерубать всю эту штуку. Повторю шейдер всего один, однако используется для всей сцены, поэтому банальное глобальное переключение будет хуячить и ближайшие к игроку объекты
>>291456 Бля, лол реально пропустил запятую, вот ебан! У нас тут просто ночь, а я как полный долбоеб решил что 3 часа ночи это идеальное время для установки Юнити.
Но зачем им мои отпечатки пальцев? Алсо, нет ли у них такой политики как у UE что комиссия из жирух, тумблерин и слабых на мозг жидов решает можно твою ДАЖЕ БЕСПЛАТНУЮ игру выпустить или нет.
>>291493 Тогда есть два стула, выбирай, присаживайся: 1) Сделать в одном шейдоре несколько техник, перед каждой отрисовкой менять технику в зависимости от растояния. Тут надо руками рулить рендером на высоком уровне. 2) Передавать через юниформы информацию о расстоянии и уже в шейдере через иф выбирать подходящую обработку. Тут наверно батчинг сломается вместе с производительностью.
Сап, аноны. Кто-то сталкивался со слишком большим размером файла resources.assets.resS? Вся моя папка Assets весит 30мб. В билде игры этот файл весит 2,5ГБ(!) Хотя недавно весил не более 100мб. Гугл не помог.
>>289797 >Извиняюсь, я всё перепутал. Совершенно верно.
Generally speaking, the absence of a license means that the default copyright laws apply. This means that you retain all rights to your source code and that nobody else may reproduce, distribute, or create derivative works from your work.
сап юнитач. тред не читал Как работает система подписки в юнити? Надо постоянно продлевать чтобы получать фичи типо "возможность made by unity и большой прибыли" или можно купить подписку, сделать билд игры и уже на этот билд будет пожизненная подписка?
Пацаны такой вопрос к юнитиводам. Почему Ассеты с оф сайта не скачиваются, а только есть опция "открыть в юнити"? А если я хочу заготовку скачать себе чтобы открывать по вкусу из безсплатных то, что есть? Почему сразу только к текущему проекту и где скачать ассеты тогда?
>>277225 (OP) Посоны, проясните за сферкаст - он посылает сферу из ориджина по дирекшену на максимальную дистанцию? Если так, то как мне кастануть сферу в точке, отличной от трансформа, причем не с проходом, а вот мне в точке Х, координаты которой отличны от координат трансформа, без чекания пространства между ними. Пик кароче.
Посоны, а если у меня в if идут два условия через &&, то в случае провала проверки первого, второе проверяться будет? просто вторым условием идет лайнкаст, не хотелось бы лишний раз дергать
>>292246 В случае дефолтного юнити, но в других языках или даже в пределах одного языка, но с разными компиляторами\их настройками результат может отличаться.
>>292351 >Да и по производительности второй вариант лучше (правда эту разницу один хуй никто не заметит) Хватит нести хуйню про производительность, инвалиды ебаные, если нихуя в этом не понимаете.
Посоны, допустим я бокскастю по координатам и получаю RaycastHit. Там может быть два разных обжекта - ну куб-нода или куб-домик. В случае если это куб нода, мне нужно получить из него компонент скрипт и выполнить оттуда функцию. Если это куб-домик то соответственно нужно получить другой компонент и сделать другое действие. Как это сделать лучше - через if (Получаем один компонент)else(если не получили, значит получаем другой компонент другого типа), или как то иначе?
>>292289 В юнити перегружены операторы на операции с вектором, так что скорее всего при операции копирования происходит все точь в точь как первые 3 строки. Разницы никакой, но если любишь заниматься хуетой то можешь писать как угодно и даже 2 раза.
>>292574 Можно например написать кастомный интерфейс с методом триггером, который будут реализовывать заинтересованные классы подвешенные на эти 2 обжекта. И при столкновении просто вызываешь gameObject.SendMessage у таргета коллайдера или как его там. Тогда вообще не нужно знать с чем произошло столкновение. Вызываемые методы выполнятся если они есть на этом обжекте.
Где скачать?
На официальном сайте.
Где взять уроки?
На официальном сайте.
Где взять текстуры и модели?
На официальном сайте.