Такой вопрос: Есть класс, который содержит enum, массив, буллевую переменную и т.п. Как грамотно сделать так, чтобы в зависимости от выбора в дропдауне, отображалась нужна приблуда (или массив или переменная, а не все сразу)?
Как сделать моментальный переход между анимациями? Если я ставлю Translate duration = 0, то появляется ворнинг Difference in effective length between states is too big. Transition preview will be disabled. UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)
Аноны, посоветуйте блоги/ютуберов, которые объясняют плюсы и минусы различных подходов в кодинге. Когда-то умел в C#, хоть и забыл все, внезапно дернуло написать очередной симулятор ограбления корованов, курю маны по шарпу и юнити. Туториалов дохуя, но ощущение, что большая часть построена по принципу повторения, не объясняя, почему была выбрана конкретная архитектура. Инб4 ссылка на вики о паттернах ООП.
Двач, учу c# по книге "Learning c# by developing games with unity 5x", полет был нормальный пока я не добрался до методов, в целом понял для чего он нужен, как работает и когда используется, но затем пошел return мать его! И все пошло по пизде. Ничего не понимаю, объясните плиз. Шо этот ретерн делает, куда что возвращает и нафига он нужен вообще?! Книга разумеется на ангельском и отвечает тем, что ничего страшного, что ты этот ретерн не понял, если ты его не понял вернись и перечитай все заного, мы дохуя его будем использовать в будущем.
>>619499 Изи же. Return - это то, что выдает метод в ответ на вызов. Ничего не выдает - значит метод void. Вместо того, чтобы написать значение переменной вручную, можно вызвать метод. Например время = Вася.СпроситьВремя(). Немного пьян, мб объясняю через жопу. мимонуб.
>>619501 Лол, половина юнити это "сделать пездато". За этим тут и сидим.
>>619490 (OP) Ну че маньки кармаки, все еще мечтаете в одиночку выпустить разящий шин? Напоминаю, что эта индустрия доживает свои последние деньки. Рынок перенасыщен дешевой рабочей силой готовой усераться по 20 часов за еду. А доходы крупных компаний едва покрываю собственные расходы. Денег тут нет и никогда не будет. Бегите пока не поздно еще успеете выучится на сварщиков.
>>619507 Ну а хули делать, хотел в науку и съебать за границу. Потом оказалось что я долбоеб и хуй простой, так что остается работать за еду, а геймдев - использовать как хобби, отвлечься от тлена бытия.
Котаны. Когда-то использовал UniLua для использования скриптов в игре скриптов, но сейчас пригляделся и оказалось говнище. Можете посоветовать норм рантайм интерпретатор?
>>619591 > Можете посоветовать норм рантайм интерпретатор? Свой напиши. Интерпретатор же. Нихуя сложного один большой свич внутри игры. На вход подавай ему свой йобаскрипт. Внутри он будет делать примерно так: switch (token){ case "var": DoVariableAdd(token); break; case "if": DoIfElse(token); }
>>619490 (OP) Бля, как устранять подрагивания при движении мышкой? FP-Шутан. У меня нихуя не получается от них избавиться. А в коммерческих играх такого подрагивания нет. В чём секрет?
Ля а как обрабатывать относительно большие обьемы данных в юньке, вот допустим массив какой уебанский, юнька же просто сразу крашится и все, как вообще дать инфу игроку, что все еще не сдохло, даже если не крашится, а просто обрабатывается.
>>619670 Оптимально PNG. Юзай атласы. Когда игра будет собрана в логах едитора есть информация о файлах, которые прошли в билд и их вес. Обходишь по этому списку и в настройках импорта файла устанавливаешь размеры, сжатие и мипмапу. Если ты совсем хардкорщик, то генерируй текстуры процедурно.
Что насчет онлайн элементов в юнити? Допустим, хочу добавить в игру возможность приглашать других игроков через стим к себе в партию. Насколько это мозгоебство будет? Вариант самому сделать, или лучше сразу забить и пригласить в проект опытного программиста?
Вообще идея была сначала сделать браузерный мультиплеер с системой логинов/паролей, потом понял, что это вообще почти-что ммо писать с нуля. Потом подумал, что если уже есть у людей аккаунты типа Стима/Гугл Плея или тех же аккаунтов ВК и FB, то нахуя городить еще свою систему логинов паролей. Получается, мне просто надо брать данные аккаунта игрока из "социальных сетей" и сопоставлять со своей базой данных или типа того. Ебать, как сложно нахуй.
Господа, вопрос от ньюфага. Вот допустим я двигаю объект с помощью велосити, то мне надо нормалайзить вектор движения или нет? Я вот попробовал в тестовой сцене, вроде разницы не вижу в движении на разных скоростях.
Анончики, у меня такой вопрос: Пусть у нас на одной сцене есть несколько десятков тысяч одинаковых объектов (т.е. инстансов одного префаба) и нужно для каждого из них детектить столкновения, причем чтобы было хотябы 60 фпс. Пробовал повесить на них ригидбоди и в настройках увеличить промежуток времени между вызовами fixedUpdate, но меня послали нахуй, ведь они хотели столкновения вообще без использования физики. Идея просчитывать в Update дистанцию до всех остальных объектов явно не вариант.
Сам вопрос: можно ли как-то детектить столкновения одинаковых объектов без использования ригидбоди и с хорошей производительностью?
>>619780 Спасибо, анончик, но теперь я столкнулся со следующей проблемой: Благодаря тебе, я смог детектить столкновения между двумя объектами, например: Collider collider1 = Obj1.GetComponent<Collider>(); Collider collider2 = Obj2.GetComponent<Collider>();
bool doesIntersect = collider1.bounds.Intersects(collider2.bounds); if (doesIntersect) { // что-то делаю }
Но теперь, поскольку методы OnTrigger/OnCollision не будут вызываться, то я не могу сделать что-то уровня:
Obj1.GetComponent<Collider>().bounds.Intersects(Любой другой коллайдер); Я пробовал запихнуть каждый этот объект в Коллекцию или массив, а потом по нему проходиться, но все стало только хуже. Есть у тебя идея как мне этим способом детектить коллизии от всего?
>>619499 Спустя пару дней, вернулся к return, с новыми силами. Как сказал один мудрый человек - "Самое сложное - это понять, насколько все на самом деле просто". Не сдавайся анончег, если чего-то не понимаешь, оторвись, отдохни и затем вернись с новыми силами. Это работает.
>>619959 Не могу себе представить, каково это, когда не можешь понять, что такое ВОЗВРАТ значения функции. Наверное, это сишное семейство языков так сбивает с толку нубов. Ведь в си всё - функции, а в си++/сишарп всё - методы. Когда всё - функции, нуб не придаёт значения тому факту, что функции - есть программная абстракция, ВОЗВРАЩАЮЩАЯ значение, даже если это значение - void. А вот у нас в паскале... Были функции и процедуры. Функции возвращают значение, процедуры - нет. Никакого void тоже не было. Поэтому нубы сразу понимали суть и смысл функций. Ретурна тоже не было, но при переходе к си-подобным языкам, вопросов (у меня по крайней мере) вообще не возникло. Правду же говорят, что паскаль - лучший для обучения кодингу с нуля.
>>619819 GetComponent очень дорогая операция. Попробуй избавиться от неё. Например, хранить список коллайдеров. Если не боишься сложностей, то почитай про unity ECS.
Ананас, подскажи на твой взгляд лучший учебник или видеокурс по юнити. А то я метаюсь от одной залупы к другой и не могу найти что-то годное, дабы не было получасового заливания воды о том, что такое переменные.
>>619987 Я попробовал сделать так: Создать пустой объект, который будет создавать остальные объекты. Как только он создаст объект, я сразу получу коллайдер и запихну в массив. Это все в методе Start(). В итоге я буду иметь к концу Start() весь список коллайдеров. Но теперь вопрос как мне детекить столкновения. Один из вариантов был в Апдейте двойным лупом чекать каждый коллайдер, но Юнити тогда даже не запускает игру. Другой вариант это создать классовую (static) переменную в создаваемом обьекте, которая будет хранить список коллайдеров. Тогда в апдейте я смогу в один цикл проверить на столкновения, но поскольку этих объектов куча, то Юнити опять не запускает игру. Я что-то делаю не так?
Есть вопросы по Unity 1.При настройке ригов левая рука подсвечивается будто там ошибка. И после завершения тоже сообщение об ошибке. Что надо исправить? 2.Обязательно ли чтобы модель была в Т-позе? 3.Головной убор стал снизу невидимым после импорта в редактор. Как это исправить?
>>619776 Только через ECS+многопоточность ты сможешь достичь производителтности в 60 фпс при обработке тысяч объектов на проверку столкновений. Но, судя по твоим перлам итт, тебе туда ранл соваться, один хер не поймешь ниче, но попроьовать можешь, конечно, иногда просраться тоже полезно.
>>620141 Не запускает? Даже если создать десять объектов? Если запустится, то нужно оптимизировать: если форма не важна, то проверяй столкновение кругов через квадрат радиусов или запилить квадродерево. Но самый верный это ecs
ребята у меня в игре кнопка на интерфейсе работает через стандартные ассеты (кроссплатформ ui). по нажатию кнопки стреляю во врага, но хотелось бы чтобы при удерживании кнопки тоже происходила стрельба я уже даже завёл переменную которую чекаю в update() и меняю её состояние при нажатии / отпускании кнопки - но между вызовами update сбрасывается состояние "нажатости" в то, которое задано при start. как быть?
Думаю, как лучше сделать обнаружение игрока врагом. Пока придумал следующие: навешу на противника конусообразный коллайдер. Как только игрок окажется в нем, будет бросаться raycast от врага в сторону игрока. Если луч столкнулся именно с игроком, значит, можно нападать на него. Если столкнулся с препятствием, значит, игрок спрятался, не виден, игнорим.
>>620170 Ладно. Думаю, постоянная проверка в update на расстояние и угол не такая затратная процедура, всего лишь математические операции с векторами. Но с коллайдером вычисления можно было бы делать только во время триггера.
>>620172 если так хочется триггерами пользоваться то начинай проверять угол и расстояние когда игрок попадает в круглый триггер вокруг вражины. хоть не придется возится с конусом.
хотя если хочется вообще вот оптимизону накотить чтобы вообще вот прямо ух то хули, делай там себе октодерево, всю хуйню, сам проверяй баундинг боксы чтобы триггерить только правильных вражин своим присутствием. будут у тебя там тыщи врагов триггерится только когда надо. но зачем? делай так чтобы было удобно сейчас и не прошлось переделывать слишком много потом, когда захочется сделать получше.
>>620175 проверку по дистанции забыл лол. и все эти ифы можно в один написать.
>>620176 >хоть не придется возится с конусом Что там с ним возится. Я бы сделал этот конус в блендере в два клика, и закинул его в mesh collider. Но вообще сделаю как проще, расстояние+угол. Все равно только один враг будет, на оптимизацию можно забить
>>619776 разбей мир на грид соответствующий радиусу обьектов, суй в этот грид обьекты (что разумеется мегабыстро так как нужный индекс говорит тебе кордината), для каждого обьекта проверяй только 3 на 3 пространство вокруг него на столкновения. и сделай это всё кэшфрендли. будет мегабыстро.
>>620152 какую-то ужасную хуйню делаешь. >Что надо исправить? иерархию костей? указывай нужные кости самостоятельно. >Обязательно ли чтобы модель была в Т-позе? не обязательно, Т позу настраиваешь после экспорта в самом юнити. >Головной убор стал снизу невидимым после импорта в редактор. Как это исправить? поменять шейдор на тот который будет тебе задние стороны полигонов рисовать.
>>620177 такой хочешь поменять конус на пару градусов и обана. надо включать блендор, искать эту модельку конуса, делать там свои два клика, сохранять, ждать когда юнити поймет что эту хуйню надо экспортировать. да ну его нахуй. а вдруг у тебя там конусов много будет? много вражин вот? не тот конус поменяешь и чет будет не так! проще залезть в инспектор и нужное число там ввести. и при очень большом желании каких-то няшных гизмосов добавить, хандлесов чтобы тягая за пиптики в сцене менять этот угол.
Испольую lerp в моем скрипте для кое-каких трансформаций, но эти трансформации происходят плавно, хотелось бы неких рандомных рывков, дерганий. t = t + Time.deltaTime / states[index + 1].time; if (t > 1) { t = 1; } transform.position = Vector3.Lerp( states[index].vector, states[index + 1].vector, t ); t плавно меняется с 0, 0.1, 0.2, ... 0.9 А хотелось бы 0 0.1 0.13 0.2 0.24 0.43..., что бы и убрало плавность. Вот например, я этот скрипт использую, чтобы игрок (а точнее камера с character controller) заползал под кровать или в шкаф, но не хотелось бы, чтобы он плавно туда въезжал, а как бы по натуральному
>>620198 доп. Можно было бы добавить строчку t = t + рандомное_число(-0.2, 0.2), но в этом случае трансформация может закончится раньше или позже указанного времени (states[index + 1].time)
Не могу решить тупую задачу: угол относительно плоскости. То есть, когда один объект и другой находятся на одном уровне (на одном этаже например) , угол должен быть 0, а когда один стоит на другом - 90. Ни один дебаг не возвращает 0. Какой то из них в принципе возвращает 90, когда объекты на одной плоскости, и 0, когда друг на друге, так что можно использоваться эти данные, но мне скорее просто интересно, а как получить именно 0 и 90
Почему тут кэшируют destination? Проверка if (Vector3.Distance(destination, target.position) > 1.0f) быстрее, чем if (Vector3.Distance(agent.destination, target.position) > 1.0f) ?
> После нескольких лет впервые зашел в /гд. > Решил глянуть что там в юнити треде. > Йоахим дал им ецс, нативные контейнеры, бурст > Нет хотим жрать говно, весь тред в монобихевиорах
>>620313 >экспериментальная штука, которую еще допиливать будут >нужно для оптимизации кода, когда полтреда пилит платформеры, а не РТС >почему не пользуются?
>>619490 (OP) Как так вышло, что для разработки инди-игрушки нужна целая команда программистов, 3д-моделлеров, текстурщиков, аниматорщиков, звукачей и т.д? Т.е. в одиночку заниматься разработкой игры можно только как хобби, которое никогда не принесет никаких денег.
>>620340 >лет через 7-10 Кому всралось класть на разработку игры всю свою жизнь, чтобы по итогу она не принесла ни копейки, либо продалась тиражом в 3 экземпляра и ты мог на эти "деньги" охоту крепкую себе купить в магазе, лол?
>>620339 >как так вышло Перенасыщение рынка. Ты же не бугуртишь, что фильм одного семена не получится вывести в прокат, а нужны связи, актеры и прочее? >никогда не принесет денег Из недавнего вспоминается Stardew Valley, где разраб чего-то да заработал. Или жабецкий, который аутично пилит дворфов за донаты. Или сделанные на коленке порноигры, которые расхватываются задротами. Про обмазанное микроплатежами мобилоговно даже не говорю сейчас.
Просто не надо пытаться конкурировать с AAA на их поле.
Анон, помоги, чот туплю. Есть события юнити, Unity Event. Это когда появляется такая менюшка в инспекторе и ты нажимаешь плюсик и настраиваешь там действия по событиям. С этим вроде бы все понятно. А есть еще какие-то C# события, на которые надо подписываться, отписываться и т.д. С ними непонятно, но пытаюсь разобраться. И я так понял, есть еще третий вид событий, тоже юнитевский, но что-то между первым вариантом и вторым. Типа он тоже передает события, но не делает менюшек. Что это вообще значит всё? Как в этом разобраться? Когда какие ивенты лучше использовать?
одновременно запускаю: agent.destinatoin = player_pos; animator.SetBool("walk", false); animator.SetBool("run", true); Но зомбак сначала как-будто скользит.
>>620513 Вроде пофиксил. У меня на связи walk->run было условие run == true, а на run->walk условие walk == true. Это ведь неправильно? На этих стрелка должна быть проверка одного булева значения?
>>620339 > Как так вышло, что для разработки инди-игрушки нужна целая команда программистов, 3д-моделлеров, текстурщиков, аниматорщиков, звукачей и т.д? Возможно потому что делать игры сложно и нужны усилия людей шарящих во множестве дисциплин?
>>620487 Если я верно понимаю, то у тебя каждый цикл будет компонент заново искать, что немного влияет на производительность. Лучше присвой значение переменной до цикла.
>>620513 Скользит? Может анимация бега не началась в момент увеличения скорости? >>620515 Зачем держать две переменные? Возьми одну "isRun". На walk->run условие isRun=true, а в обратную сторону isRun=false. Но я бы сделал плавный переход из одной анимации в другую через blend trees. И все три анимации будут в одном ноде и всё это управляется через одно число.
>>620487 Он ругается на 17 строку. Я так понял, что эта строка с получением компонента текста. В следующий раз попробуй разбить строку на строки короче и в след запуске ошибка укажет точно место.
>>620168 Очень существенный минус в твоей схеме то, что колижины считаются несколько раз за тик, что сказывается на производительности. Лучше кидать лучи с ограничением по "углу обзора" дальности и т.д. как там аноны писали. Плюс использовать лэйеры.
>>620339 Как так вышло что для соло- изготовления любого продукта, требуещего знаний и навыков во множестве областей, требуется несколько лет, маня?
Ты реально тупорылый долбоеб очевидных вещей не понимаешь что нельзя быть экспертом во всем и что разделение труда позволяет ускорить процесс изготовления любого продукта, а не только кудахтерных игр?
Помогите, пожалуйста. При нажатии на кнопку вызывается метод OnClickButton, который, в свою очередь, вызывает другой метод. Чтобы сделать код читаемым, я хочу перенести методы в разные файлы. Вопрос: каким отношением связать файлы, чтобы не создавать дополнительные экземпляры? Так как метод программ основной, и с ним вообще много что связано
>>620576 Вообще партиал-классы не затем придумали, чтобы в них логику дробить. Это просто неудобно когда в дебаге придется по файлам шариться и еще в голове держать другую часть кода.
Партиал-классы запилили для разделения кода написанного программистом и автогенератором. Это упрощает им работу - автогенератор знает, что он владеет частью кода один и может смело сразу перезаписывать весь файл без опасений загубить чужой код, в свою очередь деву не приходится ломать ноги в автокоде и бояться его поломать убрав лишний перенос строки.
Тупых вопросов пост
Аноним01/11/19 Птн 16:49:08№620612114
1) Зачем здесь умножение? 2) Как включить режим отладки? ("пошагать"). Вот у меня коде, хочу понять как он работает (точнее, почему не работает так как надо). Использовать Debug.Log ? 3) Есть сфера, которую мы используем в качестве снаряда, запускаемого врагом в сторону игрока. Как сделать, чтобы сфера при попадании в стены (и другие объекты, кроме игрока) разрушалась? Можно ли это сделать в инспекторе или необходимо лезть в коде?
>>620612 1. Просто смещение. Поменяй значение и увидишь что изменилось 2. Что конкретно не работает? При установке юньки ставишь галочку на "поставь мне студию". В студии жмёшь на кнопку "подключиться к отладке"или чтото типа того, ставишь breakpoint и запускаешь игру так что игра должна пройти по брейку. 3. OnCollisionEnter и отслеживай пока не столкнётся со стеной
Помогите нуфагу, как правильно реализовать меню паузы если у меня много разных сцен и у каждой сцены свой контроллер? Просто сделать префаб канвас меню и сувать этот префаб в каждую сцену? А как мне связать контроллер в сцене с меню паузы чтобы проверяло стоит игра на паузе или нет?
Анон, помоги пожалуйста слоупоку, как правильно реализовать МЯГОНЬКИЙ импульс для rb 2d? Есть делать "AddForce...ForceMode2D.Impulse" то получается слишком резко. Неужели надо делать через "ForceMode2D.Force" и силу через какой-нибудь mathf.lerp увеличивать на одну секунду? Или как лучше? Вы тут про анимейшн кервы говорили, но я не врублюсь, как их использовать, у меня всё равно получается слишком резко/быстро, хотя если её сломать (кривую анимационную) то ничего вообще не работает.
>>620727 Да, я ето понимаю, наверное неправильно вопрос задал. Просто хочется не резкий импульс, а такой, как на второй пикче. Видимо, только через режим Force с каким-нибудь изьебом mathf.lerp, хотя хз, надо пробовать. Просто сложно как-то слишком, я думал мб есть какие-то другие более изящные методы, как сделать мягкий кратковременный "импульс" типа как на втором графике.
Ребят, нужна имитация сообщений, типа как в вк. Я так понимаю, Invoke - единственный способ задержки? То есть: Invoke("massage1", 2f); Invoke("massage2", 5f); Invoke("massage3", 7f); А если метод massage имеет свойства? public void massage (string mes) { }
navmesh агент при по мере приближения к destination замедляется. Можно ли как как то это замедление ускорить? Чтобы полное затухание длилось не 2 секунды (я хз, сколько на самом деле, примерно), а скажем, за полсекунды.
Анончик, подскажи пожалуйста. Есть обьекты, которые ускоряют игрока. Их много будет, они префабы. Как им лучше обратиться к rb игрока и сказать, что "к тебе применен импульс"? Я так понимаю, что getComponent это затратная операция, и каждый раз при столкновении игрока с этим обьектом делать getComponent будет не очень хорошо. Сейчас вот сделал через Unity EventSystem с дополнительным скриптом. Я дурак и вообще насчет такого не надо париться? Делать через OnCollisionEnter и getComponent<Rigidbody> и хуй с ним?
>>620884 >Я дурак и вообще насчет такого не надо париться? Хз. Подними тестовый уровень где твое "много" будет в полном объеме и его смотри через профайлер. До этого достаточно минимально рабочей версии - чтобы просто работало как надо.
Делаю движение 2D пиксельарт, и нужно, чтобы при каждом повороте отрабатывал экшен. Но в 2D simple directional почему-то все 4 состояния работаю одновременно! Как сделать чтобы только одна сторона работала?
Поясните за юнит тестинг в разрезе индустрии, а не модных конфочек. Я где-то слышал, что на это на практике почти забивают. Это правда, или даже самая зашкварная шаблонодельня тестирует всё?
>>620947 В геймдеве никто не делает юнит тесты. Они бесполезны. Намного критичнее делать тестовые уровни с граничными условиями игры и на них полностью прогонять всю интеграцию.
А где прочитать про какие-нибудь стандартные паттерны кодинга для юнити? Например, каким способом нужно делать активаторы(двери рычаги и т.д.)? Или как стоит делать поиск персонажей для ИИ?
Вот ИИ, например. Перемещение персонажей стоит писать для каждого паттерна поведения отдельно или нужно написать класс "перемещение нпс" и передавать координаты для движения туда?
У меня есть в голове несколько мыслей о том, как это можно сделать, но как делать правильно? Я в принципе, умею кодить на уровне джуна или несколько хуже(до этого кодил фуллстеком на работе и приложения на замарине как пет проект), но в геймдеве ноль.
>>620989 Ты игры делать будешь или паттернами обмазываться?
Если не ошибаюсь, на офф сайте есть какие-то примеры хороших практик программирования. Но вообще я сборника концентрированных полезных советов не встречал. Оно больше по кусочкам из разных источников складывается.
>>620999 Я на работаю в небольшой конторке(не программистом), пришел начальник и говорит "Нам нужно замутить клиенту такую хуйню, чтобы он загружал свой сраный отчет и у него сравнивались данные из него и из нашей программы. И Чтобы он мог разным автомобилям разных водителей на разные промежутки времени присваивать через интерфейс."
Т.к. я хвалился своим приложением на телефон, задачу дали мне, хоть по должности я и не программист. С горем пополам, попутно изучая веб с нуля, я сделал апи на .NET core и сайт на vue за два месяца. Получилось вроде как даже неплохо.
>>621002 Я люблю обмазываться паттернами. Плюс в том, что не нужно изобретать велосипеды, которые будут херово работать.
>>621020 Нее, это 3d модель призрака c анимацией. Нужен враг для преследования игрока. Правда, призрак же должен проходить сквозь стен, но мой почти готовый скрипт слежения заточен под обычное человеческое хождение, как мне и требуется. Но модель мне прям вообще нравится. Не знаю, допустимо ли сделать, что призрак по коридору и комнатам шлялся
Кстати, а реально зарабатывать на ассетах в стиле ГОТОВАЯ СИСТЕМА БОЕВКИ ДЛЯ ММО НИКАКОГО КОДИНГА? Или это по принципу "раз уж написал для себя, то почему бы еще шекелей на пиво не поиметь"?
>>621049 Выкладывать ассеты нужно чтобы придя на очередную юнити-конфочку громогласно объявить с подиума на весь зал, какой ты охуенный. Ну и ещё чтобы получить фиолетовый ник в дискорде.
Подскажите решение. Имеются кнопки, на кнопках висят скрипты, выполняются действия. Они в процессе игры могут создаваться в неограниченном количестве. Естественно при переходе на другие вкладки я выключаю вкладку с кнопками. Но проблема в том что на каждой кнопке находится условный таймер который перестает работать. Как это пофиксить? Создавать пустой геймобжект с родительской привязкой к другому обьекту и вынести скрипт туда?
>>621131 А нужно чтобы кнопки исчезали на закрытой вкладке? Я б создал общий класс контроллер кнопок, который бы хранил список классов Кнопка. Кнопка хранит в себе ссылку на префаб, экшн который нужно выполнить по нажатию, таймер, номер вкладки и прочее. Когда нужно создать кнопку, то инстанцируется префаб, создаётся класс Кнопки, префаб отправляется в Кнопку, а там получаем компонент кнопки и подписывается на нажатие через экшн. Контроллер в апдейте считает таймер в каждой Кнопке и удаляет по необходимости.
Анонче, взываю к помощи. Что мне написать в скрипте? Нужно чтобы персонаж (на пикриле) справа старался ебануть этот ссаный мяч в мою сторону. Весь гугол перерыл, на тебя одна надежда.
>>621165 Самый тупой бот: Он должен всегда идти в значение Х точки мяча. Если мяч на стороне противника, то занимать центр своего поля. Если мяч ниже определённого уровня и бот под мячом, то нужно сделать прыжок. Точка мяча не должна быть ровно в центре мяча. Для бота справа, она должна быть чуть правее центра. Если бот будет прыгать и бить в эту точку, то мяч будет отталкиваться влево.
Что он под этим имеет ввиду? Что вместо условного comp.Init(xui) нужно внутри comp.Start() брать parent и GetComponent<xui>()? Но тогда получается, что это прямо противоположная от DI идея. А вы анончики что думаете: DI или самодостаточные компоненты?
>>621180 Блять, что сложного то? Если мяч справа от бота - идти вправо. Если мяч слева - идти влево. Всякие скорости и ускорения можно нацепить. Если так не понятно, читай любые гайды по ботам пока не поймёшь
Анон, подскажи. Есть скрипт, создающий компонент, согласно данным в префабе scriptableobject. Как в редакторе задавать ТИП создаваемого компонента? Чтобы перетащил в окошко префаба scriptableobject компонент/выбрал из списка, засунул SO в скрипт сцены,на сцене создался нужный компонент. Можно создать enum вариантов и через case создавать нужный вариант,но хочется красиво. Пока пытаюсь сделать что-то через System.Type, но не выходит.
>>621194 а такая ли большая разница? или ты там на острие прогресса и пользуешься исключительно новыми фичами?
>>621216 юнити может делать gameobject.AddComponent(Type) но я сомневаюсь что это нужный тебе ответ. вообще что хочешь то? сделать список нужных тебе типов чтобы они няшно в гуи лезли? можешь сделать его через Assembly.GetAssembly. например как на картинке. там буквально "эй хуйня дай мне всё, я разберусь че ты мне даешь" чтобы отображались няшно и у тебя дропдаун был со всем этим то рисуй через EditorGUILayout.EnumPopup. лучше сделай себе собственный проперти дравер, или перелопать инспектор, или вовсе сделай свое окошко для юнити и сам говори как там твои типы рисуются.
>>621288 Ну просто хотелось узнать опыт других анонов. Допустим есть модель дилдака. Изначально в нем 60к полигонов. Но ведь ясное дело, что столько полигонов это слишком много. Есть выбор сделать децимейт до 1к либо до 8к полигонов. Сколько будет лучше по вашему опыту? Вроде бы при 1к заебись, но не хватает некоторых деталей. А при 8к может быть многовато. Короче думать надо.
>>621290 >Сколько будет лучше по вашему опыту? Я же написал, зависит от проекта, на пк будет отлично выглядеть, на мобилках - не очень, учитывая то, что большая часть мобилок из среднего-нижнего ценового сегмента. Если, например, их у тебя предвидится сотни тысяч на фоне, то тут тысяча полигонов будет много. И опыт тоже будет варьироваться в зависимости от проектов. >>621284-тут верно написано, если не теряется визуальная составляющая при меньшем количестве полигонов, то очевидно лучше и использовать меньшее количество
В общем, очень много если. Поэтому при разработке обычно пинается самый умный моделлер в отделе или же весь отдел для оценки и после этого даются рекомендации для моделирования, по типу: обычные пропы не более 1000 полигонов; воооон тот ящик, который будет в главном меню сделайте красиво, шоб досочки, щепочки, до 30000; *вот эту херобору вообще сделайте из 12 трисов и т.д.
-обычные пропы не более 1000 полигонов; -воооон тот ящик, который будет в главном меню сделайте красиво, шоб досочки, щепочки, до 30000; -вот эту херобору вообще сделайте из 12 трисов
>>621290 Кстати, из опыта. У знакомого в небольшой студии, которая клепала на зарубежную компанию третьесортные тривряд для гуглостора, так вообще не было никаких рамок: работает? Уже заебись.
Привет, юнитисты-онанисты. Где можно посмотреть примеры того, как выстраивать нормальную архитектуру проекта? Работаю с юнити достаточно давно, но все ещё кажется, что делаю лютую поебень. В юнити паттерны нормально не применишь, поэтому приходится изворачиваться. Каждый такой изворот в итоге заканчивается тем, что когда приходится возвращаться к поддержке готового проекта, страдаешь от принятых в прошлом решений. Интересуют ссылки на репозитории, книги, статьи и, конечно же, ваше личное мнение нет.
Пишу шейдер под URP, инспектор говорит что SRP батчинг поддерживается, по профайлеру тоже это видно, собираю билд под андроид, там srp батчинг на моих шейдерах не работает. В чем проблема может быть?
Юнитологи, как вкатиться в ваши ряды? От одних слышал, бери и делай, от других читай всё что найдёшь. Думал начать с# учить. Пересмотрел не один десяток роликов про обучение, почти все для аутистов в стиле "эта кнопочка нужна, эта не нужна, а вот так из дерева сделаем префаб". Ничего голого не нашёл. Продолжать читать книги или можно разбираться походу и решать вопросы по мере их поступления? Стоит ли сначала собрать все спрайты, модели, звуки и прочее или сначала можно слепить что-то из кубов и скриптов, чтобы графики минимум, но игра была играбельной, а потом и модели с текстурами и прочий графон прикручивать или это двойная ебля с одним и тем же будет?
>>621323 А нахуя смотреть туториалы по юнити в стиле "Делаем ММО", если сначала тебе хочется выучить синтаксис шарпа? В Unity Learn кстати дохуя всего, в том числе туториалы конкретно по языку.
>>621220 В принципе, это то что мне и нужно было. Сначала я пытался объявить переменную System.Type, чтобы напрямую задавать его в инспекторе. Хуй там. Потом через жопу - перетаскивал скрипты с префабов, чтобы сделать GetType. Затем нашел охуенную вещь UnityEditor.MonoScript.GetClass(). Создаешь переменную Monoscript и перетаскиваешь туда нужный скрипт, чтобы потом использовать класс из него как переменную.
И только после этого понял что мог бы не ебаться, а сделать префаб пустого объекта с нужным компонентом, засунуть в переменную GameObject и тупо инстанциировать, прицепив к игроку, вместо того, чтобы создавать компонент прямо на игроке.
А про Assembly - надо копаться, нихуя не понимаю в этом еще.
>>621341 Плеймейкер это стейт машина, и у него конечно есть применение в том же hollow knight он используется для ai, а ты написал будто игра полностью была сделана на одном ассете. Я сам начинал с плеймейкера, намучился достаточно.
Господа, кто-нибудь знает, как именно работает вывод средств из Steam за проданные копии игры? Типа после релиза я могу сразу вывести деньги заработанные? Или раз в неделю выводить их можно? Или раз в месяц? И еще вопрос- они долго приходят на счет? Или все происходит быстро? Может быть ткнете пальцем, где это почитать вообще?
>>621323 Ну я начал с копии простой игры, в которую сам играл раньше. Затем взялся за новый проект. Просто делай, и конкретные вопросы спрашивай в гугле. Лучше сперва делай игру с минимум графики, чтобы прочувствовать все ошибки в геймплее
>>619534 Бля, братишка, большое тебе спасибо, если бы не ты, то я бы так и не понял для чего нужен ретурн и как он работает, мне вариант с блок схемой не помог, дожив до 3 курса я просто писал return и не парился... Добра, удачки и позитиффчика тебе
Поясните, как в юнити делается вот такая штука: у меня есть человечек, у человечка есть анимация айдл и бега, и когда он воспроизводит эти анимации, его руки свободны. А если я хочу сделать анимацию чтобы руки держали меч, как мне синхронизировать эту анимацию с айдлом и бегом? Не делать же отдельные анимации айдл и бега с пустыми руками и без. И вообще реквестирую что посмотреть на тему анимирования в юнити.
>>621427 Т.е. я правильно понял что нужно делать отдельные анимации для каждой части тела и совать их каждые в свой леер? Типа, отдельный леер с руками, отдельный с ногами, и т.д.?
>>621429 сорт оф. только лееры не исключают другие лееры. можно например иметь анимацию бега, но поверх неё накладывать анимацию броска, у которой маска только куски туловища и рука. на время броска говоришь "эй нука включи анимацию и забленди мне этот леер вот настолько" и у тебя поверх анимации бега будет происходить анимация броска. притом не обязательно чтобы её вес был 100% в общем, потыкай. а там разберёшься.
>>621440 ну хули, удачи. не забывай постить в тред че ты там сделал. алсо че не на анриле то? на нём то шутан сделать явно проще. или у тебя изюминка есть?
Есть какие нибудь варианты запилить процедурную tilemap без создания gameobject для каждого тайла? Сколько гайдов не пересмотрел, все так делают, но чёт мне кажется что это хуйня какая-то создавать для карты 150х150 22500 gameobject'ов.
>>621457 Создаёшь кастомный атлас из нужных кусков и натягиваещь на один, два или сколько надо геймобжектов, изи. Всё зависит от потребностей что надо натянуть.
В главном меню хочу чтобы была кнопка для загрузки определенной сцены и на кнопке была кастомная обложка, название и highscore. Как это все правильно реализовать? Вроде тривиальная задача но боюсь решить хуевым подходом и обосраться когда нужно будет изменить маленькую деталь.
>>621577 Делаешь кнопки в канвасе, и один скрипт который активируется из кнопок которые передают в него своё значение, в скрипте запускаешь нужную сцену исходя из переданного значения.
Посоны, есть ли какой-нибудь более простой способ динамически рендерить кучу спрайтов в одну текстуру, чем выводить их под камеру, которая пишет в RenderTexture? Оно, конечно, работает, как я хочу, да только пятьдесят камер на сцене начинают время CPU жрать сильно.
Кто нибудь передавал файлы через интернет с компа на комп? С помощью чего это делают? Сам делаю мультиплееригрушку с возможностью создавать свои карту и сохранить в текстовый файл. Встал вопрос о том как делится этими картами. Пока что решение такое: если у игрока нет файла с таким же названием как у хоста, он создаёт его и хост посылает игроку внутренности своего файла в сообщении. Но думал было бы здорово если бы было можно посылать целый файл
>>621744 Выглядит все довольно мутно, но: >если у игрока нет файла с таким же названием как у хоста Хуёвая идея, лучше проверять по какой-нибудь хеш-сумме
>>621746 Знаю. Но это пока тест. Потом буду как нибудь уникальный ID делать. Как раз прочитаю про хешсуммы. >>621749 Игра на Android. Играют по интернету. Использую PUN2 для создания мультиплеер.
>>621776 > ни разу ничего подобного не делал, уже думаю что юнити не такая Как и любой новичок, твой персонаж не осознаёт титанический масштаб работ по производству шутера.
>>621812 Вовсе не оффтопик. Почему бы не поныть друг другу в плечо? Если со школы, то у меня 20 лет недоделанных проектов, а если и школу посчитать, то все 25!
Как сделать, чтобы курсор не вылазил во время игры в инспектор, иерархию и прочие окна? А то когда в игре жму на левую или правую кнопку, если курсор вылез за пределы игры, может произойти нажатие на кнопки редактора, и теряется фокус с игрой.
Нарисовал себе пару тайлмапов, расставил там всё как хочу, хуё-моё. Теперь дело доходит до коллайдеров. Вопрос: как прикрутить коллайдер не ко всей тайлмапе, оставив пару клеток для триггеров, например? Просто хочу в здании сделать дверь, а в итоге чёт вогнал себя в тупик, ибо не знаю как сделать в паре клеток ссаный триггер.
Если сделал 2Д игру, в которой ничего не происходит, но она лагает как сука, в чём может быть трабла? Update() везде почти пустые, лишь корутины по немногу вычисляют.
>>621934 Я в курсе про него, меня немного другое интересует. Теоритически чтобы это могло быть? Лупы, сортировка всех гейм обжектов в массиве или что-то еще.
>>621954 Теоретически это может быть абсолютно всё, и код, и железки, и нептун в третьей четверти марса, более того мы тут не видим что у тебя в проекте, а играть в телепатов никто не будет
Ребята-ребята, а вот такой вопрос- надо в 2D игре сделать снег, который падает сверху вниз. Но игрок двигается быстро, и если просто сделать длиннющую партикл систем у него над головой, то получится не хорошо, много частиц лишних спавниться будет и всё такое. Как в таком случае стоит поступить? Чтобы снег падал везде на уровне, и если в любой момент туда перенесся, он там падал, и наверху падал, и внизу падал, везде снег, даже Аллах в снегу.
>>621901 Блять, чел я тебя спрашиваю пример игр с открытым миром на юнити, а не туториал со сценой с одной дорогой и отсутствием объектов.
Если конкретизировать, мне интересны фундаментальные вещи как реализовать открытый мир на этом движке, ведь если просто создать огромную сцену и разместить на ней объекты это забъёт память и всё, даже если ты напишешь отключение обработки объектов в радиусе, их инициализация на старте игры это будет долгая загрузка с забитием памяти.
Соответственно нужно делить игру на сектора и подгружать только соседние. Например, загружать только 9 секторов из которых активные объекты только в центральном секторе. Остальные обрабатываются упрощённо, либо вообще не обрабатываются.
Но как это сделать, ведь в юнити нет ничего подобного. Нету секторов никаких. Есть сцены, которые нельзя "сшить" чтобы получился бесшовный мир.
>>621964 Вариант 1, хороший: Фуллскрин эффект, который рисует на экране снежинки, движение снежинок вниз и домножаем на отрицательную скорость персонажа, чтобы снег "улетал" назад. Вариант 2, быстрый : https://www.youtube.com/watch?v=pRORARnM0Yk
>>621981 Блядь, чел, ты еблан тупой. Ты бы еще спросил "можно ли на C# сделать открытый мир без загрузок сцен" или "можно ли на компьютере сделать открытый мир без загрузок сцен". Движок тут вообще ни при чем, ебло ты тупое. Сцены - не для того, чтобы их "сшивать", дегенерат ты гуманитарный.
>>621994 Лучше молчи, если тебе нечего ответить по существу. Я спрашиваю как это сделать средствами юнити, ты пишешь не связанную хуйню. Очевидно, что уровень твоих знаний не хватает, но тебе стрёмно признаться, что ты долбоёбина бесполезная.
>>621981 >пример игр с открытым миром на юнити Rust Subnautica Copper Dreams скоро выйдет. Изначально были карты с подгрузками, теперь сшили всё в одну карту.
>>621254 генератор. возрождаю один свой старый проект который давно хотел поделать.
>>621346 префабы конечно могущественно, но рефлексию советую всё-же потыкать.
>>621964 можешь свою партикл-систему сделать на коленке, чтобы она тебе снежок делала читая например глубину ортогональной камеры сверху. будет довольно узкоспециализированно но быстро-быстро.
>>621995 вопрос то и правда туповат. берёшь и делаешь игры с открытым миром. какие проблемы то? нету никаких проблем.
>>621979 Да, я первым делом так сделал, из-за слишком быстрого движения игрока и соответственно камеры частицы сильно отставали и не успевали появляться. >>621982 >Фуллскрин эффект, который рисует на экране снежинки Это в смысле мне надо сделать эффект на канвасе? Обьясни, если не сложно, а то я не понял разницу между твои вариантом один и два. Через что реализовать вариант один?
Как белые люди пишут скрипт перемещения врагов? Я уже несколько вариантов скрипта попробовал, но все они в конечном итоге оказываются слишком замудренными, особенно если внедрять туда что-то новое. Я вот пока до такого варианта додумался, пикрил - скрипт врага. На данный момент готовы 4 вида перемещения по локации, написаны в порядке приоритетности. Наверху - самый приоритетный, то есть, если и бежать_за_игроком() и идти_на_фонарик() выдают true, то выполниться только бежать_за_игроком(). Далее еще добавлю варианты. Когда ничего такого не присходит, выполняется последнее - ходьба от одной рандомной точки до другой.
Сап двач. Такой вопрос. Сейчас в моем игоре проигрывается сплеш анимашка в начале. Это из-за фришного юнити. Но я могу купить подписку, собрать прилагу со своим сплешом, залить в апсторы и потом завершить подписон. Прилага же будет работать без сплеша? Или он появится потом?
>>622026 >Это в смысле мне надо сделать эффект на канвасе На камере. Через постэффект. Но я погуглил, никто не заморачивается такой хуйнёй, делай партиклы. >>622029 Гугли конечные автоматы.
Реально же у тебя реализован конечный автомат на енумах. Можно заменить весь код на одноименный шаблон.
Будет несколько классов движения - то что сейчас соответсвует move_type, а у перемещаеющегося агента будет экземпляр текущего вида перемещения со всеми необходимыми данными. Вся логика тогда сведется к вызову функции оценки перехода в другое состояние и собственно методу перемещения.
// псевдокод // анализируем можно ли из текущего состояния можно перейти в другое if (this.CurrentMoveState.CanTransistNext()) { // переходим - это новый объект this.CurrentMoveState = this.CurrentMoveState.NextState() } // выполняем код перемещения для текущего состояния this.CurrentMoveState.Update()
MoveState - должно быть четыре класса перемещений и у каждого должа быть функция где он скажет, что делать дальше, если так перемещаться больше нельзя.
Из мелкого что я поправил бы: 1. Вероятно самый первый иф сравнивает флоаты на точное равенство. Так делать нельзя ибо флоат никогда не бывает точным числом. Еще можно получить глитч - задать близкую точку на дальность 0.01, и на нее агент покажет полную анимацию например переход шага в бег и обратно, хотя реального перемещения не будет. 2. Код стайл говно. ПишиНормально. 3. Нигде не написано, что в ифах зашит приоритет перемещения. Ты сам потом это забудешь и получшит счасливую отладку.
>>622072 Зачем? Я вижу что код делает, каким образом это адресует проблему? Ты знаешь какой должен быть результат в случае 222? 2.22 или 222.00 или вообще floor'ed to 2.00?
>>622075 Где это очевидно? Было бы очевидно, если бы у него был "2" в 2.00 но у него "200" (целое) в "2.00" и 200 уж никак не = 2.00 У него своя дурацкая кастомная логика и ее я пытаюсь понять
Юнитигоспода, у меня есть вопрос, толком не нашел на него ответа так что спрошу тут. Уверен уже подобный вопрос был, но всё же.
Нужен какой-то компудахтер для работы в юнити, и что же мне приобрести: Мак или собственно ПеКа? Так как мой старичок уже умер а продолжать работать над проектом нужно. Сам проект в 3D, не платформер и прочее. У кого какой опыт был на этих железках? Молю, подскажите что выбрать.
>>622085 Звучит так будто тебе с платформой релиза надо определиться для начала, если мобилки то с винды на айфон ты не релизнешь, а с мака на андройд без проблем. Если не мобилки - очевидно тебе надо прогонять на винде. Учти что студию на мак не накатишь, соответственно скорость разработки упадет. Отличия производительности машин, думаю, твоему проекту будут не сильно принципиальны.
>>622128 >Ten high-resolution packs have been shared today for free on the Unreal Engine Marketplace Невъебенная щедрость. >we’re immediately slashing the pricing of Megascans, giving you nearly twice as much content to download, and removing the resolution cap—for everyone, regardless of what engine Скидочки неплохо, можно даже не шквариться об уг4. >Bridge and Mixer 2020 will be 100% free for everyone Во, для всех. Эпик молодцы только в том, что не боятся тратить кровавые юани налево и направо. А квиксель молодцы, что не стали делать иксклюзив для уг4.
>>622134 >Невъебенная щедрость Это количество ассетов которые добавлены в Эпик Стор, если залогинится на Квикселе с аккаунтом эпиков, становятся доступны вообще все текстуры модели в любых разрешениях, для анрилогоспод теперь всё бесплатно. >Во, для всех И что юнитибомжи с ними будут делать без библиотеки сканов?
>>622155 Анончики, а кто-нибудь уже работал с новой Input System? Я вот не особо понял, как её правильно юзать. Я вот сейчас использую эту систему так:
И вот у меня много разных скриптов, и очень многим нужно считывать Input. А писать такую гору кода в разных маленьких скриптах какой-то бред. Может быть я делаю что-то не так? Может быть надо написать один скрипт {Get;Set} с публичными полями, которые другие скрипты из него будут уже принимать? Или я вообще что-то не так делаю? Знатоки, призываю вас!
Алсо, никому не советую использовать эту новую систему, нашел там баг при работе с UI.
Мб я вообще зря полез с этой новой системой разбираться и пока не поздно лучше убрать её куда подальше?
>>622176 Ладно, забейте, либо я еще туповат для этой системы, либо она забагована, но скорее всего и то и другое. Читал сейчас форумы юнитевские, дык с ней проблем овер миллион, не стоит её пока использовать, если серьезный проект делать собираетесь.
>>622242 Дебил, блядь, ебаный, нахуй ты с такими вопросаси сюда оезешь, пидораха? Вот тебе пример: в твоейтоьоссаной игрульке треьуется чтобы каждый третий пук был трассирующим, вот ты и хуяришь иф х%3 ==0, то хуярится трассер, елс хуярится обычный пук. Всосал, хуесос малолетний?
Напоминаю всем новичкам, если в коде что-то не понятно как работает или слишком сложна, разбиваете на меньше куски и везде пишите debug.log("нужная инфа"), потом в логи смотрите в какой последовательности и какие значения выводите, и далее всё просто, не понять это не возможно, у вас получится.
Анчоус, тупой вопрос от тупого ньюфага. Делаю что-то типо простенькой ходилки, где будет много разговоров. Вопрос: как лучше делать источник предложений для реплик? Я думаю просто нахуярить в текстовом файле кучу-кучу реплик, отсортировать их по типу нпц или другим факторам, потом просто брать их из этого файла по порядку. Но думаю это будет как-то слишком запарно+вдруг это ещё и на производительность будет пиздецки влиять, ибо я хз. Есть конечно вариант класса, где будет куча массивов с репликами, но думаю это ещё хуже, чем вариант выше.
>>622331 Реплики оформить в каком-нибудь языке разметки: xml, json, etc. И класс который будет работать с ними, у которого же игра в нужный момент времени будет запрашивать реплику с определенным идентификатором.
>>622029 Самый простой вариант: навмеш, скрипт получает от игровой логики точку, в которую должен прибыть, прокладывает к этой точке маршрут и... В зависимости от своего состояния либо идёт к этой точке, либо бежит, либо стоит и сообщает всем проходящим мимо, что хочет туда пойти. > внедрять туда что-то новое В данную систему ты только внедряешь новые состояния в КА непися, в которых указано только точка назначения и скорость.
>>622331 Я делал на луа диалоги. Один файл хранил вопрос собеседника и варианты ответов. Каждый ответ это строка с текстом и идентификатор на следующий файл. Дополнительно себе сделал сохранение и загрузку переменных, чтобы можно было разблокировать варианты ответов.
Парни, такая проблема. Реализую движение персонажа в FPS шутане. Юзаю rigidbody в качестве физики. Проблема вот в чем: если пишу rb.addforce(блаблабла) - то гравитация работает нормально, челик падает, все збс. Если же пишу через rb.velocity(хуйпизда), то гравитация почему то меняется и перс падает очень медленно. Подскажите кто шарит, в чем проблема, или обьясните, как работают эти ваши риджидбади
а и доп. вопрос. Почему CharacterController не работает с физикой, и на кой хуй он тогда нужен?
>>621444 Стоял в буквоеде, приметил книжку по анриалу, решил полистать. Пиздец он заморочный в плане интерфейса, я ебал. Я не знаю как там обстоят дела с библиотекой и языком, но с таким инструментарием до них еще доползти надо. Так что, с ужасом закрыв это адское писание, поблагодарил разрабов unity, за то что сделали наш кусок говна хотя бы интуитивно понятным
>>622359 1. Потому что велосити отменяет дефолтную гравитацию и перезаписывает её новым значением, которые ты сам должен указать по оси у. 2. Потому что чарконтроллер придуман для лёгкой реализации передвижения и всё остальное надо говнокодить, а ригидбоди как раз таки имеет всё то, что не имеет чарконтроллер, но само передвижение и поведение физики надо говнокодить и настраивать. Смекаешь?
>>622387 Честно говоря, я не смогу ответить тебе на этот вопрос, т.к. не разбираюсь в платных ассетах. Могу сказать, что обычным кодингом это легко сделать. Я собственно с этого и начинал. Нажатие кнопки присваивает фиксированный импульс персонажу игрока. Я сейчас наоборот работаю над тем, чтобы нажатие клавиш посылало персонаду команду, что надо начать движение, после чего его внутренний механизм, общий для всех персонажей, включает у него анимацию ходьбы и наращивает скорость, синхронно анимации. Потому что, у меня геймплей основывается на переселении игрока-духа из тела в тело и мне нужно периодически управлять то одним неписем, то другим, поэтому они должны без игрока ходить сами с ИИ по навмешу, а при вселении в них игрока - двигаться согласно инпуту.
>>622393 да в пизду эти ассеты. ХОЧУ ВСИО ДЕЛАТЬ САМ!
То что ты делаешь - довольно интересно. Ибо я заебался с этим контроллером, уже сделал все - интерфейс, консоль, подгрузку карт, префабы различных триггеров (да да, прямо как в настоящем редакторе карт), но никак не могу допилить нормально этот дэбильный контроллер. Туплю, и все тут. Из-за него кста понял, что 98% гайдов на ютабе - полнейшее говно без задач, сделанное на коленке за 5 минут с целью набрать просмотры с лохов, вкатывающихся в гейдев. Особенно рофлю с видосов " Гайд как сделать игру на юнити!!!1адин". Там чувак на серьезных щщах рассказывает, как импортировать free ассеты в проект, и компилить игру
>>622402 да, но это же transform - не физическое движение. Следовательно будут лаги при просадке фпс, провал в стены и тд. Я кстати делал свой контролер на трансформах (в сумме 346 строк кода, лол), и он был норм, но как раз нестабильность системы Update не дала мне его использовать. Я его полтора месяца блять делал, но зато опыт какой никакой получил. За пример спасибо
>>622404 Не. В апдейте к компоненту y каждый кадр приписывается значение гравитации, если объект не на полу: void update(float delta) { if (!self.OnFloor()) { self velocity.y += gravity; } else { self.velocity.y = 0; } } >>622407 > то же transform - не физическое движение В юнити так делается.
>>622410 >к компоненту y каждый кадр приписывается значение гравитации
но студия говорит мне что velocity.y не является переменно и отказывается это есть. Я так обсирался и с фризом камеры по одной из осей, и где только не обсирался. Абсолютно не понимаю, если есть переменная float Y у какого нибудь трансформа, то студия пишет что это не переменная. Как это блять работает?
>>622417 Это структуры как cвойства в шарпе так работают. Сам об это несколько раз спотыкался.
Суть если есть структура Vector2 { float X; float Y; } То можно писать: SomeVector.Y += SomeValue; Но если этот вектор это свойство другого объекта, то так писать уже нельзя: Obj.SomeVector.Y += SomeValue; // выдаст твою ошибку А надо писать так: Obj.SomeVector = new Vector2(Obj.SomeVector.X, Obj.SomeVector.Y + SomeValue);
>>622433 Ничего не понимаю. Вот у меня метод в котором происходит перемещение. Куда мне написать rb.velocity.y? Если добавить еще одно velocity - работать не будет(видимо два вектора он не жует). Если я добавлю гравитацию через addforce - работать не будет. Если делать через rb.velocity = new Vector3(rb.velocity.x, rb.velocity.y + gravity), то работает некорректно и по уебански. Я уже реально не знаю че делать. Понимаю что на 99% это я не догоняю нихуя, ибо кто то умудряется делать игры на этом куске крэпа. Пробовал уже и через трансформы (не физика - поэтому нахуй), и через CC(не взаимодействует с физикой других обьектов, а писать ее с нуля это пиздец - нахуй), и через rigidbody ебусь уже хуй знает сколько. Крч ,если мне кто нибудь кинет гит с готовым нормальным контроллером (простым, но корректно работающим) - до пола поклонюсь, перст поцелую, и до гроба обязан буду. А так только самоубийство (или платформеры делать)
>>622441 На, один из моих ригидбади контроллеров, которые я юзаю. Дефолтно, просто и мало кода. moveX, moveY - направления по оси Х и Z называю ось Z moveY просто по привычке, speed - скорость, понятное дело, vector - вектор, normalize - дабы скорость под углом не была быстрее обычной скорости, playerTrasform - трансформ твоего игрока и метод от трансформа позволяет ходить твоему игроку по его осям, а не глобальным тебе может не пригодиться.
Твоя главная проблема - ты берёшь уже готовые векторы из юнити, а не делаешь свой, где ты вписываешь свои направление, а так у тебя по кд делается векторная мешанина и проёб оси у. Я сам ещё нуфаг, так что может более знающий анон тебя направит лучше меня.
>>622446 Чёт я пиздец уже сонный, ошибка за ошибкой следует. Мой метод для расчёта движения в Update, а rb.velocity в FixedUpdate, вот. На этом всё, вроде в этот раз ничего не забыл.
>>622454 Ок. Вообще не думал что запилить обосаный контроллер будет так сложно. В моем манямирке я там уже пилю бандлы для обновлений, поднимаю сервера для мультиплеера, делаю карты для игроков, а не деле - ебусь со сраными векторами. Нужно реально макаку найти, чтобы за дошики мне нормальное управление сделал
>>622455 НАНИМАЕШЬ МАКАКУ ЗА ДОШИКИ @ ЗА НЕДЕЛЮ ВСЕ МЕХАНИКИ РЕАЛИЗОВАНЫ @ ДОВОЛЬНО УРЧИШЬ И ПОДНИМАЕШЬ СЕРВЕРА ДЛЯ МУЛЬТИПЛЕЕРА @ МАКАКА УХОДИТ В ЗАКАТ @ ПРЕДРЕЛИЗНЫЕ ТЕСТЫ, ВСЁ ОТЛИЧНО @ И ВОТ ЭТОТ МОМЕНТ, ВИДИШЬ КАК ЛОГИНЯТСЯ ПЕРВЫЕ ИГРОКИ @ УРЧИШЬ @ ЗАМЕЧАЕШЬ, ЧТО У НЕКОТОРЫХ ИГРОКОВ ВОЗНИКАЕТ ОДИН И ТОТ ЖЕ БАГ @ РЕШАЕШЬ ПОФИКСИТЬ И ЗАЛЕЗАЕШЬ В СОРЦЫ @ ИЗ НИХ НА ТЕБЯ ЕХИДНО СМОТРИТ ПИКРИЛЕЙТЕД
>>622457 ОТКАТЫВАЕМ ВРЕМЯ НА МОМЕНТ РЕАЛИЗАЦИИ МЕХАНИК @ ТРЕБУЮ ОТ МАКАКИ ПОДРОБНОГО ОБЬЯСНЕНИЯ КАЖДОГО СУКА МЕТОДА, ПЕРЕМЕННОЙ, НЕБААЛЛАХА @ ЕСЛИ ЧТО ТО ХИТРОЖОПИТ - ОТБИРАЮ ПРИПРАВУ К ДОШИКУ @ ASS.BUGURT(ANTI);
>>622458 >ОТБИРАЮ ПРИПРАВУ К ДОШИКУ Ты хуже Гитлера, у тебя наверное даже аура темная невооруженным глазом видна, а проходящие мимо тебя бабки из церкви внезапно падают в припадке, сучат ногами и закатывают глаза
>>622457 Двачую, так и будет. Накатал свой контроллер движения и стрельбы в 2д, несколько раз обсирался с векторами, а управление с этого контроллера рейкастами хотя выглядит абсолютно прозрачно, на практике едва-едва прикручено синей изолентой (хотя казалось бы что там сложного, берешь точку, направление и длину). Как он будет работать на чем-то клавомыши - понятия не имею. Но если мне предложат за него всего лишь доширак - продам и такое говно не задумываясь, а то хули вы хотели, если даже приправу зажимаете?
>>622373 Маня, нахуй им под конкретного хуесоса, не умеющего в кодинг, типа тебя, чето пилить? Контроллер персов зависит от игровых механик, тут нет универсального решения и быть не может. На вскукареки манек, у которых не хватает ума выучить программирование, но которые лезут в гд строго похую.
Нужна простая корутина которая за параметр будет принимать количество секунд сколько ждать и функцию которую нужно выполнить после ожидания. Такое возможно?
>>622473 > Нужна простая корутина которая за параметр будет принимать количество секунд сколько ждать и функцию которую нужно выполнить после ожидания. Такое возможно? Да, легко.
IEnumerator Zaloopa(float delay) { yield return new WaitForSeconds(delay); GovnofunkciaOtMani(); }
>>622473 >Нужна простая корутина которая за параметр будет принимать количество секунд сколько ждать и функцию которую нужно выполнить после ожидания. Такое возможно? Это блять элементарная вещь. Ты вообще не гуглишь что ли? Слово корутина выучил, а как это работает - нет? Нихуя ты дурачелли.
Суть токова - есть канвас и по какойто причине он пропадает с экрана в редакторе или в самой уже игре, и что самое странное чтобы он вновь появился достаточно его выключить галкой, и включить, всё. Заебался, что это за хуйня может быть?
Реально блять, не понятно, ничего не меняю тупо выкл/вкл и он появляется. сукблять
Коллеги! Разбираюсь с меканимом, пытаюсь понять как лучше решить задачу. Есть персонаж, он может бегать/стрейфиться/падать/прыгать без оружия, с мечом, мечами, пистолетами, копьями и т. д.
Анимации смены оружия есть. Все анимации стойки и движений есть, и они визуально отличаются друг от друга. Заоверрайдить только руки не получится - потеряется шарм многих анимаций.
Внимание вопрос. Как вообще правильно организовывать ноды и бленды внутри контроллера? Какие есть подходы или советы к таким задачам?
>>622387 Тут есть одна деталь. Большинство контроллеров работают с GetAxis. Но она дает не сразу полный эффект. Нажимаешь W - 0, 0.1, 0.5, 0.9, 1 (условно). Хочешь резкости - делай GetAxisRaw или нормализуй вектор перед умножением на дельту времени.
Получил через рейкаст. >>622530 Другой вопрос. чек пикрил. Как повернуть объект, чтобы его вектор up был равен вектору нормали плейна? Т.е., чтобы объект "стоял" на плейне.
Помогите разобраться как закидывать данные с json-а в переменные. Пик 1 - мой json, пик 2 - классы для переменных, пик 3 - сами методы json-a. Где я обосрался? Я вот думаю в пике 4 проблема, но я не ебу ЧТО ИМЕННО мне надо закидывать в качестве стринг параметра в json метод. Поэтому я закидываю сам текст из файла. Помоги тупому ньюфагу, умоляю, ибо гайдов нормальных я чёт не ощущаю, лишь сраные гайды по сохранению данных в json, а не замене данных в переменных из оного.
Парни, вчерашний шизик с контроллером снова тут. Юзаю rb.MovePosition в качестве метода перемещения. Все сделал заебись - скорость, направление, работает норм. Но как только я сталкиваюсь с другим обьектом, перс ни с хуя начинает двигаться в каком то рандомном направлении, даже если WASD отжато. Че это вообще такое?
>>619499 >>620143 Time.time - время в секундах если нужно от определенного промежутка посчитать, то запоминаешь текущее время в переменной а потом сравниваешь типо if (Time.time - LastTime > 5f)
>>622534 Блядь, так ты оказывается очередная скотопидораха, которая лезет в гд, не зная SOLID и конвенций. Я твои каракульные названия функций в рот ебал разглядывать.
там и настроек то с гулькин хуй. Я просто не понимаю, типо вот я бегу по ровной поверхности - все норм. Залезаю на рампу или толкаю ящик - вектор движения меняется и я двигаюсь в противоположную сторону, казало сь бы логично. Но если отжать васд и вообще нихуя не нажимать - движение все равно продолжается. Если щас запилю webmку, то скину
>>622710 Drag и физическкие свойства поверхности материала перса и енвиронмента убрал? Олсо, не используй дефолтную физику для перса, юзай кинематик rigidbody и делай чек на коллизию вручную
>>622711 на обьекты и пол наоборот наложил материал с нулями, чтобы при прыжке в стену перс на прилипал к ней. >делай чек на коллизию вручную ну одно дело стопить перса когда он перпендикулярно ящику идет, а если в бок например? Там же центры тяжести надо определять, силы реакции опор всякие, это ж пиздец
>>622710 Бля ты даун что ли, я тебе говорю бери годот, пожалеешь сука, короч тебя предупреждали, прибежишь с обосранными портками плакаться, жалеть не будем.
>>622711 алсо, если материал убрать с пола и обьектов, то вроде этот эффект уходит, но на этих материалах ничего и нету. Там просто bounce и friction на 0 выставлены, чтобы как я уже сказал - не прилипать к ебаным стенам
>>622711 >юзай кинематик rigidbody и делай чек на коллизию вручную This. Ни в одной серьезной игре не вешается ригид бади на игрока. Везде кастомная кинематика, потому что физика ригид бади недетерминирована, подвержена глитчам и не кастомизируется в нужной степени. Например тебе надо, чтобы игрок соскальзывал с поверхности, если угол наклона превышает определенный - с ригид бади ты это надежно не сконфигуришь, спасёт только ручная кинематика. >Там же центры тяжести надо определять, силы реакции опор всякие, это ж пиздец Ну да, а ты думал, геймдев это просто? Не хочешь рвать очко - делай игру без наклонных поверхностей, программирование кинематики наклонных поверхностей сложное дело, особенно в 3д, нужна куча матана и физики. >>622716 >Был бы сишарп Уже давно есть. Но там всё гораздо хуже с физоном, постоянные глитчи, проваливания коллайдеров друг в друга.
>>622713 >Там же центры тяжести надо определять, силы реакции опор всякие, это ж пиздец Кстати, как вариант, если неохота вникать в это - скочять ассет, наверняка есть в сторе fps контроллер на кинематик бади, может даже бесплатный.
>>622713 >ну одно дело стопить перса когда он перпендикулярно ящику идет, а если в бок например? Там же центры тяжести надо определять, силы реакции опор всякие, это ж пиздец
У тебя выбора нет. Стандартная физика либо для roll-a-ball либо для inverse kinematic симов а-ля qwop
>>622725 Ты смешной. В халяве физика и player movement одни из самых отточеных до сих пор. Некоторые современные ААА поделки даже дотянуть не могут на нее.
>>622726 тут согласен. Но это было аж в 2004, и я очень сожалею, что в юнити нет такого даже в 2020. Перекатываться во что то другое - долго и муторно. Значит либо пиздить ассеты, либо энивей писать кастомную физику. В таком случае юнити нахуй не нужен, кроме интерфейса и драг-н-дропа. Уж лучше тогда в xna какой нибудь сьябывать, там хоть код свой будет
ЕБНАРОТ, Я РАЗОБРАЛСЯ почему при коллизии с другими обьектами перс начинает сьябывать куда то и ему похуй на wasd. Я же материал поставил на обьекты, чтобы не прилипать к ним когда уебываюсь в них, и поставил там фрикшн = 0, а это ебаное трение. А раз у меня дефолтная физика стоит, следовательно он и зависит от этого фрикшена. Ебать я даун конечно. Теперь стоит вопрос, как это трение ликвидировать вообще, но чтобы к стенам не прилипать. Любимое unity - лучший движок эвар
>>622733 мувмент идеальный, ничего говнокодить не надо, даже гравитация в 4 строчки делается, НО. Не взаимодействует с риджидбади других обьектов. То есть опять же - писать кастомную физику
>>622731 >В таком случае юнити нахуй не нужен, кроме интерфейса и драг-н-дропа Еще одного постигло озарение, что даже самый продвинутый движок - всего лишь инструмент и он не сделает охуенный геймплей за тебя.
>>622742 товарищь олдфаг, обьясните пожалуйста почему при прыжках в высокую стену все норм, а при прыжках в стену ниже моего роста происходит пиздец? Юзаю CC в качестве мувмента
Кто-нибудь видел готовые решения для управления состоянием UI элементов? Постоянно сталкиваюсь с тем, что у какого-нибудь UI элемента несколько состояний и мне приходится переключать состояние в коде. Вешаешь на компонент ссылки на все нужные объекты, потом в скрипте отключаешься/включаешь их.
Хотелось бы в редакторе задать эти состояния и переключать потом их из кода. И чтобы в самом редакторе можно было переключаться между состояниями. UnityEvent для этого не подходят.
>>622759 Очевидно же твоя проблема в том, что в упор к мелким стенкам ты определяешь как-то коряво isGrounded = true своим рейкастом, и поэтому мгновенно падаешь вниз. Фикси.
>>622839 Ого, спасибо анон! Я уже кое-как вроде разобрался, как ими пользоваться, осталось понять, как в игре всё это удобно реализовать для моих нужд. В любом случае- благодарю, пойду смотреть
Анончик, я понимаю, что это не совсем по теме, но помоги разобраться пожалуйста.
Как блядь зарабатывать на играх? Я уже два года занимаюсь разработкой, понимаю конечно, что еще чайник, но я вот просто не понимаю, что мне делать дальше? Игра на ПК в стим- сиди минимум полгода (в идеальных условиях) и ебашь целыми днями в надежде сделать хотя бы немного увлекательную и интересную игру. Хотя скорее всего за такое время и без команды получится лишь прототип небольшой. Игра на мобилки- тут я вообще не понимаю, мне кажется там такая нереальная конкуренция, что я даже подготовлю приятную и увлекательную игру и её вообще никто не заметит, даже если я десятки тысяч в рекламу вложу. Что остается? Как зарабатывать, анон? Неужели единственный вариант это или устраиваться на работу или искать фриланс подработки либо ебашить по пол года на дошираках в надежде что игра, в которую ты вложил все силы вообще кому-то понравится и её кто-то заметит?
>>622952 А как с издателями работать? Я слышал, они разработчиков вообще жестко прессуют и все деньги забирают. Или это я параноик? Им просто кидаешь прототип и говоришь, что помогите закончить?
>>622950 Может я питаю себя ложными надеждами, но в настоящее время как раз сижу на дошиках, пилю игру мечты для стим. Хотя не могу жаловаться на текущее положение вещей, моя ситуация позволяет уделять разработке фултайм весь день, если офк не буду прокрастинировать и сидеть на двачах.
>>622977 Один пилишь? Сколько времени еще думаешь на это уйдет? Сколько уже времени потратил?
Моя ситуация в целом тоже позволяет этим заниматься фултайм, но очень угнетает ощущение, что сколько бы я в день не тратил на проект времени, меньше он не становится, работа всё прибавляется и прибавляется. Еще и бесит, что разрабатываешь прототип, а потом играешь в него и понимаешь, что сделал какую-то хуйню. И всё по новой. Это пиздец.
>>622988 И вот это гнетущее ощущение того, что ты делаешь какую-то хуйню, с которой еще и не знаешь, что потом делать, умножается в десять раз на то, что я недавно окончил вуз и мог бы спокойно работать с корешами и получать по 70-100к уже сейчас. Куда меня занесло...
>>622988 Один, где-то с начала года делаю, бывали перерывы в месяц пару раз. Думаю работы еще на полгода скорее всего больше ясен хуй.
>и понимаешь, что сделал какую-то хуйню Жиза братан, начинал заново с нуля весь проект несколько раз. Я считаю что главное в индигеймдеве это постоянно спрашивать себя "Чем моя игра лучше других в этом жанре?" И бывают моменты когда я не могу ответить на этот вопрос и в итоге мотивация в ноль.
>>622977 >моя ситуация позволяет уделять разработке фултайм весь день >Моя ситуация в целом тоже позволяет этим заниматься фултайм Так и говорите - сижу у мамки на шее и РАБотать не хочу.
>>623178 Друже, зделой мне игру, суть токова: можно играть толщекопом во вселенной наоборот с толщеходами. Вселенная наоборот - это когда вместо космоса бесконечная твердь (Первичная Твердь, Толща), а вместо планет - пустоты в Толще. Подробности можешь поискать по разделу, по ключевым словам "толща, твердь, толщеход".
История моего успеха. Месяц назад начал делать 2д шутан с видом сверху, параллельно разбираясь чем отличается интерфейс от делегата и какой кнопкой редактора сделать заебись. И тут мне стучится в личку в дискорде индус и зовет в команду делать игру. Естественно, прогресс пока нулевой, по сайту нихуя непонятно, чем вообще команда занимается, оплата - ЧАСТЬ ПРИБЫЛИ да и жанр - типичная убегалка от монстра среди коридоров в мясных тонах, словно пришедшая из видеорелейтеда. https://www.youtube.com/watch?v=8-Gvmgj6qfc И знаете, я согласился. Наклепал за вечерок им систему рассматривания вещи в инвентаре (прямо как в скайриме), помотрел пустой, как мой кошелек, гитхаб и пообещал допилить систему инвентаря. В принципе меня устраивает - я так же как и раньше на голом энтузиазме делаю проект, который не принесет бабла, зато сейчас мне будут подгонять ассеты, а главное - я учусь пользовать гитом и взаимодействовать с другими кодомакаками. Скорее всего к новому году все хуй забьют на проект
Вопрос такой - есть ли нормальные гайды как организовать проект игры? Я вроде делаю, оно работает, но все выглядит как говнокод и архитектура из жопы, боюсь в скором времени сам запутаюсь. Киньте пожалуйста, если есть.
>>623242 >>623223 Спрашивали же выше что-то такое. Каждый тред спрашивают такое. Могу от себя сказать, как я понял- у всех всё выглядит как архитектура из жопы, если это не энтерпрайз или ААА игра. С опытом придет понимание, как лучше делать.
>>623223 На Ютубе что-то у Weinmann видел про это. Ну и банальное SOLID. Хотя Юнити любит эти принципы обоссать. Например в редакторе нельзя ссылки на интерфейсы делать без ебли.
>>623265 Исходники не нужны для анализа структуры большинства проектов. Мод-сообщество безо всяких исходников раскопало всю подноготную беседкодвижка. Могу вкратце расписать, но тебе продуктивнее было бы почитать тред модамидопиливающих в тесаче и сходные ресурсы.
>>623259 Хотя Скайрим это на голову выше уровня гд, идеалом его нихуя не назвать. Баг на баге и багом погоняет, некоторые вещи модами хуй добавишь (новую ветку скиллов,к примеру - придется убирать один из существующих).
>>623223 Абстрактно сложно дать какой то совет, гугли unity best practices читай все подряд. Ошибаться и переделывать будешь в любом случае, это нормально, с опытом придет как делать модули чтобы исправлений в будущем было минимум.
>>623268 Тут не поспоришь, но в отличие от скайрима, у анона будут исходники его игры. Мы же выше о структуре проекта говорим. А структура проекта там, между прочим, data-driven до того, как это стало мейнстримом.
Кстати об архитектуре. Какие ассеты (вроде жанрнейм Kit) могут считаться образчиками чистого кода и расширяемой архитектуры? Ну и где их спиздить, если нет публичного гитхаба. Новичок, хочу посмотреть как реально годные проекты делают.
Есть какой-нибудь ресурс, где бы были собраны базовые туториалы БЕЗ ВИДЕО? А то меня порядком заебало, что при попытке найти ответ на любой вопрос всегда предлагается посмотреть многочасовые видео. Это просто пиздец какой-то. Да и код невозможно воспринимать в виде видео.
>>623302 > Это просто пиздец какой-то. Да и код невозможно воспринимать в виде видео. Тебе блядь принцип живого обучения с преподом и лекциями прямо домой доставляют, прямо к дивану, а ты нос воротишь.
Изучающий по книжке снова здесь. Вот все хорошо, пока не начинаются какие-то математические изъебства, тайну которых мне пока не удается раскрыть.
Пик 1 - Код проверки есть ли под персонажем коллайдер, в скриншот не вошел код непосредственно прыжка, в который входит grounded, но там все ясно, а вот тут понятно начало, а вот с осознанием что происходит в коде с векторами - беда. Есть пояснение, но енивей немного не догоняю. >Первым делом определяются границы примитива столкновений нашего персонажа, а затем в области с такой же шириной непосредственно под ногами персонажа ищутся перекрывающиеся коллайдеры.
Пик 2 - код движущийся платформы. То, что в update - тайные письмена.
Вопрос для обоих пиков - что почитать по теме, чтобы разобраться как это работает? Или, может, кто нибудь захочет пояснить конкретно эти алгоритмы?
Сап, аноны. Такой вопрос: как сделать зацикленный задний фон, подстраивающийся под разрешение экрана? Заранее говорю, что я рылся в интернете в поисках ответа, но находил способы сделать зацикленный фон только через объект Quad. Но как мне сделать его масштабируемым, чтобы если разрешение или соотношение сторон менялось, размер заднего фона подстраивался под него? С меня как всегда
2 Тут проще одномерный случай рассмотреть. Есть две точки, начальная и конечная, например A = 2 и B = 6, а trackPercent показывает насколько процентов пратформа продвинулась от точки A к точке B. Если trackPercent == 0, то платформа в точке A. Если trackPercent == 1, то платформа в точке B. Если trackPercent == 0.5, то платформа по середине в точке 4. Значит, как вычисляем положение платформы в зависимости от значения trackPercent? Берем расстояние между A и B, умножаем его на trackPercent, и прибавляем получившееся смещение к A. x = A + (B - A) * trackPercent. Получается speed - это не скорость движения платформы, а скорость изменения значения trackPercent. Ну и в случае с векторами тоже самое проделывается для обоих координат x и y.
Есть одна пиздецовая проблема, приложение иногда виснет похоже на деадлок,не краш%. Зависание зачастую просиходит когда с вебсокета приходит большое количество данных либо во время разрыва соеденения. Данные между потоками перекпидываю с помощью ConcurrentQueue. Как можно отдебажить либо посмотреть где в данный момент остановилось выполнение ?
>>623365 https://www.youtube.com/watch?v=zit45k6CUMk Вдруг поможет, тут вот у него 3 фона, они друг за другом меняются, получается зацикленность, наверное. Разрешение экрана получается через Screen.width и т.д, всё есть в гугле, даже скрипты готовые, дальше уже сам.
Парни, такой вопрос - почему в 2D когда я вращаю дочерний спрайт, то вместо обыного поворота по оси x, он трансформируется и расширяется как говно? В то время как будучи самостоятельным обьектом - поворачивается нормально, без искажений?
Анчоусы, а можно ли сделать эдиторскрипт, который будет делать такую же йобу, как на пикриле, но только не для анимаций, а просто для изменения значений переменных? Хочу себе красивости наделать, но вроде такую хуиту не сделать кастомно внутри эдитора гайда я не нашёл.
Блядь, а я потерял энтузиазм, когда осознал, что 99% механик уже реализованы в ассетах, где все в разы лучше отполировано. А что-то действительно сложное и инновационное требует нехилого опыта. Как не чувствовать себя изобретателем велосипедов?
>>623490 Не использовать никакие масштабы кроме (1,1,1). Причём в принципе не использовать нигде, если с 2Д работаешь, ибо иначе где-нибудь, но вылезет говно.
>>623623 менять скейл объекта чтобы где-то в другом месте менять его обратно. лол. я бы на твоем месте не доверял книжкам где авторы сами создают себе проблемы, а потом с ними борются.
>>623606 Юнити тут вообще ни при чем. Это один из базовых принципов работы с 2Д. Исходный скейлинг всех твоих спрайтов должен быть (1,1). Если ты делаешь другой - то ты сам себе создаешь проблемы из ниоткуда.
Кстати да. О проблемах которые ты сам себе создаешь а потом борешся с ними. Делаю ИИ на ECS. А как в структах организовать сорт полиморфизма? хочу сделать структ описывающий действие для ИИ. Я могу конечно написать enum AI_ActionType и перечислить там все доступные типы, тогда структ будет содержать поле этого типа и где-то в коде будет огромный switch(actionType) который имплементит все сорта действий. Но у меня неприятные ощущения в ноге, которая скоро наступит на на очередные грабли. Подскажите какие грабли выбрать.
>>623669 потому что перфоманс хочу и всю эту хуйню с LLVM компилятором. агентов много. даже если не пользоваться ECS, а только этой техномагией то проблем не станет меньше.
Есть один персонаж, он активирует разные бонусы- ускорение, замедление и т.д.
Реализация: на персонаже висит скрипт "Skills", в котором описаны все эффекты, которые могут произойти с персонажем- он может ускорится и т.д. На шарике-бонусе, который может подобрать игрок, висит простой скрипт, который на OnTriggerEnter2D делает GetComponent<Skills> с игрока и применяет определенный эффект.
Я ебнутый или это нормально? Может быть знатоки получше систему знают, как на игрока повесить эффект? Писать отдельный эффект менеджер?
>>623671 эффективность то не заключается в самом ECS как таковом, он разумеется будет иметь хуже производительность чем если ты сам структурируешь всю свою хуйню более оптимальными способами. просто то что предлагает ECS вполне подходит в рамках проекта и упрощает манипуляции с этим чудным компилятором, который меня интересует больше всего. из альтернатив - ебошить всё ссылочными типами, агенты имеют в себе листы в которых эти экшоны содержатся, когда требуется совершить какие-то манипуляции с этими экшонами то они переводятся все в блиттабл типы и скармливаются в Burst компилятор и всю эту многопоточную хуйню. но этот подход не годится, учитывая что я хочу довольно много агентов и много по ним итерироватся туда-сюда. надо максимально кэш-френдли код, так что остается описывать действия структами.
>>623672 менеджер тебе понадобится если ты захочешь более сложную схему бонусов. если тебя удовлетворяет эта то и нормас. только ты как-то странно организовал всё это. триггеры не должны никуда лезть. они должны OnTriggerEnter2D смотреть что об них запнулось и вызывать там метод типа "ApplyEffect" и передавать в этот метод себя. а конечное место уже должно интерпретировать полученный эффект. И: Инкапсуляция не размазывай столь важный код по всему проекту.
>>623673 Понимаю, что не критично, просто хочу понять, как лучше делать.
>>623674 Согласен, что странно, поэтому и спрашиваю, хех. Не до конца понял, что именно значит "передавать в этот метод себя" но думаю со временем разберусь. Инкапсуляция, да.
Анонимы, прошу, помогите дегенерату. В проекте есть 3 виртуальные кнопки, но нажать можно только одну, после нажатия они должны выключаться. Как это сделать, как после нажатия одной кнопки отключить все остальные? В текущем виде код работает так: каждую кнопку можно нажать, но только один раз.
Ряяяя почему не получается. Делаю простецкую менюшку-настройку в рамках обучения юнити (поэтому выглядит как говно), но оно еще и не работает.
Пик 1 - код. Пик 2 - настроечка UnputField Пик 3 - непосредственно как выглядит меню Пик 4 - что выдает дебаг.лог, когда ввожу текст в InputField. Когда двигаю слайд (не влез в пост, но сделан по аналогии с InputField), то пишет 0 вне зависимости от местоположения слайдера (в настройках от 0 до 2, только целые числа).
Как я понимаю, код не работает и значение не передается, но почему?!?!?!?!
>>624082 Опиши что оно должно делать. Во втором пике ты вызываешь функцию, но передаешь пустую строку, поэтому в логе пусто. Я так понимаю, что тебе нужно вывести в лог текст с inputfield? Можно сделать в классе первого пика ссылку на него и при вызове onSubmitName выводить не строку из аргумента, а текст с инпутФилда. Аналогично и с слайдером.
Хм, насколько я помню, дефолтные слайдеры должны сами передавать значение слайдера в аргументе.
>>624091 Во время игры я ввожу текст в инпутфилд, оно должно отправиться в код, а дебаглог должен написать введенное. Если в коде я добавлю Debug.Log ("меня звать" + Text); то он напишет меня звать и пустота.
Также и слайдер не передает значение при изменении, в дебаглог идет значение из аргумента (также с инпутфилд)
>Функция OnSubmitName() присутствует как в верхнем списке Dynamic String, так и в нижнем Static Parameters. Но выбор варианта из нижнего списка дает возможность отправлять всего одну, заранее заданную строку. Нам же нужно, чтобы пересылалось любое введенное в поле значение, то есть динамическая строка, поэтому выберите функцию nSubmitName() из нижнего списка Dynamic String
>>624082 да делегат ты не тот выбираешь. если выбираешь тот где в скобочках инпут какой-то то туда будет соватся то что ты в пустом поле напишешь. а если выберешь верху у которых сигнатура совпадает то уже то что в поле пишешь.
разница между красным и синим делегатом на картинке.
Изучаю ЕЦС и дотс. Поясните за ецс. С чистым ецс окно эдитора, получается, совсем не нужно? И всё что происходит настраивается онли в коде? А анимации, как я понял, еще не прикрутили и нужно пользоваться костылями?
>>624082 >>624114 Чтобы не проябываться с рассовыванием методов через кривой UI, советую подписываться в коде. В случае с инпут филдом будет что то вроде:
>>624171 Недописал- _inputField.onValueChanged.AddListener(OnInputFieldValueChanged); в Awake() методе. Соответственно ниже пишешь свой void OnInputFieldValueChanged(string value) { ... }
лирическое отступление Я вот хочу спросить в треде что-то, пока пишу и придумываю примеры для описания своего вопроса - решение находит само себя и я резко понимаю как что-то сделать, хотя до этого я несколько часов не мог понять как сделать то, что хочу. Неужто юнити тред творит чудеса с такими тупорезами как я?
>>624171 юзабилити страдает. вон например у меня слот на ослике делегат теребит когда в слот поступает предмет и когда там больше нет предмета. лезть совать всё это через код - боль.
Какого мохнатого года эта документация на сайте, где мне искать настройки шорткатов в 2018.2? Чому версии меняются, а документация нет, я хуею просто с них.
>>624399 Ну головой подумай, что ли. Представь, что ты делаешь игру, и какой тебе требуется функционал, а потом смотри, представлен ли он в сторе. Там дохуя базового функционала не представлено, кстати. Как пример - нет удобного универсального анимированного спрайта, в который можно было бы без еботни просто закинуть картинок и задать скорость анимации, с возможностью свободной замены и добавления фреймов.
Анон, подскажи. Хочу сделать модульную систему эффектов через ScriptableObject. Чтобы каждое действие игрока можно было описать набором эффектов (заплатить деньги, получить предмет, восстановить здоровье и т.д.). Проблема в том, что я не могу одновременно задать набор эффектов и их параметры без создания 100500 ассетов с разными параметрами (восстановить 1 здоровье, 2 здоровья...). В общем, есть Scriptable Object - действие, содержащий List, содержащий эффекты в виде базового класса. Есть эффекты-наследники с разными параметрами. Хочу возможность редактировать значения полей эффектов при создании ассета действия. Вроде бы это можно сделать с помощью кастомного инспектора, но не разобрался как.
>>623651 >>623656 >>623665 Нашёл в чём дело. Эта func(string s = null) идёт как делегат двух видов - func(string s) и просто func(). Во втором случае происходит такая ошибка. Лол. И даже если инициализируешь какую-нибудь string2 и присваиваешь ей значение s, то всё равно это говно не инициализируется. Решить-то банально - убрать "= null" и сделать второй метод без аргументов - но весёлая вещь.
>Неинициализированная переменная? Ну это если в плюсах, я хз возможно ли такое в шарпе. Видать, возможно.
>>619490 (OP) двач, че за нахуй, скачал я ваш этот юнити, а он ебет мне мозга с лицензиями, выбираю персональную, меньше 100 к$ дохода и ничего не происходит, выбираю, что не буду использовать в комерческих целях -то же самое, куда там что нажимать?
Ну чтож господа, на связи мидл C#, по некоторым обстоятельствам надо выполнить проект в unity. Из моих познаний в нем - лишь как сделать 2д игрушку.
Для начала, хочу сделать подобный курсор как в видео https://www.youtube.com/watch?v=-Qcuc6sKjD4 Нагуглил только про VFX эффекты. Что читать, что искать чтобы сделать такой курсор?
Хм, возник такой простой вопрос - как задать параметры инстансу префаба до того, как выполнится его функция Start()? Вот есть у меня префаб пули, в который вшито много разных типов, которые в зависимости от стартовых параметров заменяются - внешний вид, траектория, скорость и т.д. Всё это вычисляется в Start(). Чтобы вычислялось правильно, соответственно, нужно передать в инстанс параметры до того, как выполнится Start(). Проблема в том, что Start(), похоже, выполняется внутри Instantiate(). Не, я, конечно, могу забить нахуй на предопределенные функции, вставить всё это в свой собственный инициализатор и просто не выполнять Update() по триггеру, пока инициализация не завершиться. Но это же типо неправильно, не unity-way будет? Не верю, что такой распространённый и востребованный сценарий не предусмотрен. Но я пока не нашёл способ воткнуться между Instantiate() и Start().
>>624587 Охлол, поговорил с уточкой, называется. Сам спросил, сам нашёл ответ через пять минут. Оказывается, надо было спаунить префаб в выключенном состоянии. Тогда можно спокойно передать параметры, потом сделать SetActive() и всё заработает как надо. Не очень очевидно и нигде не упоминается, но ладно, проблема решена.
>>624595 Ты какой-то тупенький. Ты спросил, как задать параметры до Start() - тебе ответили, как задать параметры до Start(). Если ты сам не знаешь, что тебе нужно - ты сам себе дебил. С твоего "ДО" вообще проиграл.
>>624596 Ну-ка покажи мне на примере, как ты задаёшь параметры инстансу через Awake() до того, как выполнится Start(). Предвижу виляния и маняврирования в стиле "я никому не обязан доказывать, что спизданул не хуйню"
>>624604 Пока что ты только показал, как задаёшь параметрам константные значения(нахуя только непонятно). А как передать через Awake() инстансу вычисленные в рантайме значения параметров от спаунера до выполнения Start() - не показал. Впрочем, ты, похоже, просто дебил, так что можешь не отвечать. Всё равно похуй на тебя, правильный ответ я уже нашёл сам.
>>624606 Глупенький, ну возьми вместо this.parameter1 = "value1" this.parameter1 = RuntimeCalculatedParametersFromSpawnerToExecution.GetValueOf("parameter1") Ты все больше и больше под себя серешь, дурачок.
>>624607 Ок, я понял уже, что ты просто потроллить от безделья пришёл(всё равно вряд ли бывают настолько тупые люди, даже в юнити-треде). Но что если бы вопрос задал зеленый новичок, не способный сам нагуглить ответ? Тебе не было бы стыдно?
>>624608 Я абсолютно точно и исчерпывающе ответил тебе на все твои вопросы, глупыш. Ты просто сам не понимаешь, что тебе нужно и не способен ни в формулирование вопросов, ни в понимание ответов. Только рейджишь. С таким интеллектом тебе никогда не сделать игру.
ньюфаг Как лучше делать переходы игрока между сценами, если данные и скрипты не закреплены за самим игроком? Тупо поставить ему дефолтные точки для спавна и спавнить при переходе на них одного и того же игрока с прошлой сцены или же делать "отдельную копию" игрока на каждую сцену, удаляя при переходе предыдущего? Скрипты и прочая ебала висят на пустышке, которая переходит вместе с игроком и имеет синглтон, понятное дело.
>>624634 >Скрипты и прочая ебала висят на пустышке, которая переходит вместе с игроком и имеет синглтон Но зачем? Все поведение должно работать внутри сцены only и не зависеть от того, откуда эта сцена была загружена. А то вдруг ты там скрипт ходьбы у игрока удаляешь. Данные вроде количества хп можно сложить в scriptable/статический класс и пользоваться.
>>624637 Благодарю. Думаю остановлюсь на втором варианте. >>624642 Мне удобнее, когда у одной отдельной пустышки нужные мне скрипты для конкретных задач и заданная роль, которая уже как-то влияет на сцену. Типо как менеджеры игровые. Я не люблю вешать скрипты на объекты, которые непосредственно пляшут для игрока, ибо могу налажать и сделать то, что ты написал в спойлере и тогда я заебусь искать причины. >Данные вроде количества хп можно сложить в scriptable/статический класс и пользоваться. Я так и делаю, пирожочек.
>>624428 вообще, я конечно пытался понять, но все-же попрошу нарисовать картинку того что ты пытаешься сделать. так как для меня это выглядит по прежнему как "мы создадим стопитцот ассетов", так как смысл хранения этого раздельно выглядит для меня загадочным. лучше приведи пример использования. при помощи кастомного инспектора можно всякую хуйню сотворить весёлую. могу рассказать как, если вопрос будет более конкретный.
>>624482 лол а как? мне не удавалось сломать это так. я попробовал и не получилось. разве оно не должно тебе выплюнуть ошибку с нулл референсом?
>>624580 там в тамбнейле даже название этого упомянуто лол. иди в гугл и набери Tobii Eye Tracker
если отвечать на твой вопрос более развернуто то мне следует поинтересоваться зачем ты вообще пользуешься геймобжектами для пули. такая хуйня вообще не должна существовать в виде геймобжектов.
>>624724 нахождение ближайшей точки на усеченном конусе конвексной фигуры с отступом конечно-же! конвексная фигура репрезентует группу агентов. чтобы агенты могли избегать сразу целые группы агентов. в целом работает, но так себе.
>>624724 Дай угадаю, это коллайдер, описывающий вокруг всех капсульных противников и 3 синих (похоже на проекцию ближних к игроку). Черные грани - фронтальные к игроку, жёлтые - боковые и видимые, красные - задние, а зелёные - грань противников. И дохера нормалей для черных и жёлтых граней.
>>624668 >>624518 >лол а как? мне не удавалось сломать это так. я попробовал и не получилось. разве оно не должно тебе выплюнуть ошибку с нулл референсом? Хз, у меня старая версия юньки? Ещё на 32битке сижу. Два делегата - func() и func(string s). Есть метод func(string s = null) s = "" даёт такой же результат, я его сохраняю как func(), а потом обращаюсь к переменной s. Нулл референс выдаёт в рантайме.
Энивей, раз уж решил эту (и многие другие) проблемы, то пора бы задуматься о сейвлоаде. Я не хочу ебаться с сериализацией и сохранения состояния игры, вместо этого хочу ебаться с превращением карты в набор команд для спавна объектов. Я использую муншарп для дохуя всего собственно поэтому и делегаты, но его скрипты это набор таблиц же, переменные, функции, все дела, если сохранять, то придётся в файл сохранения класть эти таблицы - а хотелось бы подгружать скрипты из файла карты, а не хранить в сейве.
Кто-нибудь может посоветовать материалов по теме? Я полный нуб в этих ваших хэшах.
если интересно то так выглядит без учитывания групп.
>>624743 в целом то правильно проанализировал, да. разве что нормали почему-то тянутся к точкам к расположеным в гриде. ещё мог сделать некоторые догадки касающиеся того что на поверхности нарисованы какие-то линии, не все капсулы имеют под собой круг и они соеденены какой-то мистической красной линией в цепочку и что радиус кружочка имеет в два раза больший радиус агента. черные линии это траектория, красные линии это цепочка следования (агенты следуют за агентом перед ним), агенты имеют радиус в два раза больший чтобы избегать друг друга на расстоянии двух радиусов, а агенты без кругов просто находятся внутри и не нужны для избегания группы.
>>624745 это нужно для много чего. в частности для ситуаций когда огромные толпы агентов пытаются обойти друг друга. этакий способ решить проблему увеличением масштабов. хотя для РТС годится в меньшей степени на самом деле, там есть решения и попроще и дающие лучше результат.
>>624746 вот тут действительно только удачи пожелать можно. у меня никаких советов, я такой хуйней не маялся. на мой вкус оверхед от вызова делегатов крупноват чтобы настолько активно их использовать.
>>624619 Спасибо, Капитан Очевидность! Однако, если бы ты удосужился прочитать изначальный пост, ты бы увидел, что вопрос был как раз про то, как сделать иначе, используя встроенные методы(ибо какой иначе в них смысл?) Я просто привык, что в нормальных движках ты можешь создать объект, отредактировать его как тебе нужно, а потом уже вставить его в сцену, и только тогда уже заведутся управляющие методы. Однако, в юньке, похоже, невозможно создать объект вне сцены. Большой минус. >>624668 >ExecutionOrder.html Будто я не прочитал это первым делом. >если отвечать на твой вопрос более развернуто то мне следует поинтересоваться зачем ты вообще пользуешься геймобжектами для пули. такая хуйня вообще не должна существовать в виде геймобжектов. Вообще это был рандомно придуманный пример, но с этого момента подробнее - а в каком виде, простите, должна существовать такая хуйня, если меня движок насильно заставляет пользоваться геймобжектами, и вне геймобжектов банально вообще ничего существовать не может - ни код, ни графика, ни физика, нихуя?
>>624785 никто тебя не заставляет пользоваться геймобжектами, можешь использовать юнити исключительно чтобы хуйню рендерить напрямую ебоша в буффер. как например все вот эти картинки-видео с линиями и прочим говном выше. не думаешь же ты что это лайн рендеррер? несколько тредов назад я даже простенький пример делал через простенький менеджер и GL. >>562463 с новыми игрушками юнити даже не обязательно геймобжект в сцене иметь
да и лол юнити теперь даже несколько решений физона предлагает.
>>624793 Угу, я читаю уже про кастомный рендер. С одной стороны хорошо, конечно, что можно всё выкинуть и использовать движок только для создания окна приложения. Но с другой стороны, я для этого лучше более привычной и функциональной SDL2 воспользуюсь.
>>624795 да помимо окна там конечно ещё куча инструментов. оно тебе и билдит все быстренько в окне редактора и библиотеку для расширения функционала имеет и ресурсы тебе сериализует и подготавливает к использованию и так далее. рендерит то, сё, так, сяк, вон эти новомодные ECS тоже упрощают рендер всего этого без геймобжектов. оно там тоже всё в буффер ебошит щелчком пальцев. когда сделают аниматор для него наконец-то ваще заебись станет.
>>624798 А не будешь добреньким, не расскажешь, как использовать компоненты движка без геймобжектов? Например, физические объекты - если я хочу только коллизии использовать и считать для массива своих объектов, разве оно не потребует, чтобы они обязательно на базе геймобъекта были?
>>624801 это уже зависит от того что тебе надо. так то тебе никто не мешает спиздить библиотеку физона, или написать свою узкоспециализированную. для того что тебе хочется наверно надо посоветовать потыкать https://docs.unity3d.com/Packages/com.unity.physics@0.0/manual/index.html может понравится. сыровато, но вроде работает. для мелочей наверно хватит.
>>624806 Я вообще спрашивал про встроенные RigidBody, но, как я понял, они прибиты гвоздями к геймобжекту. Короче, всё встроенное говно выкидывать нужно.
>>624810 лол ну вон те библиотеки предлагают тебе замену ему. компоненты то разумеется являются компонентами геймобжектов. проще уже спросить чё ты там делаешь такое.
>>624815 Пока ничего особенного не делаю, с движком знакомлюсь. Но мне не нравится навязанная архитектура, когда за пределы геймобжектов и компонентов даже плюнуть нельзя. Хочу более привычную и эффективную архитектуру с обычным циклом, где бы я сам решал, что мне обрабатывать, а что нет. Но я пока не понял, как это по-нормальному сделать, а не костылями к существующей системе. Цикл рендера тоже свой хочу, где бы можно было самостоятельно определять последовательность рендеринга объектов.
>>624825 лол ну не хочешь чтобы юнити было фреймворком - не пользуйся им как фреймворком. вся хуйня с геймобжектами в данный момент представляет микроскоп которым можно забивать гвозди любых размеров, если тебе нужен какой-то более специфичный инструмент длязабивания гвоздей то бери его, этот просто наиболее универсальный и к нему больше всего документации. а эффективность один хуй нужна только для чего-то специфичного, с чего лучше не начинать. >Цикл рендера тоже свой хочу, где бы можно было самостоятельно определять последовательность рендеринга объектов. лол как и везде - цыферкой https://docs.unity3d.com/Manual/SL-SubShaderTags.html или именованной константой. поизучай рунные слова шейдоров если так хочется повелевать ими. для 2д попроще.
>>624832 Да мне на самом деле от юнити нужна только одна вещь - экспорт на консоли. Так как после виндового релиза задумался о портировании на консоли. А игра у меня на своём движке, на базе Allegro, и там либо самому портировать под каждое SDK, либо переписать на сторонний движок. Ещё вариант есть переписать на SDL2. Короче, я прикинул все трудозатраты, и решил, что сделать порт на другой движок будет проще, так как логики немного в общем. Сначала ткнулся в УЕ4, но там почему-то похерили няшную архитектуру УДК и форсят какое-то говнище с блюпринтами. Поняв, что с блюпринтами я буду годы возюкать, а выкорчевывание их из кода займёт больше, чем написание трёх игр, я послал уеч нахуй. В итоге копаюсь в Юнити. Громоздко и неудобно, и архитектуру навязывают ебанутую, но в целом вроде жить можно.
Аноны, как мне сделать вот такую хуету- Trail Renderer, который по скрипту перестает оставлять треил и потом снова начинает? Я думал просто его выключать или менять длину трейла, но тогда пропадает "хвостик", а я хотел бы, чтобы хвостик оставался еще некоторое время и не исчезал сразу.
Может быть вообще не стоит делать это треил рендером?
>>624785 >Спасибо, Капитан Очевидность! Ух, сколько высокомерия и пассивной агрессии. >в нормальных движках ты можешь создать объект, отредактировать его как тебе нужно Присвоив при создании public переменные или дернув метод для инициализации. Что тебе еще нужно-то?
Ну и да, как обычно. Не нравится - не пользуйся, вокруг полно "нормальных движков".
Добрый день, анонче Столкнулся с такой проблемой. Пишу мультиплеерную игорю с использования ассета Photon PUN. Собсна, проблема в следующем:
У меня есть 2 игрока(хост и подключенный клиент) а так же триггер-коллайдер с определенным кодом, который взаимодействует с игроком. Каждый раз, когда я захожу ке-то кроме хоста в этот коллайдер, код срабатывает только на хосте. Как это можно исправить? Пробовал уже и IsMine, и искать игрока по ID, и использовать PhotonRPC но ничего из этого не помогло.
Сделал меш коллайдер для этих крайних комнат, они одинаковы по размерам. Добавил вот эту сетку, выделена синим на пик 2. А они куда то в бок добавились
>>625404 а все, разобрался. меш-коллайдер надо экпосртировать с такими же координатами. Вообще, комната имеет мало вершин, 100, для нее наверное не нужно делать отдельный меш коллайдер, а использовать эту же сетку объекта
Планирую серьёзным проектом заняться. У меня сейчас стоит для обучения и тестов 2019.1, хаб предлагает 2019.2, и ещё ЛТС версию 2018.4. Вопрос. Мне оставаться на текущей, обновиться на .2 или стоит на ЛТС перекатиться? Что стабильнее? По ЛТС техподдержка продлённая, этим как бы и заманчиво.
>>625769 В 20 году много всяких ништяков выйдет из превью, и естественно они не будут поддерживаться в 18 версии. Регулярно обновляюсь на самую последнюю версию, никаких катастрофических проблем не встречал.
>>625805 Понято. Обесни ещё один момент. Я тут пару месяцев назад орал и истерил по поводу лайтвайт рендер паплайна, категорически рекомендованного анонимусом. Мне там давали советы, но я всё забыл. Есть ли исчерпывающий гайд по переводу материалов из одного типа рендера в другой. Вот я сегодня сделал новый проект на ЛВРП, потом через ассетстор загрузил ассет персонажа. Юнити мне написала, что нужны дополнительные зависимости, я согласился. Она скачала чего-то там и паплайн сбросился на дефолтный. Вся демосцена, которая шла в шаблоне проекта стала пурпурного цвета. Мне бы кто-нибудь один раз бы объяснил на пальцах. И я бы понел.
Я на вкладке animation сделал две анимации - открывание и закрывание двери. В открывании rotation.y меняется с 0 на 90, в закрывании - с 90 на 0. Работает. Я теперь хочу сделать как в аутласте: чтобы можно было медленно и не до конца открывать дверь, и с этой же позиции закрыть. Я хочу сделать такое - если чел жмет на мышь и сразу отпускает, то полностью срабатывает анимация открывания/закрывания. Если чел удерживает мышь - то анимация также запускается, но с более медленной скоростью. Но если чел отпустит мышь, открыв дверь только на 50 градусов, а потом захочет закрыть, то анимация закрывания начнется, установив rotation.y в 90. А мне нужно, чтобы анимация закрывания началась с той позиции y, на которым сейчас дверь. Такое ведь нельзя сделать с помощью анимации? Ведь анимация строго принимает значения x y или z, которые надо трансформировать. И если анимация закрывания начинается с rotation.y = 90, то при запуске анимации y двери сбросится на 90.
>>625965 Слишком сложная хрень для простого открывания/закрывания двери. Тут блендить ничего не надо, достачно взять анимацию открывания, а чтобы закрыть, установить speed в -1
>>625987 Челу нужно прерывать анимацию между двумя углами, бленд три идеально подходит, а то что ты сказал больше на костыль похоже. >>625990 Всё так, еще можешь в бленд три указать чтобы х не только от 0 до 1 было, а от 0 до 90, и указывай себе нужный угол.
>>625997 >Всё так, еще можешь в бленд три указать чтобы х не только от 0 до 1 было, а от 0 до 90, и указывай себе нужный угол. Это получается, что анимация полностью управляется на этой переменной x? Скажем, я открыл дверь на 20 градусов, можно ли запустить анимацию, типо как-то play(), и чтобы анимация продолжилась с 20 градусов до 90, без моей передачи x?
>>626001 >Скажем, я открыл дверь на 20 градусов, можно ли запустить анимацию, типо как-то play(), и чтобы анимация продолжилась с 20 градусов до 90, без моей передачи x? Нет, тебе нужно ручками менять x с 20 на 90 для этого.
Как же бесит. Ну я конечно понимаю что мамкиным 12-летним кулцхакерам мамка интернет напрямую подключила. Я понимаю что в силиконовой долине там все миллионеры и у каждого из 10500 сотрудников блядь свой модем со своим тарифом с выделенным айпи для него
Но что мне-то делать? я даже ассеты скачать не могу.
>>626284 Поставь виртуалку, в ней установи венду. Снаружи виртуалку настрой на прокси. Внутри винда будет в привычном режиме получать локалку со шлюзом. Кстати, многие рекомендуют девелопить в виртуалке, чтобы была возможность быстро откатывать нежелательные изменения.
Кстати! Если у тебя на работе запрещено настраивать комп, ты можешь таскать виртуалку на флешке с собой. В ней будет и винда и юнити.
Каким образом? Для полноценного использования видеокарты и все ее расширений и аккуратного фрейм дебаггера тебе нужен полный доступ к видяхе. Это значит тебе нужна виртуальная машина с PCI pass-through. Много ты знаешь виртаулок с этой функцией? Те, что есть, требуют линкса в хосты. Помимо этого тебе нужно будет иметь 2 видяхи, ибо одну ты не поделишь.
>>626700 > Каким образом? Скоро мне придёт нвме-диск и тогда буду всем показывать, каким образом это делается. Можете скринить. Сейчас с медленного харда и без виртуалки девелопинг мучителен.
Продолжу восхищаться ecs. Нужно сохранить игру при нажатии на кнопку. ООП: ПАТТЕРН КОМАНДА ИНТЕРФЕЙСЫ НАПИШИ ЕЩЕ СОТНЮ-ДРУГУЮ СТРОК КОДА ЕЦС: создал ентити в KeyboardInputSystem, добавил пустой компонент SaveGameRequestComponent, 3 строчки кода. Итерируешь массив энтитей с этим компонентом в SaveGameSystem, сохраняешь данные, удаляешь ентити с реквестом. Еще 3 строчки кода.
>>626862 Забыл еще одну строчку для объявления компонента учесть. Хотя с другой стороны в SaveGameSystem работа с реквестом занимает не 3, а 2 строчки кода, поэтому суммарно все еще 6 строк.
>я тут вкусный стейк пожарил и сожрал, збс было. Рекомендую всем!
>ТИ ЧТО НЕ МОЖЕШЬ ПРИГОТОВИТЬ СТЕЙК ИЗ МОРКОВКИ??? ЕТО ТАК ЖИ ВКУСНО!!!!!! >МРАЗЬ УБИЙЦА ТРУПОЕД!!! ДИДЫ КОРЕШКИ ЖРАЛИ!!! >ТЫ МОЖЕШЬ ПОЛУЧИТЬ ТЕ ЖЕ БЕЛКИ ИЗ ВАРЕНЫХ КАБАЧКОВ!!!!
>>626867 лол ему сказали "ниче нового, все и так можно было если руки не из жопы" а он стал инфантильную хуйню нести. ECS конечно здорово, но не по этим причинам.
>>626886 >кто ест стейки И в каком месте я это написал? Я ничего против ООП не имею, но ECS - заебись. Именно как инструмент для создания игр.
>>626885 Конечно можно, наплодив перед этим абстракций и написав пару сотен строк кода чисто в служебных целях, пока в ецс достаточно 6 строк, и при этом еще и выигрыш в производительности есть.
>>626930 Предположим у тебя два программиста и оба они дебилы. Первый программист написал класс с public int zolupa, в котором хранится внутреннее состояние, и если его менять снаружи, то все ломается нахуй. Второй программист его регулярно меняет из своего кода, потому что дебил.
Чтобы этого не было, можно сделать public int Zolupa { get; private set; }, и у второго дебила будет ошибка на этапе компиляции, если он будет делать хуйню.
Скажите, как в юнити рисовать в двадэ? Допустим я хочу процедурно нарисовать шахматную доску (пример из соседнего треда) там чувак пишет, что нужно создать 32 экземпляра белого спрайта и 32 экземпляра чёрного. Но это же пиздец! Неужели нельзя просто на канве нарисовать функциями вроде line(point1, point2, color), как это делалось во времена дидов?
>>626862 Руснявые долбоебы гениальные погромисты никак не поймут, что ЕКС - это именно что правильно, по канонам приготовленное ООП, с проанализированной и правильно выстроенной моделью предметной области.
>>627128 ЕКС это всего лишь очередная хуита для байтоебов и больных фанатиков.
При этом сильно откатывающая программирование до 80-90 годов, когда ради одного байта или такта писали такое говно на макросах, хаках и асм-вставках что до сих пор страшно
>>627361 Script Execution Order говорят тоже регулирует апдейты но вопрос в другом - где нужно такое адское микро? не лучше ли архитектуру намутить где порядок апдейтов не важен
Я о том, что задротики обычно понаделают классов а-ля PoisonedZombie, ElectricBat, RifleHunter и т.д., а потом удивляются, что у них нельзя построить электрического ядовитого летающего зомби с ружьем, т.е. приходится добавлять новые классы на каждый чих. И называют свою анскилльность в построении моделей предметной области "ООП говно ря, юзаем ЭКС почаны!11". Хотя ЕКС полностью укладывается в парадигму ООП.
>>629299 >Хотя ЕКС полностью укладывается в парадигму ООП. Более того, ECS это вообще воплощение одного из популярных принципов ООП - composition over inheritance.