На Unity сделано много замечательных игр - Rust, Блицкриг 3, Pillars of Eternity, Tyranny, Kerbal Space Program и многие другие. Главным преимуществом Unity перед другими движками является его простота для одиночной разработки. Не нужно иметь целую компанию девелоперов, чтобы сделать хорошую игру. Если ты один или имеешь небольшую команду и хочешь сделать хорошую игру без претензий на ААА, то Unity станет лучшим выбором. Тем не менее, даже крупные корпорации зачастую выбирают для своих игр именно Unity.
FAQ
- Какие у Unity сильные стороны? - Простота разработки, удобный инструментарий, кроссплатформенность, богатая документация, огромное сообщество.
- Какие у Unity слабые стороны? - Сложность в создании фотореалистичной графики. Для графики "как в Crysis" рекомендуется взять другой движок. Хотя Unity вполне способен выдавать не уступающую любым другим движкам картинку, это требует определённого навыка от разработчика.
- На каких языках я могу писать скрипты для Unity? - На выбор два языка - C# и UnityScript. UnityScript - это что-то среднее между JavaScript и ActionScript. Выбирай язык по своему вкусу, они оба вполне удобны, но помни, что большинство примеров написано на C#.
- Для каких жанров подходит Unity? - Для абсолютно любых! Жанр ограничивается лишь фантазией разработчика (и его умением писать скрипты, разумеется). Можно создавать и РПГ, и стратегии, и слэшеры. Можно делать VR-проекты или Minecraft-подобные песочницы.
- На каких платформах работают созданные с помощью Unity игры? - Windows, Linux, MacOS, SteamOS, Android, iOS, Windows Phone, PlayStation4, Xbox One, WebGL, Oculus Rift и многие другие. Полный список можно найти на официальном сайте. Таким образом, игры Unity работают на десктопах, на смартфонах, планшетах, приставках, в браузерах, VR-очках и некоторых других системах.
- Часто вижу скриншоты с красивой природой на Unity. Как такое создать? - Очень просто! В Unity встроены удобные инструменты для создания террейна и SpeedTree для создания деревьев и готовая реализация ветра - не нужно ничего писать или скачивать и подключать плагины - ландшафт в Unity создаётся в пару кликов.
- Что такое стартер киты? - Starter Kit - это набор скриптов и префабов, а зачастую и графических элементов для игры. Они призваны облегчить разработку игры определённого жанра и как правило разбиты по жанрам (Action-RPG Starter Kit, RTS Starter Kit, 3D Shooter Starter Kit, Space Game Starter Kit, VR Starter Kit и так далее). Также бывают стартер киты различных игровых элементов, не связанных с геймплеем (Nature Starter Kit с дополнительными природными объектами, Medieval Starter Kit со средневековыми объектами и так далее). По сути, стартер киты выполняют в разработке игры ту же роль, что и фреймворки в программировании. Однако стоит отметить, что использование геймплейного стартер кита принуждает разработчика изучать большое количество чужого кода и чужой структуры для внесения своих изменений и полноценного использования. В связи с этим большинство разработчиков предпочитает писать почти всё с нуля, получая полное понимание работы своей игры. Новичкам крайне не рекомендуется начинать знакомство с Unity со стартер китов.
- Что нужно уметь делать для создания полноценной игры, кроме Unity-разработки? - Кроме непосредственной разработки игры на Unity, требуется также уметь создавать 3D модели (3ds Max, Blender, ZBrush), 2D рисунки (GraphicsGale, Aseprite, Piskel), текстуры (Substance Designer, NeoTextureEdit), музыку (FruityLoops, Ableton). Не обязательно учить это всё - например, в 2D играх не нужны 3D модели, а музыка необходима далеко не всегда. Также вы можете скачивать элементы для ваших игр на бесплатных сайтах. Если у вас есть деньги, то все необходимые элементы можно заказать у фрилансеров на https://www.fl.ru/ (русскоязычный) или https://www.upwork.com/ (англоязычный).
- Бесплатен ли Unity? - Можно свободно скачивать, использовать и продавать готовые игры на Unity с лицензией Personal - это абсолютно бесплатно! Но на бесплатной версии при запуске игры будет появляться короткий стартовый ролик "Made with Unity", а также ваши доходы ограничены 100 000 долларов в год. Для снятия этих ограничений нужно приобретать платные версии лицензий Unity. В конечном итоге, платные варианты используются лишь крупными компаниями с огромными доходами, тогда как обычные разработчики в большинстве своём используют бесплатную Personal лицензию.
- Движок Если ты уже умеешь использовать язык, то можно приступать непосредственно к изучению движка. Крайне рекомендется купить/скачать книгу Unity in action (Unity в действии). В ней подробно описываются множество возможностей движка. http://www.ozon.ru/context/detail/id/34792570/ Также посмотри на видеотуториалы с официального сайта: https://unity3d.com/learn/tutorials Если же ты не любишь видеотуториалы (или не понимаешь разговорный английский) и предпочитаешь текст, то посмотри здесь: http://catlikecoding.com/unity/tutorials/ Тут крайне подробно описан процесс разработки и приведены примеры кода. Эти туториалы универсальны и описывают множество различных частей игры, от работы с текстурами до генерации карты мира. А вот в этом туториале описыватся разработка двухмерной игры с видом сверху: https://www.raywenderlich.com/61532/unity-2d-tutorial-getting-started Это будет полезно, даже если ты планируешь разрабатывать трёхмерную игру. Ни в коем случае нельзя обойти вниманием этот сборник туториалов: https://noobtuts.com/unity В нём подробно описывается процесс пошагового создания разных игр - двухмерных и трёхмерных.
Разумеется, все эти туториалы охватывают лишь часть возможностей Unity. Самый надёжный способ выучить Unity - это начать делать игру и по мере разработки гуглить непонятные моменты.
я правильно понимаю, что не особо важно, где скрипт, обрабатывающий GUI весит. Хоть на самом UI, хоть на камере, хоть на пустом объекте. Или тут есть свои тонкости?
>>394500 gameObject меняется, но если ты его не используешь, то без разницы. Т.е. скрипт, который по нажатию кнопки что-то делает, и меняет цвет кнопки, лучше вешать на саму кнопку, чтобы иметь доступ к её свойствам через gameObject.GetComponent().
>>394500 И еще лучше избегать супер-йоба скриптов, которые делают сразу кучу всего, типа GUI, GameLogic и так далее. Лучшей практикой считается использование небольших скриптов, которые делают что-то одно. Т.е. из предыдущего примера с кнопкой, тебе нужно повесить на кнопку два скрипта, один дергает анус игровой логики, второй меняет цвет объекта, к которому прикреплен. Это не всегда возможно, конечно, но пытаться надо.
Ткните пожалуйста носом в маленький скрипт, который проигрывает звук при нажатии кнопки. Размещать кучу звуков на сцене и после их привязывать через onClick() напрямую неудобно, т.к захламляется сцена.
Посоветуйте годных материалов по программированию камеры, конкретнее от 3-лица. Все которые нашел очень примитивны, хочется с детектером коллизий, опозданием, огибанием геометрии. Пжлст без готовых ассетов.
>>394589 Тащемта, в школе они и не нужны были. И хоть бы кто тогда сказал: "Вот если интересна %хуйнянейм%, учи вектора, пидор". А сейчас они освежаются (или учатся) довольно легко. Это же не ебаные матрицы с логарифмами и прочей хуйней.
>>394598 > И хоть бы кто тогда сказал: "Вот если интересна %хуйнянейм%, учи вектора, пидор" Нам так и говорили, что, мол, каждую хуету вам говорят не просто так, потому как экстрасенсов не завезли и никто не ебёт кем вы потом станете. Так что жрите всего по чуть-чуть, а потом после выпуска сами разберётесь на что у вас стоит.
>>394613 Не нужны там матрицы и тригонометрия. Лепишь на камеру что-то вроде пикрелейтеда, добавляешь sphereCollider и rigidBody, и вуаля, ваша камера готова. Ну разве что position и rotation через rigidBody надо будет менять, чтобы плавно было.
>>394622 Я вообще не тот кун, которому камера от третьего лица нужна. Я даже не разбирался в тригонометрии (которую я прогулял и продрочил на нулчане) для поворота персонажа за камерой, просто спиздил велосипед и приравнял позицию камеры к позиции игрока, чтобы было заебись.
>>394627 Нормально. Без гравитации и с полным контролем положения в пространстве самое то, будет стукаться об остальные коллайдеры вместо того, чтобы клипаться.
>>394635 Ну так-то можно и через рейкасты ебашить, но нахуя, если велосипед уже встроен в rigidbody. Я, вот, сначала персонажа двигал через transform, а потом я понял, что мне надо через стены, все таки, не проходить аки бог.
Посоветуйте, кто шарит, как грамотно запилить растягивание фона меню под размер экрана? Пилю 2д рогалик, приоритет, конечно же, мобильная платформа, но не исключаю сборки под линукс, хохмы ради. И, надо бы, чтобы фон отображался как надо. Пытался поставить изображение больше, чем размер камеры - это прокатывает на огромном числа мобилок где мелкий экран, но при большом разрешении(на пк, например) видны края. Что-то подсказывает, что копать надо в сторону Canvas>panel, но нужен совет знающего человека, который подтвердит мои догадки или направит на путь истинный.
Есть два стула которые я нашел чтобы понять что анимация закончилась, anim.GetCurrentAnimatorStateInfo(0).normalizedTime и ивент в самой анимации вызываютщий функцию. Какой стул лучше, и есть ли другие?
Добрый вечер. Я пишу небольшой шутер. Каждое оружие у меня представляет из себя GameObject. Соответственно, мне надо сохранить, какое оружие у меня сейчас есть, вместе с его состоянием. Т.е. сохранить куда-ту GameObject и потом загрущить его. Подскажите, есть ли нормальный способ в рантайме сохранить/сериализовать GameObject?
>>394656 по мойму у тебя недопонимание иерархии. Вот твое: GameObject > Ak-47 Вот как правдоподобнее. AK-47 > GameObject т.к. обьект на сцене это всеголишь переменная от слова менять. Как например в скрипте AK-47 переменная ReloadTime. И что значит сохранить? Имеешь ввиду при выходе из игры, или в момент игры?
в скрипте, что управляет игроком, сделай массив из GameObject в редакторе в инспекторе заполни его префабами йхе;бз выбирай по GameObject bullet = (GameObject)Instantiate(bulletPrefab, new Vector3(0, 0, 0), new Quaternion(0, 0, 0, 1));
>>394659 Да, я инстантинирую из префаба объект, согласен. Но что, я теперь не могу сериализовать этот объект? Почему в обычном программировании я могу сериализовать объект класса, а тут не могу?
Сохранения происходят при переходе с уровня на уровень. Ну, то есть, да, при выходе и входе у меня должно сохраниться текущее оружие.
>>394660 ты че тролишь или как. я понимаю мы бы обсуждали что то пиздецки сложное за гранью реальности. но тут от силы потратишь 5 мин на все три одновременно
>>394664 от нуба. сделай class weapon{ str name, go model, float reload} и его сериализуй? или заменить GameObject model на String и юзать какой нить resources.load
>>394672 сорян если хуйню написал, в душе не ебу что такое сериализация. Слышал что это для сохранения и т.п. Для меня это когда за день посмотрел 16 серий любимого сериала.
>>394659 Я уже второй раз вижу описание такой логики, но нихуя не понимаю. Пожалуйста, объясните идиоту на пальцах и скриншотах, как это должно выглядеть.
>>394675 скрипт AK-47: GameObject model float reloadTime int maxbullets спрашивай конкретнее что не ясно. так же скрипт ak-47 тобишь класс, может не иметь своих переменных, а получать\наследовать от балванки класса вроде WeaponBlueprint
>>394679 WeaponBlueprint = ak-47, USP, Glock, Bazooka гугли ООП. Гугли что такое компонент в юнити, в кратце пустой геймобьект это всего лишь точко в пространстве, "не пустой" это MeshRenderer с моделькой(mesh)
>>394680 я сам нуб, вообще то так что не слушай меня особо. ООП применять новичку вообще не имеет смысла по мойму, только если в игре есть много разных вещей с одинаковыми параметрами. типа негр и белый
>>394677 Добро пожаловать в увлекательный мир видосов о юнити, чо. Они даже на офф. сайте такие, чтобы делать "как надо" надо самому иметь опыт в ООП и всем прочем говне.
>>394679 А, блядь, так вся суть была в том, что в классе хранится префаб с графоном и физоном.
>>394714 На игроке-то он зачем? Игроку можно через Dictionary<WeaponSlot, Weapon> указать, какие оружия у него есть, дальше просто спавнить имеющуюся нужную модель в руки и давать из нее стрелять.
Аноны, такой вопрос. Чувак сделал в блендере модель, сделал UV развертку, натянул текстуры, сделал материалы и так далее. Ну, к примеру, сделал материал стекла с, цитирую: "Бликами, IOR искажениями и отражением". Импортирует все это в .fbx и присылает мне все это вместе с текстурками.
Вот и столкнулись с проблемой, что юнити, на сколько я понимаю, не очень хочет дружить со сложными материалами из блендера. Как поступать в данной ситуации? Неужели вся его работа с материалами насмарку и тот же материал со стеклом нужно будет настраивать самостоятельно в самом юнити?
>>394654 Таки походу я криво выразился. Тут суть дела такова: Есть фон, есть кнопки меню, но на разных соотношениях крана слетает расположение(Например, когда в редакторе настраиваю всё для соотношения 4:3, а потом запущу сие творение на экране 16:10, то слетает расположение кнопок относительно картинки) Короче объясняю я хуёво, но надеюсь кто-нибудь разберёт мой бред и поймёт суть) Был вариант запилить canvas с ui под каждое из возможных соотношений сторон и, чтобы в настройках, юзверь сам выбирал то, что отображается наиболее адекватно для его девайса. Или есть способ наименьшего использования вазелина? Чтобы велосипед не изобретать. Если надо, смогу присобачить пикчи.
>>394797 Это странно. Если ты задаешь отступы от края внутри элемента, они же должны вместе с элементом перешакаливаться как надо. Скинь структуру своей штуки, что ли.
>>394803 уже зафиксировал, и выставил, чтобы они растягивались\сжимались в зависимости от экрана. С этим проблем нет. Туплю с фоном, т.к на 16:9 соотношении он нормально отображается, а на меньших\больших его штормит. Думаю, мб вектор спасёт? >>394810 Прикрепил настройки canvas и по-сути сам трабл.
Ща будет очень длинный пост Инвентарь в unity Суть -Есть базовые ячейки (Порядка 20 в сумме(привязаны к разным частям тела\конечностей) -Есть предметы которые влазят лишь в определённые слоты. Скажем рюкзак при всём желании к колену не прикрепишь -В некоторые предметы можно вкладывать любые\определённые вещи в патронаш лишь патроны, в рюкзак всё что угодно -Каждый предмет имеет лимит на вместимость к примеру в сумку на 3х3 клетки при всём желании не всунешь вещь размером 2х4 -Планируется мультиплеер, поэтому интересно как реализовать(адаптировать скрипт) под мп без лишнего гемора. Просьба кинуть толковых гайдов по UI или помочь советом если можете, с меня няшки
>>394826 > Инвентарь в unity нехуй делать > -Есть базовые ячейки (Порядка 20 в сумме(привязаны к разным частям тела\конечностей) делаешь контейнер в GUI Canvas, в него добавляешь 20 UI Image с картинками пустых ячеек и ровно над ними ещё 20 обжектов с пустыми картинками, которые будут меняться в зависимости от предмета дальше их скрипту кормишь, лучше как массив. но можно и не как массив. скрипт прилагаю. но туда ещё допиливать и допиливать. > -В некоторые предметы можно вкладывать любые\определённые вещи в патронаш лишь патроны, в рюкзак всё что угодно у предметов поставь int itemtype который будешь проверять потом > -Каждый предмет имеет лимит на вместимость к примеру в сумку на 3х3 клетки при всём желании не всунешь вещь размером 2х4 с таким инвентарём а-ля Might And Magic уже труднее. пиши функцию значит, которая будет парсить клеточки одну за другой, и если клетка свободна, чекать клеточки справа и снизу от неё на "пустость". форму предмета советую задавать в двумерном массиве ноликами и единичками. > -Планируется мультиплеер, поэтому интересно как реализовать(адаптировать скрипт) под мп без лишнего гемора. чекать ячейки инвентаря на клиенте. "и_так_сойдёт.jpg" если кто догадается зачитерить и впихнуть невпихуемое — ну нихуя себе вот ето проблема, впихнёт в сумку на 4 предмета больше. невелика потеря. всё равно твою НАКОЛЕНКЕ-игру им лень ломать будет а для инвенторя [SerializeField] и синхронизируем массивом при подборе-использовании-выбросе предмета.
>>394924 > всегда веселит когда нубы говорят про то что их игру кто то будет читерить Довольно частая ошибка новичка. Они сначала покупают седло, а уже потом лошадь. Чаще всего у таких игра дальше архитектуры и тестовой сцены не уходит.
>>394843 Спасибо за очень грамотный и адекватный ответ. Держи няшу. >>394923 Там делается примитивный инвентарь, меня же интересовал сам механизм создания инвентаря как в пункте 3 и 4 >>394925 Мне очень важно твоё мнение
>>394926 > Мне очень важно твоё мнение Ну я просто сказал то, что очень часто наблюдаю. Я ж не говорю что ты обосрёшься со своей игрой или что ты кодить не умеешь или ещё чего. Я просто говорю что очень часто народ со своими разработками забегает дальше, чем нужно. Всему своё время.
короче, послал не бох давеча таблетку с андрюхой, Irulu Expro X7, ну и значит как любой нормальный пидарас я сразу решил забилдить на неё что-то. и вроде всё работает и даже еграть можно, но тут я напоролся на пиздец под названием ТЕРРАЙН.
так вот, сей ненормальный пиздец делает пикрел при любом раскладе связанном с мелким тайлингом (начинается примерно с 32х тайлов на террайн). ессесно я принял бой и сражался как истинный паладин, но всё же обосрался и обосранным прибежал на гд просить подмоги.
что я перепробовал: • обычный террайн со сплатмапом и террайн шейдером • террайн, запеченный в меш со снятыми с него картами нормалей и сплатов • Standard Shader с Detail Map • Mobile Normal Shader • Самописный шейдер с деталь-мапой, в котором вместа fixed2 в анрапе стоит float2 (должно было избавить от ошибок округления, а хуй там) • Самописный мейдер в котором вместо UV меша для UV деталь-мапы используется _worldPos.xz перемноженный на переменную кол-ва тайлов • перебор различных форматов компрессии текстуры под мабилу • отключение Mip-Mapping • отключение Anisotropic Filtering • парсинг решения на ЮнитиАнсверз до последней страницы гугла это дерьмо не у меня одного, но ответы там от кирюх • рейджкьюит из юнити • ПЕРЕЗАГРУЗКА OS MICROSOFT WINDOWS
>>394819 Я может немного не об этом, но в спрайтэдиторе можно сделать разметку, внутри которой всё будет тайлиться, а за границами разметки всё будет статично.
>>394947 не, тогда было бы всё с точностью до наоборот, детали акцентуировались бы. а ВОЛШЕБНО ПУТЕШЕСТВОВАТЬ егрока в манямирок майнкафта чет не хочется
>>394949 OH WOW, уже кое-какая информация. таки да, в мануалах по юнети указано что у разных девайсов float'ы шейдеров говнякаются по-разному, то в 24 бита, то в 16. но всё равно спасибо большое, я удостоверился в понимании сути проблемы.
>>394963 и тебе спасибо. короче, раз оно не зависит от девайса, остаётся всего два решения либо разбивать меш на части и/или вообще делать модульный террайн либо хуйзнабить, убрать детальмапу, пусть земля будет размытая как ёбь
>>394941 изначально все элементы были спрайтами, потом в пикчу слепил для удобства. Изначально небо\трава\столбы были тупо вынесены на сцену и настроены под определённое разрешение. Соответственно, ничего не закреплял на canvas`e, т.к они вообще лежали отдельно. Потом пытался вынести столбы в canvas и закрепить относительно сторон, но юнити их внаглую отказывался видеть(Не исключаю фактор моей рукожопости) Вроде выставлял приоритет отображения, играл со слоями и результат был = 0. Но т.к делать больше нечего, то попробую ещё раз и потом отпишу. >>394942 Поподробнее можно? ну или где копать хоть?)
>>394985 > Поподробнее можно? ну или где копать хоть?) Ну просто жмёшь на кнопку и размечаешь поля. Всё что снаружи — не деформируется. Всё что внутри — тайлится.
Братишка помоги, я совсем отчаялся. Вообщем суть такова, решил запились изометрический A* и обосрался на подлете, не смог придумать как перевести координаты из позиции мышки в индекс массива.Читал интернеты но все что там нашел не подошло, нашел один хороший алгоритм но и тот работает только на половину первого ряда, помоги мне, а? на втором пике CurPosition это переведенная из экранного в Ворлд координаты позиции мыши Параметры тайлов такие: TileWidht = 4; // unity units TileHeight = 2; // unity units TileOffset_X = TileWidht/2; TileOffset_Y = TileHeight/2;
>>395009 блять, да зделай жи ты нормально чтобы тайлы были гейобжектами, чтобы ты их рейкастил без базара, чтобы можно было камеру нормально двигать и без привязки к положению курсора (а у тебя хуй ты подвигаешь её, нужно велик писать), чтобы тайлы нармально обрезались по фруструму камеры чтобы всё как у людей было короче
>>395028 Это правильно так как размер тайла 30х16 если делать без стыков то будет 32x18 в уме 32x32 так как двиг будет комповать на ^2 размеры при верных пропорциях.
>>395039 ты за какую дешевизну борешься? там нет нихуя стоимости этого сраного рейкаста, да в шутанах в которых предметы можно подбирать эти рейкасты каждый апдейт летят, а ещё и враги есть которые рейкастом каждый апдейт игрока ищут глазами
>>395039 всмысле дешевле, игра для старой nokia? хуй знает я слышал процессор делает триллионы операций в секунду, не верю что рейкаст займет хоть 1\100000000000000 часть
>>395043 Ну давай я объясню, В моем способе я просто трансформирую курсор в мировое пространство и чистой математикой высчитываю индекс в массиве, так делается во всех нормальных играх пруфов не будет, но есть статьи ро фаллаут и дьябло, так-же есть движки типа FIFE это быстро работает, можно считать хоть каждый кадр, а не клик считать. Если пускать рейкаст из камеры в геймобжекты то во-первых так как игра не тайловаяу меня отрендреные беки, большие куски то мне придеться просто генерить поле коллайдеров, во вторых мне нужно будет для каждого коллайдера вешать класс наследуемый от мономехавиер, даже если в нем просто будет храниться индекс массива или можно давать именна в честь индекса и переводить из стринга в инт что тоже глупо. думую дальше обьяснять не нужно. А мой алгоритм работает на половину, мне просто нужно помощь разумиста-математика, что-бы додумал, я то дурак с задней парты.
>>395049 Аллгоритм отлично считать строго по границам половину первого ряда, мне нужно понять как его дороботать и в чем сейчас ошибка, можете посчитать таймером, мой алгоритм даже в такой реализации, против кучи колайдеров 4096х4096 ,рейкастов и класса от монобехавиер.
>>395054 если ты знаешь что ошибка в расчетах, почему не дебагнуть через Debug.drawline(от камеры до точки) и проверяй на сколько, где и куда отклоняеться линия. Ну и меняй циферки в коде как надо.
>>395055 Я смогу найти ошибку, но буду делать это еще с неделю т.к. не полный рабочий день занимаюсь этим проектом, но задача тривиальноя и Анон знает решение, так как он очень умен, сейчас он придет и поможетнет, подожду и пойду дальше считать это гавно.
>>395049 > так делается во всех нормальных играх пруфов не будет, но есть статьи ро фаллаут и дьябло какой год, напомни? > это быстро работает, можно считать хоть каждый кадр рейкастов за кадр можно хоть 100500 посчитать > придеться просто генерить поле коллайдеров for (int y=0; y< 128; y++) { for (int x=0; x< 128; x++) { не благодари
> во вторых мне нужно будет для каждого коллайдера вешать класс наследуемый от мономехавиер ну и ну. а ещё в этом классе можно хранить дохуя полезной инфы, например.
>>395049 > Если пускать рейкаст из камеры в геймобжекты Чего блядь? Тебе говорят про один луч из курсора. > игра не тайловая А хули? > мне придеться просто генерить поле коллайдеров >>395059 вот этот меня обогнал.
Экономия на экономии. Хуй знает, с какой микроволновки ты хочешь запускать свое поделие.
>>395062 >>395059 Хоспаде, надеюсь это один анон семенит, и предлогает вместо простого сложения, использовать 4096х4096 коллайдеров с классом и пускать лучи в коллайдеры, либо просто тут сидят аноны которые ждут ответов на свои проблемы из-за не прочитанной документации и советуют...
>>395065 > предлогает вместо простого сложения у тебя велосипед головного мозга > использовать 4096х4096 коллайдеров я буду хохотать когда ты в игру будешь запихивать свою текстурку 122880x65536 в игру ну и да, ВКЛЮЧАЙ КОЛЛАЙДЕРЫ @ ОТКЛЮЧАЙ КОЛЛАЙДЕРЫ если уж так поехал по оптимизации > еще не ночной и все что-то понимающие аноны спят МААМ ОНИ ВСЕ ТУПЫЕ НЕ ОЦЕНИЛИ МОЙ ПОГРОМИЗДСКИЙ ГЕНИЙ
>>395071 >велосипед Не хочется отвечать на флейм, но что-ты имеешь ввиду под велосипедом, ведь как раз этот термин больше подходит под те кастыли которые ты мне предлагаешь с коллайдерами. А насчет сложение обьяснять не буду, сам найдешь, но есть только 1 и 0 и только сложение, умножение это тоже сложение, вычитание это сложение с отрицательным значением, учи мат часть, и твой велосипед с коллайдерами против mouse_grid_x = floor((mouse_y / tile_height) + (mouse_x / tile_width)); mouse_grid_y = floor((-mouse_x / tile_width) + (mouse_y / tile_height)); Только полный дурак может посоветовать то что ты советуешь, прости конечно, но я бы тебя нахуй послал, но не Б.
>>395071 Помогу этому анону представь что у тебя не изометрия а диметрия и каждый тайл это квадрат 1х1, если позиция мышки в (13,14)? то значит индекс узла в массиве [13,14], и так далее, а ты предлагаешь ему лепить велосипед из коллайдеров и рейкастов, вместо простой трансформации векторов.
>>395079 Какая разница между 4056x4051 или любого другого?Это не имеет значение, перебераются соседние клетки, накидываются веса и проверяется на проходимость. Ты вообще знаешь что как работает А*?
>>395080 превет я не понял проблему но напишу свой высер что если округлять не до 1 2 3 а до 0.5 \ 1 \ 1.5 и т.п. а что бы было проще есть при импорте строчка pixels per unit, тобишь если твоя картинка 512 пикселя, ставешь 512 и вуаля твоя картинка стала 1 юнит в длину
Есть ли способ рисовать линии в unity ui ? Нужна возможность рисовать линии на подобии пикрил (ссорян за кривой пик, рисую мышкой) Т.е наподобии линий в paint.net c задаваемыми "головками" и и изгибом (опционально)
>>394985 Итог: рукожоп. Я прикреплял якорями не к тем же сторонам, что и кнопки. В итоге был анал-карнавал на экране. Прикрепил в те же места, и всё встало на свои места. Тонны нефти всем, кто помог)
Привет анон. Как сделать что бы камера меняла позицию только когда спрайт будет на определенном расстоянии от цетра стороны куба, на которой он находиться сейчас? Например камера стоит ровно, но когда спрайт достиг 2 клетку от края, камера тогда "подгоняется" Как по вертикали так и по горизонтали отдельно. А сейчас камера движется каждый шаг как на гифке.
Есть какие-нибудь бест практисы реализации статов - с бафами/капом/итд, желательно на ентитьках?
Держать финальное значение в тупом поле и обновлять хуками или высчитывать в геттере?
Создавать ентитьку только на релейшн баф-перс, или объектизировать каждый стат и создавать релейшны между конкретным статом и влияющим на него эффектом?
>>395246 Я хз где ты там жаргон нашел, такие термины русского официального перевода не имеют, поэтому транслитерируются испокон веков, причем на испанский/китайский/итд точно так же.
Нужно чтобы после удара от противника в направлении удара отлетали кусочки в виде частиц. Получается нужно чтобы в момент удара particle system сначала поворачивалась в нужном направлении, затем выпускала частицы, так ведь?
Вот с частью с поворотом у меня ничего не вышло. Попробовал вращать трансформ самой системе, пробовал делать её ребенком пустого родителя и вращать его, но не выходит. Дальше копать по поводу вращения, или я вообще не то делаю?
>>395287 А тупо новый вектор создать нельзя? Ну типа: Vector3 direction2 = new Vector3; direction2.x = -(direction.x); direction2.y = -(direction.y); ...
Но я в общем-то сам за советом пришел, а не советовать. Аноны, хочу запилить тир с девочкой-волшебницей. Если вкратце, то девочка бегает по небольшому уровню, прячется за препятствиями и стреляет по игроку. Игрок стреляет в ответку с фиксированной позиции, попадая по всяким интересным коллаидерам на теле волшебницы и проигрывается красочная анимация с исчезанием одежды на ней. Проблема только в том, что я не программер, а больше 3д-моделлер и аниматор. Поэтому думаю по максимуму использовать популярные плагины к Юнити. Итого, есть два стула: 1) Использовать RAIN в связке с Mecanim. Продумывать сложное поведение девочки на карте, работать с многослойной анимацией с красивыми переходами. 2) Легаси вместо Маканима. Всю анимацию пилить во внешнем софте. Самому пердолиться с АИ, рассчитывать линию видимости, карту пути и прочее говно, которым должен заниматься программист. На какой сесть? Какой путь даст больший шанс, что я смогу рабочий прототип в разумный срок выкатить?
>>395302 >>Я моделер, значит делать упор на графику или код, имея готовое программное решение? Ответ яснее солнца. Дополню тем что ты немного ошибся тредом. Советую тебе поглядеть порно игор тред по соседству в gd.
>>395311 >порно игор Не, порнушку пилить не собираюсь. Девочкам-волшебницам обычно меньше 18. И потом, для создания качественной анимации непотребств в Юнити на самом деле нужна высокополигональная модель с охуенно сложным ригом и морфами + симуляция физики волос и одежды. Порнотред полон пидорами, которые собирают вместе рендеры из Позера и называют это игрой.
Алсо, думаю взять компромиссное решение: Rain + legacy animation system. Меканим что-то кажется очень комплексной и затратной по времени штукой.
Поясните за рейкасты, а то нихуя не взлетает. На Йобе тег соответствующий, и RigidBody2D и коллайдер висят можно покрутить, в консоль нихуя не пишется. Или мне надо пользоваться 2D рейкастами и фильтровать землю-небо-аллаха?
>>395322 > вызываешь ли ты где то detectYoba В Update(), ежжи. >>395323 Просто у меня уже возникает вопрос, находится ли луч там, где я предпологаю, или он хуй пойми где хуй пойми куда стреляет.
transform.right, оказывается, указывает на стрелку оси в глобальных координатах в точке 0, 0, 0. Зачем — непонятно. Пока что я пилил взаимодействие с предметами под носом у игрока, и, тащемта, вернусь к системе с узеньким коллайдером, но, блядь, обидно, что лазеры из рук не попускать.
>>395332 таки да. а почему нет? transform.up частенько пригождается в мелочах, вот они и transform.right пихнули. чисто для удобства. чтобы складывать с ним, или брать проекцию на ось
>>395336 >>395337 Нет, я, конечно, тупее команды разработчиков буду в (количество_персонала * 2) раз минимум, но эта штука очень странно работает. То у меня луч шел почти к центру мира, то он идет из персонажа в нужную сторону. >>395338 Объект, на который я это креплю вообще 0.16 в ширине. >>395339 Родителя нет, все нормально. Опять же, хуй знает.
Эта штука заработала как надо, отложу ее до изобретения внутриигровых бландербасов. Сама функция теперь в FixedUpdate().
>>395343 Смысл в чем. Есть проект на юнити. Готовый. Но к нему нужно написать веб-сервер и поднять. Если поднять я смогу, то с написанием я полный 0. Вот и интересуюсь на правах профана.
>>395345 1. >>То у меня луч шел почти к центру мира, то он идет из персонажа в нужную сторону. это именно потому что >>Нет, я, конечно, тупее команды разработчиков буду 2. что значит бландербас
>>395347 ну вот я и говорю — бери готовые решения. серьёзно, ты хочешь с этими протоколами связи совокупляться? хотя погоди, а в чем соль этого сервера? если вдруг ты там хайскоры собрался хранить то просто Apache поставь и SQL-запросами отправляй/забирай. нужен сервачок чтобы с друзявками побегать-пострелять? вам Photon Cloud, забирайте, до 20 рыл единовременно — бесплатно и без постоянно работающего сервера ПИЗДЕЦ ХАЛЯВА СТАВЬ БАЗАРЮ ЕЩЁ ЗАХОЧЕШЬ
Аноны, делаю что-то типа экшн платформера. Вид сбоку как в обычных платформерах, но сами уровни не прямолинейные. Игрок двигается во всех направлениях. Стоит вопрос о том, как правильно реализовать камеру. Нужно, чтобы она постоянно была направлена так, чтобы уровень был виден сбоку. Нарисовал даже картиночку (вид сверху для наглядности). Как лучше решить этот вопрос? Расставлять по всей длине уровня кривую линию и вращать камеру перпендикулярно этой линии или можно как-то по другому?
>>395384 1 можна не делать изгибы 2. вращать камеру можно проверив угол между направление движения игрока и ммировой forward(ну или той, при которой когда персонаж бежит ровно влево или вправо, это ось ему паралельна)
>>395410 или можно прилепить камеру тупо к бочине игрока, а когда он захочет(если так можно будет) повернуться слишком много то просто остановить камеру в нужный момент
Пилится тяжко-валко. Управление полностью по физике, но при этом достаточно указывать мышкой цель. Система управления корабля сама думает, какими движками и когда и куда нужен управляющий и тормозящий импульсы, поэтому вполне аркадно.
Помогите советом, ребяты. Я полный нуб в программировании. Скачал фреймворк для пошаговой стратегии, потихоньку копирую части кода, разбираю их и переиначиваю для своих целей, но этого явно недостаточно, чтобы разобраться, что делать с этой хуйнёй. Поясните, пожалуйста, один момент: по какому принципу делать abstract, virtual и override так, чтобы во-первых не возникало ошибок из-за конструкции вида Class class = new Class();, во-вторых можно было из любого места вызывать этот оверрайд, а игра принимала этот оверрайд вместо основной функции, и в-третьих присобачить к этому делу ивенты. Я кое-как сообразил до использования текстовиков и подбираюсь к словарям, но сдаётся мне, есть куда более простые способы это всё организовать. Если есть какой-нибудь материал хороший по теме, то буду очень признателен. Но я полный нуб в программировании, я банально не понимаю, что имеется в виду в тексте как на MSDN и подобных сайтах, мне бы чего попроще.
>>395467 Забыл написать Мне именно совет по конструкции нужен, как это организовать всё. Во фреймворке том хаос, по крайней мере я не могу какой-то последовательности вычленить, все переменные и функции туда-сюда прыгают.
>>395467 в ютюбе ройся примерно по таким тэгам unity3d OOP, unity3d inheritance, c# ООП наследование. там с примерами и человечиским языком полно видео
>>395467 тобы во-первых не возникало ошибок из-за конструкции вида Class class = new Class() че за бред ты пишешь конкретне пожалуйста, причем по всем пунктам. Хотя нет не надо, просто гугли не то что не понятно msnd а даже на офф сайте юнити есть уроки по OOP простые
>>395460 Ну по условиям, в космосе трения нет. У кораблика 4 маневровых движка. При этом, если включить какой-нибудь из них, а потом выключить, то по закону сохранения момента инерции, корабль будет вращаться так бесконечно, пока ты в противоположном направлении не создашь такой же импульс. А хомосапиенсы слишком плохо контролируют работу н-количества двигателей и плохо вычисляют кватеринионы в уме, поэтому автопилот берет эту сложную работу на себя. Игрок задает мышкой направление или цель, на которую надо сориентироваться, а автопилот включает нужные движки в нужном направлении на нужное время, а потом осуществляет тормозной импульс, чтобы сориенироваться точно как надо.
>>395467 > по какому принципу делать abstract, virtual и override так, чтобы во-первых не возникало ошибок из-за конструкции вида Class class = new Class() abstract используй, если тебе нужен просто общий родитель для остальных классов, и ты не собираешься этого родителя вызывать в школу. virtual можно вызывать, можно и перезаписывать. override есть перезапись для абстрактных и виртуальных классов.
> во-вторых можно было из любого места вызывать этот оверрайд В смысле? Сделай класс публичным, вот и все.
> присобачить к этому делу ивенты Update()
> какой-нибудь материал хороший по теме C# Player's Guide, CLR via C#. В /pr/ пояснят.
>>395473 Например, если цель находится как-то по диагонали, а корабль вращается вдоль продольной оси, то вручную каждым движком сложно управлять. А Слишком аркадно делать я не хотел, по типу "Куда указываешь, туда просто перемещается транслейтом, без учета предыдущего импульса и инерции". Короче, пытаюсь на два стула сесть.
>>395467 Нахер тебе вообще отвлекаться на юнити, если ты еще не умеешь кодить? По-хорошему бы тебе через пару-тройку языков сначала пройти, но если влом - то хотя бы на голом шарпе сначала туториалы поделай.
>>395480 Ну как сказать, допустим в момент интерполяции того же вращения кораблю прилетает снаряд, а он как терминатор, даже не реагирует и продолжает интерполироваться? Или другая ситуация: попали в двигатель и вывели его из строя, соответственно, как тут интерполировать с учетом вышедшего из строя движка?
>>395524 >> как тут интерполировать с учетом вышедшего из строя движка? а как без него? gameover же. >>кораблю прилетает снаряд, а он как терминатор, даже не реагирует и продолжает интерполироваться виден недостаток опыта
Как ничего не делая получить невырвиглазный грофон? Пробовал делать топдаун, выходит страшновато. Изометрия ещё хуже - в четыре раза больше объём работы. Пилить 3д, дёргая анимации? Завести раба-дизайнера?
>>395526 >а как без него? gameover же. Без одного или двух (если в разных плоскостях) ещё вполне можно маневрировать, но это накладывает свои ограничения. Зато сколько интересных ситуаций.
>>395529 >зачем он тебе можно узнать сначала? просто есть мнение что ьеюе это нахуй не всралось Сам не знаю. Изначально это задумывалось как рогалик на заброшенном космическом корабле/станции. Но пока ничего из механики кроме стрельбы на физдвижке нет. Поэтому я думал может вообще не заморачиваться с рисованием, сделать один неанимированный тайл на персонажа и сосредоточиться на другом?
>>395533 Я террейн пока не делал вообще, эти тайлы дёрнул откуда то. Cлепил только персонажа, несколько пушек и ботов. Интерфейс не попал в кадр, чтобы не разсирать видео. Пока что там хп бар слева вверху и иконка шуты слева внизу.
>рисовка должна быть одинаковой короче Хорошо, был соблазн понадёргать на окружение текстур, чтобы не заёбываться самому.
Но есть что-нибудь относительно самого персонажа? Какие-нибудь детали, которые режут глаз, что то чего явно не хватает?
>>395554 > Поэтому я думал может вообще не заморачиваться с рисованием, сделать один неанимированный тайл на персонажа и сосредоточиться на другом? Это твоя первая игра, да? Прототипирование тебя спасёт, мой друг, излишний перфекционизм в геймдеве вреден. Пусть у тебя вместо героя будет кубик, а вместо врагов — шарик, потом доделаешь как надо. Ебошь механику.
>>395555 >Это твоя первая игра, да? Несколько лет работал в окологеймдеве, но в основном я добавлял какие то фичи в старый самописный движок ещё на 9 директиксе, рисованием занимались специально обученные люди.
>излишний перфекционизм в геймдеве вреден Согласен, но...
>Ебошь механику. ...механика хтх, например, чётко привязана к анимациям. И в ебошеньи механики прийдётся местами оставлять место для будущей визуалкидо которой всё равно дойдёт, если я раньше не найду работу
Может отдалить камеру вдаль, чтобы почти нихуя не было видно?
Сап! Имел ли ли кто опыт интеграции рекламы для windows phone? Подскажите какими средствами это можно сделать? Видел в интернете adrotator - но по нему последние обновления были в 2014 году хз, работает он или нет. Второй AdDuplex - но там денег не заработать.
>>395471 >>395472 >>395474 >>395476 Спасибо всем, более-менее прояснилось всё. Нашёл (кажется) то, что нужно - finite state machine. Ща на свитчах да с оверрайдами всё заебошу!
Поясните за орм в юнити. В сторе и на гитхабе какое-то самописное говно с хуй да нихуя функционала. Хибернейт или энтити как-то вообще интегрируются готовым решением? Или подразумевается, что я свою модель делаю отдельно, а потом каждый раз руками в юнити правлю юзающие ее классы?
>>395302 Аноны, похоже RAIN AI нихуя не работает в 5.6 версии. Из-за какой-то странной баги нельзя ни легаси клипы анимации загрузить, ни Mecanim Animator включить. Да и вообще, похоже что разработчики забросили плагин и разрабатывают специализированную хуйню под виртуальную реальность. Качаю старый 5.3 редактор от безысходности. Кто-нибудь посоветуют альтернативный плагин для АИ, который еще живой?
>>395609 Настолько привык сам все ковырять, что удивляюсь, когда кто-то упоминает плагины. Сам только начал пилить ИИ для экшн-рпг, уже предвкушаю многочасовую еблю, ммм.
>>395581 Потому что так в фреймворке сделано. Подражаю стилю настолько, насколько могу, но там в самом фреймворке мешанина. Но вообще, как я понял, чтобы иметь разные вариации одних и тех же функций. Можно и как-то словари к этому прикрутить, но это мне кажется слишком сложным. Вот, например, во фреймворке есть пасфайндинг какой-то странный. Когда выбираешь юнита, создаётся несколько словарей, куда закидывается дохрена гексов во все стороны, чем дальше разрешено искать путь, тем сильнее лаг. Я, конечно, не знаю, но подозреваю, что дело именно в создании тонны словарей. По сравнению с этим мои свитчи и ифы на 100 строк никак на производительность не влияют. >>395594 Для чего это надо?
>>395618 Пилю понемногу. Упростил анимацию, а то чем дальше заходил, тем больше проблем было. Сейчас собираюсь сделать смену оружия на пистолет и обратно, но всё никак не соберусь.
>>395611 Мне надо чтобы АИ правдоподобно прятался за укрытиями от игрока, ну и стрелял в ответ, выбирал разные варианты перемещения по карте. И само собой, без анальных ограничений, чтобы можно было кодить свои действия для АИ при необходимости. Алсо, RAIN все же заработал у меня, после целого дня мучений. Надо было всего лишь allow depreceted functions галочку в настройках поставить, анимации через такую жопу вполне себе подгружаются.
>>395607 Варнинг появился когда клипы перестали работать, при исправелении варнинг не исчезает, указывает на то же, теперь не существующее место, и клипы все равно не работают. Так что варнинг последствие какой-то другой ошибки.
>>395629 Это дно и так делать не надо. Потом пожалеешь. Вообще FSM это самый худший вариант для ИИ.
В самом просто случае можно сделать что-то вроде списка interface IAction { bool IsValid(GameObject go); void OnStart(GameObject go); void OnFinish(GameObject go); }void Update(GameObject go);
и потом foreach (var action in actions) if (action.IsValid()) Update()..... поведение любого агента задается просто списком действий
>>395665 а теперь скажи, ты получил удовольствие? будто потрахался, да? смачно задоминировал шарп своим нехилым интеллектом? стал на чуточку умнее, научился чему-то новому, развился над собой?
серьёзно, чувак, рукоплещу тебе. это определённо того стоило. теперь игру хоть можно доводить до конца, а то прям аж застрял с этими ромбиками, эх. браво, короче
Подниму вопрос про серверную архитектуру. Кто нибудь онлайн игры тут делает вообще? Есть ли те кто используют что-либо кроме Фотон Клоуд? Кстати, если используете встроенный мультиплеер юнити, насколько он удобен и хорош, сколько коннектов держит?
>>395665 > 4096x4096 Нахуя тебе такая большая сетка? >>395674 За это время мог бы и загуглить. Тут тебе зададут (и уже задали) только один вопрос: "А оно тебе надо?"
>>395674 1. Тебе бесплатно никто сервер не даст 2. По твоему сообщению ясно что ты нуб(не можешь сам гуглить, не шаришь в азах), и поверь фотон это твой единственный выход
>>395680 и как ты не зная вообще как устроен простейший сервер, определил что клауд говно? я уверен что у тебя нету даже прототипа игры, и самой игры не будет никогда с таким ахуительным подходом
>>395686 В клауде за 1000 слотов нужно пиздец сколько много платить разработчикам этого самого клауда. А я им ни копейки не хочу давать, ибо клауд ломается через ЧИТ ЭНЖИН, блядь.
>>395688 А нахуя тебе больше? Ты не можешь сам запилить сервер, это склоняет меня к мысли, что и бесплатного фотона тебе будет дохуя. Если ты такой гений и смог соло собрать ММО дрочильню, которая не заебет за 15 минут, тебе будет не сложно разобраться в собирании сервера.
>>395691 Я уже в ассет сторе нашёл нужную мне вещь, без помощи анонов.
В итоге лучше бы я вообще не спрашивал, ибо мне во всех темах без исключения как додики твердили "ФОТОН ФОТОН". Я хотел реальных советов от людей использующих адекватную готовую серверную архитектуру, чтобы понять что лучше, а в итоге фотонодебилы с их ограничением по коннекту.
такая трабла: при переключении на другую программу -> юнити на вкладке сцены артефакты с отрисовкой происходят, и чем больше раз переключаться между программами, тем хуже становится. Помогает вкл/выкл освещение, но до следующего переключения между программами и юнити. В чем может быть проблема?
>>395716 1. попробуй погуглить 2. это только на сцене или в окне Game тоже 3. понажимай на всякие кнопки например сверху слева 2D 3. поковыряй настройки вроде они в Edit>project settings но это не точно сам ищи 4. а в играх и других прогах все ок? если нет значит драйвер чекни
>>395722 1. пытался гуглить, но ничего не нашел, наверное тупой и не могу правильно сформулировать проблему. 2. только на сцене, в окне game все нормально. 3. не помогает, просто переходит камера в 3д и там такая же проблема. 4. в других играх и прогах все ок, дрова недавно обновлял.
Котятки проверьте у себя, помоему разрабы легаси гуй поломали Unity 5.6.3f GUI.SelectionGrid не робит текст, не ассоциируется. public string[] selStrings = new string[] {"Grid 1", "Grid 2", "Grid 3", "Grid 4"}; попробуйте поменять, текст selStrings на любой другой. https://docs.unity3d.com/ScriptReference/GUI.SelectionGrid.html
>>395614 Начал потихоньку перепиливать фреймворк и обнаружил там забавную конструкцию. Суть в том, что есть 3 разных класса - игровая доска, юнит и состояния доски. Автор сделал карусель какую-то - в юните задаётся ивент и аргументы, затем в доске этот ивент отлавливается, вызывается функция в классе состояний доски, которая уже впоследствии и используется вместо настоящего ивента. Моя же идея того, как это переписать, заключена в следующем: в юнит засунуть переменную, содержащую в себе ссылку на игровую доску, превратить состояния доски в enum в классе игровой доски, а ивенты, происходящие с юнитом, определить в новом классе EventManager. Когда же будет происходить какой-либо ивент, то он будет вызываться из самого юнита, где ифами и свитчами будет указываться состояние доски. Вопрос чисто теоретический, не ругайтесь, пожалуйста: что из этого лучше по производительности? Моё говно мне точно будет понятнее хотя бы потому, что не будет трёх функций в трёх разных классах с почти одинаковыми именами, но это же не главное
>>395789 >Автор сделал карусель какую-то - в юните задаётся ивент и аргументы, затем в доске этот ивент отлавливается, вызывается функция в классе состояний доски, которая уже впоследствии и используется вместо настоящего ивента. Забыл Когда же какое-то действие происходит с юнитом, вызывается вся эта карусель, а затем в конце вызывается какая-то функция в юните
>>395723 Из того, что я нагуглил: если две видюхи, попробуй запустить юнити через интегрированный граф. процессор; зафорсить директ икс постарше; покрути в прогобеспечении своей видюхи визуальные параметры (например, качество/перформанс 3Д); переустанови Юнити.
Сап, гдэч. Начал крутить-вертеть этот ваш новый навмеш, и уперся в проблему: NavMeshBuilder.UpdateNavMeshDataAsync работает только с некоей новой NavMeshData. Фактически, я вынужден делать navData = new NavMeshData(); Что на хую вертит мой текущий навмеш и новый создает поверх него, либо, вместо него. Как мне "вернуть" ссылку на свой имеющийся NavMeshData? Геймдевч помогач?
Собрал яйца в кулак и решил начать делать игру своей мечты, поставил юнити, открыл гайды, и буквально сразу уткнулся в проблему, решить которую не могу уже день. Вот я хочу добавить фон для 2д шутера. Гайды говорят: ну импортируй пикчу, делай спрайт и добавляй в сцену. Казалось бы, просто, но нихуя. Закинуть-то я пикчу закинул, но добавить никуда не могу. Понимаю, что вопрос, скорее всего, очень тупой, но объясните мне пожалуйста, ЧЯДНТ?
>>395789 >>395790 Сломал нахуй этот фреймворк Подскажите, пожалуйста, какие есть конвенции в игрострое. Вот в этом фреймворке была доска, от которой шли остальные элементы. Допустим, я хочу добавить интерфейс, хелсбары там и всё такое. Как это обычно делается? GUIController, а от него при старте создаются все окошки и менюшки? А доска как? Тоже от GUIController'а? >>395824 Ты спросил так, будто я знаю, что такое интерфейс.
>>395967 Я в твоих постах уже запутываться начал, лол.
> в этом фреймворке была доска, от которой шли остальные элементы. Не совсем понимаю, что ты имеешь ввиду. В коде доски хранились все инстанции юнитов? Или какого-то хуя юниты наследовали класс доски?
> Допустим, я хочу добавить интерфейс, хелсбары там и всё такое. Добавляешь Canvas, в него уже скриптами вызываешь UI префабы когда тебе надо, убираешь когда не надо (для катсцены, например).
> А доска как? Вон там выше кадр ебался с реализацией доски. У него это просто спрайт на фоне плюс сетка координат.
>>395971 >В коде доски хранились все инстанции юнитов? Не-не-не. В комментариях к доске написано было, что доска ответственна за выполнение всех действий, связанных с юнитами и клетками и игроками. Выглядит это примерно так: есть в сцене 3 объекта, в которые вложены юниты, клетки и игроки. Игровая доска один из этих объектов и содержит клетки, а в переменные её занесены юниты и игроки. Когда какая-либо функция запускается, обычно она так или иначе пропускается через игровую доску. Я это изменил и ивенты вывел в другой класс (чтобы код упорядоченнее выглядел главным образом). Теперь вот думаю, нужно ли оставить доске запуск всех функций - например, какой-то метод будет подписан на ивент и будет исполняться из класса доски. >Добавляешь Canvas, в него уже скриптами вызываешь UI префабы когда тебе надо, убираешь когда не надо (для катсцены, например). А-а-а, спасибо. Несколько смущает то, как сцены в юнити устроены. Можно же динамически "из кода" создавать объекты (как эти new Class())? >Вон там выше кадр ебался с реализацией доски С реализацией доски проблем нет. Во фреймворке есть генератор доски по высоте-ширине и разные методы, которые позволяют искать расстояния, соседей и т.п. Мне интересно, как это в нормальном коде выглядит - в нормальном коде тоже все ивенты и функции из доски вызываются, или же она подчинена какому-нибудь Controller'у? >Так узнай. Легко сказать. Я так понял, это альтернатива absract'у, virtual'у и override'у?
>>395973 > в сцене 3 объекта, в которые вложены юниты, клетки и игроки. Ну хуй знает. Можно и в одном все держать.
> Можно же динамически "из кода" создавать объекты (как эти new Class())? https://docs.unity3d.com/ScriptReference/Object.Instantiate.html Прописываешь несколько пустых переменных GameObject для разных окошек, панелек, хуе-мое. В Start() или когда тебе нужно будет инстанциируешь. Скармливаешь инстанции нужные данные через переменную, она отображает как ты захотел. Нужно убрать элемент UI — Destroy(yobaUI); Если кто-то будет говорить, что в коде можно отрисовать, гони их ссаными тряпками, не для этого мы в 2к17 живем.
> Мне интересно, как это в нормальном коде выглядит - в нормальном коде тоже все ивенты и функции из доски вызываются, или же она подчинена какому-нибудь Controller'у? В пошаговой дрочильне у тебя так или иначе есть контроллер, который следит за тем, кто сейчас ходит. Можешь в доске вызывать следующего персонажа и его скрипты, что не очень удобно, имхо, либо просто вызывать функцию на восстановление очков действия, а там уже скрипт на юните решит, что лучше сделать, плюс сообщит доске, что он закончил. В real-time просто нет контроллера либо он занят чем-то еще, юниты просто одновременно думают.
> Я так понял, это альтернатива absract'у, virtual'у и override'у? Типа того. Вот у тебя есть класс Yoba, который который может создавать бугурт, может бугуртить сам. Но если тебе нужно эти функции иметь на классе Human, можно прописать наследование. (пик 1) Вместо того, чтобы Human таскал с собой ненужные ему radius и Roll(), можно раздавать только эти две функции через интерфейс. Таким образом ты просто знаешь, что все элементы, наследующие от IButthurt будут уметь в эти две функции хоть каким-то образом. (пик 2)
>>395996 Спасибо, сильно помогает. >Таким образом ты просто знаешь, что все элементы, наследующие от IButthurt будут уметь в эти две функции хоть каким-то образом. Это понятно, непонятно то, как это использовать. Вот допустим абстрактный класс Unit. В нём задан абстрактный метод, который по-разному оверрайдится в наследуемых классах SampleUnit и MyUnit. Если в каком-либо методе я вызову Unit.Method(), то этот Unit.Method() изменится в зависимости от того, является этот Unit SampleUnit или MyUnit. А как мне через интерфейс понять, какую из "оверрайдящих" функций я вызову?
>>396001 >вызову Unit.Method() Если я правильно помню, то практически любой язык не позволит вызвать метод у абстрактного класса, надо будет сделать ((SimpleUnit)Unit).Method() или ((MyUnit)Unit).Method().
>>396003 Без ссылки на объект в любом случае не вызовется. Я имею в виду ситуацию, что мы вызываем ссылку на уже имеющийся юнит (которому уже задано, какого типа он юнит) так, как будто он не специфически MyUnit или SampleUnit, а просто Unit
>>396001 Интерфейс считай тоже самое, что и родительский абстрактный класс, просто с более узким набором контента, который ты можешь в него вбросить. Если у тебя есть какие-то универсальные функции, которые должны быть у огромного количества разношерстных объектов, ты просто можешь реализовать их через интерфейс, не заебываясь с хитровыебанным наследованием. Алсо, наследовать можно только с одного класса, так что нельзя иметь конструкцию типа: public class GenericNPC{} public class Humanoid {} public class Elf : Humanoid, GenericNPC {}
Но можно иметь конструкцию типа: public interface IGenericNPC{} public class Humanoid{} public class Elf : Humanoid, IGenericNPC{}
> как мне через интерфейс понять, какую из "оверрайдящих" функций я вызову? Функции в интерфейсе работают так же, как и в абстрактном классе, и вообще все в интерфейсе является public abstract. Так что ты все равно будешь оверрайдить функцию.
Я не говорю, что это обязательно нужно, я говорю, что такая штуковина есть и о ней надо помнить на всякий случай.
>>396009 >Функции в интерфейсе работают так же, как и в абстрактном классе, и вообще все в интерфейсе является public abstract. То есть можно воспринимать SampleUnit : Unit, IWhatever как IWhatever, и запускать метод внутри как IWhatever.Method() (при условии, что на юнит сделана ссылка как на IWhatever). Ясно, спасибо.
А то я уже заебался с этими разными уроками - то пропадают, то движок новый выходит, то еще какая-то хуйня, или в уроке один пиздеж ниочем, например рассказы о том какой Юнити охуенный или простой. А тут норм было, но уроки выпилили, пидары.
>>395314 Меканим это глючное говно без задач, сделанное по принципу "оооо ебать давайте запилим дерьмо, которое будет одновременно и дружелюбным и нахуй бесполезным, ньюфаги оценят".
>>395973 >>396012 Продолжаю со своими нубскими вопросами. Запилил я, значит, полоску инициативы как в 5ых героях. Есть лист "ходов", который содержит все объекты, заслуживающие хода (юниты, эффекты разные, рассасывание баффов и т.п.) в той последовательности, в которой ходы будут случаться в будущем, есть пара методов, которые этот лист формируют. Этот лист в теории будет создаваться заново каждый раз, когда на доске что-то происходит - смерть юнита должна обновлять лист, истечение баффов (особенно, влияющих на инициативу) должно обновлять лист и т.п. То есть юнит бьёт - лист новый создаётся, юнит ходит - новый лист, юнит ход заканчивает - новый лист. Это очень много обновлений, в общем. Если в такой ситуации будет случаться лаг, что нужно делать? Корутины помогут (во время исполнения методов я ставлю состояние доски, в котором не принимаются никакие вводы от игрока)? Откуда вообще лаги берутся? От создания новых переменных? Какая нагрузка за фрейм вообще допустима?
>>396108 Если я правильно понимаю, то в листе у тебя лежат ссылки на объекты, а не их копии. Т.е. если у кого-то стало меньше хп, то меньше станет и там, и там. Чекни, на всякий случай.
>>396102 Какие подводные камни у Меканима? Как минимум две очень важные задачи в нем вижу: 1) Плавный переход между анимациями можно делать не в стороннем софте, а в меканиме. Чем меньше анимационных клипов, тем меньше путаницы и рутины. 2) Ретаргетинг анимации, базовые плюшки с "мускулами" и IK, которые доступны из коробки, бесплатно. Разумная альтернатива - только работать с Motion Builder, который платный. Мощнейшая же штука, доступная бесплатно.
Алсо, я забил на Rain. Посмотрел тутор про Plagable AI System и понял, что базовый АИ проще стандартными средствами Юнити сделать. Благо, NavMesh и NavAgent есть, и работают они не хуже аналогов из плагина.
>>396111 Тогда и проблемы нет, собственно. Лист можно обновлять только при спавне и удалении объектов. Если объект умер, то можно скипнуть его с помощью чего-нибудь вроде if (!unit.isDead)
>>396111 нихуя не понял нахуя в полоске инициативы эффекты и рассасывание бафов. если так тебе надо то это тщательно погугли 100% есть где то описание подобного кала
>>396113 То есть "обращения к памяти" не нагружают комп, только создание новых участков? Но лист же новая переменная (или нет), да и методы каким-то образом исполняются. >>396114 Потому что в Final Fantasy Tactics была очень удобная/неудобная штука - позволяла видеть, когда сработает эффект заклинания после чарджа этого заклинания. Я пытаюсь такое расширить, чтобы большинство эффектов было видно в шкале. А баффы хочу в эффекты-пустышки совать, которые будут вместо одного баффа показывать все баффы, которые в этом ходу сработают но это чистая косметика.
>>396115 >не нагружают комп Будет тормозить, запустишь профайлер и найдешь, где именно оптимизировать, слишком сильно загоняться этим на этапе разработки не стоит, слишком много времени потратишь.
>>396112 Первое не работает по сети, сюрприз сюрприз. Подводные камни в том что приходится дублировать функционал, ибо сраный нодовый редактор изолирован от проекта и в целом запредельно убог, из-за чего приходится писать две FSM, она кодом, чтобы отсылать события меканиму, а вторую непосредственно в самом меканиме. Охуительно просто.
>>396133 >Первое не работает по сети, Так для того чтобы сделать нормальную сетевую игрушку с анимацией персонажей (мобу какую-нибудь) нужно и так быть программистом 80-го уровня. Такой свой аналог меканима сможет написать, если захочет.
>приходится дублировать функционал, ибо сраный нодовый редактор изолирован от проекта Бля. Я вот с АИ сейчас разбираюсь. Недеялся, что с Меканим гораздо проще будет. Думал, там типа в нодовом редакторе что угодно собрать можно, а потом просто из FSM моего АИ присваиваю значения параметрам Меканима и у меня анимация проигрывается на каждое состояние персонажа.
Возможно платина, но: поясните, какой сейчас, на данный момент самый православный способ делать большие ландшафты. С помощью массива мешей или террейнов, сцены или еще как.
>>396137 Я не программист 80лвла, но один сетевой проект написал, сейчас пилю второй. Так что у тебя немного неправильные представления об этом. Это не что-то невероятное, лол. Но то что блендинг анимаций не синкается это топич просто.
>>396179 Серьезно, сам написал серверный код своего проекта без использования Фотона? Да еще и с полноценной 3д-графикой, анимацией и играбельным геймплеем? Сколько на это времени ушло?
>>396180 Кодер 80-го уровня это по умолчанию хорошо только если в конторе в ДС работать и 300к в секунду. В инди-геймдеве можно прекрасно кодить, но создавать бестолковые игры без задач. По мне, так главное сейчас в гейдеве - это PR, умение закупать трафик, работа с инфлюенсерами и вирусные видосики. На втором месте композ, дизайн и прочее, завязанное на яркую привлекательную картинку. И только потом - игровая механика и код.
>>395926 И тут я такой охуенный начал расписывать классы типа KrutimYobu : Action, как вдруг до меня дошло, что их в список же не запихнешь, блядь! Как поступить, аноны? Хочется удобным образом в каждую категорию NPC из папки Actions накидывать соответствующие действия, не прописывать же инстанции этих классов и не ебаться со статичными, как-то совсем неправильно в голове представляется.
>>396204 На юнете по p2p, ибо не было времени изобретать велосипед. Да, с графоном, анимациями и геймплеем, системой сохранения и всем прочим дерьмом. Но надо понимать, что на моих плечах был только код, графоний рисовали художники. По времени... Долго, весьма долго. Полтора года. Но это с учетом того, что когда начинал, был совсем зеленый.
То что ты описал про "главное в геймдеве" актуально на мобильном рынке, но никто в здравом уме туда не лезет. Ну а выполнять качественно и быстро свою работу всегда хорошо, безотносительно того инди ты или нет.
>>396235 > 20кб > Поиграл 100 раз. получил 20мб данных Ты 20 килобайт умножил на 100 и получил 20 мегабайт? Сомневаюсь что с такой математикой у тебя "код правильный".
>>396236 есть такое понятие как утрирование. лучше бы потестил. проблема не только у меня. на 5.5-5.6 версиях актуальна. на unity форумах пару людей писали про это, но им никто ничего не ответил.
>>396217 > По времени... Долго, весьма долго. Полтора года. > Но надо понимать, что на моих плечах был только код, графоний рисовали художники. Вот здесь и кроется весь леденящий душу пиздец. На один только код столько времени. Количество контента для художников тоже, небось, сопоставимое. Человеко-часы на миллионы рублей. Хорошо, если они окупились. Так что останусь при своем мнении, что мультиплеер: 1) Сложно и долго. 2) В одиночку и контент и код потянуть нереально.
>>396118 Спасибо за совет, но он предполагает, что я знаю какие-то всем очевидные подводные камни. А я их не знаю. Вот, например, я только что сообразил, что моя система хитшанса (т.е. отдельный от юнита класс, который показывает шанс попасть) создаётся каждый раз, когда юнит целится в кого-либо. А мне нужно хитшанс отдельным абстрактным классом выставить, чтобы можно было через наследуемые от него классы работать - потому что у меня есть разные механизмы прицеливаний, а не одна одинаковая для всех формула. То есть заранее нужно знать какие-то узкие места, которые надо иметь в виду, и заранее код "в правильную сторону" строить. Вот я читал про пример с использованием контейнера для пуль вместо создания новой пули каждый раз. Но ведь пули - это одинаковые объекты (только, может, поля разные), а разные типы хитшанса у меня наследуемые классы. Как это организовать вообще? Самый очевидный для меня вариант - сделать все хитшансы в одном классе через различающиеся методы, но это как-то по-нубски выглядит.
>>396241 >>396231 Не-не-не. Action — это интерфейс/абстрактный класс. В нем есть просто функция для проверки условий и функция для исполнения. Вызывать конструктор для каждого действия в каждом классе будет крайне ебливо, да и не уместно: эти классы вообще можно сделать статчиными, просто скармливая им переменные. Собственно, идея была такой: вот у меня есть список, в который я могу ручками накидать все возможные для NPC действия, скрипт потом просто через foreach (Action action in actions){if (action.IsValid()){action.Execute()}} пробегается по этому списку. FSM не подходит, это придется гуманоидам-мечникам писать свои стейты, магам свои, каким-нибудь волкам еще третьи. Либо брать один огромный FSM с лишними проверками, где я охуею в конец.
>>396268 > Самый очевидный для меня вариант - сделать все хитшансы в одном классе через различающиеся методы, но это как-то по-нубски выглядит. Да не, вполне логично, зачем изобретать сложные велосипеды. Берешь статичный класс, передаешь в него объект(ы). Класс пускай сам определяет, что за оружие, что по параметрам у атакующего, у принимающего урон. Потом выдает тебе попадание или промах, потом проигрывается соответствующая анимация.
>>396273 Передаешь лист enemiesToHit, дальше передаешь в класс что-то типа ToHit(enemiesToHit, thisCharacter), в классе: if (enemiesToHit.Count == 1) {SingleTarget(enemiesToHit[0];} else if (enemiesToHit.Count > 1) {MultipleTargets(enemiesToHit);} else { return 0; Debug.Log("yoba slomalsa"); } Ну и там еще где-то определитель оружия, персонажа, хуё-моё.
>>396275 > Передаешь лист enemiesToHit, вызывая что-то типа Быстрофикс. Лист всегда будет один и тот же, просто по окончанию всех операций пишешь enemiesToHit.Clear.
>>396273 можно в каждом враге прописать шанс типа evasion = 5; а потом в просто вызываешь в нужном месте CalculateChance(evasion); а в другом месте хранишь функцию CalculateChance(float chance){ if(random.range(0, 100) < chance) return true; return false; }
>>396275 >>396276 Вроде бы выглядит разумно, но блин, чувствую, что это не то. Да и, допустим, если будет бить по 6 юнитам, то вылезет 6 подсказок с цифрами. Если делать по-твоему, то к одному классу обращаемся 6 раз, храня данные в 6 подсказках. По-моему же было бы логичнее, можно использовать для хранения данных, используемых только хитшансом, использовать 6 разных хитшансов. В общем, спасибо за совет. Посмотрим, что можно сделать.
>>396282 > Если делать по-твоему, то к одному классу обращаемся 6 раз Да нихуя же. К классу ты обращаешься один раз, отдавая ему список врагов, он тебе возвращает список с уроном для каждого врага, потом где-то держишь конструкцию: for (int i = 0; i < enemiesToHit.Count - 1; i++) { enemiesToHit.health -= damage; }
>>396289 Опять ошибся. enemiesToHit и damage, конечно же. Хотя просто менять значение хп как-то зашкварно, можно сделать: for (int i = 0; i < enemiesToHit.Count - 1; i++) { enemiesToHit.OnHit(damage); } А в OnHit() уже расчитывать урон, который пройдет через броню, уклонения и т.п.
>>396289 >>396291 >>396292 У меня хитшанс используется в трёх ситуациях: два раза в подсказках и один раз в ролле на урон. Допустим, значение для ролла на урон можно использовать сразу, но подсказки-то в воздухе висят, в них нужно хранить значение. То есть мы должны создавать подсказку, которая будет хранить данные, использующиеся только один раз. Ну ладно, допустим, сделаем такого типа хитшанс. Дальше у нас есть разные типы способностей, разные эффекты и т.п. Если переносить на них логику хитшанса, то на всё это нужно будет сделать по статичному классу с уймой методов внутри, каждый для своей ситуации, а потом к ним сверху присобачить классы-подсказки, в которых хранятся пропущенные через статичный класс данные. То есть это в любом случае создание множества элементов
>>396271 Да-да-да. В этом и суть. Ты наследуешь, переопределяешь методы, но при этом можешь обращаться к дочернему классу по интерфейсу-родителю. Например, у меня есть класс Shootable с методом MakeShot(), от которого наследуют EjectShoota, RayShoota и тд После чего я могу стрелять как current_shoota.GetComponent<Shootable>().MakeShot();это для наглядности, лучше кешировать Shootable bla_bla = current_shoota.GetComponent<Shootable>(), а не искать компонент каждый раз
>>396261 По поводу мультиплеера соглашусь, то что в одиночке пишется за 20 минут, по сетке написать и отладить займет два дня. Но это все в рамках Юнити. Просто не надо его брать под проект среднего/большого объёма, тем более с сеткой. Этот движок вообще не под такие проекты создавался, а под мобилы прежде всего. Ну а то что его сейчас рекламируют как серебряную пулю под любой проект - маркетинг чистой воды. В теории на нем действительно можно создать что угодно, но не нужно, ибо охуеешь в процессе.
Алсо, нормальные игры не создаются за пару месяцев.
>>396299 Так, блядь, тогда придется прописывать инстанции класса, а это вообще не имеет смысла: алгоритм-то один и тот же, мне просто нужно вбрасывать в него персонажа с еще кучкой данных, получать выход, реализовывать этот выход уже ресурсами персонажа. Мне нужно удобным образом говорить NPC, какими скриптами он может пользоваться. Чтобы вот он увидел игрока, проверил фракцию, понял, что Игрок будет противником, и начал шерстить возможные варианты поведения. Какой вариант первым выдаст true, в такой и будут закинуты данные. Типа: 1. NPC без лука/волыны, но есть меч. Меч с такого расстояния не дотягивается, надо подойти поближе. 2. Достаточно близко, есть меч в руках, пизди противника. 3. Противник надавал по щщам в ответ, слишком мало хп. Надо отойти, выпить зелье. Вместо boolean можно, конечно, прикрутить более гибкую логику, где каждая возможная команда выдает int, потом они сравниваются, и выполняется алгоритм с наибольшим значением, но не суть.
Хуй знает, что там у FEAR'овцев за система, но в лекции показано это таким образом (пик). Т.е. для каждого типа NPC есть папка/раздел/хуйзнаетчто, в которую закинуты возможные действия. Вопрос, собственно, в том, как можно сделать что-то подобное в Юнити.
Пока печатал, понял, что можно делать префабы со скриптами и референсить их в списке. С наследованием у скрипта от Action по-идее будет нормально. (пик 2)
>>396309 >Алсо, нормальные игры не создаются за пару месяцев. Это понимаю. Хочу попытаться работать в режиме "вечной" разработки, спонсируемой патреоном и другими подобными способами. >>396312 Нормального кодера в команду взять - платить кучу денег за каждый час его работы, что я не потяну финансово. Дешевых кодеров не бывает, ибо спрос на код превышает предложение на рынке в отличии от арта, 3д, геймдизайна и сценария. Взять новичка в партнеры работать "за опыт", будет означать что его говнокод не лучше моего и что он 99% съебет после пары недель труда, оставив после себя такой код, который невозможно будет прочитать. Так что увы, приходится одному все. Просто серьезно упрощаю игровую механику, чтобы добиться ее близости к сандартным ассетам. Скорее всего вообще с playmaker работать буду, чтобы только меньше кода писать.
>>396296 > два раза в подсказках и один раз в ролле на урон В одной подсказке у тебя же не висит точный финальный урон, который получит персонаж, там висит примерный дамаг, возможно шанс попадания. Точный урон ты будешь показывать уже во второй, просто бери значение из OnHit().
> у нас есть разные типы способностей, разные эффекты и т.п. А нахуя их делать настолько разными? Всю разницу можно реализовать через один enum.
>>396328 Если твой скрипт прикреплён к гейобъекту, то экземпляр класса из него будет создан при старте. Но я кажется понял о чём ты. Можешь создать один гейобжект хранящий все правила, отдельным петушкам давать ссылку на это хранилище и список доступных действий обычным массивом айдишников.
>>396352 > экземпляр класса из него будет создан при старте Отлично, главное, чтобы мне не пришлось прописывать в каждом NPC Perekat perekat = new Perekat(); actions.Add(perekat);
>>396381 Зависит от твоего уровня. Если ты ничего не умеешь, но быстро учишься - будешь хуярить за фитбек. Если навыки есть - будешь получать деньги. Если все будет ооооочень хорошо - станешь частью команды.
>>396385 О. Раз такая тема, можешь рассказать, чем у вас занимаются кодеры, какие инструменты используют в работе? Любопытно, с каким навыком люди зарабатывают хотя бы на еду.
как убрать gimbal lock? камера с помощью quaternion.lookrotation смотрит в одну точку и вращается вокруг неё по орбите. Так вот какого хуя когда она приближается в координаты типа vector3.up её начинает косоёбить на 180 градусов
Подскажите как вызвать подсветку нужного обьекта без его выделения. Как когда тыкаешь на обьект в поле он подсвечивается в проекте, или в сцене, но не выделяется.
>>396346 В общем, решил "гибридно" сделать. Сохраню свои абстрактный класс и наследуемые классы его, но сделаю при инициализации по 1 инстанции каждого наследуемого класса. По сути тот же статичный класс получится, но разбитый на участки.
>>396471 можно. правда с лодами возможно заебёшься, но стяпляпать своё бесчеловечное небо из перлина и водяной эрозии вполне посильно как планируешь террайн то генерировать? процедурно или с карты читать?
Помогите новичку с движением, скажите где можно почитать\посмотреть. Я нашёл либо взять готовое из стандартных, либо уже с анимацией скелета и физикой. А мне нужно что бы объект просто двигался с кнопок на клавиатуре.
>>396474 Спасибо, анон, думал, это невозможно. А так я вообще диванный и в юнити пока ещё не разбираюсь, просто заинтересовало, стоит ли в него вкатываться, чтобы сделать в итоге игру мечты, или в конечном счёте столкнусь с ограничениями движка.
>>396491 До игры мечты ебать как далеко. Я вот начал делать РПГ дрочильню своей мечты с нуля, в итоге обосрамс на каждом компоненте, тысячи запросов в гугл, благо в код немного умел. Думаю заморозить нахуй, сделать платформер, чтобы хоть какое-то подобие законченного проекта было.
Есть объект, у него есть тело, ноги, руки. Как можно покрасивей ему вставить оружие в руки? Добавить еще один дочерний объект - оружие и включать его по мере необходимости? Но это очень неудобно, если оружий много, и их координаты на персонаже разные. Наверняка есть какой-нибудь простой метод.
>>396531 Есть метод, задавая в скрипте координаты, инстанеш или трансформируеш в них оружие, всё. Есст-но оружие должно быть дочерним обектом. Второй метод задаёш точки на объекте с помощью маленьких сфер, убираеш у них меш, и так-же скриптом вешаем на места точек оружие по категориям, типо: Пистолет1,питсолет2 на точку у "бедра". Автомат1,автомат2,снайперка1 на точку "спина". Возможно немного не понятно.
>>396449 >>396296 Снова выхожу на связь. Решил заняться ходами юнитов, а из-за этого принялся делать способности (команду на движение по доске через способность реализую), из-за чего мне понадобилось переделывать пасфайндинг, из-за чего я познакомился с удивительным миром массивов, листов и словарей. Таким образом я снова ищу совета. Как мне с массивами совладать? Читал, что листы очень прожорливые, и поэтому нужно использовать словари. Глянул на свой прошлый код - шкала инициативы, например - так там всё на листах сделано. Самый простой способ замены - просто сделать словари с ключами-интежерами, которые заменят индексы как у листов.
Ещё одна проблема вылезла внезапно. Доска на Start() создаёт через new какой-то другой класс, в котором есть переменная, несущая в себе (в теории) ссылку на доску, создавшую этот класс. Когда же дело доходит до вызова функции из нового класса, в которой используется ссылка на доску, выдаёт нулл референц т.е. переменная после записи оказывается пустая. Её сборщик мусора обнуляет или что?
>>396328 > можно делать префабы со скриптами и референсить их в списке О, оно заработало. NPC кушает команды через префабы с действиями (господи, как же это костыльно звучит), хотя я пока не тестил ничего, кроме преследования игрока да и здесь я наебался, потому что NPC нихуя не поворачивается в сторону цели.
>>396738 >NPC кушает команды через префабы с действиями Можно сделать префаб всего NPC, и кастомизировать его через параметры. Или несколько префобов для каждого класса.
>>396776 Ну это-то да, но это к командам не относится. Этот велосипед мне для того, чтобы не писать йоба-FSM для AI. Там выше где-то статья на эту тему, а еще выше совет от анона использовать общий интерфейс и такую схему. Скрипт NPC пока что только для галочки, и из него берется только фракция (на кой-то хуй). Надо бы еще enum на класс добавить (милишник, кастер, т.п.), и через класс + уровень раскидывать автоматически статы. Но для начала надо бы с ними разобраться, лол, потому что я в душе не ебу, сколько характеристик брать и какие.
>>396623 >>396638 Сообразил способ искать клетки через словарь, но он почему-то не работает. Суть в том, что ключом выступает Vector2 gameObject.transform.position, т.е. только x и y. Я думал искать соседей добавляя к этому Vector2 вектор до соседнего гекса, который заранее определён во время строительства доски из гексов, но словарь упорно заявляет, что нет такого ключа. При этом словарь сам содержит в себе все kvp, которые я задавал, и по векторам клеток исправно эти клетки выдаёт, т.е. дело именно в векторе-расстоянии. Но вектор-то верен, это именно то расстояние, которое задавалось при строительстве доски. Здесь какой-то подводный камень, или я опять где-то в глаза проебался?
>>396800 Параметры лучше всего держать в ScriptableObject, иначе заебёшься с обычными префабами. Как правило - неизменяемые (во время жизни объекта) параметры в ScriptableObject, состояние - в MonoBehaviour.
Доброго дня вам, юнити-господа. Таки решился пилить свою 2д игрулю с блэкджеком и шлюхами, но встал вопрос о том где рисовать спрайты. Есть на выбор CorelDraw и Adobe Illustrator Что из этого выбрать?
>>396860 Может, дело в округлении? Внутри вектора лежат float'ы, я слышал, их значения могут не совпасть, если их сначала разделить на одно число, а затем помножить обратно. Может из-за этого быть?
>>396878 Если ты пишешь в студии, то поставь брекпоинт там, где сравниваются значения, нажми на кнопку attach to unity, запусти проект в юнити и посмотри, какие значения сравниваются. А вообще да, с вероятностью, близкой к 100%, флоаты после сложения будут не совпадать.
>>396867 Я бы закинул команды в ScriptableObject, но тогда мне кидать их в список для NPC придется через еще один велосипед. С пердолингом через префабы хотя бы я получаю то, что хотел. Может быть есть более простой и оптимизированный вариант, но пока что я его не видел, гугл выдает всякую хуйню. ScriptableObject я буду использовать для предметов.
>>396886 Если я задам точность float'у, то это реально изменит число? Как мне с этой хренью поступить-то? Превращать float в какой-нибудь decimal, складывать, а потом обратно превращать?
>>396891 >>396886 Спасибо всем, переделал словарь с ключом в виде вектора в словарь с ключом в виде строки. Перед "введением" ключа формачу флоаты в векторе в единую строку через ToString("F2"). Это говно работает. Я хуй знает, насколько усложнил всё это.
>>396906 >>396908 ИМХО, потому что пиксели слишком хайресные И всё равно мне кажется, что эта хрень будет жрать цпу меньше, чем перебор элементов листа, как раньше. Скажем, делаем путь из 6 гексов. Моим методом мы будем обращаться к словарю, уже зная ключ (после преобразования в строки) а вообще я клеток-соседей собираюсь хранить в каждой клетке, вызывая поиск соседей по надобности и на старте, по методу фреймворка же был перебор листа в 120+ элементов 6 раз.
>>396953 Я уже всё разрешил. К тому же сравнивать вероятный ключ со всем списком ключей словаря как-то не очень. Смысл в том, чтобы заранее знать ключ, а не чтобы его подбирать каждый раз.
Привет, аноны, нужна помощь. Ткните пожалуйста носом в годный тутор о том, как запилить включение\отключение звуков\музыки в игре нажатием кнопки и о том, как правильно реализовать валюту игровую) Касательно валюты, планировал через PlayerPrefs, но жопа подсказывает, что понадобится вазелин(Может есть какой-нибудь костыль или код, чтобы разобрать и\или свелосипедить?) Касаемо звука вообще не понимаю как это реализовать.
>>397056 И да забыл сказать не надо читать все досканально и пытаться вникнуть, тебе из всего этого нужны максимум 10 функций, их и ищи, в них и вникай
Подскажите пожалуйста на счет pixel per unit. У меня игра пиксельная, стоит ли выставлять 1 пиксель на юнит? Из того что я читал - это повлияет только на физику, но я так и не понял в каком плане. У меня не платформер с прыжками, а top-down игра, и гравитация мне вообще не нужна. При этом мне нужно симулировать импакт от снаряда и отброс при атаке, и партикли тоже. Они возможны при одном пикселе на юнит?
Я пытался протестить всё в дубликате своего проекта, но это оказалось сложнее чем я думал, да и о будущих подводных камнях я таким тестом не узнаю.
>>397068 ещё повияет на размерность единиц пространства, координаты/расстояния будут другие, иногда бывает пиздец неудобно оперировать в координатах со смещениями типа 0.01 на тайл но вообще как по мне эти пиксели пер юнит в основном нужны для настройки pixel-perfect
>>397068 вкратце делай так: персонаж 1-2 юнита высотой и все остальное уже подгонять под него. 1 юнит = 1 метр, физика с низов расчитана на это. По этому размер влияет на физику. Представь если в космосе столкнуться два камня и два метеорита по 900км в радиусе, будет разница? Короче без необходимости лучше не делать размер игрока <1 и 2<
Решил вкатиться в гд, давно была мечта сделать свою игорь с домиками и стражей. Знаю джаву на базовом уровне, с++ очень похож на джаву, но щас вот учебник с пр скачал, какой то вектор появился, это типа массив или что? Вообще стоит ли задрачить с++, а потом уже шкодить на юнити? Пару туторов на тыртубе посмотрел, вроде все просто. Хочу вообще запилить пошаговую рпг с гексами и глобальной картой
>>397098 Юнити поддерживает только C# и JS, советую шарп. Никаких книг, хуиг - трата времени. На оффициальном сайте есть все, от текста до видео. Просто смотришь все уроки по C# и практикуешь делая мини игры\тестики после КАЖДОГО видео, что бы закрепить на практике. Желательно 2D что бы осваивать интерфейс и его детали. Да да сразу захуячить рпг мечты не сможешь. Поверь это лучше чем безрезультатно учить плюсы. ПРо векторы отвечать не буду, как я уже сказал смотри офф. гайды от юнити, смысл если ты будешь знать что это, но не знать как их применять
>>397105 >Никаких книг, хуиг - трата времени. Проигрунькал шепотом. >На оффициальном сайте есть все, от текста до видео. И следом уже в голосяндру. На самом деле тоже шепотом.
>>397098 Главное, что тебе стоит помнить, официальные туториалы по кодингу на юнити - говно. Используя только их, ты вольешься в ряды замечательного коммьюнити, которое обеспечивает юнити славу тормозного движка. Используй шарп, студия идет в комплекте с движком, очень удобно дебажиться. Прочитай любую методичку по синтаксису языка, потом прочитай какую-нибудь книгу по запросу "основы ООП c#". Недели-другой тебе хватит, параллельно можешь излагать мысли о своем будущем шедевре на бумаге, чтобы не растерять мотивацию. После этого можно начинать что-то делать, оглядываясь на первые две методички, документацию юнити и читая о шаблонах проектирования для вдохновения.
>>397112 интересно каким местом они говно? для новичка лучше не сыскать, там все по факту и без ебанутых формулировок как в майкрософт доках. Все по полочкам на простых примерах. Если твой критерий не говна - углубление в тему, то иди просто нахуй идиот. Ты сам и написал что начинать нужно с поверхности
>>397114 > как в майкрософт доках Доки Майкрософта вообще не для обучения сделаны, это ебаная методичка, чтобы ты быстро глянул, чо-как.
Видосики хуево воспринимаются, имхо, параллельно с шарпом там объясняют фичи движка, что тоже такое себе, если вкатываться совсем с нуля. Без ебанутых формулировок есть куча книг, C# Player's Guide например. Если ты думаешь, что это трата времени, то ты где-то наебался, не заражай этим остальных. Все доступно и понятно написано. Вообще нахуя вкатываться в Юнити, не зная язык, помимо языка придется разбираться еще и в компонентах. Проще начать с консольного пет-проджекта на шарпе, постепенно обмазывая его новыми знаниями, а там уже вкатываться в Юнити, чтобы получилось: "Ага, ну я знаю, что я вообще хочу, и вот у меня уже есть реализация, давайте рассказывайте, как эту йобу прикрутить к вашему движку". мимовкатывающийся
>>396910 >>396956 Продолжаю выходить на связь Как правильно ивенты расставлять? Допустим, я перетащил вызов всех ивентов в отдельный класс, функции в котором вызываются при срабатывании условий какого-либо ивента это понятно, как устроено. Мне интересно, как это нормальные люди делают. Просто бросают все объявления ивентов там, где придётся, или что-то хитрее есть?
>>397105 вот этого поддерживаю прямо совсем. игры делаются по принципу хуяк-хуяк-заминка-прогуглил-узнал-хуяк-хуяк. с вашим УГЛУБЛЕНИЕМ игор не сделать, интерес пропадёт раньше. да и вообще. какой уровень-то игры требуется, хах, как себя не назови всё равно будет егра от васяна666. а клепая говно и скилл растет быстро, и отношение говна/см игры уменьшается. только практические задачи, только хоркор.
>>397134 в том и мысль моя, мы обычные юзеры, нам по природе не дано за 1 взгляд понимать всю логику математику и прочее говно. Смысл в творческой разрядке
Как можно такое реализовать на C# : Во время клика на коллайдер игрока в 2D пространстве, на месте клика т.е. "выше" игрока по y - ближе к камере спавнится другой объектэлемент , после чего , если "клик" всё ещё нажат (длительное нажатие на кнопку мыши) можно перемещать этот заспавнившийся элемент курсором мыши , драг энд дропом, и при окончании нажатия на кнопку мыши , элемент остаётся на месте курсора в этот момент? Спасибо :з
>>397306 >>в 2D пространстве как это понять? 2D это 3D только со спрайтами >>на месте клика спавнится другой объект // дрэг энд дроп гугли: ScreenPointToWorld Input.GetMouseButton посмотри весь класс Input много полезного найдешь
>>397131 Посоны, это снова я. Я уже почти готов перейти от написания базовых классов к созданию всякой кастомной херни К примеру: базовый класс абилки для ходьбы - кастомная абилка ходьбы с топотом, и, собственно, на этой ноте встал вопрос об абилках. В целом понятно, как что делать, но я бы не хотел велосипедировать, создавая аналог уже существующих в юнити кнопок. Так что вопрос такой: надо ли создавать свои кнопки (т.е. добавить коллайдеры, добавить функции, всё такое), или же и юнитовские сойдут? И ещё нечто очень нубское: как сделать "панельку" произвольной формы, которая будет обрезать изображение внутре себя? Допустим, хочу сделать кнопку гексагональной или круглой формы.
>>397328 Пока не дотянулись до UI руки, но в целом там вроде все уже сделано за тебя, осталось только прикрутить. > хочу сделать кнопку гексагональной или круглой формы Делаешь спрайт под кнопку, указываешь отсутпы от сторон элемента, в который ты кидаешь кнопку. Главное, чтобы не пидорасило при разных разрешениях.
Как заставить себя не ленится и собственно начать изучать Юнити? Впервые я хотел изучить его, страшно подумать, ещё в 2014 году. На дворе 2017. Я нихуя не умею до сих пор, 3 года играл в игори и хуйней страдал всякой. Проёбываю жизнь зазря. Что делать?
>>397401 Возьми и начни. Скачай какой-нибудь фреймворк и распиливай его, чтобы разобраться, как это говно работает. >>397332 Оно ж всё квадратное там. Да и кнопки сами глючные, цвета в них застревают.
>>397427 >>397328 >Так что вопрос такой: надо ли создавать свои кнопки (т.е. добавить коллайдеры, добавить функции, всё такое), или же и юнитовские сойдут? Так-то я и так собирался свои собственные кнопки пилить. Но мало ли, вдруг что-нибудь упускаю.
>>397429 Зачем тебе коллайдеры в кнопках? Если игроку доступен курсор, он и так на них может нажать. >>397421 > Оно ж всё квадратное там. Так поправь спрайт. А то, что они в блоках квадратных, роли не играет.
>>397431 А как ещё движения мышки ловить? >А то, что они в блоках квадратных, роли не играет. Не потому ли, что у кнопки скрытый коллайдер? Ивенты мышки вроде OnMouseEnter, OnMouseExit и OnMouseOver/Down/Up не работают без коллайдера. Нагуглил вот. Оказывается, юнитовский polygon collider автоматически при создании (через AddComponent) спрайт обволакивает собой. Кто бы мог подумать?
>>397436 Я ж говорю, юнитовские кнопки порочные. В любом случае придётся их скрипты править (каким-то образом), так что лучше создать свои кнопки. Например, если я хочу скиллбар на 10 позиций, в котором скрываются неиспользуемые позиции, мне сейчас приходится использовать панель с горизонтальным лейаутом, в него класть 10 панелек-сокетов, а в каждую панельку-сокет класть по кнопке. Видимые из этой херни только сами кнопки, убираю из виду через IsActive(false). Ладно, с этим можно жить. Но! Когда хочу засунуть скиллбар (полностью) в префабы, он перетаскивает только панельку и панельки-сокеты - без кнопок. Вот и выходит, что конкретно под мой скиллбар оптимальны мои собственные кнопки.
>>397437 Я опять начинаю нихуя не понимать. Скрины что ли прикрепляй. > он перетаскивает только панельку и панельки-сокеты - без кнопок Так инстанциируй кнопки? У тебя же где-то хранится массив для скиллбара.
>>397484 Делишь на 100, вычленяешь целую часть, получаешь первую цифру, заносишь в переменную. Потом умножаешь её на 100, полученное число вычитаешь из изначального числа, то что получилось делишь на 10, берёшь целую часть, заносишь во вторую переменную. Ну и по той же схеме получаешь последнее число. А лучше не выёбываться, перевести число в стринг и разбить на чары.
>>397437 Ебать я загорелся Обнаружил только что, что UI не работает с OnMouseEnter и всей прочей хуйнёй. Оказывается, нужно использовать IPointerHandler'ы и их функции. Я тут два часа голову ломаю, какого хрена эта хрень не работает, а оно вон оно что! >>397447 Ты меня совсем не понял, да. Когда перетаскиваешь что-то из сцены в область папок и ассетов, то ты создаёшь префаб, сохраняющий заданные ему в сцене свойства. Очень удобно, вроде бы, но нельзя перетаскивать префаб, в котором цепочка из двух и более наследованных объектов - второй и последующий объекты отсекаются просто
>>397517 >Сколько ж тебе геймобжектов нужно в префабе? Столько, чтобы удобно было. >Инстанциируй панель с ячейками, туда инстанциируй кнопки. Это уже не проблема.
>>397497 спс но я уже нашел интересный оператор % который например из выражения 654 % 100 вернет 54, а из 654 % 100 % 10 вернет 4 Называется деление с остатком
>>397509 >>397532 Продолжаю. Допустим, хочу сделать интерактивную инфопанельку на экране. Скажем, показывает 4 стата и список баффов, наводишь на любой из элементов - позволяет с ним взаимодействовать неважно как, некритичный момент. Каким образом это делается правильно? Первая идея - сделать панельку с лейаутом, сделать класс (и деривативы от него), который бы содержал в себе всю выводимую в панельке информацию, и ещё один класс под саму информацию под неё можно мои кастомные кнопки юзать. Работать это говно точно будет, но: ивенты курсора, вызываемые взаимодействием с UIем, ловят весь объект, а не только изображение/текст, т.е. наводишь на край невидимого прямоугольника, и тебе выстреливает ивент OnPointerEnter. Как мне либо к скрипту Image присосаться, либо уточнить условия юнитовского ивента?
>>397643 Нагуглил два решения. Одно совсем не работает для UI, другое типа работает, но опирается на PolygonCollider, а коллайдеры на UI автоматом не растягиваются. ВНЕЗАПНО обнаружил, что курсор обычными ивентами вида OnMouseEnter и OnMouseExit при взаимодействии с UI как бы одновременно и UI, и геймобжект трогает. Печально!
>>397709 Да похер уже. Ковыряю гибридный метод рейкаста - сначала RaycastAll для UI (UI оверлеем идёт), если есть хотя бы один элемент, работаю с ним, иначе кидаю Physics.Raycast для 3D объектов.
>>397713 Потому что OnMouseEnter/Exit/Down и т.п. не работают с UI, с UI работают OnPointerEnter/Exit/Down. Когда же UI находится над игровыми объектами, то срабатывают оба ивента - и для UI, и для объектов. Эту хрень безболезненно подправить только рейкастами можно, похоже.
Забавно, насколько другой оказался процесс разработки своей игры. Уже не первый раз в процессе решения задачи понимаю что лучше вообще выпилить то что я собирался сделать, т.к. импакт небольшой, а возни много. И понимаешь это ты через несколько дней непрекращающейся ебли и ошибок.
>>397716 другой аннн зачем изобретать свои кватернионы если они встроены да еще и с приблудами? по мойму >>397715 прав потому что прощее прогуглить хорошенько чем ебатся в незнании днями
>>397716 Так возни много не только с моей стороны, но и со стороны процессора. Иметь кучу лишних вычислений для какой-то маленькой детали которая засела в твоей голове просто потому что - как-то не очень.
>>397719 >>397721 >>397718 Корочи, запилил рейкаст, теперь эта хрень реально выдаёт "самый верхний" элемент - оверлей это или же 3д объект. https://pastebin.com/Q6h7T0i7 Туда ещё говно всякое прикрутить вроде фильтра для невидимых UI менюшек и совсем норм будет >>397724 Не работает, блджад. И мне наоборот НАДО чтобы UI срабатывали, а НЕ ТОЛЬКО 3д объекты.
Не могу понять в чём дело, в максе делаю комнату 5x5 метров, экспортирую в юнити, а там эта комната маленькая кажется какая то... Размер юнитов одинаковый, при импорте указал всё правильно, а размер кажется какой то маленький... В чём может быть проблема? Я что то не так делаю или в юнити нужно "на глаз" делать размеры?
>>397727 создай геймобъект Cube он по дефолту в юнити есть, и его размер 1х1х1, по нему и сверяй. Просто ставишь у него скейл на 5-5-5 и он станет равен 5 юнитам
>>397730 Я просто соотношу как это выглядит в игре и сравниваю со своей комнатой, в игре ну совсем не так, как то странно камера работает, а по размеру всё сходится, но камера как то не передает эти 5 метров.. Может у меня глазомер наебнулся, хз.
>>397732 1. FOV - угол обзора камеры, у 3D пакета и юнити скорей всего разный 2. В 3D пакете ты летаешь, а в юнити возможно ходишь и смысл в том что камера не меняет позицию по высоте. Из за этого мозги глючат и не только у тебя.
>>397738 Хмм.. Тогда как же делать реалистичный размер? FOV покрутил, желаемого не получил. Разработчики на глаз что ли всё делают, а не по точным размерам?
>>397741 Да. Поменяй соотношение высоты потолка и игрока. Если игрок 2 метра и потолок 2.3 метра, то комната будет казаться маленькой. Чем больша разница тем больше кажеться комната
>>397742 Я просто думал что все используют точные размеры при моделировании. Например у меня высота потолка стандартная - 2500мм, высотка игрока 1750мм. Хорошо,понял тебя, попробую делать на глаз. Но чтот осадочек какой то горький остался...
>>397744 Во 1-ых без ошибок ты ничего не сделаешь, они всегда были, есть и будут. Во 2-ых см. >>397731 делать надо пропорционально, если на глаз никак - копируй реальные значение. Но для нубо проекта на глаз - верх успеха т.к. большинство нубов ссали на такие вопросы.
>>397726 Подправил своё говно. Вчера свет отрубили, не успел https://pastebin.com/DApXczru Но его всё равно подгонять под неформат нужно. Внезапно оказалось, что если прицепить коллайдеры к составным частям объекта, то рейкаст будет выдавать составные части, а не сам объект. Кто бы мог подумать! Ну, зато эта хуёвина работает, подсветка объекта под курсором, включение какой-то анимации, етц етц, всё заебись
Аноны, прошу совета, на выходных реализовал генерацию игрового поля через геймобжекты, есть гайд как реализовать пошаговый бой с поиском пути? Пошаговый бой у меня не совсем традиционный, сначала я планирую ход. на все это буду расходоваться ОД, в конце нажимаю конец хода, мой персонаж и персонаж противника начинают осуществлять действия одновременно, по заданным командам. Как в TimeZero.
>>397860 О, вроде лэйауты заработали норм на 5.6 А то я заебался элементы ЮИ попиксельно выставлять.. А юнити у меня древний был как говно, я ж его ставил еще когда меня в прошлый раз кирилство накрыло
>>397886 простым образом. в аргументах две координаты - левой нижней передней вершины и правой верхней задней. потом инстансишь пол, затем потолок, затес стены. ты просишь чтобы тебе код написали или что?
>>397927 Хочу поменять модельки в игре местами, например, или отредактировать текстурку имеющейся. Через какую прогу это делать? Модельки хранятся в файлах с расширением unity3d.
>>397937 Можно, дебич. Поставь сериализацию в текстовую и сиди дрочи в блокноте сколь угодно, но лучше открой СЦЕНУ в редакторе и просто перетащи из ассетов.
>>394374 (OP) сегодня обнаружил небольшой косячек. Короче Invoke хорошая функция но не точная если дело идет на миллисекунды. И если вам важна точность, то фигачте собсвенный таймер
>>398035 Да по сути нужно было сделать много ботов которые делают определенные движения. Вначале сделал инвоком и на первый взгляд все было нормально. Но потом понадобилось что бы эти боты очень близко пересикались но не сталкивались и тут проблемы начали появлятся. Сделал простой таймер в FixedUpdate и с ним все зашибись было
Ребят, нид хэлп. Пытаюсь в 2д и столкнулся с проблемой. Текст при разных разрешениях в разных местах появляется. То есть мне нужно, чтобы текст всегда был в одном и том же месте при разных разрешениях и разных соотношениях сторон.
>>398151 это слишком высокий левел. Но со своей нубо колокольни, я вижу что на 1-ом скрине у тебя текстурка наложилась нормально в нижнем правом триугольнике. Вот и сделай все остальные так же как этот
>>398152 Легче сказать, чем сделать. Я с ними часа два ебался, думал что починил, а потом поменял ось, вдоль которой разрез идет и все по пизде пошло. Возможно это как-то связано с порядком вертексов, но хуй его знает. Потом посмотрю как у других сделано.
В самой юнити и на ноутбуке сборка игры работает корректно. Все кнопки пожимаются, и все работает как надо.
Но как только я пробую тестить на другом компьтере с большим монитором и разрешением, то все ломается к херам. Даже UI кнопки перестают работать. В чем проблема? Может в настройках разрешения? Но я чет не пойму где это исправить? Подскажите.
Сап, двач. Тут диплом горит писать, дали значит тему, что-то вроде "Интерактивной модели системного блока компьютера для использования в обучении". Короч, софтина, в которой можно крутить в 3d системный блок компа, кликать на все его составляющие, рассматривать и крутить каждый по отдельности, а также сделать тест на знание компонентов компа. Может ли кто-нить сказать, как это на Юньке реализовать, можете подсказать путь, по которому двигаться, просто не хочется тратить много времени на туториалы, которые при выполнении работы не пригодятся. Скиллы в программировании низкие (ошибся при выборе специальности, не мое это совсем), трехмерные модели собираюсь искать в инетике. Заранее спасибо всем неравнодушным за ответ.
>>398275 Тебе сначала надо сделать модельку комплюхтерна со всеми составляющими, это тебе не в юньку, а в какой-нибудь блэдндер или макс. А уже потом всё это кодить.
>>398275 если это не твоё, так нахуя те специальность? просто шок бля типо даже советовать смысла не вижу нихуя. МОжешь попытаться освоить основы blender3d и сделать простейшие модельки с простейшими текстурками(одноцветными, с надписями ну сам придумаешь) потом закидываешь в юнити и гугли просто конкретные задачи, типа unity3d orbit camera. так не потратишь изучение всей библиотеки юнити.
>>398278 Да я ж написал, что модели готовые поищу, знакомые моделлеры, говорят, что можно найти. Меня именно функционал в юньке интересует, по фасту захуярить. Ну я тебя понял, оттолкнусь от того, что ты написал и гуглить буду отдельные задачи (ну или сюда с вопросом снова приду, лол) А насчет не мой специальности, ну бля, бросать поздно, бумажка нужна, плац топтать не хочется, а военная кафедра в моем универе есть, и я на рядового запаса там отучился, осталось только сборы пройти
>>398282 > Меня именно функционал в юньке интересует Готовую модельку вертеть мышкой - несколько строчек, не ссы. Как найдёшь модельку — приходи, поможем. Только если ты хочешь вычленять запчасти и вертеть их отдельно, то убедись что у твоей модельки под каждую часть отдельный меш.
Поясните за рейкастер. Выше в треде я уже жаловался Суть в том, что я собрал гибридный рейкастер, который сначала смотрит через РейкастОлл на игровой интерфейс, и если ничего не находит, то смотрит затем на 3д объекты. Нужна эта хрень затем, чтобы вход-выход мышки из любого объекта на экране детектировать. Но! Внезапно появился баг. Над игровыми с правого края тонкой полоской (скорее треугольником) одна единственная игровая кнопка, которая находится в другом месте, вроде как находится и там. При разрешении 1440х900 она начинается с ~х625 и у260 и идёт вправо и немного расширяется до у250 и у300. Странно то, что это одна единственная кнопка, которая при том же разрешении находится на х600-625 и у10-40 (примерно).
Хочу сделать вертолет с управлением как в hotline miami, т.е. что бы объект центрировался на курсор мышки. Сделать само управление легко, проблема в анимациях - не знаю, как правильно сделать анимацию кренов вертолета при движении. Пытался делать через обычный крен скриптом - тогда вылезают косяки с центрированием на курсор мышки, пытался через анимации - хуй знает, как их правильно запускать при движении + опять косяки с центрированием на курсор мышки.
>>398374 Рейкастер у меня полностью рабочий. У меня какой-то странный баг, когда рейкаст из позиции мышки далеко от кнопки почему-то видит кнопку. Всегда одну и ту же причём. Никаких манипуляций с позишеном мышки не делаю, только рейкастОл и рейкаст3д.
>>398465 Хотел оставить отзыв типа: "После скачивания игры сломался телефон, отдал в ремонт на 15000 рублей.", но посмотрел твой акк. Пиздец ты жалок, не стал ничего писать. У тебя кстати ссылка в gPlay на vk неправильная.
>Аформите падписку!!! Вить там хуева туча прилажений которые тебе нахуй не уперлись! >Ты уже зарабатываешь больше ста? Оформи подписку и выплати её всю сука! >Свалилось наследство? Биткоин взлетел? Квартиру продал? Плати Сука!!! Оформи нашу подписку и может быть будешь сидеть целый год, а если повезет и два без нашего зудения. >Мы следим за тобой и все про тебя знаим!!!!111111111111
>>398478 К чему ты это написал? в самой программе никакой рекламы нет, при билде игры тоже. Единственное ограничение хоть сколь значимое - обязательная 3-ех секундная заставка юнити, которая и та вставляется автоматически и ты не должен париться.
Проблема наступает на стадии реализации. Сам договор составлен так, что очень сложно понять в какой ситуации наступает моя финансовая ответственность, а в какой нет. Размытые формулировки оставляют много места для маневра. что не устраивает меня как конечного пользователя.
>>398478 Я больше проигрываю с рассылки на почту, в которой, по сути: "Вот у нас, короч, есть пак скриптов и ассетов, мы уже все за вас накодили, ну а че вам, например, с камерой в шутане ебаться, наши профессионалы уже все навелосипедили синженерили за вас. Всего за 150 долларов ю эс оф эй."
>>398487 За 150 баксов там годнота продается, кстати, типа Archimatix или MapMagic. Плагины попроще и стоят дешевле, фпс болванка 10-20 баксов. Другое дело, что школьники и прочие вороватые граждане не привыкли платить за чужой труд, или им банально дораха.
>>398494 Мне эта идея не нравится преимущественно тем, что это увеличивает количество кирилльства на унити. А что там в паках я хуй знает, мне бы на дошик мелочи насобирать.
>>396328 Чего смог сделать то за это время? Захожу я в тред юнити а вы тут ГОАП делаете. Я вот тоже ГОАП делаю. Его на самом деле сделать то легко, только дебажить трудно. В статье про FEAR было довольно много мутных мест про то как синхронизировать работу контролера ИИ и его мозгов. Кто как решил это проблемы?
>>398681 Никак. Без нормальной архитектуры ты быстро зароешься в говнокоде и игры не выйдет. Просто со временем научишься быстрее находить нужные решения и это не будет так много времени отнимать. Короче, архитектура нужна.
>>398683 В том то проблема что я ищу Идеальную Архитектуру. Просто архитектуру сделать как два пальца (5 лет в гейдеве!). Можно хорошо продумать что и как должно отвечать за что и сделать на комбинациях MonoBehaviour/ScriptableObject. Но это хуёво тестируется. Можно взять Entitas, но мне не нравится что каждый объект будет занимать под килобайт памяти когда число разных компонентов на контекст уходит за стольник. Плюс - можно тестировать, очень годно в плане понятности что и куда происходит, плюс тестируемо. Если хочешь сделать реузабельные модули то случается говно из за кодогенерации. Разные IoC-контейнеры, вроде StrangeIoC. Всё красиво, тестируемо и по феншую, но если я захочу создать тыщщу новых объектов то в каждый из них полезет рефлексия и получится говно. Плюс возможны сочетания разной степени тяжести. И ни у одного подхода нет явного преимущества. И я не могу нихуя решить. Это как Написание Движка уже.
>>398688 Лол, посмотрите на этого дебила. Архитектуру он блядь делает из ассетов. Кроме MonoBehaviour и Entitas конечно же нет вариантов. Пиздец, ебаные макаки.
>>398692 На высоком уровне у тебя по сути два выбора: 1. Ты используешь Юнити как View-Controller и пишешь игровой код отдельно. 2. Ты помещаешь логику в MonoBehaviour. В первом варианте у тебя снова есть два концептуально разных подхода: ООП или DOD. Entitas является примером чистейшего DOD, когда абсолютно всё построено на данных и объектов как таковых не существует. В то время как фреймворки типа StrangeIoC пример чистого ООП, когда разные объекты не знают друг о друге ничего кроме сообщений. Выбор архитектуры на высоком уровне лежит где то между этими тремя точками. Можно безусловно написать своё, но ты с большой вероятностью закончишь написанием точно такого же по сути кода как в уже готовых библиотеках.
>>398702 Абсолютно не очевиден. Ни у одного способа нет явных плюсов над другими. Варианта 1-1 (DOD) даёт наибольшую гибкость, высокопроизводительный и легко тестируемый код, но делает очень трудным использование сторонних библиотек. Вариант 1-2 даёт тестируемый код, но создаёт проблемы на динамическом связывании, может быть нужно делать обвязку для сторонних библиотек. Вариант 2 нетестируем, но наиболее прост в плане "какой то результат за время", слишком легко скатывается в говно.
>>398707 на самом деле разумеется очевиден, то о чем проект определяет то какими средствами он будет достигнут. всегда. и если у тебя даже MonoBehaviour скатывается в неконтролируемое говно то похоже пяти лет в геймдеве тебе не хватило.
>>398701 Вот нахуй ты сюда лезешь со своим говном, ебанина? Ты понимаешь, что геймдев это: хуяк-хуяк и сдали проект? Ты небось, пидор тупой, с утра до вечера дрочишь архитектуру, а проект с мёртвой точки нихуя не движется. А если ты ещё и в команде работаешь, то тебя как последнюю манду все проклинают из-за того, что ты тянешь всех в болото. На Unity мы пишем скрипты. Мне вот интересно, много ли ты видел хороших архитектур на том же самом lua?
Засунь себе куда поглубже рассуждения о таких подходах, прочитай про принципы SOLID и используй их тогда, когда они реально понадобятся. Я для тебя подчеркиваю, что SOLID - это в первую очередь принципы, а не законы идеального программирования. Не надо усложнять себе и другим жизнь, код пишется в первую очередь для людей, которые будут поддерживать его, а для машин уже в последнюю очередь. Помни, оверинжениринг -- это всегда плохо.
Я хуею с таких как ты, которые 5 лет работают в гейдеве и не понимают, что деньги платят не за охуевшую архитектуру и пиздатый код, а за фичи. Процитирую Торвальдса: Ты можешь писать охуенно красивый код, но он не будет решать задачу. Вот так и у тебя. Ещё у тебя преждевремменая оптимизация лезет изо всех дыр. За такое у нас в конторе убивают нахуй.
И все работает, панелька появляется, КРОМЕ одной штуки - mesPanel.panelRectTransform почему то равно null (хотя я родителя указывал разными способами), что приводит к эксепшинсам.
Короче - как инициализировать для панели ее panelRectTransform имея ссылку на объект-контейнер (холст например, он же Canvas)
У меня почему-то не работает Event Trigger на пустых канвасах. Хочу использовать Canvas для определения того, что курсор вошел в какую-то область на экране. Повесил функцию на эвент "Pointer Enter", но она почему-то не вызывается В чем может быть проблема?
>>398718 Потому что тебе нужно вызвать: mesPanel.panelRectTransform = mesPanel.GetComponent<RectTransform>();
Либо, обернуть это всё дело в геттер: RectTransform m_PanelRectTransform; public RectTransform panelRectTransform { get { if (panelRectTransform == null) panelRectTransform = GetComponent<RectTransform>();
>>398752 еще можешь сделать через кривую AnimationCurve curve = new AnimationCurve(); потом строишь нужную кривую прямо в инспекторе и делаешь speed = curve.Evaluate(position.y);
Как мне сделать переменную-ссылку на метод? понятия не имею, как это обозвать Хочу сделать универсальную кнопку для диалогового окна (в котором могут быть несколько таких кнопок), при создании которой в неё заливается указанный метод. Скажем, выбор "да" и "нет", каждая из кнопок свой эффект вызывает. Как мне, собственно, сделать заливание? При этом это должна быть ссылка на метод. Читал про делегаты, но так и не понял, как оно работает.
>>398782 Да, в памяти. Но для тебя его уже не существует. GC когда-нибудь триггернётся и выкинет этот класс нахер из памяти. А вообще, не забивай себе голову "пересчитывая каждый байтик в памяти". Просто пиши код. Когда производительность бахнется ниже плинтуса, тогда сядешь оптимизировать.
>>398818 >Description >A zero argument persistent callback that can be saved with the scene. >Ты просто документацию читать не умеешь и не хочешь разбираться. Ой, иди нахуй.
Аноны, есть unity и нужно подключить туда карты, с ассетом google maps for unity ничего не вышло Очень срочно, две недели до сдачи, ибо кикнут из шараги
>>398825 Ну, код я к плюсам отношу, тащемта. Могу дописать что-то своё, если нужно. Но и встроенный функционал важен, чтобы не писать что-то свое. Как с этим в Юнити 2Д? Гравитацию, столкновения, объекты смерти, направления движения я смогу в пару кликов задать?
>>394374 (OP) Кто нить знает как менять цвет спрайтов в анимации? Задача: Открывается окно (анимацией) и в зависимости от сложности оно будет опредленного цвета. Но автохуй цвет такой какой был в конструкторе. Меняется только если отключить аниматор.
p.s. Из решений нашел: с помощью шейдера менять спрайт, но разве нельзя просто через код?
>>398830 >>398832 >Скорей всего у тебя всё по жопе пойдёт, но по-другому вроде как нельзя Вот полюбуйтесь. А потом они советуют использовать юнитовские кнопки и прочие стандартные фичи
>>398843 > сравнивать движки под различные задачи > рассматривать исключительно стандартное освещение на однотипных шейдерах > запускать на четырёх кроссфайр титанах и дрочить на 125 фпс > ЕТОТЛУТШЕ резюмирую: юнити соснул
>>398847 Всё не так. Они по умолчанию как бы расширение изображения, к которому привязаны, да ещё и имеют и нерегулируемое поведение (т.е. всегда цвет при наведении мышкой меняют, даже если это с белого на белый). Написать 3 с половиной строчки на смену цвета (или на анимацию какую-либо) проще и чище, чем с юнитовской кнопкой ебаться. + у неё ещё баг есть, что она изменённый цвет держит пока не кликнешь где-нибудь за пределами кнопки. + разделить онКлик на левую или правую кнопку мыши (да и вообще добавить взаимодействие какое-либо другое) нельзя.
>>398850 какие-то у тебя сраные проблемы. что за баг то такой? окно чтоли когда не зафокушено?
>разделить онКлик на левую или правую кнопку мыши (да и вообще добавить взаимодействие какое-либо другое) нельзя.
дурак ты чтоли. public virtual void OnPointerClick(PointerEventData eventData) у кнопки она виртуальная. если так надо другими кнопками жать то наследуйся от кнопки и оверрайдни как тебе там надо.
Никто не знает, как можно сделать плавное исчезновение всех объектов с RawImage в Canvas? То есть CrossFadeAlpha(), только для всех дочерних объектов И чтоб после достижения полной прозрачности вызывался SetActive(false)?
>>398852 у CanvasGroup же есть возможность регулировать альфу компонента вроде. сделай корутину которая бы запускаясь считала время до целевого пропорционально уменьшая, в конце делала SetActive(false)
>>398827 Пример открывается, скрипт вместе с ассетом идёт кривой, я пофиксил Создаю кубик, вешаю на него скрипт, кладу поверх канваса - карта какая-то затемнённая и по заданной широте и долготе неверно отображает местоположение
>>398909 >Возможно ли запустить проект Unity в виде веб-приложения? Чето слышал, что HTML5 это может. Конпелируешь как WEBGL и все. Только конпелируется ОЧЕ долго
>>проще и чище Чище, когда у тебя полторы кнопки, а когда у тебя их 560 и у каждой своя анимация будет, вспомни про Animator.
>>(да и вообще добавить взаимодействие какое-либо другое) нельзя >>откртытый исходный код >>пиши что хочешь и как хочешь на готовой кодовой базей >>НИЛЬЗЯ-НИЛЬЗЯ, ТУПА ЗДЕЛОЛИ, Я ЛУДЩИ ЗНОЮ
Резюмирую: ты глюпый.
>>398852 Либо можешь вообще без кода обойтись и накрутить всю эту >>398853 тему на Animator.
>>398997 >ITVDN Лучше почитай какую-нибудь Unity In Action или просто начни с туторов на сайте у юнити. Помни, у юнити, скриптинг далеко не на топовом уровне, т.к. расчитывается для людей далёких от программирования.
>>399018 >>пиши что хочешь и как хочешь на готовой кодовой базей >>НИЛЬЗЯ-НИЛЬЗЯ, ТУПА ЗДЕЛОЛИ, Я ЛУДЩИ ЗНОЮ Дай-ка переиначу: >кнопка из коробки реагирует только на левую кнопку мыши и глючно переключает свой цвет >ПИЛИ КОСТЫЛЬ ПИЛИ ЕЩЁ ОДИН ИНАЧЕ НЕ МУЖЫК
>>399023 ебать костыль. ты наверно из тех кто вместо того чтобы наследоваться от базовых классов которые уже существуют пишет свой велосипед каждый раз?
>>399024 Правильно, зачем делать всё ровно и аккуратно с нуля (или переписать хотя бы), когда можно взять готовое, но с тонной ненужного функционала, и при этом костылём приделать нужный тебе.
>>399028 >базовый класс реагирует на левую кнопку мышки >наследованный - на левую и правую, хотя для всех классов необходимы и левая, и правая >но делать нормально нельзя - ООП! ООП!
>>399025 с такими взглядами все ООП это какой-то набор костылей. зачем делать то что за тебя уже сделали и сделали это так чтобы ты, если надо, мог под себя это подстроить? зачем вся эта абстрактная хуйня, дженерики, виртуальные функции и прочее? наверно чтобы самим пользоваться а ты сидел велосипеды писал!
>>399030 базовый класс реагирует на эвент. он кнопка, понимаешь? вот как в лифте, блять! ты видел в лифте кнопки с альтернативными функциями? на них можно только жать. кто же знал что ты ещё что-то там хочешь!
>>399077 да много каким. если взять контур любым удобным методом то можно применить алгоритм рамера-дугласа-пекера к нему в несколько шагов и упростить его до треугольника, например.
Планирую ввести в игру прообраз руки с ригидбоди и использовать ее в качестве активатора (толкать двери, мацать жёппы).
Если я, нубус максимус, понемаю правильно, то на двери, например, нужно повесить риджидбоди для механики И коллайдер, если надо симулировать скрип. Для регулировки звука от происходящего за дверью, надо подвязать угол ее поворота.
я понел про OnTriggerEnter. Эта штука срабатывает только раз, ибо ивент.
Как в Update проверить, какой коллайдер (из нескольких в общем случае) всё ещё перекрывается в коллайдером кого-нить в поле? Мне нужно засекать время перекрытия (например, посчитать насколько один упорно смотрит на другого)
>>399126 Разьясни конкретно что надо. Из того что я понял тебе подойдет такое решение>> OnTriggerEnter(Collider col){ if(col.compareTag("Нужный тег")){ //сработает, если косаемый объект будет с тегом. Иначе Ничего не проихойдет } }
>>399149 По игре нужно, чтобы объекты могли реагировать на близость других к ним. Например, стоит проститутка, у нее коллайдер на 10 метров радиусом. Когда фрайер туда забредет, она на него триггернется (повизгивание, анимация). Также слижком интимная близость (без на то симпатии) тригернет другое поведение.
Это мне понятно, как сделать.
Я же думал заскриптить манеру поведения в зависимосте от того, куда фраер смотрит и как долго пялится. Тут, как кажется, лучше raycast на коллайдеры шлюхи на сиськах и прочем. Рейкастить в камеры первого лица, ее же и зумить.
Спасибо за совет с тегами. Я знаком еще далеко не со всеми возможностями
>>399202 Лепи модельки так, чтобы на сцене сиськи и жопа были разными гейобжектами. На каждый из них вешай разные, полиморфные какому-то интерфейсу, монокомпоненты-вьюшки (титсвью, баттвью). При рейкасте ты получаешь вьюшку через геткомпонент, вызываешь ее метод-реакию на просмотр. А внутри этого метода ты уже вызываешь нужный тебе метод главного бихевиор-компонента самой вхоры, который отвечает за ее реакции.
>>399210 А ещё ты можешь делать проекции по x, y и z и с помощью геометрии выискивать пересечения прямых (или лучей) с фигурами первый курс технического вуза, лёл. Что сложнее, коллайдер или это?
анончесы, хелп. делаю курсач на юнити. остался месяц, а я все еще не ебу какого жанра мне делать игру. делать, конечно, буду 2д. наподобие какой игры будет легче сделать игру? может, что-то будет профитнее делать, по сравнению с другой, но по сути они будут выглядеть одинаково сложнымихуевыми. мне в принципе похуй какую игру делать - меня особо не ограничивали, лишь бы это были не крестики-нолики. короче, я хотел, чтоб игра в создании была как можно проще, но и чтобы это можно было адекватной игрой назвать.
Недавно начал изучать юнити, поэтому задам нубский вопрос:
Допустим, я делаю игру про мага, который швыряет разные спеллы. Спелл, долетев до врага самоуничтожается. Правильно ли я понимаю, что механика должна быть следующая:
0) Создаем префаб нужного спелла со скриптами, частицами и прочим.
1) В момент каста спелла создаем новый геймобжект из префаба.
2) Задаем его скорость, отпускаем в полет.
3) Когда спелл долетает до врага или еще куда, уничтожаем созданный геймобжект.
>>399248 Спасибо, буду разбираться. Тогда еще один вопрос.
Для огня использую систему частиц. Но огонь получается какой-то слишком прозрачный. Какие только настройки системы не крутил, никак не получается этого избежать. Подозреваю, что дело в самом шейдере, но в какую сторону копать - ума не приложу.
На скриншоте видно, что та часть огня, которая попадает на небо, получается очень плохо видна. Как сделать насыщенный цвет огня на светлом фоне?
>>399256 В том и проблема, что я не пойму где это может настраиваться. Отключил color over lifetime. Поставил настройки цвета как на пике. Один черт он слишком прозрачный.
>>399258 Самая нижняя вкладка Renderer. Покрути там, но если я не ошибаюсь тебе там поможет только параметр Material. Создаешь новый матерьял, выставляешь нужный шейдер, там для партиклов шту 15 шейдеров есть, они то и решают
>>399258 ах да если там уже свой матерьял не стандартный, то просто его поменяй. Только еси этот же матерьял изспользуешь в других партиклах то они все изменяться
>>399285 Зашел в шейдер, в самих настройках ничего особенного нет. Какой другой шейдер выбрать не знаю.
Понимаю, что вопросы у меня из разряда "как сделать, чтобы было пиздато", но может есть какие-то гайды именно про создание подобных эффектов для нубов? Туториалы по частицам посмотрел, там ответа на свой вопрос не нашел.
Олсо, вот еще что заметил. Что color over lifetime (3-й пик) автоматически прозрачный получается, когда я его отключаю. Интуиция подсказывает, что дело как-то с этим связано.
Алсоу, вот я пилю симулятор кокономики. У меня есть список объектов класса Фабрика, например. Логика фабрики инкапсулирована в классе, ессно. Но иногда объект фабрики должен прекращать свое существование. Тут я сажусь на велосипед и хуячу нуллом ссылки на фабрики. Но код большой, ссылки на объект имеются в самых разных местах, я могу забыть удалить какую нибудь ссылку. К тому же из фор ича нельзя менять коллекции...
Вопрос - если такой класс что унаследовав от него мои Фабрики этот класс сам будет удалять перекрестные ссылки что бы я не проебал чего нибудь. Это вроде паттерны называется?
>>399337 чет плохая у тебя архитектура если ты за своими фабриками не следишь нигде. если сама фабрика имеет ссылки на все места где она есть то сделай метод "самоудалится везде где меня знают". но вообще лучше просто поправь то что ты наделал. никаких публичных полей, только через аксесоры всё сделай, сделай себе метод который бы переключал флаг в фабрике и тогда аксесоры начали бы верещать что фабрики нет но ты всеравно лезешь. оверлоадни оператор равенства, чтобы он утверждал что фабрика нулл == тру.
>>399337 Зачем удалять объекты? Отправляй их в пул. К нулю не приравнивай, лучше в фабрике пропиши бул, если да, то фабрика живая, если нет, то фабрики нет, и она пропускается.
>>399342 >оверлоадни оператор равенства, чтобы он утверждал что фабрика нулл == тру. Вот это не понял, чем мне это поможет?
>>399342 >если сама фабрика имеет ссылки на все места где она есть то сделай метод "самоудалится везде где меня знают" Это звучит как переусложнение. Там и так многовато перекрестных ссылок, не хотелось бы еще иметь и ссылки на места где могут быть ссылки на фабрики
Хотелось бы что бы фабрика сама за самой следила и сама свои следы уничтожала... Вообще без участия кодера...
А MohoBehaivor не пойдет? У него вроде есть функция удаления ссылок на дохлый объект (или нет) >>399343 >Зачем удалять объекты? Отправляй их в пул. К нулю не приравнивай, лучше в фабрике пропиши бул, если да, то фабрика живая, если нет, то фабрики нет, и она пропускается. Ну в принципе ты прав, так и чутка быстрее будет. Тем более я именные итераторы учился лепить...
>>399344 >Вот это не понял, чем мне это поможет? хороший способ разворошить улей. помогает же это юнити. там же можно написать Destroy(хуйня), но что происходит с ссылками на этот объект? что-то интересное!
>Это звучит как переусложнение. Там и так многовато перекрестных ссылок, не хотелось бы еще иметь и ссылки на места где могут быть ссылки на фабрики если всё на всё ссылается то иди уже до конца, хули. но вообще лучше так не делать если ты не лепишь что-то вроде графа, или другой хуйни где это действительно надо.
>А MohoBehaivor не пойдет? У него вроде есть функция удаления ссылок на дохлый объект (или нет) неа. там чит навроде того что я уже описал. он же не будет лазить во все твои массивы и переменные и говорить что там ничего нет. он просто будет говорить что у тебя тут нулл всеми доступными методами.
>>399366 ты шейдер не пробывал менять? стандартный прибавляет все цвета. То есть если есть желтый на белом фоне, то выйдет очень светло желтый или даже белый. Попробуй поставить шейдер Sprites/default или diffuse если не один из партиклов не помогает. Если и это не поможет меня на другие шейдеры.
>>399366 и чем он тебя не обрадывал, вот черным по белому If you want to retain the original colors the additive blending won't help you - you should use the Alpha Blend.
Карочи блядь, хочу погнуть меш вдоль кривой, но как-то кажется не слишком оптимальным для каждого вертекса высчитывать позицию на кривой, кватернионы и прочую хуйню. Как нормальные люди это делают?
>>399389 1 попробуй поменять тип текстуры в настройках её импорта со Sprite на другой, и там потыкай галочки. 2 удали фон в фотошопе 3 попробуй другие шейдеры
>>399216 Коллайдер проще. Но если твой уровень не ниже индусов и тайцев, работающих на юнити, то твой велосипед будет работать сильно быстрее (потому что в нем не будет лишнего говна).
Ты должен помнить, что при построении велосипедных проекций тебе придется считать пересечения для тридешных фигур, которые несколько сложнее, чем куб и шар. И не факт, что ты посчитаешь это быстрее, чем юнитишный коллайдер.
Выручай, анон, нужен нормальный гайд по разрешению экрана. А то у меня на разных экранах по разному отображается игра, а нужно что бы было одинаково везде. Что ни гуглил не помогает.
>>399463 Там какая-то общая информация, а у меня проблема такая, что на ноутбуке игра нормально работает. Но как только я перекидываю билд на пк с большим монитором. То все кнопки перестают работать, плюс сами объекты не всегда реагируют на клик мышки. Ну и разрешение херится.
Стоят вот такие настройки. Что можно поменять, подскажите.
>>399464 Скорее всего дело в хуевом сочетании canvas -> render mode -> screen space и canvas scaler. Не скалируй канвас когда у тебя УИ в скрин спейсе считается. В скрин спейсе размер элементов определяется сайзом камеры и одно может пидорасить другое.
>>399467 Ладно, с разрешением я вроде разобрался. Но возникла другая проблема. В игре есть кнопки и игровые объекты. В самой юнити все кликается как надо, но в билде как-будто все колайдеры съехали влево. То есть когда я жму на сами объекты, то ничего не происходит, а когда нажимаю на область левее, то все срабатывает как надо.
>>399472 Тоже очень интересно. Только у меня вместо съезжания появляются невидимые двойники для кнопки в случайных местах. Это точно какая-то хрень с разрешением
>>399472 Гугланул, похоже на твою проблему: In the 'canvas scaler' component of your buttons' parent canvas, set the 'UI Scale Mode' to 'Scale with screen size'.
Почему на юнити большинство игр выглядит, как будто это глубокая модификация Team Fortress 2? В большинстве случаев все какое-то мультяшное, картонное что ли.
>>399498 есть куча примеров с реалистичной графикой, но дальше примеров не идет. Юнити больше заточен под инди, а инди не подразумевает топ гта-5 реалистичность. За реализмом есть UE4 там никаких настроек по сути не надо. Захуячил материалы, расставил стены а графон пиздатый по умолчанию. Код там на c++ кончено еще блуприннты есть, на которых можно пилить относительно простые механики
>>399620 Ну блин, я хотел сделать так, чтобы при наборе скорости кораблик медленнее поворачивал, а он велосити приобретает только когда его пидорит линеар драг, а в полете велосити 0, воооот.
>>399686 >>агрессивный чувак. i dont think so >>Дельтатайм все сломал нужно умножить скорость на дельтатайм, и скорость при этом увеличить раз в 10 потому что оно у тебя наверно стало на столько плавным что почти не двигалось, просто скорость увеличь
>>399748 тебе ведь надо чем больше спид тем меньше ротейт? тогда сделай както так float MaxRotSpeed = 10 float MinRotSpeed = 1 float RotSpeed = Mathf.lerp(MaxRotSpeed, MinRotSpeed, moveSpeed / MaxRotSpeed) rotSpeed вставь в ротейт вместо того что у тебя там
Нужна помощь. Есть две сферы, одна низкополигональная, другая высокополигональная. На низкополигональную почему-то не натягивается текстура, в чем может быть причина?
>>399810 тебе кстати возможно проще будет шейдер спиздить, который без разверток и текстур будет ребра рендерить тупа как надо, ну или написать если есть желание и время
>>399811 Попробую. Текстура выглядит слишком бледной, мне надо добиться эффекта свечения, как у линий на первом пике тут >>399779 , но чтобы при этом линии были на ребрах сферы и не было артефактов по краям. Линии нарисованы с помощью Vectrosity, а внутри расположена дефолтная сфера из юнити, чтобы закрывать заднюю
Посоны, делаю кнопки через скрипт и через скрипт задаю события onClick() , но все кнопки возвращают одинаковое значение последний аргумент делегирования как вылечить? в окне инспектора в самой кнопке не рисуется что у нее есть событие OnClick() но при нажатии оно срабатывает.
>>399850 Нормусики, реалистичненько >>399830 >Посоны, делаю кнопки через скрипт и через скрипт задаю события onClick() , но все кнопки возвращают одинаковое значение Вестимо твой делегат подвязывается не к значению i а к ссылке на i котороя в конце итерации равна Length
Как лечить? Хз, я бы ебанул в делегате локальную переменную, что бы сохранить там текущее значение i b yt ghjt,sdfnm его при итерации.
Коцаны а видел кто бесплатные библиотеки для 2д графиков?
Мне для опен-сорсного симулятора экономики, ворованное не предлагать. Или мне ебанутся и хуячить меш графики в 2Д холст каким то образом? (MeshChartFree)
>>399886 Скажи спасибо что это не float с 0.00000000000001 точностью )
А серьезно - норм замечание. Инкапсулирую монеты в куски золота - меньше сущностей будет. Просто я хотел что бы деньги и товары были несовместимы классами, но получилось все равно какая то фигня..
>>399740 а сам чего? там не самый хитрый "алгоритм". просто смотрю где отрезок пересекает линии разделяющие грид, в месте пересечения переключаю две соседние клетки, а потом закрашиваю по одной из осей первый и последний индекс.
>>399939 о неграх. игрок будет ходить по острову и выверять тайны корпорантов, но на него будут охотится локальные негры. очень глубокая идея.
вообще на самом деле просто небольшой фрагмент моего навмеша. оптимизирую поиск стартовой позиции на навмеше, чтобы перебирать не все треугольники в чанке а только небольшую часть. на скриншотике то-же самое применено. центры грида соеденены к центрам конвексных областей которые в нем находятся хоть немного. цыфра - их количество.
хотел добавить "рэйкастинг" на навмеш чтобы была возможность проверять возможность перемещаться в нужном направлении. например для проверки возможности уклонения в эту сторону. а ещё хотел попробовать потрогать нейросети и использовать результаты рейкаста в качестве инпута. здорово же!
Unity-господа, прошу совета мудрого. Я хочу запилить ртс по типу warcraft 2-3, начал делать прототип, научил болванки-капсулы ходить(с помощью navmeshagent), атаковать по клику, автоатачить, выделяться рамочкой и прикрутил хелсбары. НО. Я не потяну 3D-графику, вариант с напарником отпадает. По этому думаю перейти на 2D. Вопрос такой, будет ли работать navmeshagent в 2D? Или для 2D есть другие варианты решения проблемы поиска пути в Unity?
>>400085 >будет ли работать navmeshagent в 2D? Через пердолинг.
>Или для 2D есть другие варианты решения проблемы поиска пути в Unity? В сторе есть несколько, но все в любом случае прийдётся подгонять под себя.
Могу добавить, что рисовать в 2д не так просто как кажется. И напиздить 3д моделей и анимаций может быть куда лучшим решением. Но если ты твёрд в своих намерениях, делай ртс про танки или космические кораблики.
>>400029 нормально они применяются. притом уде довольно давно.
>>400085 2д ещё больше времени сожрет в итоге. навмеш юнити отлично работает и с 2д. особенно новый, где можно крутить зоны с навмешем и нет этих проблем что он только по оси XZ работает.
Я правильно понимаю, что однажды купленный ассет будет помечен как купленный мною и в другой раз на другом компе или после переустановки я смогу его просто взять из шопа?
>>400139 ты в ассет стор заходишь под логином и паролем в свой аккаунт на котором сохраняются покупки. а вообще не дело это мамкину зарплату тратить на никогда не выйдущюю игру
>>400142 > даёт ли платный iClone посасать makehuman Это не знаю, но думаю, что DAZ studio даст пососать им обоим. Порно-тред не даст соврать, поскольку состоит из дазоподелий чуть более чем полностью.
Алсо, кто что покупал на ассетсторе, палите годноту. Я вот недавно взял Satomi Character Pack. Нужны были анимации, а самому лень пилить. Моделька не нужна. Как думаете, я лах или нет?
>>400124 Не особо могу понять всю твою мешанину, но у тебя просто количетсво реальных пикселей твоего размерения не кратно количеству виртуальных пикселей, иными словами размер камеры не пиксельпёрфектный. Не помню, сколько уже раз отвечал на эту тему в подобных тредах.
>>400146 >DAZ studio даст пососать мне нужны рабочие модельки для юнети ренрай с картиночками не моё 100% можно их таскать из даза, но с волосами известная жёппа (>65k).
iClone имеет встроенную синхронизацию губ по аудио. И facial expressions.
Напрягает, что за конвертатор в юнети айклонщики также хотят денег
Ух , ребят, сегодня решил попробовать юнити. Господи боже сколько видюх я посмотрел. Так вот. Для начала решил сделать пиксельного бегающего влево и вправо чувака. Но вот когда я решил попробовать заставить его прыгать, он начал вытворять вещи... В общем нажимаю пробел, он прыгает, анимация срабатывает - все нормально. Только вот когда персонаж двигается прыжок становится не таким высоким и более прерывистым. Прыжок одинаковый и при rb.velocity += new Vector2(0, 25f); и при rb.AddForce(Vector2.up * 25f, ForceMode2D.Impulse);. Прыгаю я по GetKeyDown. В стороны по GetAxis и изменяю позицию. И вот еще... Почему то изменение velocity работает только с Y, если изменять Х, то анимация работает, а персонаж не двигается. Расскажите, подскажите посоветуйте, заранее спасибо
>>400150 Не знаю, с чего ты решил, что iClone не настолько прожорливый по полигонам, как DAZ. Я думаю, что у него и с волосами та же самая жопа будет, но в добавок еще будет плохая оригинальность персонажей, недостаток шмоток и тех самых facial expressions.
>>400167 Бля, похоже я бесплатно прорекламировал Satomi Character Pack.
>>400172 iClone конечно прожорлив, ведь качество того требует. Мне нужно что-то попроще даза для генерирования в юнети, но не такой страх как мейкнъюман
Липсинк и оживлегие мимики тоже желательно их одной коробки.
Кто нибудь билдил в WebGL? Он у меня шакалит изображение ровно на 20%
Т.е. Я билдю под 1920х1080, холст без скаллинга (Constant pixel size).
В плеере Unity - все ок. Открываю в браузере Хром или Сафари при 100% масштабе страницы (в браузере) картинку шакалит) (я использую стандартный шаблон с кнопкой переключения в фуллскрин) Делаю в браузере масштаб 80% - все становится норм. Т.е. фрейм webGL видит себя в 1536х864, ровно 80% от 1920х1080, хотя такой цифры я не вижу ни в css ни в html
Как исправить? Пытаться заставить браузер выставлять 80% вроде как плохая идя? Если нет то как? Css от Unity удалял, проблема вроде не в нем.
>>400240 там либо iframe вставка из другого сайта, либо flash. Вот мне и интересно ведь унити не может во флеш а значит оостаеться вебгл который как я понял подходит для iframe
Аноны, подскажите. На персонаже висит Character Controller и есть куб. Как только он прыгнет, персонаж должен подлететь вверх. То есть мне нужно реализовать батут. Как это сделать?
>>400325 Должен подпрыгнуть персонаж. Просто все способы что я находил, подходят для Rigidbody, типо юзай AddForse и всё. Но с Character Controller такое не прокатывает
Я снова тот анон с батутом >>400324 Кароче сделал я Physics Material и назначил коллайдеру блока, но вот проблема. Предметы отпрыгивают от этого блока, а персонаж нет, даже если прыгать на этом блоке. Я уже хз что делать
Кто-нибудь делал AI глубже, чем зометил-погналсо-ацтал?
Игра будет про флирт и еблю. Посему планирую дать вхорам несколько ячеек памяти и тем разнообразить диалоги "ты вчера съебался, не заплатив" или "а я тебя помню" и дрочить карму.
На чем сейчас не норкаманы делают AI? На аниматоре со StateMachineBehavior к каждому из ключевых состояний?
>>400352 потом что для CController нужно прописывать функции а не просто поастваить колайлер и улыбаться. У кубика должен быть тег и когда CC детектит тег, вызывает соот-щюю функцию.
>>400385 короче скажу наугад. Если ты запекаешь свет, то модель должна быть с галочкой Static или конкретно Light Static. потом если не поможет покрути lighting окно
>>400386 ааа, ну все понял. я все верно угадал. см >>400387 пометь как статик и покрути опции в окне Window>Lighting или типа того. Там амбиенты и все все будет
>>400118 у сисярпа же много синтактического сахару всякого. анонимные делегаты, тернарный оператор и прочее говно.
да, полезно. у шарпа же нет множественного наследования классов, а тут хуйня-муйня сорт оф делает это даже лучше.
>>400198 все та-же 3.5. недавно опциональные параметры функции завезли.
>>400353 я сорт оф делаю. пока соскочил на другое проблемы, долго репу чесал над тем как подружить ИИ и контролер. но ты делаешь какое-то говно для чего какой-то комплексный ИИ явно не понадобится.
>>400440 да, я знаю. всегда интересно задать вопрос таким людям "зачем?". как будто в каком-то коридорном говне, где прелесть в том что каждый угол ручкам сделан, нужен какой-то комплексный ИИ который в таких условиях может выйти за игровые рамки.
>>400462 наздоровье, да. новый навмеш юнити конечно здорово сделан. жаль что нельзя редактировать сам процесс его создания.
>>400467 1. без выкрутасов пока что. для всех Rigidbody.isKinematic = false, Animator.enabled = false. и там ещё немного кода чтобы выключить ИИ и прочее говно.
2. ноинтересней. у меня процедурное древо решений которое составляется из процедурных действий, которые определяет окружение и я сам. GOAP на манер того что был использован в FEAR.
интересный опыт был научить такой сорт ИИ пользоватся инвентарем. на скриншоте у ИИ в инвентаре разряженый автомат ещё, ему надо было выбрать заряжать автомат в инвентаре, или подойти и подобрать лежащий рядом, подойти взять патроны, перезарядить и выстрелить.
Привет гуру. Подскажите про коллайдеры. Есть куб, на нём бокс-коллайдер и текстура ящика, но это не важно. И есть объект с капсул-коллайдером, он находится внутри куба. Задумано, что при выстреле в куб, он исчезает и появляется внутренний объект, как бы из него выпадает. Проблема в том, что при запуске игры внутренний объект сразу вываливается из куба, т.е. эти 2 коллайдера взаимодействуют, хотя внутренний явно целиком помещается внутри куба. Можно конечно скриптом включать внутренний коллайдер, но не оч удобно, таких объектов будет много и хочется по максимуму использовать средства самого юнити, без своих велосипедов.
>>400536 >>400540 а если подробнее, куб должен содержать скрипт хранящий в себе либо ссылку на префаб дропа, и спавнить во нужное время дроп. либо ссылку на выключеный геймобъект дропа который уже в сцене и являеться чайлдом куба, и так же просто включаешь дроп после нужного события куба
>>400536 можешь просто физон разных коллайдеров по разным леерам распределить в Edit > Project Settings > Physics, чтобы они вообще потенциально даже никогда не коллайдились.
>>400542 >>400536 но вообще лучше просто сделай как тебе посоветовали. спавни лут на уничтожении объекта предварительно выключив коллайдер. пара строк кода лучше такой хуйни.
>>400542 Со слоями интересная идея, поколдую (хотя потом всё равно скрипт напишу). Ещё был вариант на каждую грань куба отдельный бокс-коллайдер запилить, тогда можно его полупрозрачным сделать, чтобы было видно содержимое, и при движении будет внутренний предмет двигаться, но мне пока не нужно так. Вот я заморочился из-за мелочёвки...
>>400490 >1. без выкрутасов пока что. для всех Rigidbody.isKinematic = false, Animator.enabled = false
как бы ты посоветовал переделать, скажем, юнити-чан под ragdoll. У нее на скелете вообще никаких rigidbody не наблюдается. Если же вешаю на какой-нибудь джоинт rigidbody, включив гравитацию и выключив isKinematic, то отрывается и улетает в пропасть
>>400555 Кстати, мне тоже интересно. Юнити-чан ведь вроде на characted controller существует. Как быть с этим компонентом, как нормально с гравитацией работать с ним? Насколько я понимаю - это не rigidbody, а некий урезанный вариант.
>>400555 а нахуй там что-то переделать? GameObject > 3D Object > Ragdoll. выстави туда правильные кости и будет у тебя рэгдолл. только размеры и позицию коллайдеров подредактируй и делай их isKinematic чтобы оно не делало сальто.
>>400560 да никак. чего там с гравитацией то работать? CharacterController сам её нормально применяет. можешь на CharacterController привесить Rigidbody, но в этом случае уж лучше сражу ебошить свой контролер с обычными коллайдерами.
Блэть аноны. Что за хуйня? Написал скрипт, чтобы мой куб увеличивался при нажатии на канвас через transform.localScale и он почему-то становится черным как негр в укупнике. Как фиксить?
Посоны, как лучше сделать анимации таскания разных предметов от первого лица, но чтобы поменьше говна наворотить? Для каждого предмета руками делать анимацию, учитывая что они могут быть как в левой, так и в правой руке? и в двух одновременно тоже Или попробовать IK прикрутить? Но тогда еще большее говно выйдет. Есть вообще какой нибудь бест практис для данного кейса? Может какие-нибудь видео туториалсы? В гугле забанили.
Но ведь согласно IEEE 754 оно не должно молча выдавать ноль при делении на ноль и вести себя по разному в разных средах
Пишут что можно эти исключения включить.. Select Debug > Exceptions then expand the tree to select Common Language Runtime Exceptions > System > System.ArithmeticException and check the "Thrown" option. Правда не помогает.
>>394374 (OP) Если рисовать спрайты в PainToolSAI , как их освободить от "рамки" холста, т.е. чтобы в игре была видна только область самого рисунка. Чтобы, например, нарисовав сферу, квадратный холст около неё не воспринимался как часть спрайта. Просто саи очень нравится для рисования, хочется именно в нём создавать спрайты, если так можно
Еще вопрос по ебучему аниматору. В ебучем AnimationStateBehaviour не вызывается OnStateUpdate, пока не закончится переход из другого стейта, а мне нужно вызвать эвент в самом начале этого стейта, когда он еще переходит. Знаю про Animation Event, но с бихевиором больше свободы действий. Я конечно могу это обойти, но может кто-то лучше метод знает? Серьезно, какого хуя, Юнити? Почему я должен городить костыли чтобы даже стандартный инструментарий работал как надо?
Есть пара вопросов перед вкатыванием, игрушка 2Д. 1. Планируется рендерить 2млн квадратных текстурок (типа "пиксельная графика"). Проблемы с фпс будут? 2. Можно ли собрать под линукс и мак без особых проблем?
>>400570 йеп. один хуй проще чем самому руками делать то-же самое. только советую вести руками контроль версий префабов с рэгдоллом. и ещё советую вынести коллайдеры потом на отдельный геймобжект чтобы крутить их нормально.
>>400817 1. но зачем? рисовать допизды чего-то совсем не проблема же. говно как всегда кроется в деталях. че делаешь то? каждый пиксель чтоли рисовать собрался отдельно? вот например смотри. 2.5 миллиона разноцветных квадратиков повернутых в камеру. проблем с фпс нет. 2. юнити же гордится мультиплатформенностью. было бы странно этого не ожидать.
>>400822 >че делаешь то? Я еще на стадии выбора фреймворка, так что пока ничего. Да и я бы сказал чего хочу, но меня обоссут, поэтому стесняюсь. Представь майнкрафт с видом сверху в 2д, а теперь отдали камеру чтобы захватить 2000 х 2000 квадратов. Судя по твоим скринам, проблем быть не должно. Что это за объекты у тебя?
>>400825 зачем тебе такое(по твоим словам, значительное) отдаление? персонаж вместе с блоками станет всего лишь точкой. И сразщу непрошеный совет вьебу, т.к. ты тупой навечёг. сначало начни реализацию, а потом уже вопрошай. Причем вопрошать нужно у гугла и желательно на инглише, а так ты даже ровным счетом ни создал ничего. И это при том что ты за этим и пришел - создать что свое
>>400827 Ну не совсем так. Я где-то с неделю назад поставил юнити, собрал пустой проект, увидел 17мб экзешник и немного приуныл. Потом по гайдам размножил одну текстуру много раз и даже не смог зайти проверить, как это работает, так как у меня все зависло. Я бомбанул и забросил. А сегодня вспомнил, что на сосаче есть раздел с геймдевом, поэтому решил уточнить.
И да, мне именно такое отдаление и нужно, поскольку это что-то вроде стратегии, персонаж будет не один и размером условно с точку.
>>400825 тут всех обосрут, но начнут завидовать когда будет что показать. но зачем 2к х 2к квадратов? ну тоесть масштаб конечно важно, но зачем столько разом на экран то совать? там же не разглядеть нихуя будет. проще пользоваться упрощением того что видишь чем брутфорсить все это. да простые объекты. сделал struct из 8 float (3 на позицию, 4 на цвет, 1 на размер), сунул в ComputeBuffer, нарисовал через Graphics.DrawProcedural создавая все квады в самом шейдоре поворачивая их в камеру. можно и более интересные вещи делать.
>>400826 это не совсем то что обычно видно в профайлере. если быть точным то там 10 х 10 х 158 х 158 квадратиков. 2496400 квадратика.
>>400832 да без проблем. можно даже их все разом редактировать если пользоваться ComputeShader. другое дело что пользуясь всякой шейдорной магией можно таких костылей написать интересных что прямо ух!
>>400845 Я показал, что мне нужно, а как там у него работает это уже не важно, другой же движок. Я тут придумал еще одну аналогию - dwarf fortress. Это вид карты, но в самой игре тоже можно значительно отдалять камеру и видеть игровое поле.
>>400850 Ну давай разберем по частям, тобою написанное. Судя по всему ты нихуя не знаешь, максимум можешь пару скриптов на питоне написать. Для того чтобы отрисовать карту такого типа не нужно 4 миллиона объектов, это во первых. Во вторых, если ты собрался делать ОТКРЫТЫЙ ЖИВОЙ МИР РЕАЛТАЙМ, то у тебя нихуя не выйдет. Хотя у тебя в любом случае не выйдет нихуя, ты же просто кирилл.
>>400853 Мимо, человек умеющий в плюсы сисирп и пхп не зашел бы в эту помойку, и не писал бы невнятную парашу кириллическую. Вместо продуктивного чтения доков, выбрал уже который час ничего не делать. ггвп параша
>>400853 Дело не в юнити, а в отсутствии представлений о том как вообще игры делают. Если хочешь денег заработать по-быстрому, то лучше дальше пили сайты, в гейдеве денег нет.
>>400855 Я не собираюсь зарабатывать на этом, хех мда. Не к тебе конкретно, но в общем ситуация ясна, агрессивные школьники как всегда бдят. Один человек всё же ответил на мои вопросы >>400830>>400834 и я ушел изучать юнити, но агрессивным школьникам захотелось выебнуться глубокими познаниями и просто пиздануть либо что, не давая ни ответов, ни помощи. Укатываюсь на реддит, там вроде бы средний возраст должен быть повыше.
>>400957 Блядь, три секунды в гугле потратить не может и еще кого-то школьником называет. Гуманоид риг блядь сделан для гуманоидных персонажей, там есть ретаргетинг и еще пара плюшек искаропки, типа настроенного IK. В остальном никаких различий. Про клип вообще ересь какую-то написал, риг переключается в персонаже, а не каждом клипе отдельно.
>>400975 я не понял про что вы сретись но в настройках импорта модели во вкладке rig есть где то 4 типа вместе с гуманоидом и генерик. Мне так кажеться
>>400977 У меня есть анимация, которая играется, если риг установлен на джинерик. Если переключаю на гуманоида, но моделька съеживается (muscle space) и не двигается. Юнити выдаёт предупреждение, что анимация не тот тот риг.
Понят но, что мне желательно все модели юзать как гуманоидов. Но анимация несовместима.
>>400980 детекчу mmd-дебила дело не в типе рига внутри унити, а в иерархии скелета. если там дохуя лишних костей, то конечно все по пизде пойдет в гуманоид риге. либо страдай, либо руками анимируй.
>>400997 > как прописать анимацию? Что значит "прописать"? Добавляешь готовую анимацию к скелету и всё. Если ты "проиграл" с нашего обсуждения, то должен был видеть, что гуманоид от дженерика отличается только настроенным IK, ретаргетингом и прочей ебалой, которая подразумевает что у скелета есть руки, ноги, голова и туловище. А так хоть пятикрылого семихуя создавай и анимируй его как душе угодно.
Сап, аноны. Подскажите, как мне сделать постепенное исчезновение 3д-объекта. То есть так, чтобы на него как бы градиент наложился с анимацией состояния этого градиента. Сложность в том, что надо сделать там, чтобы объект "исчезал" относительно глобальной системы координат, а не его развертки, так что анимировать текстурную карту не предлагайте.
>>401053 >О боже. Выучи ты основы. Мамкин отличник? Ты это?
У меня анимация, которая работает, когда риг джинерик, но отказывается, когда переключен на гуманиода. Имена костей те же. В аватаре все, что надо, прописано.
>>401057 > Мамкин отличник? Ты это? Вообще да. Был отличником всё своё школьное время, с начала 90-ых и до первой половины 00-ых, если уж тебе так интересно. Я даже не знаю кем ты там являешься, мамкиным хорошистом или ещё кем, но в треде тебе уже 10 раз всё пояснили, а если ты даже это не понял, то я боюсь представить что происходит у тебя в голове, если ты даже не можешь загуглить "unity generic humanoid rig".
>>401060 Ладно, давай тогда без всякой хуйни. > у меня мокап сделал generic clip Со своим ригом? > Он на гуманоивном риге не играется Скорее всего потому что ты юзаешь на анимации риг из мокапа, но используешь модель с гуманоидным ригом.
Да и вообще, с какого хрена твой мокап хватает анимацию негуманоидную? Ты с кинекта писал что ли?
>>401070 > как джинерик анимацию переделать для работы с ригом гуманоида Когда выбираешь какой аватар использовать под анимацию - выбери аватар не анимации, а модели (это в настройках импорта). Но готовься что всё похерится и придётся ручками налаживать.
https://www.youtube.com/watch?v=DiAqgn1m4-k Няша очень понятно объясняет разработку в юнити на примере создания агарио , наверное , каждому будет очень полезно и интересно посмотреть :з
Сап, есть нуфагский вопрос от человека, очень далёкого от программирования. Вот, предположим, я делаю рпг в которой 100 с лишним видов оружия и у каждого есть свои параметры типа описания, урона, веса и т.д. Вот есть у нас объект "персонаж", у персонажа есть поле "оружие", представленное классом, который мы создали. Откуда брать данные для этого поля? Могу ли я просто написать какой-нибудь скрипт типа "веапон_манагер", в нём прописать все нужные мне экземпляры класса "оружие" (типа меч, алебарда и т.д.) и просто написать в коде что-то типа "Вася.оружие = веапон_манагер.меч" Не вызовет ли такой переизбыток данных (хочу напомнить, что в веапон_манагер около 100 экземпляров оружия) перегрузку оперативной памяти? Или лучше записывать данные с веапон_манагер на диск и считывать с него?
>>401218 >Классы писать. >Могу ли я просто написать какой-нибудь скрипт типа "веапон_манагер", в нём прописать все нужные мне экземпляры класса "оружие" (типа меч, алебарда и т.д.) и просто написать в коде что-то типа "Вася.оружие = веапон_манагер.меч" Не вызовет ли такой переизбыток данных (хочу напомнить, что в веапон_манагер около 100 экземпляров оружия) перегрузку оперативной памяти? Или лучше записывать данные с веапон_манагер на диск и считывать с него?
>>401220 Ну а если видов оружия не 100, а 148888? Или количество вообще никак не коррелирует с нагрузкой на оперативку? Если нет, то где хранятся экземпляры классов?
>>401216 Любые статы и конфиги - всегда в бд, а не в коде, у тебя вообще не должно быть в коде никаких конкретных чисел или строк. Дело не в памяти, а в том, что тебе не нужно рекомпилить каждый раз, когда ты захочешь изменить/добавить что-то, и тебе в любом случае понадобятся сериализаторы/фильтры/кваери/итд.
>>401232 Не слушай это про если ты кирил. Кириллу и так пойдет.
А вообще тебе нужен класс описывающий оружие. Возможно, иерархия классов если ты хочешь обмазаться плюшками наследования. Конкретные данные каждого типа оружия можно читать из БД или просто из файлика, как тот про говорит. Можно и из кода, у принципе, если ты кирилл. Еще можно процедурно генерировать все что б не ебаться с данными. На вот зацени https://procedural-medieval-weapons.herokuapp.com/ https://dattasid.github.io/procsword.html
>>401216 >>Вот, предположим, я делаю рпг в которой 100 с лишним видов оружия и у каждого есть свои параметры типа описания, урона, веса и т.д. бля чет не могу предположить сорян
Как можно на время выполнения одного скрипта, отменить действие другого, если они происходят при тех же условиях, кроме того, что для первого(которому нужно происходить в этой ситуации) к условиям добавляется ещё один пункт , т.е. условия в этой ситуации подходят и для второго скрипта(который стоит отменить)?
>>401216 если ты далек от погромирования то важный тебе ответ: не задавай вопросы пока не возникнет проблем. проблемы решай по мере поступления.
>Откуда брать данные для этого поля? из инстанса этого оружия, конечно же. хотя если у тебя предметы не имеют изменяемых параметров, например прочности или ещё какой хуйни то можно просто сказать "тут хуйня номер такой" и просто посмотреть статы у хуйни номер такой. но лучше так не делать.
>>401219 тут выше хуй хотел 4 миллиона квадратиков рисовать уникальных а ты какой-то хуйней заморочился.
>>401232 на самом деле когда этот хуй дойдет до этих вопросов он уже сам сможет на них ответить.
>>401246 я нихуя не понял, но возможно корутины то что тебе надо. IEnumerator yoba(){ while(smth){ yield return StartCorutine(other) }yoba будет "на паузе" в ожидании конца действия "other" }
Например, нажав E и W - активируется скрипт,который нужен, а другой(который нужно отменить) активируется уже , если нажать только E , так вот, как можно можно сделать, чтобы, если нажаты E и W , активировался только нужный скрипт , а для второго это будет исключением, вот
>>401252 вот что мне пришло в mosk 1. сделать все на стейтах 2. подумать нельзя ли это поменять, или так ли это необходимо 3. поменять комбинацию клавишь с EW E на QW E
>>401260 Просто это же 2 разных скрипта (исчезновение при обычных условиях-1 и создание элемента в нужном месте-2)- наверное , можно попробовать сделать так: If (условия для 2 скрипта и скрипт) else if ( условия для первого скрипта и скрипт) Наверное да, аригато
>>401263 сделай третий скрипт, который будет следить за логикой во всех остальных. чтобы в нем одном проходили всевозможные проверки а другие просто у него спрашивали можно ли им делать ту или другую хуйню. не размазывай логику по всем возможным местам.
Суп гд ньюфажка в треде Есть вопрос: Предложим у игрока есть булава, как узнать скорость в наконечнике? Суть в том что сила удара зависит от скорости булавы в момент касания с объектом т.е во время анимации, от расстояния между рукой и касаемой частью объекта, т.е чем ближе к руке часть модели которая каснулась к объекту тем ниже урон, от доп модификатора
>>401312 Я поменял Vector 2 на Vector 3 и добавил изменение размера по еще одной координате и заработало. Материал почему-то не работает как надо, если куб приплюснут в 0 по любой из координат.
>>401334 начать с осознания того что в гугле есть всё. В офф. доках унити ху3ва туча гайдов для новичков, в том числе и курс как создать простейший раннер
Нубский вопрос, но спрошу. Вот я хочу создать эффект броска предмета. В момент "отрыва" от руки персонажа включаю гравитацию на объекте. Далее нужно приложить силу. Но какого типа, Force или Impulse? Для того чтобы реалистичный бросок получился силу надо прикладывать единовременно, или каждую секунду?
Приделал персу, что шагал наместе, рут моушн. Шагает по панели, уходя в горизонт. Но в свойствах анимации, хотя и прописано, что root motion is controlled by curves, не прописана average speed.
бля, аноны, хелп. открыл юнити 5 и обосрался. суть в чем: камера не показывает границы ее видимости. с самого начала нихуя не менял, так что не ебу. сравниваю свои настройки камеры - такие же как и у других, но у них эта рамка есть. заранее извиняюсь за тупой вопрос.
>>401705 хотя кнопка 2д ничего тебе не сломает. Она просто меняет режим камеры сцены и всё. К тому же меняет в обе стороны, мне вот проще в без этой кнопки работать.
>>394374 (OP) решил в които веки запилить нормальный ,руSSкий ответ второму фолачу.На юнити перекатился недели полторы назад и в Ц# я нуб. Застрял серьезно с такой проблемой: Если рейкастить предмет с тегом 'pickup' чтоб его спиздить в рюкзак,возвращается GameObject который юнити не хочет конвертировать в ItemObject(класс предметов написаный мной,он единственный приемлемый в функции положить предмет в карман) хотя этот предмет имеет скрипт наследника ItemObject.Короче мне либо разрешить чару подбирать предметы любого типа то есть GameObject и тогда будет куча багов и вобще костыль либо что я могу еще сделать в такой ситуации??
Как создавать объекты через Instantiate, чтобы был массив этих объектов? Мне нужно удалить 2 клона объекта при определенном условии. как присвоить массиву эти объекты?
Прошлый тред: https://2ch.hk/gd/res/387294.html
Официальный сайт: https://unity3d.com/ru
Документация: https://docs.unity3d.com/ru/current/Manual/index.html
Уроки: https://unity3d.com/ru/learn/tutorials
Форум: https://forum.unity3d.com/
Магазин ассетов: https://unity3d.com/ru/asset-store
UnityWiki: http://wiki.unity3d.com/index.php/Main_Page
На Unity сделано много замечательных игр - Rust, Блицкриг 3, Pillars of Eternity, Tyranny, Kerbal Space Program и многие другие. Главным преимуществом Unity перед другими движками является его простота для одиночной разработки. Не нужно иметь целую компанию девелоперов, чтобы сделать хорошую игру. Если ты один или имеешь небольшую команду и хочешь сделать хорошую игру без претензий на ААА, то Unity станет лучшим выбором. Тем не менее, даже крупные корпорации зачастую выбирают для своих игр именно Unity.
FAQ
- Какие у Unity сильные стороны?
- Простота разработки, удобный инструментарий, кроссплатформенность, богатая документация, огромное сообщество.
- Какие у Unity слабые стороны?
- Сложность в создании фотореалистичной графики. Для графики "как в Crysis" рекомендуется взять другой движок. Хотя Unity вполне способен выдавать не уступающую любым другим движкам картинку, это требует определённого навыка от разработчика.
- На каких языках я могу писать скрипты для Unity?
- На выбор два языка - C# и UnityScript. UnityScript - это что-то среднее между JavaScript и ActionScript. Выбирай язык по своему вкусу, они оба вполне удобны, но помни, что большинство примеров написано на C#.
- Для каких жанров подходит Unity?
- Для абсолютно любых! Жанр ограничивается лишь фантазией разработчика (и его умением писать скрипты, разумеется). Можно создавать и РПГ, и стратегии, и слэшеры. Можно делать VR-проекты или Minecraft-подобные песочницы.
- На каких платформах работают созданные с помощью Unity игры?
- Windows, Linux, MacOS, SteamOS, Android, iOS, Windows Phone, PlayStation4, Xbox One, WebGL, Oculus Rift и многие другие. Полный список можно найти на официальном сайте. Таким образом, игры Unity работают на десктопах, на смартфонах, планшетах, приставках, в браузерах, VR-очках и некоторых других системах.
- Часто вижу скриншоты с красивой природой на Unity. Как такое создать?
- Очень просто! В Unity встроены удобные инструменты для создания террейна и SpeedTree для создания деревьев и готовая реализация ветра - не нужно ничего писать или скачивать и подключать плагины - ландшафт в Unity создаётся в пару кликов.
- Что такое стартер киты?
- Starter Kit - это набор скриптов и префабов, а зачастую и графических элементов для игры. Они призваны облегчить разработку игры определённого жанра и как правило разбиты по жанрам (Action-RPG Starter Kit, RTS Starter Kit, 3D Shooter Starter Kit, Space Game Starter Kit, VR Starter Kit и так далее). Также бывают стартер киты различных игровых элементов, не связанных с геймплеем (Nature Starter Kit с дополнительными природными объектами, Medieval Starter Kit со средневековыми объектами и так далее). По сути, стартер киты выполняют в разработке игры ту же роль, что и фреймворки в программировании. Однако стоит отметить, что использование геймплейного стартер кита принуждает разработчика изучать большое количество чужого кода и чужой структуры для внесения своих изменений и полноценного использования. В связи с этим большинство разработчиков предпочитает писать почти всё с нуля, получая полное понимание работы своей игры. Новичкам крайне не рекомендуется начинать знакомство с Unity со стартер китов.
- Что нужно уметь делать для создания полноценной игры, кроме Unity-разработки?
- Кроме непосредственной разработки игры на Unity, требуется также уметь создавать 3D модели (3ds Max, Blender, ZBrush), 2D рисунки (GraphicsGale, Aseprite, Piskel), текстуры (Substance Designer, NeoTextureEdit), музыку (FruityLoops, Ableton). Не обязательно учить это всё - например, в 2D играх не нужны 3D модели, а музыка необходима далеко не всегда. Также вы можете скачивать элементы для ваших игр на бесплатных сайтах. Если у вас есть деньги, то все необходимые элементы можно заказать у фрилансеров на https://www.fl.ru/ (русскоязычный) или https://www.upwork.com/ (англоязычный).
- Бесплатен ли Unity?
- Можно свободно скачивать, использовать и продавать готовые игры на Unity с лицензией Personal - это абсолютно бесплатно! Но на бесплатной версии при запуске игры будет появляться короткий стартовый ролик "Made with Unity", а также ваши доходы ограничены 100 000 долларов в год. Для снятия этих ограничений нужно приобретать платные версии лицензий Unity. В конечном итоге, платные варианты используются лишь крупными компаниями с огромными доходами, тогда как обычные разработчики в большинстве своём используют бесплатную Personal лицензию.
Обучение
- Язык
Итак, с чего же начать изучение этого замечательного движка? Прежде всего, с изучения языка. Самые основы C# можно узнать на интерактивных курсах здесь:
https://dotnetcademy.net/CSharp/Beginner
или в текстовом туториале здесь:
https://www.tutorialspoint.com/csharp/csharp_quick_guide.htm
Для изучения основ UnityScript выучи вначале основы JavaScript:
https://learn.javascript.ru/
Помни, что далеко не все элементы JS есть в US. Чтобы понять, в чём разница между этими двумя языками, прочти эту статью:
http://wiki.unity3d.com/index.php/UnityScript_versus_JavaScript
Помни, что тебе достаточно одного языка из двух и учить их оба одновременно не нужно.
- Движок
Если ты уже умеешь использовать язык, то можно приступать непосредственно к изучению движка. Крайне рекомендется купить/скачать книгу Unity in action (Unity в действии). В ней подробно описываются множество возможностей движка.
http://www.ozon.ru/context/detail/id/34792570/
Также посмотри на видеотуториалы с официального сайта:
https://unity3d.com/learn/tutorials
Если же ты не любишь видеотуториалы (или не понимаешь разговорный английский) и предпочитаешь текст, то посмотри здесь:
http://catlikecoding.com/unity/tutorials/
Тут крайне подробно описан процесс разработки и приведены примеры кода. Эти туториалы универсальны и описывают множество различных частей игры, от работы с текстурами до генерации карты мира. А вот в этом туториале описыватся разработка двухмерной игры с видом сверху:
https://www.raywenderlich.com/61532/unity-2d-tutorial-getting-started
Это будет полезно, даже если ты планируешь разрабатывать трёхмерную игру. Ни в коем случае нельзя обойти вниманием этот сборник туториалов:
https://noobtuts.com/unity
В нём подробно описывается процесс пошагового создания разных игр - двухмерных и трёхмерных.
Разумеется, все эти туториалы охватывают лишь часть возможностей Unity. Самый надёжный способ выучить Unity - это начать делать игру и по мере разработки гуглить непонятные моменты.
Шапка: http://www.writeurl.com/publish/zukmrogwv45ptyuseyol