Вы видите копию треда, сохраненную 14 марта 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Прошлый тред: 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
>Какие у Unity слабые стороны?
Жирный сцуко. Для ведроидов вообще жесть. 20мб АПК без контента, 30% обычной лопатной батареи за час игры.
Безальтернативно же
заебали
какой же ты мерзкий
Или тут есть свои тонкости?
gameObject меняется, но если ты его не используешь, то без разницы.
Т.е. скрипт, который по нажатию кнопки что-то делает, и меняет цвет кнопки, лучше вешать на саму кнопку, чтобы иметь доступ к её свойствам через gameObject.GetComponent().
И еще лучше избегать супер-йоба скриптов, которые делают сразу кучу всего, типа GUI, GameLogic и так далее.
Лучшей практикой считается использование небольших скриптов, которые делают что-то одно.
Т.е. из предыдущего примера с кнопкой, тебе нужно повесить на кнопку два скрипта, один дергает анус игровой логики, второй меняет цвет объекта, к которому прикреплен.
Это не всегда возможно, конечно, но пытаться надо.
Ебошишь на объект AudioSource, в него пихаешь нужный клип, снимаешь галочку с Play On Awake и пидоришь скрипт
public class TheSoundOfYoba : MonoBehaviour {
AudioSource audioYoba;
void Start () {
audioYoba = GetComponent<AudioSource> ();
}
void OnMouseDown () {
audioYoba.Play ();
}
}
И теперь при клике мышкой по объекту будет проигрываться тот клип, что ты в него засунул.
Спасибо
Раз - https://www.youtube.com/watch?v=DoDZuFNh4tw
Два - https://www.youtube.com/watch?v=keIANWPiUWE
Основы описаны очень доходчиво, если разберёшься — переделаешь под себя более тонко как тебе нужно.
> Синусы, косинусы, математика векторов
Лол, помню вопли в школе НАХУЙ МНЕ ЭТИ ВАШИ СИНУСЫ-ХУИНУСЫ И ВЕКТОРА-ХУЕРА? НИНУЖНА!!1
Тащемта, в школе они и не нужны были. И хоть бы кто тогда сказал: "Вот если интересна %хуйнянейм%, учи вектора, пидор".
А сейчас они освежаются (или учатся) довольно легко. Это же не ебаные матрицы с логарифмами и прочей хуйней.
> И хоть бы кто тогда сказал: "Вот если интересна %хуйнянейм%, учи вектора, пидор"
Нам так и говорили, что, мол, каждую хуету вам говорят не просто так, потому как экстрасенсов не завезли и никто не ебёт кем вы потом станете. Так что жрите всего по чуть-чуть, а потом после выпуска сами разберётесь на что у вас стоит.
> Это же не ебаные матрицы с логарифмами
Лол, как будто матрицы с логарифмами это что-то сложное.
Когда ты распиздяй, не понимаешь, зачем ты вообще сюда пошёл, половина предметов резко становятся довольно сложной.
Потребуется вот это вот все — буду ковырять. Хотя зачем, ведь где-то уже выложили дюжину велосипедов.
Не нужны там матрицы и тригонометрия. Лепишь на камеру что-то вроде пикрелейтеда, добавляешь sphereCollider и rigidBody, и вуаля, ваша камера готова. Ну разве что position и rotation через rigidBody надо будет менять, чтобы плавно было.
Я вообще не тот кун, которому камера от третьего лица нужна. Я даже не разбирался в тригонометрии (которую я прогулял и продрочил на нулчане) для поворота персонажа за камерой, просто спиздил велосипед и приравнял позицию камеры к позиции игрока, чтобы было заебись.
она будет проходить через стены.
Нормально. Без гравитации и с полным контролем положения в пространстве самое то, будет стукаться об остальные коллайдеры вместо того, чтобы клипаться.
Ну так-то можно и через рейкасты ебашить, но нахуя, если велосипед уже встроен в rigidbody.
Я, вот, сначала персонажа двигал через transform, а потом я понял, что мне надо через стены, все таки, не проходить аки бог.
принцип достаточного основания \ принцип ножа оккамы. юзай этот кал что бы не тратить часы на убогиие велосипеды, жиза проще станет атвичаю
Я пишу небольшой шутер. Каждое оружие у меня представляет из себя GameObject. Соответственно, мне надо сохранить, какое оружие у меня сейчас есть, вместе с его состоянием. Т.е. сохранить куда-ту GameObject и потом загрущить его.
Подскажите, есть ли нормальный способ в рантайме сохранить/сериализовать GameObject?
причем в любой точке анимации
по мойму у тебя недопонимание иерархии.
Вот твое:
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));
Да, я инстантинирую из префаба объект, согласен. Но что, я теперь не могу сериализовать этот объект? Почему в обычном программировании я могу сериализовать объект класса, а тут не могу?
Сохранения происходят при переходе с уровня на уровень. Ну, то есть, да, при выходе и входе у меня должно сохраниться текущее оружие.
У меня куча мобов на сцене бегает тоже с оружием. Предлагаешь у каждого хранить весь набор?
по моему разумению таскать индекс на префаб легче, чем сам объект. Возможно я не вполне понимаю твою проблему
ты че тролишь или как. я понимаю мы бы обсуждали что то пиздецки сложное за гранью реальности. но тут от силы потратишь 5 мин на все три одновременно
если постоянно бояться что ты делаешь что то не так, то нихуя и не сделаешь никогда
от нуба. сделай class weapon{ str name, go model, float reload} и его сериализуй? или заменить GameObject model на String и юзать какой нить resources.load
ну типа на загрузке получаешь весь класс weapon с данными из прошлого левела а модель пулеметки грузиш resources.load(ak47.modelPath);
сорян если хуйню написал, в душе не ебу что такое сериализация. Слышал что это для сохранения и т.п. Для меня это когда за день посмотрел 16 серий любимого сериала.
Я уже второй раз вижу описание такой логики, но нихуя не понимаю. Пожалуйста, объясните идиоту на пальцах и скриншотах, как это должно выглядеть.
Так я не боюсь. Я уже сделал то что надо и всё работает. Просто интересно что из них работает лучше.
скрипт AK-47:
GameObject model
float reloadTime
int maxbullets
спрашивай конкретнее что не ясно.
так же скрипт ak-47 тобишь класс, может не иметь своих переменных, а получать\наследовать от балванки класса вроде WeaponBlueprint
WeaponBlueprint = ak-47, USP, Glock, Bazooka
гугли ООП. Гугли что такое компонент в юнити, в кратце пустой геймобьект это всего лишь точко в пространстве, "не пустой" это MeshRenderer с моделькой(mesh)
я сам нуб, вообще то так что не слушай меня особо. ООП применять новичку вообще не имеет смысла по мойму, только если в игре есть много разных вещей с одинаковыми параметрами. типа негр и белый
Добро пожаловать в увлекательный мир видосов о юнити, чо. Они даже на офф. сайте такие, чтобы делать "как надо" надо самому иметь опыт в ООП и всем прочем говне.
После, но мне не совсем понятен смысл твоего комментария. Говнякать на делфи/mfc/winforms != иметь опыт с ООП.
говнокодер не может в ООП
Одни через Network Manager, Network Manager HUD, Network Identity и т.д.
Другие через Network View
Вот и столкнулись с проблемой, что юнити, на сколько я понимаю, не очень хочет дружить со сложными материалами из блендера. Как поступать в данной ситуации? Неужели вся его работа с материалами насмарку и тот же материал со стеклом нужно будет настраивать самостоятельно в самом юнити?
> юнити, на сколько я понимаю, не очень хочет дружить со сложными материалами из блендера
И в чём это выражается?
Photoshop QUIXEL последний раз было бесплатно, и до охуения просто, готовые пресеты, а можно и свои ебашить
дать юнети пожевать сам файл блендела?
Таки походу я криво выразился. Тут суть дела такова: Есть фон, есть кнопки меню, но на разных соотношениях крана слетает расположение(Например, когда в редакторе настраиваю всё для соотношения 4:3, а потом запущу сие творение на экране 16:10, то слетает расположение кнопок относительно картинки) Короче объясняю я хуёво, но надеюсь кто-нибудь разберёт мой бред и поймёт суть) Был вариант запилить canvas с ui под каждое из возможных соотношений сторон и, чтобы в настройках, юзверь сам выбирал то, что отображается наиболее адекватно для его девайса. Или есть способ наименьшего использования вазелина? Чтобы велосипед не изобретать. Если надо, смогу присобачить пикчи.
Это странно. Если ты задаешь отступы от края внутри элемента, они же должны вместе с элементом перешакаливаться как надо.
Скинь структуру своей штуки, что ли.
Инвентарь в unity
Суть
-Есть базовые ячейки (Порядка 20 в сумме(привязаны к разным частям тела\конечностей)
-Есть предметы которые влазят лишь в определённые слоты.
Скажем рюкзак при всём желании к колену не прикрепишь
-В некоторые предметы можно вкладывать любые\определённые вещи в патронаш лишь патроны, в рюкзак всё что угодно
-Каждый предмет имеет лимит на вместимость к примеру в сумку на 3х3 клетки при всём желании не всунешь вещь размером 2х4
-Планируется мультиплеер, поэтому интересно как реализовать(адаптировать скрипт) под мп без лишнего гемора.
Просьба кинуть толковых гайдов по UI или помочь советом если можете, с меня няшки
> Инвентарь в unity
нехуй делать
> -Есть базовые ячейки (Порядка 20 в сумме(привязаны к разным частям тела\конечностей)
делаешь контейнер в GUI Canvas, в него добавляешь 20 UI Image с картинками пустых ячеек
и ровно над ними ещё 20 обжектов с пустыми картинками, которые будут меняться в зависимости от предмета
дальше их скрипту кормишь, лучше как массив. но можно и не как массив.
скрипт прилагаю. но туда ещё допиливать и допиливать.
> -В некоторые предметы можно вкладывать любые\определённые вещи в патронаш лишь патроны, в рюкзак всё что угодно
у предметов поставь int itemtype который будешь проверять потом
> -Каждый предмет имеет лимит на вместимость к примеру в сумку на 3х3 клетки при всём желании не всунешь вещь размером 2х4
с таким инвентарём а-ля Might And Magic уже труднее.
пиши функцию значит, которая будет парсить клеточки одну за другой, и если клетка свободна, чекать клеточки справа и снизу от неё на "пустость". форму предмета советую задавать в двумерном массиве ноликами и единичками.
> -Планируется мультиплеер, поэтому интересно как реализовать(адаптировать скрипт) под мп без лишнего гемора.
чекать ячейки инвентаря на клиенте. "и_так_сойдёт.jpg" если кто догадается зачитерить и впихнуть невпихуемое — ну нихуя себе вот ето проблема, впихнёт в сумку на 4 предмета больше. невелика потеря. всё равно твою НАКОЛЕНКЕ-игру им лень ломать будет а для инвенторя [SerializeField] и синхронизируем массивом при подборе-использовании-выбросе предмета.
всегда веселит когда нубы говорят про то что их игру кто то будет читерить. Проблема в том тчо твоей игры нет и не будет никогда, понимаешь?
> всегда веселит когда нубы говорят про то что их игру кто то будет читерить
Довольно частая ошибка новичка. Они сначала покупают седло, а уже потом лошадь.
Чаще всего у таких игра дальше архитектуры и тестовой сцены не уходит.
> Мне очень важно твоё мнение
Ну я просто сказал то, что очень часто наблюдаю. Я ж не говорю что ты обосрёшься со своей игрой или что ты кодить не умеешь или ещё чего. Я просто говорю что очень часто народ со своими разработками забегает дальше, чем нужно. Всему своё время.
видно ты с похуизмом отнесся, потому что я смотрел 2 версии инветаря и обе включали вообще все что ты описал, кроме заморочек про читерство.
у меня нет слов.
короче, послал не бох давеча таблетку с андрюхой, Irulu Expro X7, ну и значит как любой нормальный пидарас я сразу решил забилдить на неё что-то. и вроде всё работает и даже еграть можно, но тут я напоролся на пиздец под названием ТЕРРАЙН.
так вот, сей ненормальный пиздец делает пикрел при любом раскладе связанном с мелким тайлингом (начинается примерно с 32х тайлов на террайн).
ессесно я принял бой и сражался как истинный паладин, но всё же обосрался и обосранным прибежал на гд просить подмоги.
что я перепробовал:
• обычный террайн со сплатмапом и террайн шейдером
• террайн, запеченный в меш со снятыми с него картами нормалей и сплатов
• Standard Shader с Detail Map
• Mobile Normal Shader
• Самописный шейдер с деталь-мапой, в котором вместа fixed2 в анрапе стоит float2 (должно было избавить от ошибок округления, а хуй там)
• Самописный мейдер в котором вместо UV меша для UV деталь-мапы используется _worldPos.xz перемноженный на переменную кол-ва тайлов
• перебор различных форматов компрессии текстуры под мабилу
• отключение Mip-Mapping
• отключение Anisotropic Filtering
• парсинг решения на ЮнитиАнсверз до последней страницы гугла это дерьмо не у меня одного, но ответы там от кирюх
• рейджкьюит из юнити
• ПЕРЕЗАГРУЗКА OS MICROSOFT WINDOWS
билд под андрона прилагаю. я ебал. это дерьмо невероятно.
http://rgho.st/6RVSrNfss
предлагаю следующий велосипед.
сделай все отдельными спрайтами
крепи также относительно сторон
Я может немного не об этом, но в спрайтэдиторе можно сделать разметку, внутри которой всё будет тайлиться, а за границами разметки всё будет статично.
http://dropmefiles.com/vjj0Z
есть подозрения что всё это может быть связано с древностью самой таблетки и её максимальным нищеебством
>>394944
там на всех шейдерах одинаковый результат. пока что самая умная мысль что была на юнети-форумах заключается в том что анрапу не хватает пресижена: https://forum.unity3d.com/threads/mobile-terrain-texture-pixelization.231680/
не, тогда было бы всё с точностью до наоборот, детали акцентуировались бы. а ВОЛШЕБНО ПУТЕШЕСТВОВАТЬ егрока в манямирок майнкафта чет не хочется
OH WOW, уже кое-какая информация.
таки да, в мануалах по юнети указано что у разных девайсов float'ы шейдеров говнякаются по-разному, то в 24 бита, то в 16. но всё равно спасибо большое, я удостоверился в понимании сути проблемы.
Да нет же, вполне симпотично. В стиле даггерфола или первых квейков.
и тебе спасибо.
короче, раз оно не зависит от девайса, остаётся всего два решения
либо разбивать меш на части и/или вообще делать модульный террайн
либо хуйзнабить, убрать детальмапу, пусть земля будет размытая как ёбь
в том смысле что от девайса зависит степень зашакаленности карты деталей, а не сам факт зашакаленности.
Galaxy Note 2
изначально все элементы были спрайтами, потом в пикчу слепил для удобства. Изначально небо\трава\столбы были тупо вынесены на сцену и настроены под определённое разрешение. Соответственно, ничего не закреплял на canvas`e, т.к они вообще лежали отдельно. Потом пытался вынести столбы в canvas и закрепить относительно сторон, но юнити их внаглую отказывался видеть(Не исключаю фактор моей рукожопости) Вроде выставлял приоритет отображения, играл со слоями и результат был = 0. Но т.к делать больше нечего, то попробую ещё раз и потом отпишу.
>>394942
Поподробнее можно? ну или где копать хоть?)
We have a WINRAR!
> Поподробнее можно? ну или где копать хоть?)
Ну просто жмёшь на кнопку и размечаешь поля. Всё что снаружи — не деформируется. Всё что внутри — тайлится.
Спасибо потыкаюсь. Позже отпишу, если будут вопросы.
Параметры тайлов такие:
TileWidht = 4; // unity units
TileHeight = 2; // unity units
TileOffset_X = TileWidht/2;
TileOffset_Y = TileHeight/2;
блять, да зделай жи ты нормально
чтобы тайлы были гейобжектами, чтобы ты их рейкастил без базара, чтобы можно было камеру нормально двигать и без привязки к положению курсора (а у тебя хуй ты подвигаешь её, нужно велик писать), чтобы тайлы нармально обрезались по фруструму камеры
чтобы всё как у людей было короче
А ты парень серьёзный, я смотрю.
1. Объясните нубу что значит "A*".
2. В чем проблема за 5 мин сделать яйчеки раздельными как написано выше?
чо
астар это максимум дефолтный алгоритм поиска пути, ну там для рогуликов, для говна двадешного
лол, успел как круто, уже хотел переспрашивать
Интересно, нахуя, ведь один из первых геймдев туторов на сайте поясняет за игру с клетками и пошаговостью.
Это правильно так как размер тайла 30х16 если делать без стыков то будет 32x18 в уме 32x32 так как двиг будет комповать на ^2 размеры при верных пропорциях.
ты за какую дешевизну борешься? там нет нихуя стоимости этого сраного рейкаста, да в шутанах в которых предметы можно подбирать эти рейкасты каждый апдейт летят, а ещё и враги есть которые рейкастом каждый апдейт игрока ищут глазами
но нет, НЕТ, ХОЧУ ВЕЛОСИПЕДИТЬ А НЕ ИГРУ ДЕЛАТЬ
всмысле дешевле, игра для старой nokia? хуй знает я слышал процессор делает триллионы операций в секунду, не верю что рейкаст займет хоть 1\100000000000000 часть
Ну давай я объясню, В моем способе я просто трансформирую курсор в мировое пространство и чистой математикой высчитываю индекс в массиве, так делается во всех нормальных играх пруфов не будет, но есть статьи ро фаллаут и дьябло, так-же есть движки типа FIFE это быстро работает, можно считать хоть каждый кадр, а не клик считать. Если пускать рейкаст из камеры в геймобжекты то во-первых так как игра не тайловаяу меня отрендреные беки, большие куски то мне придеться просто генерить поле коллайдеров, во вторых мне нужно будет для каждого коллайдера вешать класс наследуемый от мономехавиер, даже если в нем просто будет храниться индекс массива или можно давать именна в честь индекса и переводить из стринга в инт что тоже глупо. думую дальше обьяснять не нужно. А мой алгоритм работает на половину, мне просто нужно помощь разумиста-математика, что-бы додумал, я то дурак с задней парты.
Аллгоритм отлично считать строго по границам половину первого ряда, мне нужно понять как его дороботать и в чем сейчас ошибка, можете посчитать таймером, мой алгоритм даже в такой реализации, против кучи колайдеров 4096х4096 ,рейкастов и класса от монобехавиер.
если ты знаешь что ошибка в расчетах, почему не дебагнуть через Debug.drawline(от камеры до точки) и проверяй на сколько, где и куда отклоняеться линия. Ну и меняй циферки в коде как надо.
Я смогу найти ошибку, но буду делать это еще с неделю т.к. не полный рабочий день занимаюсь этим проектом, но задача тривиальноя и Анон знает решение, так как он очень умен, сейчас он придет и поможетнет, подожду и пойду дальше считать это гавно.
> так делается во всех нормальных играх пруфов не будет, но есть статьи ро фаллаут и дьябло
какой год, напомни?
> это быстро работает, можно считать хоть каждый кадр
рейкастов за кадр можно хоть 100500 посчитать
> придеться просто генерить поле коллайдеров
for (int y=0; y< 128; y++) {
for (int x=0; x< 128; x++) {
не благодари
> во вторых мне нужно будет для каждого коллайдера вешать класс наследуемый от мономехавиер
ну и ну.
а ещё в этом классе можно хранить дохуя полезной инфы, например.
короче, зря-зря.
ну удачи, только есть мнение что тут ты нихуя не получишь. По этому попробуй на unity3d.ru
та так и есть конечно, просто я поспешил, еще не ночной и все что-то понимающие аноны спят.
> предлогает вместо простого сложения
у тебя велосипед головного мозга
> использовать 4096х4096 коллайдеров
я буду хохотать когда ты в игру будешь запихивать свою текстурку 122880x65536 в игру
ну и да, ВКЛЮЧАЙ КОЛЛАЙДЕРЫ @ ОТКЛЮЧАЙ КОЛЛАЙДЕРЫ если уж так поехал по оптимизации
> еще не ночной и все что-то понимающие аноны спят
МААМ ОНИ ВСЕ ТУПЫЕ НЕ ОЦЕНИЛИ МОЙ ПОГРОМИЗДСКИЙ ГЕНИЙ
Да нахуй тебе вообще курсор, стрелочками переключайся между тайлами.
>велосипед
Не хочется отвечать на флейм, но что-ты имеешь ввиду под велосипедом, ведь как раз этот термин больше подходит под те кастыли которые ты мне предлагаешь с коллайдерами. А насчет сложение обьяснять не буду, сам найдешь, но есть только 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));
Только полный дурак может посоветовать то что ты советуешь, прости конечно, но я бы тебя нахуй послал, но не Б.
слушай, делай как хочешь, обвиняй всех в том что они тупые и не делают как ты делаешь, да мне насрать, вот честное слово
Помогу этому анону представь что у тебя не изометрия а диметрия и каждый тайл это квадрат 1х1, если позиция мышки в (13,14)? то значит индекс узла в массиве [13,14], и так далее, а ты предлагаешь ему лепить велосипед из коллайдеров и рейкастов, вместо простой трансформации векторов.
Какая разница между 4056x4051 или любого другого?Это не имеет значение, перебераются соседние клетки, накидываются веса и проверяется на проходимость. Ты вообще знаешь что как работает А*?
превет я не понял проблему но напишу свой высер что если округлять не до 1 2 3 а до 0.5 \ 1 \ 1.5 и т.п. а что бы было проще есть при импорте строчка pixels per unit, тобишь если твоя картинка 512 пикселя, ставешь 512 и вуаля твоя картинка стала 1 юнит в длину
пиздец я тупо написал, начиная со слов "а что бы" это уже идет второй вариант для раздумий а не первый
Испанский стыд.
Нужна возможность рисовать линии на подобии пикрил (ссорян за кривой пик, рисую мышкой)
Т.е наподобии линий в paint.net c задаваемыми "головками" и и изгибом (опционально)
Он кривой пиздец
всмисли
Итог: рукожоп. Я прикреплял якорями не к тем же сторонам, что и кнопки. В итоге был анал-карнавал на экране. Прикрепил в те же места, и всё встало на свои места. Тонны нефти всем, кто помог)
Рисую с помощью Vectrosity, мне норм. В 2d и на GUI там тоже можно рисовать, стоит 30$.
Как сделать что бы камера меняла позицию только когда спрайт будет на определенном расстоянии от цетра стороны куба, на которой он находиться сейчас?
Например камера стоит ровно, но когда спрайт достиг 2 клетку от края, камера тогда "подгоняется" Как по вертикали так и по горизонтали отдельно. А сейчас камера движется каждый шаг как на гифке.
сейчас камера работает так (куб - спрайт).normalize * distance
У меня все заебись.
Держать финальное значение в тупом поле и обновлять хуками или высчитывать в геттере?
Создавать ентитьку только на релейшн баф-перс, или объектизировать каждый стат и создавать релейшны между конкретным статом и влияющим на него эффектом?
Настоящие посоны знают инглиш, поэтому выясняют вопросы по движку на русскоязычной борде.
Все так делают, и ты делай.
Ну знаю я английский, и что? Твой дефективный жаргон от этого понятнее не становится
Ты промазал, я вообще не он, я тебе попытался донести мотив таких вот жаргонистов.
Я хз где ты там жаргон нашел, такие термины русского официального перевода не имеют, поэтому транслитерируются испокон веков, причем на испанский/китайский/итд точно так же.
Вот с частью с поворотом у меня ничего не вышло. Попробовал вращать трансформ самой системе, пробовал делать её ребенком пустого родителя и вращать его, но не выходит. Дальше копать по поводу вращения, или я вообще не то делаю?
А, всё. Разобрался. Я подсознательно боялся кватернионов, видимо.
А тупо новый вектор создать нельзя? Ну типа:
Vector3 direction2 = new Vector3;
direction2.x = -(direction.x);
direction2.y = -(direction.y);
...
Но я в общем-то сам за советом пришел, а не советовать.
Аноны, хочу запилить тир с девочкой-волшебницей. Если вкратце, то девочка бегает по небольшому уровню, прячется за препятствиями и стреляет по игроку. Игрок стреляет в ответку с фиксированной позиции, попадая по всяким интересным коллаидерам на теле волшебницы и проигрывается красочная анимация с исчезанием одежды на ней.
Проблема только в том, что я не программер, а больше 3д-моделлер и аниматор. Поэтому думаю по максимуму использовать популярные плагины к Юнити. Итого, есть два стула:
1) Использовать RAIN в связке с Mecanim. Продумывать сложное поведение девочки на карте, работать с многослойной анимацией с красивыми переходами.
2) Легаси вместо Маканима. Всю анимацию пилить во внешнем софте. Самому пердолиться с АИ, рассчитывать линию видимости, карту пути и прочее говно, которым должен заниматься программист.
На какой сесть? Какой путь даст больший шанс, что я смогу рабочий прототип в разумный срок выкатить?
>>Я моделер, значит делать упор на графику или код, имея готовое программное решение?
Ответ яснее солнца.
Дополню тем что ты немного ошибся тредом. Советую тебе поглядеть порно игор тред по соседству в gd.
>порно игор
Не, порнушку пилить не собираюсь. Девочкам-волшебницам обычно меньше 18. И потом, для создания качественной анимации непотребств в Юнити на самом деле нужна высокополигональная модель с охуенно сложным ригом и морфами + симуляция физики волос и одежды.
Порнотред полон пидорами, которые собирают вместе рендеры из Позера и называют это игрой.
Алсо, думаю взять компромиссное решение: Rain + legacy animation system. Меканим что-то кажется очень комплексной и затратной по времени штукой.
Или мне надо пользоваться 2D рейкастами и фильтровать землю-небо-аллаха?
> вызываешь ли ты где то detectYoba
В Update(), ежжи.
>>395323
Просто у меня уже возникает вопрос, находится ли луч там, где я предпологаю, или он хуй пойми где хуй пойми куда стреляет.
transform.right, оказывается, указывает на стрелку оси в глобальных координатах в точке 0, 0, 0. Зачем — непонятно. Пока что я пилил взаимодействие с предметами под носом у игрока, и, тащемта, вернусь к системе с узеньким коллайдером, но, блядь, обидно, что лазеры из рук не попускать.
> transform.right, оказывается, указывает на стрелку оси в глобальных координатах в точке 0, 0, 0
Или нет. Как работает это говно!?
таки да.
а почему нет? transform.up частенько пригождается в мелочах, вот они и transform.right пихнули. чисто для удобства. чтобы складывать с ним, или брать проекцию на ось
у тебя ограничена длина луче в 0.2, а судя по пикче спрайт размером около 1.2 тоесть луч даже не выходит за пределы спрайта
сложна
есть же готовые решения. от самого юнити или от Photon. уверен что нужно велосипедить?
>>395337
Нет, я, конечно, тупее команды разработчиков буду в (количество_персонала * 2) раз минимум, но эта штука очень странно работает. То у меня луч шел почти к центру мира, то он идет из персонажа в нужную сторону.
>>395338
Объект, на который я это креплю вообще 0.16 в ширине.
>>395339
Родителя нет, все нормально. Опять же, хуй знает.
Эта штука заработала как надо, отложу ее до изобретения внутриигровых бландербасов. Сама функция теперь в FixedUpdate().
Смысл в чем. Есть проект на юнити. Готовый. Но к нему нужно написать веб-сервер и поднять. Если поднять я смогу, то с написанием я полный 0. Вот и интересуюсь на правах профана.
1.
>>То у меня луч шел почти к центру мира, то он идет из персонажа в нужную сторону.
это именно потому что
>>Нет, я, конечно, тупее команды разработчиков буду
2. что значит бландербас
ну вот я и говорю — бери готовые решения. серьёзно, ты хочешь с этими протоколами связи совокупляться?
хотя погоди, а в чем соль этого сервера? если вдруг ты там хайскоры собрался хранить то просто Apache поставь и SQL-запросами отправляй/забирай. нужен сервачок чтобы с друзявками побегать-пострелять? вам Photon Cloud, забирайте, до 20 рыл единовременно — бесплатно и без постоянно работающего сервера ПИЗДЕЦ ХАЛЯВА СТАВЬ БАЗАРЮ ЕЩЁ ЗАХОЧЕШЬ
А я и не спорю, лол. Был бы умнее, давно бы закончил прототип, пилил бы стартовую локацию.
Бландербас — это огнестрел.
Вращай камеру на такой же угол, на который вращается персонаж по оси Z.
1 можна не делать изгибы
2. вращать камеру можно проверив угол между направление движения игрока и ммировой forward(ну или той, при которой когда персонаж бежит ровно влево или вправо, это ось ему паралельна)
или можно прилепить камеру тупо к бочине игрока, а когда он захочет(если так можно будет) повернуться слишком много то просто остановить камеру в нужный момент
тоже по углам проверять всяким
Я полный нуб в программировании. Скачал фреймворк для пошаговой стратегии, потихоньку копирую части кода, разбираю их и переиначиваю для своих целей, но этого явно недостаточно, чтобы разобраться, что делать с этой хуйнёй. Поясните, пожалуйста, один момент: по какому принципу делать abstract, virtual и override так, чтобы во-первых не возникало ошибок из-за конструкции вида Class class = new Class();, во-вторых можно было из любого места вызывать этот оверрайд, а игра принимала этот оверрайд вместо основной функции, и в-третьих присобачить к этому делу ивенты. Я кое-как сообразил до использования текстовиков и подбираюсь к словарям, но сдаётся мне, есть куда более простые способы это всё организовать.
Если есть какой-нибудь материал хороший по теме, то буду очень признателен. Но я полный нуб в программировании, я банально не понимаю, что имеется в виду в тексте как на MSDN и подобных сайтах, мне бы чего попроще.
Забыл написать
Мне именно совет по конструкции нужен, как это организовать всё. Во фреймворке том хаос, по крайней мере я не могу какой-то последовательности вычленить, все переменные и функции туда-сюда прыгают.
в ютюбе ройся примерно по таким тэгам
unity3d OOP, unity3d inheritance, c# ООП наследование. там с примерами и человечиским языком полно видео
тобы во-первых не возникало ошибок из-за конструкции вида Class class = new Class() че за бред ты пишешь конкретне пожалуйста, причем по всем пунктам. Хотя нет не надо, просто гугли не то что не понятно msnd а даже на офф сайте юнити есть уроки по OOP простые
Ну по условиям, в космосе трения нет. У кораблика 4 маневровых движка. При этом, если включить какой-нибудь из них, а потом выключить, то по закону сохранения момента инерции, корабль будет вращаться так бесконечно, пока ты в противоположном направлении не создашь такой же импульс. А хомосапиенсы слишком плохо контролируют работу н-количества двигателей и плохо вычисляют кватеринионы в уме, поэтому автопилот берет эту сложную работу на себя. Игрок задает мышкой направление или цель, на которую надо сориентироваться, а автопилот включает нужные движки в нужном направлении на нужное время, а потом осуществляет тормозной импульс, чтобы сориенироваться точно как надо.
> по какому принципу делать abstract, virtual и override так, чтобы во-первых не возникало ошибок из-за конструкции вида Class class = new Class()
abstract используй, если тебе нужен просто общий родитель для остальных классов, и ты не собираешься этого родителя вызывать в школу.
virtual можно вызывать, можно и перезаписывать.
override есть перезапись для абстрактных и виртуальных классов.
> во-вторых можно было из любого места вызывать этот оверрайд
В смысле? Сделай класс публичным, вот и все.
> присобачить к этому делу ивенты
Update()
> какой-нибудь материал хороший по теме
C# Player's Guide, CLR via C#. В /pr/ пояснят.
Например, если цель находится как-то по диагонали, а корабль вращается вдоль продольной оси, то вручную каждым движком сложно управлять. А Слишком аркадно делать я не хотел, по типу "Куда указываешь, туда просто перемещается транслейтом, без учета предыдущего импульса и инерции". Короче, пытаюсь на два стула сесть.
Нахер тебе вообще отвлекаться на юнити, если ты еще не умеешь кодить? По-хорошему бы тебе через пару-тройку языков сначала пройти, но если влом - то хотя бы на голом шарпе сначала туториалы поделай.
ваще не врублюсь по мойму проще через lerp и slerp всё делать и по ним же вкл\выкл частици на движках
хуй знает графон четкий а какие там движки физические мне кажеться всем похуй будет
Ну как сказать, допустим в момент интерполяции того же вращения кораблю прилетает снаряд, а он как терминатор, даже не реагирует и продолжает интерполироваться? Или другая ситуация: попали в двигатель и вывели его из строя, соответственно, как тут интерполировать с учетом вышедшего из строя движка?
>> как тут интерполировать с учетом вышедшего из строя движка?
а как без него? gameover же.
>>кораблю прилетает снаряд, а он как терминатор, даже не реагирует и продолжает интерполироваться
виден недостаток опыта
976x655
Пробовал делать топдаун, выходит страшновато. Изометрия ещё хуже - в четыре раза больше объём работы.
Пилить 3д, дёргая анимации? Завести раба-дизайнера?
зачем он тебе можно узнать сначала? просто есть мнение что ьеюе это нахуй не всралось
БОЛЬШЕ БЛУМА ТУДА БООООЛЬШЕ
слишком контрастная стилизация текстур. То есть какого хуя у тебя пиксель арты поверх качественной плитки, и полностью черные перегородки
обдумать интерфейс, может карту как в кс
рисовка должна быть одинаковой короче. А иначе ебашь сразу пиксель арты с фоном как gta5
>а как без него? gameover же.
Без одного или двух (если в разных плоскостях) ещё вполне можно маневрировать, но это накладывает свои ограничения. Зато сколько интересных ситуаций.
>виден недостаток опыта
Можно пояснить?
359x319
>зачем он тебе можно узнать сначала? просто есть мнение что ьеюе это нахуй не всралось
Сам не знаю. Изначально это задумывалось как рогалик на заброшенном космическом корабле/станции. Но пока ничего из механики кроме стрельбы на физдвижке нет.
Поэтому я думал может вообще не заморачиваться с рисованием, сделать один неанимированный тайл на персонажа и сосредоточиться на другом?
>>395533
Я террейн пока не делал вообще, эти тайлы дёрнул откуда то. Cлепил только персонажа, несколько пушек и ботов.
Интерфейс не попал в кадр, чтобы не разсирать видео. Пока что там хп бар слева вверху и иконка шуты слева внизу.
>рисовка должна быть одинаковой короче
Хорошо, был соблазн понадёргать на окружение текстур, чтобы не заёбываться самому.
Но есть что-нибудь относительно самого персонажа? Какие-нибудь детали, которые режут глаз, что то чего явно не хватает?
> Поэтому я думал может вообще не заморачиваться с рисованием, сделать один неанимированный тайл на персонажа и сосредоточиться на другом?
Это твоя первая игра, да?
Прототипирование тебя спасёт, мой друг, излишний перфекционизм в геймдеве вреден. Пусть у тебя вместо героя будет кубик, а вместо врагов — шарик, потом доделаешь как надо. Ебошь механику.
>Это твоя первая игра, да?
Несколько лет работал в окологеймдеве, но в основном я добавлял какие то фичи в старый самописный движок ещё на 9 директиксе, рисованием занимались специально обученные люди.
>излишний перфекционизм в геймдеве вреден
Согласен, но...
>Ебошь механику.
...механика хтх, например, чётко привязана к анимациям. И в ебошеньи механики прийдётся местами оставлять место для будущей визуалкидо которой всё равно дойдёт, если я раньше не найду работу
Может отдалить камеру вдаль, чтобы почти нихуя не было видно?
В сторе и на гитхабе какое-то самописное говно с хуй да нихуя функционала. Хибернейт или энтити как-то вообще интегрируются готовым решением? Или подразумевается, что я свою модель делаю отдельно, а потом каждый раз руками в юнити правлю юзающие ее классы?
ну мне какбэ проще изменить 1 строчу в схеме, чтобы оно само обновило базу и код в 30ти местах, чем делать это руками
что за магия
Аноны, похоже RAIN AI нихуя не работает в 5.6 версии. Из-за какой-то странной баги нельзя ни легаси клипы анимации загрузить, ни Mecanim Animator включить. Да и вообще, похоже что разработчики забросили плагин и разрабатывают специализированную хуйню под виртуальную реальность.
Качаю старый 5.3 редактор от безысходности.
Кто-нибудь посоветуют альтернативный плагин для АИ, который еще живой?
Настолько привык сам все ковырять, что удивляюсь, когда кто-то упоминает плагины.
Сам только начал пилить ИИ для экшн-рпг, уже предвкушаю многочасовую еблю, ммм.
Потому что так в фреймворке сделано. Подражаю стилю настолько, насколько могу, но там в самом фреймворке мешанина. Но вообще, как я понял, чтобы иметь разные вариации одних и тех же функций. Можно и как-то словари к этому прикрутить, но это мне кажется слишком сложным.
Вот, например, во фреймворке есть пасфайндинг какой-то странный. Когда выбираешь юнита, создаётся несколько словарей, куда закидывается дохрена гексов во все стороны, чем дальше разрешено искать путь, тем сильнее лаг. Я, конечно, не знаю, но подозреваю, что дело именно в создании тонны словарей. По сравнению с этим мои свитчи и ифы на 100 строк никак на производительность не влияют.
>>395594
Для чего это надо?
1225x595
Сажа приклеилась.
https://forum.unity3d.com/threads/state-machine-coroutine-vs-update.103110/
Первая ссылка. Сразу свитчи идут.
Пилю понемногу. Упростил анимацию, а то чем дальше заходил, тем больше проблем было. Сейчас собираюсь сделать смену оружия на пистолет и обратно, но всё никак не соберусь.
мм а я то всю жизнь думал что надо брать минимум первых 5 ссылок https://blog.playmedusa.com/simple-fsm-like-structure-with-coroutines-in-c-unity3d/
Мне надо чтобы АИ правдоподобно прятался за укрытиями от игрока, ну и стрелял в ответ, выбирал разные варианты перемещения по карте. И само собой, без анальных ограничений, чтобы можно было кодить свои действия для АИ при необходимости.
Алсо, RAIN все же заработал у меня, после целого дня мучений. Надо было всего лишь allow depreceted functions галочку в настройках поставить, анимации через такую жопу вполне себе подгружаются.
Варнинг появился когда клипы перестали работать, при исправелении варнинг не исчезает, указывает на то же, теперь не существующее место, и клипы все равно не работают. Так что варнинг последствие какой-то другой ошибки.
Это дно и так делать не надо. Потом пожалеешь.
Вообще 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().....
поведение любого агента задается просто списком действий
для большинства простых игр этого хватит
>>395075
>>395071
>>395062
>>395059
>>395049
>>395046
>>395043
>>395042
>>395021
>>395009
Если кому интересно, то вот решение для такого типа сеток, а сетка как я понял не тривиальная, писаю в рот тем кто предлагал пускать рейкасты и генерить 16.777.216 4096x4096 геймобжектов с коллайдерами, учите аллгебру что-бы не проебать выходные как я.
а теперь скажи, ты получил удовольствие? будто потрахался, да? смачно задоминировал шарп своим нехилым интеллектом? стал на чуточку умнее, научился чему-то новому, развился над собой?
серьёзно, чувак, рукоплещу тебе. это определённо того стоило. теперь игру хоть можно доводить до конца, а то прям аж застрял с этими ромбиками, эх. браво, короче
Кстати, если используете встроенный мультиплеер юнити, насколько он удобен и хорош, сколько коннектов держит?
1. Тебе бесплатно никто сервер не даст
2. По твоему сообщению ясно что ты нуб(не можешь сам гуглить, не шаришь в азах), и поверь фотон это твой единственный выход
Я гуглил. Нашёл только 1 хрень более-менее дешёвую и с хорошими отзывами. Ищу альтернативы.
Да, оно мне надо.
Либо какой то мануал по написанию сервака для юнити.
>>395678
Не хочу я фотон. Он платный и говно. Ну, который облако. А для Фотон Сервер у меня денег нету.
Кто нибудь Ulink использовал?
че бля с каких то пор фотон платный нахой. темболее клауд который еще дает 20 слотов бесплатно
и как ты не зная вообще как устроен простейший сервер, определил что клауд говно? я уверен что у тебя нету даже прототипа игры, и самой игры не будет никогда с таким ахуительным подходом
А нахуя тебе больше? Ты не можешь сам запилить сервер, это склоняет меня к мысли, что и бесплатного фотона тебе будет дохуя.
Если ты такой гений и смог соло собрать ММО дрочильню, которая не заебет за 15 минут, тебе будет не сложно разобраться в собирании сервера.
Я уже в ассет сторе нашёл нужную мне вещь, без помощи анонов.
В итоге лучше бы я вообще не спрашивал, ибо мне во всех темах без исключения как додики твердили "ФОТОН ФОТОН". Я хотел реальных советов от людей использующих адекватную готовую серверную архитектуру, чтобы понять что лучше, а в итоге фотонодебилы с их ограничением по коннекту.
ага не забудь скинуть потом игру свою все вместе будем играть
да не, железо норм
1. попробуй погуглить
2. это только на сцене или в окне Game тоже
3. понажимай на всякие кнопки например сверху слева 2D
3. поковыряй настройки вроде они в Edit>project settings но это не точно сам ищи
4. а в играх и других прогах все ок? если нет значит драйвер чекни
1. пытался гуглить, но ничего не нашел, наверное тупой и не могу правильно сформулировать проблему.
2. только на сцене, в окне game все нормально.
3. не помогает, просто переходит камера в 3д и там такая же проблема.
4. в других играх и прогах все ок, дрова недавно обновлял.
такая проблема даже в пустом проекте, т.е. артефакты при отрисовке даже самой сетки или иконки камеры.
до этого стояла версия 5.5.0f3, те же проблемы были, решил поставить новую версию и не помогло.
https://docs.unity3d.com/ScriptReference/GUI.SelectionGrid.html
Начал потихоньку перепиливать фреймворк и обнаружил там забавную конструкцию. Суть в том, что есть 3 разных класса - игровая доска, юнит и состояния доски. Автор сделал карусель какую-то - в юните задаётся ивент и аргументы, затем в доске этот ивент отлавливается, вызывается функция в классе состояний доски, которая уже впоследствии и используется вместо настоящего ивента.
Моя же идея того, как это переписать, заключена в следующем: в юнит засунуть переменную, содержащую в себе ссылку на игровую доску, превратить состояния доски в enum в классе игровой доски, а ивенты, происходящие с юнитом, определить в новом классе EventManager. Когда же будет происходить какой-либо ивент, то он будет вызываться из самого юнита, где ифами и свитчами будет указываться состояние доски.
Вопрос чисто теоретический, не ругайтесь, пожалуйста: что из этого лучше по производительности? Моё говно мне точно будет понятнее хотя бы потому, что не будет трёх функций в трёх разных классах с почти одинаковыми именами, но это же не главное
>Автор сделал карусель какую-то - в юните задаётся ивент и аргументы, затем в доске этот ивент отлавливается, вызывается функция в классе состояний доски, которая уже впоследствии и используется вместо настоящего ивента.
Забыл Когда же какое-то действие происходит с юнитом, вызывается вся эта карусель, а затем в конце вызывается какая-то функция в юните
Из того, что я нагуглил: если две видюхи, попробуй запустить юнити через интегрированный граф. процессор; зафорсить директ икс постарше; покрути в прогобеспечении своей видюхи визуальные параметры (например, качество/перформанс 3Д); переустанови Юнити.
Начал крутить-вертеть этот ваш новый навмеш, и уперся в проблему:
NavMeshBuilder.UpdateNavMeshDataAsync
работает только с некоей новой NavMeshData. Фактически, я вынужден делать navData = new NavMeshData();
Что на хую вертит мой текущий навмеш и новый создает поверх него, либо, вместо него.
Как мне "вернуть" ссылку на свой имеющийся NavMeshData?
Геймдевч помогач?
Лучше релизнуть играбельную версию.
Ссылка от 2014-го года, но может быть поможет: http://answers.unity3d.com/questions/655081/images-cannot-be-imported-and-assigned-to-sprites.html
Не поможет — забей хуй, пили игромех. Обмазать картиночками еще успеешь.
Начал гуглить, как лучше сделать, и этот анон оказался прав. http://alumni.media.mit.edu/~jorkin/gdc2006_orkin_jeff_fear.pdf — разрабы FEAR довольно неплохо поясняют за структуру своего ИИ.
>>395790
Сломал нахуй этот фреймворк
Подскажите, пожалуйста, какие есть конвенции в игрострое. Вот в этом фреймворке была доска, от которой шли остальные элементы. Допустим, я хочу добавить интерфейс, хелсбары там и всё такое. Как это обычно делается? GUIController, а от него при старте создаются все окошки и менюшки? А доска как? Тоже от GUIController'а?
>>395824
Ты спросил так, будто я знаю, что такое интерфейс.
Я в твоих постах уже запутываться начал, лол.
> в этом фреймворке была доска, от которой шли остальные элементы.
Не совсем понимаю, что ты имеешь ввиду. В коде доски хранились все инстанции юнитов? Или какого-то хуя юниты наследовали класс доски?
> Допустим, я хочу добавить интерфейс, хелсбары там и всё такое.
Добавляешь Canvas, в него уже скриптами вызываешь UI префабы когда тебе надо, убираешь когда не надо (для катсцены, например).
> А доска как?
Вон там выше кадр ебался с реализацией доски. У него это просто спрайт на фоне плюс сетка координат.
> будто я знаю, что такое интерфейс.
Так узнай.
>В коде доски хранились все инстанции юнитов?
Не-не-не. В комментариях к доске написано было, что доска ответственна за выполнение всех действий, связанных с юнитами и клетками и игроками. Выглядит это примерно так: есть в сцене 3 объекта, в которые вложены юниты, клетки и игроки. Игровая доска один из этих объектов и содержит клетки, а в переменные её занесены юниты и игроки. Когда какая-либо функция запускается, обычно она так или иначе пропускается через игровую доску. Я это изменил и ивенты вывел в другой класс (чтобы код упорядоченнее выглядел главным образом). Теперь вот думаю, нужно ли оставить доске запуск всех функций - например, какой-то метод будет подписан на ивент и будет исполняться из класса доски.
>Добавляешь Canvas, в него уже скриптами вызываешь UI префабы когда тебе надо, убираешь когда не надо (для катсцены, например).
А-а-а, спасибо. Несколько смущает то, как сцены в юнити устроены. Можно же динамически "из кода" создавать объекты (как эти new Class())?
>Вон там выше кадр ебался с реализацией доски
С реализацией доски проблем нет. Во фреймворке есть генератор доски по высоте-ширине и разные методы, которые позволяют искать расстояния, соседей и т.п. Мне интересно, как это в нормальном коде выглядит - в нормальном коде тоже все ивенты и функции из доски вызываются, или же она подчинена какому-нибудь Controller'у?
>Так узнай.
Легко сказать. Я так понял, это альтернатива absract'у, virtual'у и override'у?
> в сцене 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)
Спасибо, сильно помогает.
>Таким образом ты просто знаешь, что все элементы, наследующие от IButthurt будут уметь в эти две функции хоть каким-то образом.
Это понятно, непонятно то, как это использовать. Вот допустим абстрактный класс Unit. В нём задан абстрактный метод, который по-разному оверрайдится в наследуемых классах SampleUnit и MyUnit. Если в каком-либо методе я вызову Unit.Method(), то этот Unit.Method() изменится в зависимости от того, является этот Unit SampleUnit или MyUnit. А как мне через интерфейс понять, какую из "оверрайдящих" функций я вызову?
>вызову Unit.Method()
Если я правильно помню, то практически любой язык не позволит вызвать метод у абстрактного класса, надо будет сделать ((SimpleUnit)Unit).Method() или ((MyUnit)Unit).Method().
IButthurtable, в смысле, я немножко довен.
Без ссылки на объект в любом случае не вызовется. Я имею в виду ситуацию, что мы вызываем ссылку на уже имеющийся юнит (которому уже задано, какого типа он юнит) так, как будто он не специфически MyUnit или SampleUnit, а просто Unit
Интерфейс считай тоже самое, что и родительский абстрактный класс, просто с более узким набором контента, который ты можешь в него вбросить. Если у тебя есть какие-то универсальные функции, которые должны быть у огромного количества разношерстных объектов, ты просто можешь реализовать их через интерфейс, не заебываясь с хитровыебанным наследованием. Алсо, наследовать можно только с одного класса, так что нельзя иметь конструкцию типа:
public class GenericNPC{}
public class Humanoid {}
public class Elf : Humanoid, GenericNPC {}
Но можно иметь конструкцию типа:
public interface IGenericNPC{}
public class Humanoid{}
public class Elf : Humanoid, IGenericNPC{}
> как мне через интерфейс понять, какую из "оверрайдящих" функций я вызову?
Функции в интерфейсе работают так же, как и в абстрактном классе, и вообще все в интерфейсе является public abstract. Так что ты все равно будешь оверрайдить функцию.
Я не говорю, что это обязательно нужно, я говорю, что такая штуковина есть и о ней надо помнить на всякий случай.
>Функции в интерфейсе работают так же, как и в абстрактном классе, и вообще все в интерфейсе является public abstract.
То есть можно воспринимать SampleUnit : Unit, IWhatever как IWhatever, и запускать метод внутри как IWhatever.Method() (при условии, что на юнит сделана ссылка как на IWhatever). Ясно, спасибо.
Где можно скачать "Школа Unity для аутистов"??
А то с ТыТуба выпилили нахуй, сцуки.
А то я уже заебался с этими разными уроками - то пропадают, то движок новый выходит, то еще какая-то хуйня, или в уроке один пиздеж ниочем, например рассказы о том какой Юнити охуенный или простой.
А тут норм было, но уроки выпилили, пидары.
официальных туториалов по базовому C# и Unity классам хватит даже если ты незнаешь инглиша
10 фейспалмов из 10
https://unity3d.com/ru/learn/tutorials
Сделай обучающие поекты отсюда, более-менее во всем разберешься.
Это везде так в рамках хуюнити, добро пожаловать в программирование.
Использую встроенный UNet. Он говно ебаное, полагаю даже более ебаное чем фотон. Как впрочем и все в этом проклятом движке.
https://github.com/sschmid/Entitas-CSharp
>>395314
Меканим это глючное говно без задач, сделанное по принципу "оооо ебать давайте запилим дерьмо, которое будет одновременно и дружелюбным и нахуй бесполезным, ньюфаги оценят".
>>396012
Продолжаю со своими нубскими вопросами.
Запилил я, значит, полоску инициативы как в 5ых героях. Есть лист "ходов", который содержит все объекты, заслуживающие хода (юниты, эффекты разные, рассасывание баффов и т.п.) в той последовательности, в которой ходы будут случаться в будущем, есть пара методов, которые этот лист формируют. Этот лист в теории будет создаваться заново каждый раз, когда на доске что-то происходит - смерть юнита должна обновлять лист, истечение баффов (особенно, влияющих на инициативу) должно обновлять лист и т.п. То есть юнит бьёт - лист новый создаётся, юнит ходит - новый лист, юнит ход заканчивает - новый лист. Это очень много обновлений, в общем.
Если в такой ситуации будет случаться лаг, что нужно делать? Корутины помогут (во время исполнения методов я ставлю состояние доски, в котором не принимаются никакие вводы от игрока)?
Откуда вообще лаги берутся? От создания новых переменных? Какая нагрузка за фрейм вообще допустима?
Если я правильно понимаю, то в листе у тебя лежат ссылки на объекты, а не их копии.
Т.е. если у кого-то стало меньше хп, то меньше станет и там, и там. Чекни, на всякий случай.
Да, не объекты или копии, а ссылки. Я не делаю new или instantiate никаких.
Какие подводные камни у Меканима? Как минимум две очень важные задачи в нем вижу:
1) Плавный переход между анимациями можно делать не в стороннем софте, а в меканиме. Чем меньше анимационных клипов, тем меньше путаницы и рутины.
2) Ретаргетинг анимации, базовые плюшки с "мускулами" и IK, которые доступны из коробки, бесплатно. Разумная альтернатива - только работать с Motion Builder, который платный.
Мощнейшая же штука, доступная бесплатно.
Алсо, я забил на Rain. Посмотрел тутор про Plagable AI System и понял, что базовый АИ проще стандартными средствами Юнити сделать. Благо, NavMesh и NavAgent есть, и работают они не хуже аналогов из плагина.
Тогда и проблемы нет, собственно.
Лист можно обновлять только при спавне и удалении объектов.
Если объект умер, то можно скипнуть его с помощью чего-нибудь вроде if (!unit.isDead)
нихуя не понял нахуя в полоске инициативы эффекты и рассасывание бафов. если так тебе надо то это тщательно погугли 100% есть где то описание подобного кала
То есть "обращения к памяти" не нагружают комп, только создание новых участков? Но лист же новая переменная (или нет), да и методы каким-то образом исполняются.
>>396114
Потому что в Final Fantasy Tactics была очень удобная/неудобная штука - позволяла видеть, когда сработает эффект заклинания после чарджа этого заклинания. Я пытаюсь такое расширить, чтобы большинство эффектов было видно в шкале. А баффы хочу в эффекты-пустышки совать, которые будут вместо одного баффа показывать все баффы, которые в этом ходу сработают но это чистая косметика.
>не нагружают комп
Будет тормозить, запустишь профайлер и найдешь, где именно оптимизировать, слишком сильно загоняться этим на этапе разработки не стоит, слишком много времени потратишь.
Первое не работает по сети, сюрприз сюрприз. Подводные камни в том что приходится дублировать функционал, ибо сраный нодовый редактор изолирован от проекта и в целом запредельно убог, из-за чего приходится писать две FSM, она кодом, чтобы отсылать события меканиму, а вторую непосредственно в самом меканиме. Охуительно просто.
>Первое не работает по сети,
Так для того чтобы сделать нормальную сетевую игрушку с анимацией персонажей (мобу какую-нибудь) нужно и так быть программистом 80-го уровня. Такой свой аналог меканима сможет написать, если захочет.
>приходится дублировать функционал, ибо сраный нодовый редактор изолирован от проекта
Бля. Я вот с АИ сейчас разбираюсь. Недеялся, что с Меканим гораздо проще будет. Думал, там типа в нодовом редакторе что угодно собрать можно, а потом просто из FSM моего АИ присваиваю значения параметрам Меканима и у меня анимация проигрывается на каждое состояние персонажа.
1. map magic https://youtu.be/vrs-XA1-ME8
пробная бесплатная версия
http://www.denispahunov.ru/MapMagic/
2. world creator
Я не программист 80лвла, но один сетевой проект написал, сейчас пилю второй. Так что у тебя немного неправильные представления об этом. Это не что-то невероятное, лол. Но то что блендинг анимаций не синкается это топич просто.
Серьезно, сам написал серверный код своего проекта без использования Фотона? Да еще и с полноценной 3д-графикой, анимацией и играбельным геймплеем? Сколько на это времени ушло?
>>396180
Кодер 80-го уровня это по умолчанию хорошо только если в конторе в ДС работать и 300к в секунду.
В инди-геймдеве можно прекрасно кодить, но создавать бестолковые игры без задач. По мне, так главное сейчас в гейдеве - это PR, умение закупать трафик, работа с инфлюенсерами и вирусные видосики. На втором месте композ, дизайн и прочее, завязанное на яркую привлекательную картинку. И только потом - игровая механика и код.
И тут я такой охуенный начал расписывать классы типа KrutimYobu : Action, как вдруг до меня дошло, что их в список же не запихнешь, блядь!
Как поступить, аноны? Хочется удобным образом в каждую категорию NPC из папки Actions накидывать соответствующие действия, не прописывать же инстанции этих классов и не ебаться со статичными, как-то совсем неправильно в голове представляется.
На юнете по p2p, ибо не было времени изобретать велосипед. Да, с графоном, анимациями и геймплеем, системой сохранения и всем прочим дерьмом. Но надо понимать, что на моих плечах был только код, графоний рисовали художники. По времени... Долго, весьма долго. Полтора года. Но это с учетом того, что когда начинал, был совсем зеленый.
То что ты описал про "главное в геймдеве" актуально на мобильном рынке, но никто в здравом уме туда не лезет. Ну а выполнять качественно и быстро свою работу всегда хорошо, безотносительно того инди ты или нет.
Дениска, дай я тебя обниму. Ландшафт для целой планеты можно без тормозов сделать, например с подгрузкой? Пустыни/снег/етц есть?
Использую PlayerPrefs
PlayerPrefs.GetInt("bestscore")
и если счет больше PlayerPrefs.SetInt("bestscore", bestScore);
На андроиде данные почему-то растут.
С каждым SetInt +20кб и может даже в других случаях прибавляет.
Что это такое? Поиграл 100 раз. получил 20мб данных.
Никих лишних Debug.Log не имею. Код правильный. лишний раз не сохраняет ничего.
> 20кб
> Поиграл 100 раз. получил 20мб данных
Ты 20 килобайт умножил на 100 и получил 20 мегабайт?
Сомневаюсь что с такой математикой у тебя "код правильный".
есть такое понятие как утрирование.
лучше бы потестил. проблема не только у меня. на 5.5-5.6 версиях актуальна.
на unity форумах пару людей писали про это, но им никто ничего не ответил.
вроде как в developmental build все нормально. в релизе растет.
Если ты наследуешь KrutimYobu от Action, то ты можешь обращаться к ёбе как к действию.
> По времени... Долго, весьма долго. Полтора года.
> Но надо понимать, что на моих плечах был только код, графоний рисовали художники.
Вот здесь и кроется весь леденящий душу пиздец. На один только код столько времени. Количество контента для художников тоже, небось, сопоставимое.
Человеко-часы на миллионы рублей. Хорошо, если они окупились.
Так что останусь при своем мнении, что мультиплеер:
1) Сложно и долго.
2) В одиночку и контент и код потянуть нереально.
Спасибо за совет, но он предполагает, что я знаю какие-то всем очевидные подводные камни. А я их не знаю.
Вот, например, я только что сообразил, что моя система хитшанса (т.е. отдельный от юнита класс, который показывает шанс попасть) создаётся каждый раз, когда юнит целится в кого-либо. А мне нужно хитшанс отдельным абстрактным классом выставить, чтобы можно было через наследуемые от него классы работать - потому что у меня есть разные механизмы прицеливаний, а не одна одинаковая для всех формула.
То есть заранее нужно знать какие-то узкие места, которые надо иметь в виду, и заранее код "в правильную сторону" строить.
Вот я читал про пример с использованием контейнера для пуль вместо создания новой пули каждый раз. Но ведь пули - это одинаковые объекты (только, может, поля разные), а разные типы хитшанса у меня наследуемые классы. Как это организовать вообще? Самый очевидный для меня вариант - сделать все хитшансы в одном классе через различающиеся методы, но это как-то по-нубски выглядит.
>>396231
Не-не-не. Action — это интерфейс/абстрактный класс. В нем есть просто функция для проверки условий и функция для исполнения. Вызывать конструктор для каждого действия в каждом классе будет крайне ебливо, да и не уместно: эти классы вообще можно сделать статчиными, просто скармливая им переменные.
Собственно, идея была такой: вот у меня есть список, в который я могу ручками накидать все возможные для NPC действия, скрипт потом просто через foreach (Action action in actions){if (action.IsValid()){action.Execute()}} пробегается по этому списку.
FSM не подходит, это придется гуманоидам-мечникам писать свои стейты, магам свои, каким-нибудь волкам еще третьи. Либо брать один огромный FSM с лишними проверками, где я охуею в конец.
> Самый очевидный для меня вариант - сделать все хитшансы в одном классе через различающиеся методы, но это как-то по-нубски выглядит.
Да не, вполне логично, зачем изобретать сложные велосипеды. Берешь статичный класс, передаешь в него объект(ы). Класс пускай сам определяет, что за оружие, что по параметрам у атакующего, у принимающего урон. Потом выдает тебе попадание или промах, потом проигрывается соответствующая анимация.
Передаешь лист 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");
}
Ну и там еще где-то определитель оружия, персонажа, хуё-моё.
> Передаешь лист enemiesToHit, вызывая что-то типа
Быстрофикс.
Лист всегда будет один и тот же, просто по окончанию всех операций пишешь enemiesToHit.Clear.
можно в каждом враге прописать шанс типа
evasion = 5;
а потом в просто вызываешь в нужном месте
CalculateChance(evasion);
а в другом месте хранишь функцию
CalculateChance(float chance){
if(random.range(0, 100) < chance)
return true;
return false;
}
>>396276
Вроде бы выглядит разумно, но блин, чувствую, что это не то. Да и, допустим, если будет бить по 6 юнитам, то вылезет 6 подсказок с цифрами. Если делать по-твоему, то к одному классу обращаемся 6 раз, храня данные в 6 подсказках. По-моему же было бы логичнее, можно использовать для хранения данных, используемых только хитшансом, использовать 6 разных хитшансов.
В общем, спасибо за совет. Посмотрим, что можно сделать.
> Если делать по-твоему, то к одному классу обращаемся 6 раз
Да нихуя же. К классу ты обращаешься один раз, отдавая ему список врагов, он тебе возвращает список с уроном для каждого врага, потом где-то держишь конструкцию:
for (int i = 0; i < enemiesToHit.Count - 1; i++)
{
enemiesToHit.health -= damage;
}
Опять ошибся. enemiesToHit и damage, конечно же.
Хотя просто менять значение хп как-то зашкварно, можно сделать:
for (int i = 0; i < enemiesToHit.Count - 1; i++)
{
enemiesToHit.OnHit(damage);
}
А в OnHit() уже расчитывать урон, который пройдет через броню, уклонения и т.п.
А, это макаба квадратные скобочки неправильно воспринимает. Рядом с enemiesToHit и damage указатель на ячейку, короче.
>>396291
>>396292
У меня хитшанс используется в трёх ситуациях: два раза в подсказках и один раз в ролле на урон. Допустим, значение для ролла на урон можно использовать сразу, но подсказки-то в воздухе висят, в них нужно хранить значение. То есть мы должны создавать подсказку, которая будет хранить данные, использующиеся только один раз.
Ну ладно, допустим, сделаем такого типа хитшанс. Дальше у нас есть разные типы способностей, разные эффекты и т.п. Если переносить на них логику хитшанса, то на всё это нужно будет сделать по статичному классу с уймой методов внутри, каждый для своей ситуации, а потом к ним сверху присобачить классы-подсказки, в которых хранятся пропущенные через статичный класс данные. То есть это в любом случае создание множества элементов
Да-да-да. В этом и суть.
Ты наследуешь, переопределяешь методы, но при этом можешь обращаться к дочернему классу по интерфейсу-родителю.
Например, у меня есть класс Shootable с методом MakeShot(), от которого наследуют EjectShoota, RayShoota и тд
После чего я могу стрелять как
current_shoota.GetComponent<Shootable>().MakeShot();это для наглядности, лучше кешировать Shootable bla_bla = current_shoota.GetComponent<Shootable>(), а не искать компонент каждый раз
По поводу мультиплеера соглашусь, то что в одиночке пишется за 20 минут, по сетке написать и отладить займет два дня.
Но это все в рамках Юнити. Просто не надо его брать под проект среднего/большого объёма, тем более с сеткой. Этот движок вообще не под такие проекты создавался, а под мобилы прежде всего. Ну а то что его сейчас рекламируют как серебряную пулю под любой проект - маркетинг чистой воды. В теории на нем действительно можно создать что угодно, но не нужно, ибо охуеешь в процессе.
Алсо, нормальные игры не создаются за пару месяцев.
Так, блядь, тогда придется прописывать инстанции класса, а это вообще не имеет смысла: алгоритм-то один и тот же, мне просто нужно вбрасывать в него персонажа с еще кучкой данных, получать выход, реализовывать этот выход уже ресурсами персонажа.
Мне нужно удобным образом говорить NPC, какими скриптами он может пользоваться. Чтобы вот он увидел игрока, проверил фракцию, понял, что Игрок будет противником, и начал шерстить возможные варианты поведения. Какой вариант первым выдаст true, в такой и будут закинуты данные. Типа:
1. NPC без лука/волыны, но есть меч. Меч с такого расстояния не дотягивается, надо подойти поближе.
2. Достаточно близко, есть меч в руках, пизди противника.
3. Противник надавал по щщам в ответ, слишком мало хп. Надо отойти, выпить зелье.
Вместо boolean можно, конечно, прикрутить более гибкую логику, где каждая возможная команда выдает int, потом они сравниваются, и выполняется алгоритм с наибольшим значением, но не суть.
Хуй знает, что там у FEAR'овцев за система, но в лекции показано это таким образом (пик). Т.е. для каждого типа NPC есть папка/раздел/хуйзнаетчто, в которую закинуты возможные действия. Вопрос, собственно, в том, как можно сделать что-то подобное в Юнити.
Пока печатал, понял, что можно делать префабы со скриптами и референсить их в списке. С наследованием у скрипта от Action по-идее будет нормально. (пик 2)
>Алсо, нормальные игры не создаются за пару месяцев.
Это понимаю. Хочу попытаться работать в режиме "вечной" разработки, спонсируемой патреоном и другими подобными способами.
>>396312
Нормального кодера в команду взять - платить кучу денег за каждый час его работы, что я не потяну финансово. Дешевых кодеров не бывает, ибо спрос на код превышает предложение на рынке в отличии от арта, 3д, геймдизайна и сценария.
Взять новичка в партнеры работать "за опыт", будет означать что его говнокод не лучше моего и что он 99% съебет после пары недель труда, оставив после себя такой код, который невозможно будет прочитать.
Так что увы, приходится одному все. Просто серьезно упрощаю игровую механику, чтобы добиться ее близости к сандартным ассетам. Скорее всего вообще с playmaker работать буду, чтобы только меньше кода писать.
> два раза в подсказках и один раз в ролле на урон
В одной подсказке у тебя же не висит точный финальный урон, который получит персонаж, там висит примерный дамаг, возможно шанс попадания. Точный урон ты будешь показывать уже во второй, просто бери значение из OnHit().
> у нас есть разные типы способностей, разные эффекты и т.п.
А нахуя их делать настолько разными? Всю разницу можно реализовать через один enum.
Если твой скрипт прикреплён к гейобъекту, то экземпляр класса из него будет создан при старте.
Но я кажется понял о чём ты.
Можешь создать один гейобжект хранящий все правила, отдельным петушкам давать ссылку на это хранилище и список доступных действий обычным массивом айдишников.
> экземпляр класса из него будет создан при старте
Отлично, главное, чтобы мне не пришлось прописывать в каждом NPC
Perekat perekat = new Perekat();
actions.Add(perekat);
Могу взять тебя в свою команду и дотянуть до среднего уровня, если ты готов ебошить по пять часов в день. Но о своем проекте можешь забыть.
Зависит от твоего уровня. Если ты ничего не умеешь, но быстро учишься - будешь хуярить за фитбек. Если навыки есть - будешь получать деньги. Если все будет ооооочень хорошо - станешь частью команды.
О. Раз такая тема, можешь рассказать, чем у вас занимаются кодеры, какие инструменты используют в работе? Любопытно, с каким навыком люди зарабатывают хотя бы на еду.
В общем, решил "гибридно" сделать. Сохраню свои абстрактный класс и наследуемые классы его, но сделаю при инициализации по 1 инстанции каждого наследуемого класса. По сути тот же статичный класс получится, но разбитый на участки.
можно.
правда с лодами возможно заебёшься, но стяпляпать своё бесчеловечное небо из перлина и водяной эрозии вполне посильно
как планируешь террайн то генерировать? процедурно или с карты читать?
террайн сразу из башки выкинь, с ним не прокатит
Я нашёл либо взять готовое из стандартных, либо уже с анимацией скелета и физикой.
А мне нужно что бы объект просто двигался с кнопок на клавиатуре.
float movex = Input.GetAxis("Horizontal");
float movey = Input.GetAxis("Vertical");
GetComponent<RigidBody>().velocity = new Vector3(movex, movey, 0).normalized * movespeed;
К объекту обязательно должно быть прикреплено RigidBody
> где можно почитать\посмотреть.
Дуй смотреть уроки на сайте, а то с каждой механикой так ебаться будешь.
Unity3d.com
Спасибо, анон, думал, это невозможно. А так я вообще диванный и в юнити пока ещё не разбираюсь, просто заинтересовало, стоит ли в него вкатываться, чтобы сделать в итоге игру мечты, или в конечном счёте столкнусь с ограничениями движка.
До игры мечты ебать как далеко. Я вот начал делать РПГ дрочильню своей мечты с нуля, в итоге обосрамс на каждом компоненте, тысячи запросов в гугл, благо в код немного умел. Думаю заморозить нахуй, сделать платформер, чтобы хоть какое-то подобие законченного проекта было.
Не жалуйся, а читай материалы. Чье-нибудь чужое творение найди и посмотри, как оно работает.
А я и не жалуюсь. Просто масштабы я себе задал пиздецки большие, я скорее заебусь продумывать локации, а игромех ничего так пишется.
как ты хочешь что бы КОД сам определял нужные координаты оружий? ебанулся или че
Есть метод, задавая в скрипте координаты, инстанеш или трансформируеш в них оружие, всё. Есст-но оружие должно быть дочерним обектом.
Второй метод задаёш точки на объекте с помощью маленьких сфер, убираеш у них меш, и так-же скриптом вешаем на места точек оружие по категориям, типо: Пистолет1,питсолет2 на точку у "бедра". Автомат1,автомат2,снайперка1 на точку "спина".
Возможно немного не понятно.
Попробую вторым, вроде годно выходит.
>>396296
Снова выхожу на связь.
Решил заняться ходами юнитов, а из-за этого принялся делать способности (команду на движение по доске через способность реализую), из-за чего мне понадобилось переделывать пасфайндинг, из-за чего я познакомился с удивительным миром массивов, листов и словарей. Таким образом я снова ищу совета.
Как мне с массивами совладать? Читал, что листы очень прожорливые, и поэтому нужно использовать словари. Глянул на свой прошлый код - шкала инициативы, например - так там всё на листах сделано. Самый простой способ замены - просто сделать словари с ключами-интежерами, которые заменят индексы как у листов.
В пасфайндинг не умею, но, т.к. скоро будут более-менее бегающие NPC, нагуглил эту статью:
http://www.redblobgames.com/pathfinding/a-star/introduction.html
Поясняет за разные методы анимациями, в конце есть ссылка на гайд для шарпа, но там я уже хуй забил.
Спасибо, но вопрос не о том.
Ещё одна проблема вылезла внезапно. Доска на Start() создаёт через new какой-то другой класс, в котором есть переменная, несущая в себе (в теории) ссылку на доску, создавшую этот класс. Когда же дело доходит до вызова функции из нового класса, в которой используется ссылка на доску, выдаёт нулл референц т.е. переменная после записи оказывается пустая. Её сборщик мусора обнуляет или что?
Сообразил, в чём дело. Я дурак Дело было в пустом массиве, который я оставил как плейсхолдер
Обращайся.
> можно делать префабы со скриптами и референсить их в списке
О, оно заработало. NPC кушает команды через префабы с действиями (господи, как же это костыльно звучит), хотя я пока не тестил ничего, кроме преследования игрока да и здесь я наебался, потому что NPC нихуя не поворачивается в сторону цели.
А, это я забыл один параметр приписать.
>NPC кушает команды через префабы с действиями
Можно сделать префаб всего NPC, и кастомизировать его через параметры. Или несколько префобов для каждого класса.
Ну это-то да, но это к командам не относится. Этот велосипед мне для того, чтобы не писать йоба-FSM для AI. Там выше где-то статья на эту тему, а еще выше совет от анона использовать общий интерфейс и такую схему.
Скрипт NPC пока что только для галочки, и из него берется только фракция (на кой-то хуй). Надо бы еще enum на класс добавить (милишник, кастер, т.п.), и через класс + уровень раскидывать автоматически статы. Но для начала надо бы с ними разобраться, лол, потому что я в душе не ебу, сколько характеристик брать и какие.
>>396638
Сообразил способ искать клетки через словарь, но он почему-то не работает. Суть в том, что ключом выступает Vector2 gameObject.transform.position, т.е. только x и y. Я думал искать соседей добавляя к этому Vector2 вектор до соседнего гекса, который заранее определён во время строительства доски из гексов, но словарь упорно заявляет, что нет такого ключа. При этом словарь сам содержит в себе все kvp, которые я задавал, и по векторам клеток исправно эти клетки выдаёт, т.е. дело именно в векторе-расстоянии. Но вектор-то верен, это именно то расстояние, которое задавалось при строительстве доски. Здесь какой-то подводный камень, или я опять где-то в глаза проебался?
Параметры лучше всего держать в ScriptableObject, иначе заебёшься с обычными префабами. Как правило - неизменяемые (во время жизни объекта) параметры в ScriptableObject, состояние - в MonoBehaviour.
Может, дело в округлении? Внутри вектора лежат float'ы, я слышал, их значения могут не совпасть, если их сначала разделить на одно число, а затем помножить обратно. Может из-за этого быть?
Если ты пишешь в студии, то поставь брекпоинт там, где сравниваются значения, нажми на кнопку attach to unity, запусти проект в юнити и посмотри, какие значения сравниваются.
А вообще да, с вероятностью, близкой к 100%, флоаты после сложения будут не совпадать.
Я бы закинул команды в ScriptableObject, но тогда мне кидать их в список для NPC придется через еще один велосипед. С пердолингом через префабы хотя бы я получаю то, что хотел. Может быть есть более простой и оптимизированный вариант, но пока что я его не видел, гугл выдает всякую хуйню.
ScriptableObject я буду использовать для предметов.
Если я задам точность float'у, то это реально изменит число? Как мне с этой хренью поступить-то? Превращать float в какой-нибудь decimal, складывать, а потом обратно превращать?
Mathf.Abs(float1 - float2) < threshold
Но это костыль, у тебя очевидно криво все сделано. Впрочем, по началу у всех криво.
Лел. Я начинаю понимать, почему пиксельные платформеры тормозят на топовых пекарнях. Не в обиду.
>>396908
ИМХО, потому что пиксели слишком хайресные
И всё равно мне кажется, что эта хрень будет жрать цпу меньше, чем перебор элементов листа, как раньше. Скажем, делаем путь из 6 гексов. Моим методом мы будем обращаться к словарю, уже зная ключ (после преобразования в строки) а вообще я клеток-соседей собираюсь хранить в каждой клетке, вызывая поиск соседей по надобности и на старте, по методу фреймворка же был перебор листа в 120+ элементов 6 раз.
Обычно такое заворачивают в функцию. В Юнити сразу есть Mathf.Approximately, её флоаты сравнивают.
Не советую, по мойму это хуйня полная. У меня она по крайней мере не работает. Различие в 0.0...01 считает разными числами.
Я уже всё разрешил. К тому же сравнивать вероятный ключ со всем списком ключей словаря как-то не очень. Смысл в том, чтобы заранее знать ключ, а не чтобы его подбирать каждый раз.
конкретика? если это игры в которые сыграли меньше 1000 раз ответ очевиден
https://docs.unity3d.com/ru/current/ScriptReference/ в поле "Поиск по справке" пишешь Input и жмешь поиск. Затем AudioSource
А что конкретно ты имеешь ввиду под валютой не ебу
Имею ввиду по очереди ищи Input - про кнопки, AudioSource - про звуки
И да забыл сказать не надо читать все досканально и пытаться вникнуть, тебе из всего этого нужны максимум 10 функций, их и ищи, в них и вникай
Я пытался протестить всё в дубликате своего проекта, но это оказалось сложнее чем я думал, да и о будущих подводных камнях я таким тестом не узнаю.
Пикрандом
ещё повияет на размерность единиц пространства, координаты/расстояния будут другие, иногда бывает пиздец неудобно оперировать в координатах со смещениями типа 0.01 на тайл
но вообще как по мне эти пиксели пер юнит в основном нужны для настройки pixel-perfect
вкратце делай так: персонаж 1-2 юнита высотой и все остальное уже подгонять под него. 1 юнит = 1 метр, физика с низов расчитана на это. По этому размер влияет на физику. Представь если в космосе столкнуться два камня и два метеорита по 900км в радиусе, будет разница?
Короче без необходимости лучше не делать размер игрока <1 и 2<
Нахуя тебе кресты, учи шарп сразу.
Учить плюсы стоит если ты собираешься на заводе кодить микроконтроллеры за 500к/месяц.
Иначе оно того не стоит.
Юнити поддерживает только C# и JS, советую шарп. Никаких книг, хуиг - трата времени. На оффициальном сайте есть все, от текста до видео. Просто смотришь все уроки по C# и практикуешь делая мини игры\тестики после КАЖДОГО видео, что бы закрепить на практике. Желательно 2D что бы осваивать интерфейс и его детали. Да да сразу захуячить рпг мечты не сможешь. Поверь это лучше чем безрезультатно учить плюсы.
ПРо векторы отвечать не буду, как я уже сказал смотри офф. гайды от юнити, смысл если ты будешь знать что это, но не знать как их применять
Спасибо анон, так и сделаю, есть какие еще годные ресурсы, кроме шапки ОПа?
>Никаких книг, хуиг - трата времени.
Проигрунькал шепотом.
>На оффициальном сайте есть все, от текста до видео.
И следом уже в голосяндру. На самом деле тоже шепотом.
>>397098
Главное, что тебе стоит помнить, официальные туториалы по кодингу на юнити - говно. Используя только их, ты вольешься в ряды замечательного коммьюнити, которое обеспечивает юнити славу тормозного движка.
Используй шарп, студия идет в комплекте с движком, очень удобно дебажиться.
Прочитай любую методичку по синтаксису языка, потом прочитай какую-нибудь книгу по запросу "основы ООП c#". Недели-другой тебе хватит, параллельно можешь излагать мысли о своем будущем шедевре на бумаге, чтобы не растерять мотивацию.
После этого можно начинать что-то делать, оглядываясь на первые две методички, документацию юнити и читая о шаблонах проектирования для вдохновения.
software инженер
интересно каким местом они говно? для новичка лучше не сыскать, там все по факту и без ебанутых формулировок как в майкрософт доках. Все по полочкам на простых примерах. Если твой критерий не говна - углубление в тему, то иди просто нахуй идиот. Ты сам и написал что начинать нужно с поверхности
> как в майкрософт доках
Доки Майкрософта вообще не для обучения сделаны, это ебаная методичка, чтобы ты быстро глянул, чо-как.
Видосики хуево воспринимаются, имхо, параллельно с шарпом там объясняют фичи движка, что тоже такое себе, если вкатываться совсем с нуля.
Без ебанутых формулировок есть куча книг, C# Player's Guide например. Если ты думаешь, что это трата времени, то ты где-то наебался, не заражай этим остальных.
Все доступно и понятно написано. Вообще нахуя вкатываться в Юнити, не зная язык, помимо языка придется разбираться еще и в компонентах. Проще начать с консольного пет-проджекта на шарпе, постепенно обмазывая его новыми знаниями, а там уже вкатываться в Юнити, чтобы получилось: "Ага, ну я знаю, что я вообще хочу, и вот у меня уже есть реализация, давайте рассказывайте, как эту йобу прикрутить к вашему движку".
мимовкатывающийся
>>396956
Продолжаю выходить на связь
Как правильно ивенты расставлять? Допустим, я перетащил вызов всех ивентов в отдельный класс, функции в котором вызываются при срабатывании условий какого-либо ивента это понятно, как устроено. Мне интересно, как это нормальные люди делают. Просто бросают все объявления ивентов там, где придётся, или что-то хитрее есть?
вот этого поддерживаю прямо совсем. игры делаются по принципу хуяк-хуяк-заминка-прогуглил-узнал-хуяк-хуяк. с вашим УГЛУБЛЕНИЕМ игор не сделать, интерес пропадёт раньше. да и вообще. какой уровень-то игры требуется, хах, как себя не назови всё равно будет егра от васяна666. а клепая говно и скилл растет быстро, и отношение говна/см игры уменьшается. только практические задачи, только хоркор.
Двачую этого
в том и мысль моя, мы обычные юзеры, нам по природе не дано за 1 взгляд понимать всю логику математику и прочее говно. Смысл в творческой разрядке
спавнится другой объектэлемент , после чего , если "клик" всё ещё нажат (длительное нажатие на кнопку мыши) можно перемещать этот заспавнившийся элемент курсором мыши , драг энд дропом,
и при окончании нажатия на кнопку мыши , элемент остаётся на месте курсора в этот момент?
Спасибо :з
>>в 2D пространстве
как это понять? 2D это 3D только со спрайтами
>>на месте клика спавнится другой объект // дрэг энд дроп
гугли:
ScreenPointToWorld
Input.GetMouseButton
посмотри весь класс Input много полезного найдешь
newObject.transform.position = ScreenPointToWorld
vector3 cursorPos = Camera.main.ScreenToWorldPoint(Input.mousePosition)
cursorPos.z = clickedObject.z
newObject = cursorPos;
Посоны, это снова я.
Я уже почти готов перейти от написания базовых классов к созданию всякой кастомной херни К примеру: базовый класс абилки для ходьбы - кастомная абилка ходьбы с топотом, и, собственно, на этой ноте встал вопрос об абилках. В целом понятно, как что делать, но я бы не хотел велосипедировать, создавая аналог уже существующих в юнити кнопок. Так что вопрос такой: надо ли создавать свои кнопки (т.е. добавить коллайдеры, добавить функции, всё такое), или же и юнитовские сойдут?
И ещё нечто очень нубское: как сделать "панельку" произвольной формы, которая будет обрезать изображение внутре себя? Допустим, хочу сделать кнопку гексагональной или круглой формы.
Пока не дотянулись до UI руки, но в целом там вроде все уже сделано за тебя, осталось только прикрутить.
> хочу сделать кнопку гексагональной или круглой формы
Делаешь спрайт под кнопку, указываешь отсутпы от сторон элемента, в который ты кидаешь кнопку. Главное, чтобы не пидорасило при разных разрешениях.
На дворе 2017. Я нихуя не умею до сих пор, 3 года играл в игори и хуйней страдал всякой. Проёбываю жизнь зазря.
Что делать?
Пиксель разве не равен юниту?
А как ещё движения мышки ловить?
>А то, что они в блоках квадратных, роли не играет.
Не потому ли, что у кнопки скрытый коллайдер? Ивенты мышки вроде OnMouseEnter, OnMouseExit и OnMouseOver/Down/Up не работают без коллайдера.
Нагуглил вот. Оказывается, юнитовский polygon collider автоматически при создании (через AddComponent) спрайт обволакивает собой. Кто бы мог подумать?
Ну значит тебе нужно просто заменить спрайт, о чем я и говорил с самого начала. И взлетят твои гексы и окружности.
Я ж говорю, юнитовские кнопки порочные. В любом случае придётся их скрипты править (каким-то образом), так что лучше создать свои кнопки.
Например, если я хочу скиллбар на 10 позиций, в котором скрываются неиспользуемые позиции, мне сейчас приходится использовать панель с горизонтальным лейаутом, в него класть 10 панелек-сокетов, а в каждую панельку-сокет класть по кнопке. Видимые из этой херни только сами кнопки, убираю из виду через IsActive(false). Ладно, с этим можно жить. Но! Когда хочу засунуть скиллбар (полностью) в префабы, он перетаскивает только панельку и панельки-сокеты - без кнопок.
Вот и выходит, что конкретно под мой скиллбар оптимальны мои собственные кнопки.
Я опять начинаю нихуя не понимать. Скрины что ли прикрепляй.
> он перетаскивает только панельку и панельки-сокеты - без кнопок
Так инстанциируй кнопки? У тебя же где-то хранится массив для скиллбара.
Делишь на 100, вычленяешь целую часть, получаешь первую цифру, заносишь в переменную. Потом умножаешь её на 100, полученное число вычитаешь из изначального числа, то что получилось делишь на 10, берёшь целую часть, заносишь во вторую переменную. Ну и по той же схеме получаешь последнее число.
А лучше не выёбываться, перевести число в стринг и разбить на чары.
Ебать я загорелся
Обнаружил только что, что UI не работает с OnMouseEnter и всей прочей хуйнёй. Оказывается, нужно использовать IPointerHandler'ы и их функции. Я тут два часа голову ломаю, какого хрена эта хрень не работает, а оно вон оно что!
>>397447
Ты меня совсем не понял, да.
Когда перетаскиваешь что-то из сцены в область папок и ассетов, то ты создаёшь префаб, сохраняющий заданные ему в сцене свойства. Очень удобно, вроде бы, но нельзя перетаскивать префаб, в котором цепочка из двух и более наследованных объектов - второй и последующий объекты отсекаются просто
Сколько ж тебе геймобжектов нужно в префабе? Инстанциируй панель с ячейками, туда инстанциируй кнопки.
>Сколько ж тебе геймобжектов нужно в префабе?
Столько, чтобы удобно было.
>Инстанциируй панель с ячейками, туда инстанциируй кнопки.
Это уже не проблема.
спс но я уже нашел интересный оператор % который например из выражения 654 % 100 вернет 54, а из 654 % 100 % 10 вернет 4 Называется деление с остатком
рандом х, рандом у, рандом з? Взять позишон куба и прибавить к нему вектор с такими значениями и задать как позишон нового объекта
ебать че то я тупанул жестко
Но зачем, если можно конвертнуть в строку и разбить на символы.
>>397532
Продолжаю.
Допустим, хочу сделать интерактивную инфопанельку на экране. Скажем, показывает 4 стата и список баффов, наводишь на любой из элементов - позволяет с ним взаимодействовать неважно как, некритичный момент.
Каким образом это делается правильно? Первая идея - сделать панельку с лейаутом, сделать класс (и деривативы от него), который бы содержал в себе всю выводимую в панельке информацию, и ещё один класс под саму информацию под неё можно мои кастомные кнопки юзать. Работать это говно точно будет, но:
ивенты курсора, вызываемые взаимодействием с UIем, ловят весь объект, а не только изображение/текст, т.е. наводишь на край невидимого прямоугольника, и тебе выстреливает ивент OnPointerEnter. Как мне либо к скрипту Image присосаться, либо уточнить условия юнитовского ивента?
Нагуглил два решения. Одно совсем не работает для UI, другое типа работает, но опирается на PolygonCollider, а коллайдеры на UI автоматом не растягиваются.
ВНЕЗАПНО обнаружил, что курсор обычными ивентами вида OnMouseEnter и OnMouseExit при взаимодействии с UI как бы одновременно и UI, и геймобжект трогает. Печально!
Да, все уже, просто умножил размер моего тайтла на позицию, само решилось.
Да похер уже. Ковыряю гибридный метод рейкаста - сначала RaycastAll для UI (UI оверлеем идёт), если есть хотя бы один элемент, работаю с ним, иначе кидаю Physics.Raycast для 3D объектов.
Потому что OnMouseEnter/Exit/Down и т.п. не работают с UI, с UI работают OnPointerEnter/Exit/Down. Когда же UI находится над игровыми объектами, то срабатывают оба ивента - и для UI, и для объектов. Эту хрень безболезненно подправить только рейкастами можно, похоже.
Просто у тебя железа в осанке нет. Возьми и реши задачу, а не беги от неё.
https://www.youtube.com/watch?v=EVZiv7DLU6E&feature=youtu.be
стало интересно погуглил, буду знать. Тут несколько вариантов, может и тебе поможет
Так возни много не только с моей стороны, но и со стороны процессора. Иметь кучу лишних вычислений для какой-то маленькой детали которая засела в твоей голове просто потому что - как-то не очень.
В обработчике OnMouseEnter/Exit/Down дискардь события, пришедшие из определённой зоны экрана. Будет срабатывать только УИ.
>>397721
>>397718
Корочи, запилил рейкаст, теперь эта хрень реально выдаёт "самый верхний" элемент - оверлей это или же 3д объект.
https://pastebin.com/Q6h7T0i7
Туда ещё говно всякое прикрутить вроде фильтра для невидимых UI менюшек и совсем норм будет
>>397724
Не работает, блджад. И мне наоборот НАДО чтобы UI срабатывали, а НЕ ТОЛЬКО 3д объекты.
В чём может быть проблема? Я что то не так делаю или в юнити нужно "на глаз" делать размеры?
создай геймобъект Cube он по дефолту в юнити есть, и его размер 1х1х1, по нему и сверяй. Просто ставишь у него скейл на 5-5-5 и он станет равен 5 юнитам
Я просто соотношу как это выглядит в игре и сравниваю со своей комнатой, в игре ну совсем не так, как то странно камера работает, а по размеру всё сходится, но камера как то не передает эти 5 метров.. Может у меня глазомер наебнулся, хз.
Сам стандартный ассет и папка CrossPlatformInput тоже есть. Из-за чего ошибка?
1. FOV - угол обзора камеры, у 3D пакета и юнити скорей всего разный
2. В 3D пакете ты летаешь, а в юнити возможно ходишь и смысл в том что камера не меняет позицию по высоте.
Из за этого мозги глючат и не только у тебя.
Хмм.. Тогда как же делать реалистичный размер?
FOV покрутил, желаемого не получил.
Разработчики на глаз что ли всё делают, а не по точным размерам?
Да.
Поменяй соотношение высоты потолка и игрока.
Если игрок 2 метра и потолок 2.3 метра, то комната будет казаться маленькой. Чем больша разница тем больше кажеться комната
Хочу сказать на таких мелочах не стоит зацикливаться, сделай сначало что то нормальное а не коробку, а потому корректирую как потребуется
Я просто думал что все используют точные размеры при моделировании. Например у меня высота потолка стандартная - 2500мм, высотка игрока 1750мм.
Хорошо,понял тебя, попробую делать на глаз.
Но чтот осадочек какой то горький остался...
Просто хочется сделать изначально всё верно, а не со скейл-фактором ебаться, тем более, как говорят, что это вредно.
В /pr я не вернусь, я там 3 года отсидел.
Подправил своё говно. Вчера свет отрубили, не успел
https://pastebin.com/DApXczru
Но его всё равно подгонять под неформат нужно. Внезапно оказалось, что если прицепить коллайдеры к составным частям объекта, то рейкаст будет выдавать составные части, а не сам объект. Кто бы мог подумать! Ну, зато эта хуёвина работает, подсветка объекта под курсором, включение какой-то анимации, етц етц, всё заебись
Еще нет, но теперь до следующих выходных ток время появтся
Обновление до 5.6 поможет? Вообще, стоит обновляться, ничего не сломается?
есть же возможность сохранить все файлы на этой версии , гугл диск, например, няша
О, вроде лэйауты заработали норм на 5.6
А то я заебался элементы ЮИ попиксельно выставлять..
А юнити у меня древний был как говно, я ж его ставил еще когда меня в прошлый раз кирилство накрыло
Каким образом выставлять координаты только??
Вот мой код http://answers.unity3d.com/questions/1344793/hollow-cube-using-for-loop.html
каждый луп делает 6 итераций, таким образом всего 216 что равно полому кубу 6х6х6 но мой ебучий код не работает как надо
простым образом. в аргументах две координаты - левой нижней передней вершины и правой верхней задней. потом инстансишь пол, затем потолок, затес стены.
ты просишь чтобы тебе код написали или что?
все сделал, у меня была ошибка с координадами.
Хочу поменять модельки в игре местами, например, или отредактировать текстурку имеющейся. Через какую прогу это делать? Модельки хранятся в файлах с расширением unity3d.
Ты исходный проект хочешь редактировать, или скомпилированную игру, если второе то ты не по адресу? Какой еще файл unity3d?
скинь скриншот и все
ну вот файл в котором несколько моделек волос, я хочу поменять одну из них на другую.
ну гугли сам
Лан, я чёт думал это пиздец как просто. Но оказалось, что этот файл нельзя открыть вообще никак.
вот и я так думаю
Можно, дебич.
Поставь сериализацию в текстовую и сиди дрочи в блокноте сколь угодно, но лучше открой СЦЕНУ в редакторе и просто перетащи из ассетов.
мимоПРОбыдло вернулось в тред
У меня юнити не видит вообще файлы такого расширения почему-то.
расширение .unity3d это запечатаный пакет, ты из него ниче не вынешь без специфических телодвижений
сегодня обнаружил небольшой косячек.
Короче Invoke хорошая функция но не точная если дело идет на миллисекунды. И если вам важна точность, то фигачте собсвенный таймер
Что это значит? Что я смогу вытащить?
Да по сути нужно было сделать много ботов которые делают определенные движения. Вначале сделал инвоком и на первый взгляд все было нормально. Но потом понадобилось что бы эти боты очень близко пересикались но не сталкивались и тут проблемы начали появлятся. Сделал простой таймер в FixedUpdate и с ним все зашибись было
Настрой привязку панелей к холсту. Если якоря со всех сторон, то панель будет растягиваться, а вместе с ней и внутренности.
Спасибо. И еще, нормально, что игровое поле (нижний правый угол) у меня очень маленькое в сравнении с канвасом?
Можешь поставить в канвасе рендер элементов, которые видит камера.
1 пиксель = 1 юнит поэтому он растянут
https://pastebin.com/AJAPpws3 сама хуйня
https://pastebin.com/W1DPz0zh пример использования
это слишком высокий левел. Но со своей нубо колокольни, я вижу что на 1-ом скрине у тебя текстурка наложилась нормально в нижнем правом триугольнике. Вот и сделай все остальные так же как этот
Легче сказать, чем сделать. Я с ними часа два ебался, думал что починил, а потом поменял ось, вдоль которой разрез идет и все по пизде пошло. Возможно это как-то связано с порядком вертексов, но хуй его знает.
Потом посмотрю как у других сделано.
а зачем тебе такой сложный пиздец нужен? кстаи помойму есть уже такие штуки, только режут они любую геометрию, но платные.
генерирую перекрестки через код и нужно отрезать лишние куски чтобы z-файтинга не было.
В самой юнити и на ноутбуке сборка игры работает корректно. Все кнопки пожимаются, и все работает как надо.
Но как только я пробую тестить на другом компьтере с большим монитором и разрешением, то все ломается к херам. Даже UI кнопки перестают работать. В чем проблема? Может в настройках разрешения? Но я чет не пойму где это исправить?
Подскажите.
Как вариант, укажи в MainCamera skybox и накинь на него свою пикчу.
Тебе сначала надо сделать модельку комплюхтерна со всеми составляющими, это тебе не в юньку, а в какой-нибудь блэдндер или макс. А уже потом всё это кодить.
если это не твоё, так нахуя те специальность? просто шок бля
типо даже советовать смысла не вижу нихуя.
МОжешь попытаться освоить основы blender3d и сделать простейшие модельки с простейшими текстурками(одноцветными, с надписями ну сам придумаешь) потом закидываешь в юнити и гугли просто конкретные задачи, типа unity3d orbit camera. так не потратишь изучение всей библиотеки юнити.
Да я ж написал, что модели готовые поищу, знакомые моделлеры, говорят, что можно найти. Меня именно функционал в юньке интересует, по фасту захуярить. Ну я тебя понял, оттолкнусь от того, что ты написал и гуглить буду отдельные задачи (ну или сюда с вопросом снова приду, лол) А насчет не мой специальности, ну бля, бросать поздно, бумажка нужна, плац топтать не хочется, а военная кафедра в моем универе есть, и я на рядового запаса там отучился, осталось только сборы пройти
> Меня именно функционал в юньке интересует
Готовую модельку вертеть мышкой - несколько строчек, не ссы. Как найдёшь модельку — приходи, поможем.
Только если ты хочешь вычленять запчасти и вертеть их отдельно, то убедись что у твоей модельки под каждую часть отдельный меш.
Спасибо тебе, добрый человек. Про отдельные мешы в курсах, да :)
Суть в том, что я собрал гибридный рейкастер, который сначала смотрит через РейкастОлл на игровой интерфейс, и если ничего не находит, то смотрит затем на 3д объекты. Нужна эта хрень затем, чтобы вход-выход мышки из любого объекта на экране детектировать.
Но! Внезапно появился баг. Над игровыми с правого края тонкой полоской (скорее треугольником) одна единственная игровая кнопка, которая находится в другом месте, вроде как находится и там. При разрешении 1440х900 она начинается с ~х625 и у260 и идёт вправо и немного расширяется до у250 и у300. Странно то, что это одна единственная кнопка, которая при том же разрешении находится на х600-625 и у10-40 (примерно).
отключаешь з-буфер, рендеришь свою модельку черным цветом и скейлом 1.01, второй раз рендеришь настоящую
Подмышки не обведутся же
Я хз как. Пытался, но с transform.LookAt конфликтует, который нужен для центрирования по курсору мышки.
Что значит конфликтует? Ты так уверен в том что это проблема унити а не твоего кода?
Так проблема не унити, а кода и есть. Я хуйзнает, как это сделать.
Рейкастер у меня полностью рабочий. У меня какой-то странный баг, когда рейкаст из позиции мышки далеко от кнопки почему-то видит кнопку. Всегда одну и ту же причём. Никаких манипуляций с позишеном мышки не делаю, только рейкастОл и рейкаст3д.
Что ты пишешь вообще нихуя не разобрать
>>Рейкастер у меня полностью рабочий. У меня какой-то странный баг
в доту играю еще
Я лично доволен. Нужные плюшки для 2д завезли. Наконец можно 9slice спрайты ставить
Тоже поставил, просто потому что не могу удержаться перед обновлениями.
Раньше вообще сидел на бетах и альфах, это касалось всего игр, системы, браузеров, приложений и драйверов.
Но теперь я стал более разборчивым, хотя с той же юничкой бывало, что импортировал свои проекты без бэкапов и херил весь прогресс.
https://play.google.com/store/apps/details?id=com.vg.eSportTeam
Хотел оставить отзыв типа: "После скачивания игры сломался телефон, отдал в ремонт на 15000 рублей.", но посмотрел твой акк. Пиздец ты жалок, не стал ничего писать. У тебя кстати ссылка в gPlay на vk неправильная.
Который раз захожу за юнити
>Аформите падписку!!! Вить там хуева туча прилажений которые тебе нахуй не уперлись!
>Ты уже зарабатываешь больше ста? Оформи подписку и выплати её всю сука!
>Свалилось наследство? Биткоин взлетел? Квартиру продал? Плати Сука!!! Оформи нашу подписку и может быть будешь сидеть целый год, а если повезет и два без нашего зудения.
>Мы следим за тобой и все про тебя знаим!!!!111111111111
и ухожу ничего не скачав.
К чему ты это написал? в самой программе никакой рекламы нет, при билде игры тоже. Единственное ограничение хоть сколь значимое - обязательная 3-ех секундная заставка юнити, которая и та вставляется автоматически и ты не должен париться.
Проблема наступает на стадии реализации.
Сам договор составлен так, что очень сложно понять в какой ситуации наступает моя финансовая ответственность, а в какой нет. Размытые формулировки оставляют много места для маневра. что не устраивает меня как конечного пользователя.
>>398482
Забить все носители бесплатной хуитой?
Я больше проигрываю с рассылки на почту, в которой, по сути: "Вот у нас, короч, есть пак скриптов и ассетов, мы уже все за вас накодили, ну а че вам, например, с камерой в шутане ебаться, наши профессионалы уже все навелосипедили синженерили за вас.
Всего за 150 долларов ю эс оф эй."
А твои текущие проекты сейчас сколько приносят?
За 150 баксов там годнота продается, кстати, типа Archimatix или MapMagic. Плагины попроще и стоят дешевле, фпс болванка 10-20 баксов.
Другое дело, что школьники и прочие вороватые граждане не привыкли платить за чужой труд, или им банально дораха.
Дениска, плез. Куплю я твое подели, куплю, но попозже, сейчас другими вещами занят.
я не он просто по мойму эту хуету делал 1 человек, вот и говорю что это пиздец какой хард
Мне эта идея не нравится преимущественно тем, что это увеличивает количество кирилльства на унити. А что там в паках я хуй знает, мне бы на дошик мелочи насобирать.
что такое кирилльства поясни нюфагу
Чего смог сделать то за это время? Захожу я в тред юнити а вы тут ГОАП делаете. Я вот тоже ГОАП делаю. Его на самом деле сделать то легко, только дебажить трудно. В статье про FEAR было довольно много мутных мест про то как синхронизировать работу контролера ИИ и его мозгов. Кто как решил это проблемы?
https://www.youtube.com/watch?v=ztFALZZTP_U
Никак. Без нормальной архитектуры ты быстро зароешься в говнокоде и игры не выйдет. Просто со временем научишься быстрее находить нужные решения и это не будет так много времени отнимать.
Короче, архитектура нужна.
В том то проблема что я ищу Идеальную Архитектуру. Просто архитектуру сделать как два пальца (5 лет в гейдеве!).
Можно хорошо продумать что и как должно отвечать за что и сделать на комбинациях MonoBehaviour/ScriptableObject. Но это хуёво тестируется.
Можно взять Entitas, но мне не нравится что каждый объект будет занимать под килобайт памяти когда число разных компонентов на контекст уходит за стольник. Плюс - можно тестировать, очень годно в плане понятности что и куда происходит, плюс тестируемо. Если хочешь сделать реузабельные модули то случается говно из за кодогенерации.
Разные IoC-контейнеры, вроде StrangeIoC. Всё красиво, тестируемо и по феншую, но если я захочу создать тыщщу новых объектов то в каждый из них полезет рефлексия и получится говно.
Плюс возможны сочетания разной степени тяжести. И ни у одного подхода нет явного преимущества. И я не могу нихуя решить. Это как Написание Движка уже.
Лол, посмотрите на этого дебила. Архитектуру он блядь делает из ассетов. Кроме MonoBehaviour и Entitas конечно же нет вариантов. Пиздец, ебаные макаки.
На высоком уровне у тебя по сути два выбора:
1. Ты используешь Юнити как View-Controller и пишешь игровой код отдельно.
2. Ты помещаешь логику в MonoBehaviour.
В первом варианте у тебя снова есть два концептуально разных подхода: ООП или DOD. Entitas является примером чистейшего DOD, когда абсолютно всё построено на данных и объектов как таковых не существует. В то время как фреймворки типа StrangeIoC пример чистого ООП, когда разные объекты не знают друг о друге ничего кроме сообщений.
Выбор архитектуры на высоком уровне лежит где то между этими тремя точками. Можно безусловно написать своё, но ты с большой вероятностью закончишь написанием точно такого же по сути кода как в уже готовых библиотеках.
Абсолютно не очевиден. Ни у одного способа нет явных плюсов над другими.
Варианта 1-1 (DOD) даёт наибольшую гибкость, высокопроизводительный и легко тестируемый код, но делает очень трудным использование сторонних библиотек.
Вариант 1-2 даёт тестируемый код, но создаёт проблемы на динамическом связывании, может быть нужно делать обвязку для сторонних библиотек.
Вариант 2 нетестируем, но наиболее прост в плане "какой то результат за время", слишком легко скатывается в говно.
на самом деле разумеется очевиден, то о чем проект определяет то какими средствами он будет достигнут. всегда.
и если у тебя даже MonoBehaviour скатывается в неконтролируемое говно то похоже пяти лет в геймдеве тебе не хватило.
Вот нахуй ты сюда лезешь со своим говном, ебанина? Ты понимаешь, что геймдев это: хуяк-хуяк и сдали проект? Ты небось, пидор тупой, с утра до вечера дрочишь архитектуру, а проект с мёртвой точки нихуя не движется. А если ты ещё и в команде работаешь, то тебя как последнюю манду все проклинают из-за того, что ты тянешь всех в болото. На Unity мы пишем скрипты. Мне вот интересно, много ли ты видел хороших архитектур на том же самом lua?
Засунь себе куда поглубже рассуждения о таких подходах, прочитай про принципы SOLID и используй их тогда, когда они реально понадобятся. Я для тебя подчеркиваю, что SOLID - это в первую очередь принципы, а не законы идеального программирования. Не надо усложнять себе и другим жизнь, код пишется в первую очередь для людей, которые будут поддерживать его, а для машин уже в последнюю очередь. Помни, оверинжениринг -- это всегда плохо.
Я хуею с таких как ты, которые 5 лет работают в гейдеве и не понимают, что деньги платят не за охуевшую архитектуру и пиздатый код, а за фичи. Процитирую Торвальдса: Ты можешь писать охуенно красивый код, но он не будет решать задачу. Вот так и у тебя.
Ещё у тебя преждевремменая оптимизация лезет изо всех дыр. За такое у нас в конторе убивают нахуй.
мимоПРОбыдло
Я получаю MyPanel из пула объектов
GameObject newObject = buttonObjectPool.GetObject(messagePanelPrefab);
newObject.transform.SetParent(panelParent, true);
//newObject.transform.SetParent(panelParent.transform, true);
//newObject.transform.SetParent(canvas.transform, true);
MessagePanel mesPanel = newObject.GetComponent<MyPanel >();
mesPanel.show(mes);
И все работает, панелька появляется, КРОМЕ одной штуки - mesPanel.panelRectTransform почему то равно null (хотя я родителя указывал разными способами), что приводит к эксепшинсам.
Короче - как инициализировать для панели ее panelRectTransform имея ссылку на объект-контейнер (холст например, он же Canvas)
В чем может быть проблема?
Потому что тебе нужно вызвать: mesPanel.panelRectTransform = mesPanel.GetComponent<RectTransform>();
Либо, обернуть это всё дело в геттер:
RectTransform m_PanelRectTransform;
public RectTransform panelRectTransform
{
get
{
if (panelRectTransform == null)
panelRectTransform = GetComponent<RectTransform>();
return panelRectTransform;
}
}
Либо бахнуть так:
public RectTransform panelRectTransform;
void OnEnable()
{
OnValidate();
}
void OnValidate()
{
if (panelRectTransform == null)
panelRectTransform = GetComponent<RectTransform>();
}
Потому что тебе нужно вызвать: mesPanel.panelRectTransform = mesPanel.GetComponent<RectTransform>();
Либо, обернуть это всё дело в геттер:
RectTransform m_PanelRectTransform;
public RectTransform panelRectTransform
{
get
{
if (panelRectTransform == null)
panelRectTransform = GetComponent<RectTransform>();
return panelRectTransform;
}
}
Либо бахнуть так:
public RectTransform panelRectTransform;
void OnEnable()
{
OnValidate();
}
void OnValidate()
{
if (panelRectTransform == null)
panelRectTransform = GetComponent<RectTransform>();
}
быстро-фикс
RectTransform m_PanelRectTransform;
public RectTransform panelRectTransform
{
get
{
if (m_PanelRectTransform == null)
m_PanelRectTransform = GetComponent<RectTransform>();
return m_PanelRectTransform;
}
}
мимоПРОбыдло
Проблема в том, что ты используешь Canvas. Canvas не является RaycastTarget. Попробуй натянуть Image или что-то из этой оперы.
Точно, спасибо
На экране 3 зоны, хочу чтобы в каждой из этих зон скорость игрока кратно возрастала.
еще можешь сделать через кривую
AnimationCurve curve = new AnimationCurve();
потом строишь нужную кривую прямо в инспекторе
и делаешь
speed = curve.Evaluate(position.y);
гравитацию отключи у ригидбоди и не будет тянуть
public class Genital{ ... }
public class Pisos : Genital{ ... }
или достаточно будет сделать так?
Pisos pis = new Pisos();
pis = null;
Но сам класс ведь еще в памяти?
Да, в памяти.
Но для тебя его уже не существует. GC когда-нибудь триггернётся и выкинет этот класс нахер из памяти.
А вообще, не забивай себе голову "пересчитывая каждый байтик в памяти". Просто пиши код. Когда производительность бахнется ниже плинтуса, тогда сядешь оптимизировать.
>>398793
Сюда смотри: https://docs.unity3d.com/ScriptReference/UI.Button-onClick.html
мимоПРОбыдло
Дубина ты пустоголовая.
Я тебе ссылку как "юнитиэвентами" пользоваться кинул, а ты в кнопку пялишься.
делай делегаты тогда в офф туторах есть готовые тествое классы разберешся
Я предлагаю тебе выпилиться, идиота кусок. Ты просто документацию читать не умеешь и не хочешь разбираться.
https://docs.unity3d.com/ScriptReference/Events.UnityEvent.html
>Description
>A zero argument persistent callback that can be saved with the scene.
>Ты просто документацию читать не умеешь и не хочешь разбираться.
Ой, иди нахуй.
Очень срочно, две недели до сдачи, ибо кикнут из шараги
я ебу какой лучше, мне на юнити заебись. С гейсракером не знаком, там вроде нет кода в отличии от юнити. Сам решай
хотя нет ебу, если хочешь один простой платформер делай гейсракер, если хочешь перспективы для игор посложнее или 3д игор, ебашь унити.
как у тебя с ассетом то не вышло? пример открывается? а я догадывался что юнити преподают в гпту
Ну, код я к плюсам отношу, тащемта. Могу дописать что-то своё, если нужно. Но и встроенный функционал важен, чтобы не писать что-то свое. Как с этим в Юнити 2Д? Гравитацию, столкновения, объекты смерти, направления движения я смогу в пару кликов задать?
Кто нить знает как менять цвет спрайтов в анимации?
Задача: Открывается окно (анимацией) и в зависимости от сложности оно будет опредленного цвета. Но автохуй цвет такой какой был в конструкторе. Меняется только если отключить аниматор.
p.s. Из решений нашел: с помощью шейдера менять спрайт, но разве нельзя просто через код?
Можно.
В настройках стейтов аниматора, сними галку Write Defaults.
Скорей всего у тебя всё по жопе пойдёт, но по-другому вроде как нельзя.
цвет материала поменять?
Чет странно ведет. Но вроде как поменялось. Пойду разбираться. Спасибо
> сравнивать движки под различные задачи
> рассматривать исключительно стандартное освещение на однотипных шейдерах
> запускать на четырёх кроссфайр титанах и дрочить на 125 фпс
> ЕТОТЛУТШЕ
резюмирую: юнити соснул
Всё не так. Они по умолчанию как бы расширение изображения, к которому привязаны, да ещё и имеют и нерегулируемое поведение (т.е. всегда цвет при наведении мышкой меняют, даже если это с белого на белый). Написать 3 с половиной строчки на смену цвета (или на анимацию какую-либо) проще и чище, чем с юнитовской кнопкой ебаться. + у неё ещё баг есть, что она изменённый цвет держит пока не кликнешь где-нибудь за пределами кнопки. + разделить онКлик на левую или правую кнопку мыши (да и вообще добавить взаимодействие какое-либо другое) нельзя.
какие-то у тебя сраные проблемы. что за баг то такой? окно чтоли когда не зафокушено?
>разделить онКлик на левую или правую кнопку мыши (да и вообще добавить взаимодействие какое-либо другое) нельзя.
дурак ты чтоли.
public virtual void OnPointerClick(PointerEventData eventData)
у кнопки она виртуальная. если так надо другими кнопками жать то наследуйся от кнопки и оверрайдни как тебе там надо.
И чтоб после достижения полной прозрачности вызывался SetActive(false)?
у CanvasGroup же есть возможность регулировать альфу компонента вроде. сделай корутину которая бы запускаясь считала время до целевого пропорционально уменьшая, в конце делала SetActive(false)
Спасибо
Пример открывается, скрипт вместе с ассетом идёт кривой, я пофиксил
Создаю кубик, вешаю на него скрипт, кладу поверх канваса - карта какая-то затемнённая и по заданной широте и долготе неверно отображает местоположение
вроде того
transform.Rotate(0, Input.GetAxis("Horizontal") Speed, 0);
transform.translate(0, 0, Input.GetAxis("Vertical") Speed, Space.self)
перед Speed знак умножения вставь тока
да ты не парься тут все нубы со скилом меньше 5/10
>Возможно ли запустить проект Unity в виде веб-приложения? Чето слышал, что HTML5 это может.
Конпелируешь как WEBGL и все. Только конпелируется ОЧЕ долго
а все обошелся простеньким enumerator'ом
Стоит ли смотреть курс от ITVDN ?
Я вангую, что ты из этих плюсодебилов, которые переучиваться нихуя не умеют. Да и не хотят.
>>нерегулируемое поведение
>>transition The type of transition that will be applied to the targetGraphic when the state changes.
https://docs.unity3d.com/ScriptReference/UI.Button.html
>>проще и чище
Чище, когда у тебя полторы кнопки, а когда у тебя их 560 и у каждой своя анимация будет, вспомни про Animator.
>>(да и вообще добавить взаимодействие какое-либо другое) нельзя
>>откртытый исходный код
>>пиши что хочешь и как хочешь на готовой кодовой базей
>>НИЛЬЗЯ-НИЛЬЗЯ, ТУПА ЗДЕЛОЛИ, Я ЛУДЩИ ЗНОЮ
Резюмирую: ты глюпый.
>>398852
Либо можешь вообще без кода обойтись и накрутить всю эту >>398853 тему на Animator.
>>398997
>ITVDN
Лучше почитай какую-нибудь Unity In Action или просто начни с туторов на сайте у юнити.
Помни, у юнити, скриптинг далеко не на топовом уровне, т.к. расчитывается для людей далёких от программирования.
мимоПРОбыдло
Я вангую, что ты из этих плюсодебилов, которые переучиваться нихуя не умеют. Да и не хотят.
>>нерегулируемое поведение
>>transition The type of transition that will be applied to the targetGraphic when the state changes.
https://docs.unity3d.com/ScriptReference/UI.Button.html
>>проще и чище
Чище, когда у тебя полторы кнопки, а когда у тебя их 560 и у каждой своя анимация будет, вспомни про Animator.
>>(да и вообще добавить взаимодействие какое-либо другое) нельзя
>>откртытый исходный код
>>пиши что хочешь и как хочешь на готовой кодовой базей
>>НИЛЬЗЯ-НИЛЬЗЯ, ТУПА ЗДЕЛОЛИ, Я ЛУДЩИ ЗНОЮ
Резюмирую: ты глюпый.
>>398852
Либо можешь вообще без кода обойтись и накрутить всю эту >>398853 тему на Animator.
>>398997
>ITVDN
Лучше почитай какую-нибудь Unity In Action или просто начни с туторов на сайте у юнити.
Помни, у юнити, скриптинг далеко не на топовом уровне, т.к. расчитывается для людей далёких от программирования.
мимоПРОбыдло
>>пиши что хочешь и как хочешь на готовой кодовой базей
>>НИЛЬЗЯ-НИЛЬЗЯ, ТУПА ЗДЕЛОЛИ, Я ЛУДЩИ ЗНОЮ
Дай-ка переиначу:
>кнопка из коробки реагирует только на левую кнопку мыши и глючно переключает свой цвет
>ПИЛИ КОСТЫЛЬ ПИЛИ ЕЩЁ ОДИН ИНАЧЕ НЕ МУЖЫК
ебать костыль. ты наверно из тех кто вместо того чтобы наследоваться от базовых классов которые уже существуют пишет свой велосипед каждый раз?
Правильно, зачем делать всё ровно и аккуратно с нуля (или переписать хотя бы), когда можно взять готовое, но с тонной ненужного функционала, и при этом костылём приделать нужный тебе.
>базовый класс реагирует на левую кнопку мышки
>наследованный - на левую и правую, хотя для всех классов необходимы и левая, и правая
>но делать нормально нельзя - ООП! ООП!
с такими взглядами все ООП это какой-то набор костылей. зачем делать то что за тебя уже сделали и сделали это так чтобы ты, если надо, мог под себя это подстроить? зачем вся эта абстрактная хуйня, дженерики, виртуальные функции и прочее? наверно чтобы самим пользоваться а ты сидел велосипеды писал!
>>399030
базовый класс реагирует на эвент. он кнопка, понимаешь? вот как в лифте, блять! ты видел в лифте кнопки с альтернативными функциями? на них можно только жать. кто же знал что ты ещё что-то там хочешь!
на, возьми, напиши как тебе там надо. можно даже пользуясь MenuItem сунуть эту кнопку вместе со стандартной кнопкой юнити и назвать это "хитрожопая кнопка". у которой там вызывается разный делегат на все три кнопки.
https://bitbucket.org/Unity-Technologies/ui/src/0155c39e05ca5d7dcc97d9974256ef83bc122586/UnityEngine.UI/UI/Core/Button.cs?at=5.2&fileviewer=file-view-default
написать что-то поверх существующей кнопки это блять дай боже 30 строк кода. куда уж "чище"?
вот велосипеды хорошо изобретать только если украсть негде.
че понадобился
Ты закрашиваешь клетки под треугольником или строишь треугольник по закрашенным клеткам?
до меня дошло, посмотри на цифры. он треугольнык нарисовал по верх треугольника из цифер
клетки под треугольником же. но надо закрасить все клетки в которых находится треугольник хотя-бы краюшком. очень полезно!
хотя могу при желании конечно треугольник строить по закрашенным областям, хули.
>хотя могу при желании конечно треугольник строить по закрашенным областям, хули
И каким алгоритмом?
да много каким. если взять контур любым удобным методом то можно применить алгоритм рамера-дугласа-пекера к нему в несколько шагов и упростить его до треугольника, например.
Если я, нубус максимус, понемаю правильно, то на двери, например, нужно повесить риджидбоди для механики И коллайдер, если надо симулировать скрип. Для регулировки звука от происходящего за дверью, надо подвязать угол ее поворота.
Скажите, где я обосрался плес
Стоит ли пытаться перепиливать их под режим rag doll?
Я знаю, как включить анимацию под дэмиджд. В том числе навесив разных триггеров на разные места, чтобы ужимки были соответствующими.
Так вопрос стоит ли пытаться симулировать физику кроме как в одежде, волосах на голове и сисяндрах?
Сделай игру, заработай денег, купи обратным числом и спи спокойно.
Пока твоя игра не приносит дохода, с тебя нищеброда и взять нечего.
Тов. Майор, откуда мне было знать, что ассеты не из public domain?
Майор Сидоров: издеваешся, сука! Гавари по-русски блеат!
Как в Update проверить, какой коллайдер (из нескольких в общем случае) всё ещё перекрывается в коллайдером кого-нить в поле?
Мне нужно засекать время перекрытия (например, посчитать насколько один упорно смотрит на другого)
хоспаде, хоть погугли ну хотя бы на донышке погугли? https://docs.unity3d.com/ScriptReference/ заходишь и пишешь в поиске OnTrigger моментальный ответ на твой вопрос
ълять чувак рили? как ты нашел OnTriggerEnter но не нашел Stay и Exit?
Но имея на себе rigidbody, я буду упираться им в другие rigidbodies, даже и невидимые.
Есть ли возможность детектить коллизии БЕЗ rigidbody????
кажись понял, что переключив на IsKinematic "жёсткая" физика отключается (и можно без доп.проблем двигать через transform)
Если ты делаешь игорь, то стоит купить готовое решение. Если делаешь ассет, в надежде его продавать, то стоит сделать.
Разьясни конкретно что надо. Из того что я понял тебе подойдет такое решение>>
OnTriggerEnter(Collider col){
if(col.compareTag("Нужный тег")){
//сработает, если косаемый объект будет с тегом. Иначе Ничего не проихойдет
}
}
По игре нужно, чтобы объекты могли реагировать на близость других к ним. Например, стоит проститутка, у нее коллайдер на 10 метров радиусом. Когда фрайер туда забредет, она на него триггернется (повизгивание, анимация). Также слижком интимная близость (без на то симпатии) тригернет другое поведение.
Это мне понятно, как сделать.
Я же думал заскриптить манеру поведения в зависимосте от того, куда фраер смотрит и как долго пялится. Тут, как кажется, лучше raycast на коллайдеры шлюхи на сиськах и прочем. Рейкастить в камеры первого лица, ее же и зумить.
Спасибо за совет с тегами. Я знаком еще далеко не со всеми возможностями
вместо нескольких колайдеров можно оботись одним, я думаю. Берешь hit.point.y от луча и whore.position.y и сравниваешь.
Лепи модельки так, чтобы на сцене сиськи и жопа были разными гейобжектами. На каждый из них вешай разные, полиморфные какому-то интерфейсу, монокомпоненты-вьюшки (титсвью, баттвью). При рейкасте ты получаешь вьюшку через геткомпонент, вызываешь ее метод-реакию на просмотр. А внутри этого метода ты уже вызываешь нужный тебе метод главного бихевиор-компонента самой вхоры, который отвечает за ее реакции.
Но одним коллайдером так не обойтись, да.
А ещё ты можешь делать проекции по x, y и z и с помощью геометрии выискивать пересечения прямых (или лучей) с фигурами первый курс технического вуза, лёл. Что сложнее, коллайдер или это?
танчики слишком изи, не?
Недавно начал изучать юнити, поэтому задам нубский вопрос:
Допустим, я делаю игру про мага, который швыряет разные спеллы. Спелл, долетев до врага самоуничтожается. Правильно ли я понимаю, что механика должна быть следующая:
0) Создаем префаб нужного спелла со скриптами, частицами и прочим.
1) В момент каста спелла создаем новый геймобжект из префаба.
2) Задаем его скорость, отпускаем в полет.
3) Когда спелл долетает до врага или еще куда, уничтожаем созданный геймобжект.
Правильно?
Спасибо, буду разбираться. Тогда еще один вопрос.
Для огня использую систему частиц. Но огонь получается какой-то слишком прозрачный. Какие только настройки системы не крутил, никак не получается этого избежать. Подозреваю, что дело в самом шейдере, но в какую сторону копать - ума не приложу.
На скриншоте видно, что та часть огня, которая попадает на небо, получается очень плохо видна. Как сделать насыщенный цвет огня на светлом фоне?
Тащемта можно и без object pool, просто производительность будет теряться на работу с памятью.
В том и проблема, что я не пойму где это может настраиваться. Отключил color over lifetime. Поставил настройки цвета как на пике. Один черт он слишком прозрачный.
какой же ты мудень) ненавижу таких. Какой нахуй пул в нубо-игре? ТАм максимум 2-3 спела за раз будет, какая производительность ебанушка бля.
Самая нижняя вкладка Renderer. Покрути там, но если я не ошибаюсь тебе там поможет только параметр Material. Создаешь новый матерьял, выставляешь нужный шейдер, там для партиклов шту 15 шейдеров есть, они то и решают
ах да если там уже свой матерьял не стандартный, то просто его поменяй. Только еси этот же матерьял изспользуешь в других партиклах то они все изменяться
Зашел в шейдер, в самих настройках ничего особенного нет. Какой другой шейдер выбрать не знаю.
Понимаю, что вопросы у меня из разряда "как сделать, чтобы было пиздато", но может есть какие-то гайды именно про создание подобных эффектов для нубов? Туториалы по частицам посмотрел, там ответа на свой вопрос не нашел.
ты минут 10 потратишь если просто покрутишь ползунки у каждого партикло-шейдера. Я так думаю, мне так кажется.
хотелось бы поиграть с размытостью
Спасибо!
Будто пул - архисложная архитектура. То ты инстанцируешь и разрушаешь, то энейблишь и дисейблишь.
А есть стандартный класс что бы я его наследовал и получил свойства пула автоматически для потомка?
Вопрос - если такой класс что унаследовав от него мои Фабрики этот класс сам будет удалять перекрестные ссылки что бы я не проебал чего нибудь. Это вроде паттерны называется?
Я имел ввиду как звать паттерн который реализует пул объектов. Вот что то нашел по теме: https://habrahabr.ru/post/175317/
Это просто на самом деле.
>>399337
чет плохая у тебя архитектура если ты за своими фабриками не следишь нигде. если сама фабрика имеет ссылки на все места где она есть то сделай метод "самоудалится везде где меня знают". но вообще лучше просто поправь то что ты наделал. никаких публичных полей, только через аксесоры всё сделай, сделай себе метод который бы переключал флаг в фабрике и тогда аксесоры начали бы верещать что фабрики нет но ты всеравно лезешь. оверлоадни оператор равенства, чтобы он утверждал что фабрика нулл == тру.
Зачем удалять объекты? Отправляй их в пул. К нулю не приравнивай, лучше в фабрике пропиши бул, если да, то фабрика живая, если нет, то фабрики нет, и она пропускается.
>оверлоадни оператор равенства, чтобы он утверждал что фабрика нулл == тру.
Вот это не понял, чем мне это поможет?
>>399342
>если сама фабрика имеет ссылки на все места где она есть то сделай метод "самоудалится везде где меня знают"
Это звучит как переусложнение. Там и так многовато перекрестных ссылок, не хотелось бы еще иметь и ссылки на места где могут быть ссылки на фабрики
Хотелось бы что бы фабрика сама за самой следила и сама свои следы уничтожала... Вообще без участия кодера...
А MohoBehaivor не пойдет? У него вроде есть функция удаления ссылок на дохлый объект (или нет)
>>399343
>Зачем удалять объекты? Отправляй их в пул. К нулю не приравнивай, лучше в фабрике пропиши бул, если да, то фабрика живая, если нет, то фабрики нет, и она пропускается.
Ну в принципе ты прав, так и чутка быстрее будет. Тем более я именные итераторы учился лепить...
>Вот это не понял, чем мне это поможет?
хороший способ разворошить улей. помогает же это юнити. там же можно написать Destroy(хуйня), но что происходит с ссылками на этот объект? что-то интересное!
>Это звучит как переусложнение. Там и так многовато перекрестных ссылок, не хотелось бы еще иметь и ссылки на места где могут быть ссылки на фабрики
если всё на всё ссылается то иди уже до конца, хули. но вообще лучше так не делать если ты не лепишь что-то вроде графа, или другой хуйни где это действительно надо.
>А MohoBehaivor не пойдет? У него вроде есть функция удаления ссылок на дохлый объект (или нет)
неа. там чит навроде того что я уже описал. он же не будет лазить во все твои массивы и переменные и говорить что там ничего нет. он просто будет говорить что у тебя тут нулл всеми доступными методами.
>>399297
>>399292
>>399258
Короче, я нашел похоже ответ на свой вопрос, но он меня нифига не порадовал.
http://answers.unity3d.com/questions/573717/particle-effects-against-light-backgrounds.html
Похоже, что придется или фон делать темный для моей игры, или же учиться писать шейдеры, но я не уверен, что осилю их.
ты шейдер не пробывал менять? стандартный прибавляет все цвета. То есть если есть желтый на белом фоне, то выйдет очень светло желтый или даже белый. Попробуй поставить шейдер Sprites/default или diffuse если не один из партиклов не помогает. Если и это не поможет меня на другие шейдеры.
и чем он тебя не обрадывал, вот черным по белому
If you want to retain the original colors the additive blending won't help you - you should use the Alpha Blend.
>>399338
>>399337
Нашел generic пул объектов:
public class ObjectPool<T>
{
private Queue<T> _pool = new Queue<T>();
private const int _maxObjects = 100; // Set this to whatever
public T Get(params object[] parameters)
{
T obj;
if (_pool.Count < 1)
obj = (T)Activator.CreateInstance(typeof(T), parameters);
else
obj = _pool.Dequeue();
return obj;
}
public void Put(T obj)
{
if (_pool.Count < _maxObjects)
_pool.Enqueue(obj);
}
}
Но он использует рефлексию что ест ресурсы. зато универсальненько.
>>399338
>>399337
Нашел generic пул объектов:
public class ObjectPool<T>
{
private Queue<T> _pool = new Queue<T>();
private const int _maxObjects = 100; // Set this to whatever
public T Get(params object[] parameters)
{
T obj;
if (_pool.Count < 1)
obj = (T)Activator.CreateInstance(typeof(T), parameters);
else
obj = _pool.Dequeue();
return obj;
}
public void Put(T obj)
{
if (_pool.Count < _maxObjects)
_pool.Enqueue(obj);
}
}
Но он использует рефлексию что ест ресурсы. зато универсальненько.
1 попробуй поменять тип текстуры в настройках её импорта со Sprite на другой, и там потыкай галочки.
2 удали фон в фотошопе
3 попробуй другие шейдеры
Да скорей всего 1 вариант. Ставь тип Default с галочкой alpha is transparent и alpha source from gray scale
Какого хера у меня срабатывает False Event, если персонаж находится на земле?
Коллайдер проще. Но если твой уровень не ниже индусов и тайцев, работающих на юнити, то твой велосипед будет работать сильно быстрее (потому что в нем не будет лишнего говна).
Ты должен помнить, что при построении велосипедных проекций тебе придется считать пересечения для тридешных фигур, которые несколько сложнее, чем куб и шар. И не факт, что ты посчитаешь это быстрее, чем юнитишный коллайдер.
А епта, ты уже нашел решение с блендингом.
А то у меня на разных экранах по разному отображается игра, а нужно что бы было одинаково везде. Что ни гуглил не помогает.
Там какая-то общая информация, а у меня проблема такая, что на ноутбуке игра нормально работает. Но как только я перекидываю билд на пк с большим монитором. То все кнопки перестают работать, плюс сами объекты не всегда реагируют на клик мышки. Ну и разрешение херится.
Стоят вот такие настройки. Что можно поменять, подскажите.
Скорее всего дело в хуевом сочетании canvas -> render mode -> screen space и canvas scaler. Не скалируй канвас когда у тебя УИ в скрин спейсе считается. В скрин спейсе размер элементов определяется сайзом камеры и одно может пидорасить другое.
Сколько не пытаюсь менять настройки, на одном пк все работает, а на другом, с большим экраном нет. И не могу понять в чем проблема.
Ладно, с разрешением я вроде разобрался. Но возникла другая проблема.
В игре есть кнопки и игровые объекты. В самой юнити все кликается как надо, но в билде как-будто все колайдеры съехали влево. То есть когда я жму на сами объекты, то ничего не происходит, а когда нажимаю на область левее, то все срабатывает как надо.
В чем тут проблема?
Тоже очень интересно. Только у меня вместо съезжания появляются невидимые двойники для кнопки в случайных местах. Это точно какая-то хрень с разрешением
Гугланул, похоже на твою проблему:
In the 'canvas scaler' component of your buttons' parent canvas, set the 'UI Scale Mode' to 'Scale with screen size'.
Then provide a reference resolution[Your default resolution on which you've built it], and set the 'Match' value to 1.
https://docs.unity3d.com/Manual/script-CanvasScaler.html
https://docs.unity3d.com/Manual/HOWTO-UIMultiResolution.html
Короче, замкнуть надо было.
http://www.firewatchgame.com/screenshots/firewatch-e3-5.jpg
https://cdn.arstechnica.net/wp-content/uploads/2017/04/finch2.jpg
Или это все же специфика конкретных игр?
Потому что делать графоний дорого.
есть куча примеров с реалистичной графикой, но дальше примеров не идет. Юнити больше заточен под инди, а инди не подразумевает топ гта-5 реалистичность. За реализмом есть UE4 там никаких настроек по сути не надо. Захуячил материалы, расставил стены а графон пиздатый по умолчанию. Код там на c++ кончено еще блуприннты есть, на которых можно пилить относительно простые механики
Ебаный дебил, создай переменную
Rigidbody2D rigidbody2d = GetComponent<Rigidbody2D>();
И используй как раньше.
Ну блин, я хотел сделать так, чтобы при наборе скорости кораблик медленнее поворачивал, а он велосити приобретает только когда его пидорит линеар драг, а в полете велосити 0, воооот.
Ага 100% не троль. Прямо смотрю твой код и вижу точно и однозначно не троль.
Убейся об стену придурок
Чего ты так бомбишься, пусяка?
>>агрессивный чувак.
i dont think so
>>Дельтатайм все сломал
нужно умножить скорость на дельтатайм, и скорость при этом увеличить раз в 10 потому что оно у тебя наверно стало на столько плавным что почти не двигалось, просто скорость увеличь
>Дельтатайм все сломал
Скорость * deltaTime позволяет в переменной скорости хранить скорость в метрах в секунду независимо от фреймрейта.
если скорость 10 то каждый кадр ты будешь пролетать 10 унитов, если 10*Time.deltaTime то ты за 1 секунду пролетаешь 10 юнитов
Ну же? Никто не знает?
тебе ведь надо чем больше спид тем меньше ротейт? тогда сделай както так
float MaxRotSpeed = 10
float MinRotSpeed = 1
float RotSpeed = Mathf.lerp(MaxRotSpeed, MinRotSpeed, moveSpeed / MaxRotSpeed)
rotSpeed вставь в ротейт вместо того что у тебя там
Есть две сферы, одна низкополигональная, другая высокополигональная.
На низкополигональную почему-то не натягивается текстура, в чем может быть причина?
других причин не вижу
тебе кстати возможно проще будет шейдер спиздить, который без разверток и текстур будет ребра рендерить тупа как надо, ну или написать если есть желание и время
Попробую. Текстура выглядит слишком бледной, мне надо добиться эффекта свечения, как у линий на первом пике тут >>399779 , но чтобы при этом линии были на ребрах сферы и не было артефактов по краям.
Линии нарисованы с помощью Vectrosity, а внутри расположена дефолтная сфера из юнити, чтобы закрывать заднюю
мои глаза. я даже распознать слова не могу из за такого контраста жесть. только по 1 букве получается))
я тоже подумал так и сделал яркость ниже и понял что дело в шрифте, либо картинка так искозила его
мне такой не привычный видимо вот и все
по поводу чего? такой тайл за 2-5 мин делается в квиксиле а еще пиздаче накачать фри текстур паков
>>Ну, по поводу хорошо/плохо ли вышло?
странный вопрос. относительно чего и для чего?
>>Что за квиксил?
photoshop quixel
Нормусики, реалистичненько
>>399830
>Посоны, делаю кнопки через скрипт и через скрипт задаю события onClick() , но все кнопки возвращают одинаковое значение
Вестимо твой делегат подвязывается не к значению i а к ссылке на i котороя в конце итерации равна Length
Как лечить? Хз, я бы ебанул в делегате локальную переменную, что бы сохранить там текущее значение i b yt ghjt,sdfnm его при итерации.
Спасибки, анон.
Мне для опен-сорсного симулятора экономики, ворованное не предлагать. Или мне ебанутся и хуячить меш графики в 2Д холст каким то образом? (MeshChartFree)
Я уже выпонил норму по гонкам на Тур Де Франс. Пора за контент браться а не архитектуру\гуи пилить
Скажи спасибо что это не float с 0.00000000000001 точностью )
А серьезно - норм замечание. Инкапсулирую монеты в куски золота - меньше сущностей будет. Просто я хотел что бы деньги и товары были несовместимы классами, но получилось все равно какая то фигня..
а сам чего?
там не самый хитрый "алгоритм". просто смотрю где отрезок пересекает линии разделяющие грид, в месте пересечения переключаю две соседние клетки, а потом закрашиваю по одной из осей первый и последний индекс.
о неграх. игрок будет ходить по острову и выверять тайны корпорантов, но на него будут охотится локальные негры. очень глубокая идея.
вообще на самом деле просто небольшой фрагмент моего навмеша. оптимизирую поиск стартовой позиции на навмеше, чтобы перебирать не все треугольники в чанке а только небольшую часть.
на скриншотике то-же самое применено. центры грида соеденены к центрам конвексных областей которые в нем находятся хоть немного. цыфра - их количество.
хотел добавить "рэйкастинг" на навмеш чтобы была возможность проверять возможность перемещаться в нужном направлении. например для проверки возможности уклонения в эту сторону. а ещё хотел попробовать потрогать нейросети и использовать результаты рейкаста в качестве инпута. здорово же!
Нейросети пока еще не на той стадии развития чтобы применять их в гейдеве в любых приличных количествах
чево бля? нейросетями называют алгоритмы а не реальные нейросети
Я хочу запилить ртс по типу warcraft 2-3, начал делать прототип, научил болванки-капсулы ходить(с помощью navmeshagent), атаковать по клику, автоатачить, выделяться рамочкой и прикрутил хелсбары.
НО. Я не потяну 3D-графику, вариант с напарником отпадает. По этому думаю перейти на 2D. Вопрос такой, будет ли работать navmeshagent в 2D? Или для 2D есть другие варианты решения проблемы поиска пути в Unity?
>будет ли работать navmeshagent в 2D?
Через пердолинг.
>Или для 2D есть другие варианты решения проблемы поиска пути в Unity?
В сторе есть несколько, но все в любом случае прийдётся подгонять под себя.
Могу добавить, что рисовать в 2д не так просто как кажется. И напиздить 3д моделей и анимаций может быть куда лучшим решением.
Но если ты твёрд в своих намерениях, делай ртс про танки или космические кораблики.
>Или для 2D есть другие варианты решения проблемы поиска пути в Unity?
http://arongranberg.com/astar/
>напиздить 3д моделей и анимаций может быть куда лучшим решением.
Этого петуха не слушай, напиздить 2д графики куда проще.
>напиздить 2д графики куда проще
И будут у тебя зельда с марио воевать против анимешного вампира.
>особенно новый, где можно крутить зоны с навмешем и нет этих проблем что он только по оси XZ работает.
Это где? В 5.6 всё как раньше
и другой вопрос: дробить ли навешаное на игроке на отдельные скриптики (здоровье, оружие и т.д.) или пихать все в один?
>>ништяков
Coroutine / IEnumerator
>>дробить ли навешаное на игроке на отдельные скриптики
если игра сложнее змейки то да
только корутины это не сисярп а из самой юнити
https://www.assetstore.unity3d.com/en/#!/content/16944
стоит ли своих 35 долларов?
там 3 видоса и посмотрев их, я понял - нет
Order in Layer? Одинаковый у всех и больше, чем у фона.
Ортографическая камера, шаг перемещения кратен количеству пикселей на юнит.
Я правильно понимаю, что однажды купленный ассет будет помечен как купленный мною и в другой раз на другом компе или после переустановки я смогу его просто взять из шопа?
ты в ассет стор заходишь под логином и паролем в свой аккаунт на котором сохраняются покупки. а вообще не дело это мамкину зарплату тратить на никогда не выйдущюю игру
>не дело это мамкину зарплату тратить
затралел, шалунишка
лучше скажи, даёт ли платный iClone посасать makehuman. Мамка денег даст
> даёт ли платный iClone посасать makehuman
Это не знаю, но думаю, что DAZ studio даст пососать им обоим. Порно-тред не даст соврать, поскольку состоит из дазоподелий чуть более чем полностью.
Алсо, кто что покупал на ассетсторе, палите годноту.
Я вот недавно взял Satomi Character Pack. Нужны были анимации, а самому лень пилить. Моделька не нужна. Как думаете, я лах или нет?
канишна лах
>DAZ studio даст пососать
мне нужны рабочие модельки для юнети ренрай с картиночками не моё 100%
можно их таскать из даза, но с волосами известная жёппа (>65k).
iClone имеет встроенную синхронизацию губ по аудио. И facial expressions.
Напрягает, что за конвертатор в юнети айклонщики также хотят денег
А ну да 2д
очевидно в твоем аниматоре который ты не запостил с пояснениями, как там сделан переход между состояниями что-то криво
>Зашквар?
на дворе XXI век кагбэ
А причем тут аниматор? Он же только картинки меняет. Он вообще больше ничего не трогает.
Если jump true, то анимация прыжка из состояния бега или остановки. Еще то walk зависит бег или остановка. Там по размеру
Так что же в аниматоре не так может быть?
Не знаю, с чего ты решил, что iClone не настолько прожорливый по полигонам, как DAZ. Я думаю, что у него и с волосами та же самая жопа будет, но в добавок еще будет плохая оригинальность персонажей, недостаток шмоток и тех самых facial expressions.
>>400167
Бля, похоже я бесплатно прорекламировал Satomi Character Pack.
iClone конечно прожорлив, ведь качество того требует. Мне нужно что-то попроще даза для генерирования в юнети, но не такой страх как мейкнъюман
Липсинк и оживлегие мимики тоже желательно их одной коробки.
Ты Сатоми упомянул, вот я и заинтересовался :-)
Ведь можно из ассетов ДАЗа допиливать в айклоне. И шмотки, и мимику
Мне пока рано и не хочу разбрасываться. Сначала геймплей то всей механикой пусть на кубиках. А уж потом укрошательство
Он у меня шакалит изображение ровно на 20%
Т.е. Я билдю под 1920х1080, холст без скаллинга (Constant pixel size).
В плеере Unity - все ок.
Открываю в браузере Хром или Сафари при 100% масштабе страницы (в браузере) картинку шакалит) (я использую стандартный шаблон с кнопкой переключения в фуллскрин)
Делаю в браузере масштаб 80% - все становится норм. Т.е. фрейм webGL видит себя в 1536х864, ровно 80% от 1920х1080, хотя такой цифры я не вижу ни в css ни в html
Как исправить? Пытаться заставить браузер выставлять 80% вроде как плохая идя? Если нет то как? Css от Unity удалял, проблема вроде не в нем.
по дефалту да, по факту можно поставить какую угодно гугли сам
там либо iframe вставка из другого сайта, либо flash.
Вот мне и интересно ведь унити не может во флеш а значит оостаеться вебгл который как я понял подходит для iframe
Должен подпрыгнуть персонаж. Просто все способы что я находил, подходят для Rigidbody, типо юзай AddForse и всё. Но с Character Controller такое не прокатывает
Благодарю
Кароче сделал я Physics Material и назначил коллайдеру блока, но вот проблема. Предметы отпрыгивают от этого блока, а персонаж нет, даже если прыгать на этом блоке. Я уже хз что делать
Игра будет про флирт и еблю. Посему планирую дать вхорам несколько ячеек памяти и тем разнообразить диалоги "ты вчера съебался, не заплатив" или "а я тебя помню" и дрочить карму.
На чем сейчас не норкаманы делают AI? На аниматоре со StateMachineBehavior к каждому из ключевых состояний?
на персе нет физики, он чисто кинематический, управляемый аниматором
У меня тот же вопрос, как третьего перса переключить в режим ragdoll и дать наебнуться.
Можеть приведать к root коллайдер (сделай капсулу чайлдом. Отключи MeshRenderer) и таскай с собой как чурбан
потом что для CController нужно прописывать функции а не просто поастваить колайлер и улыбаться. У кубика должен быть тег и когда CC детектит тег, вызывает соот-щюю функцию.
мои няшки с деволтным светом выглянят прочибельно, а в ассете уютного морга юнети-чан вообще без правильных текстур (у нее чисто ambient)
где я обосрался?
я тоже не очень понял, тебя беспокоит то что самая левая тян слишком цветная?
на первой картинке дефолтный свет - всех видно, пусть в мультяшном раскрасе
на средней картинке те же модели, но в ассете с помещением в морге (пикрил). Мику серенькая, а юнети-чан вообще не просматривается
дело ведь в отсутствии правильных текстур?
короче скажу наугад. Если ты запекаешь свет, то модель должна быть с галочкой Static или конкретно Light Static. потом если не поможет покрути lighting окно
картинка отклеилась
1400x796
https://github.com/Unity-Technologies/NavMeshComponents
не совсем.
>>400118
у сисярпа же много синтактического сахару всякого. анонимные делегаты, тернарный оператор и прочее говно.
да, полезно. у шарпа же нет множественного наследования классов, а тут хуйня-муйня сорт оф делает это даже лучше.
>>400198
все та-же 3.5. недавно опциональные параметры функции завезли.
>>400353
я сорт оф делаю. пока соскочил на другое проблемы, долго репу чесал над тем как подружить ИИ и контролер. но ты делаешь какое-то говно для чего какой-то комплексный ИИ явно не понадобится.
если запекать то тени и всвет будет немного лучше, а в анриле в риал тайме все будет топовое
йеп, интерфейсы. которые интерфейсы. которые не хранят в себе переменных и имплементации. а иногда надо.
facepalm
> ты делаешь какое-то говно для чего какой-то комплексный ИИ явно не понадобится
ты недооцениваешь запросы говноедов
два вопроса
1. как переключаешь в режим ragdoll, когда перс убит?
2. делаешь ИИ на аниматоре или через сосстояния в switch?
да, я знаю. всегда интересно задать вопрос таким людям "зачем?". как будто в каком-то коридорном говне, где прелесть в том что каждый угол ручкам сделан, нужен какой-то комплексный ИИ который в таких условиях может выйти за игровые рамки.
>>400462
наздоровье, да. новый навмеш юнити конечно здорово сделан. жаль что нельзя редактировать сам процесс его создания.
>>400467
1. без выкрутасов пока что. для всех Rigidbody.isKinematic = false, Animator.enabled = false. и там ещё немного кода чтобы выключить ИИ и прочее говно.
2. ноинтересней. у меня процедурное древо решений которое составляется из процедурных действий, которые определяет окружение и я сам. GOAP на манер того что был использован в FEAR.
интересный опыт был научить такой сорт ИИ пользоватся инвентарем. на скриншоте у ИИ в инвентаре разряженый автомат ещё, ему надо было выбрать заряжать автомат в инвентаре, или подойти и подобрать лежащий рядом, подойти взять патроны, перезарядить и выстрелить.
Переконпилируешь под webGL и ХУЯКС оно ноль выдает вместо бесконечности и нихуя не работает :)
ты че дегрод деление на ноль это всегда считаеться пиздецом, а ты код с ним пишешь
Есть куб, на нём бокс-коллайдер и текстура ящика, но это не важно. И есть объект с капсул-коллайдером, он находится внутри куба. Задумано, что при выстреле в куб, он исчезает и появляется внутренний объект, как бы из него выпадает. Проблема в том, что при запуске игры внутренний объект сразу вываливается из куба, т.е. эти 2 коллайдера взаимодействуют, хотя внутренний явно целиком помещается внутри куба. Можно конечно скриптом включать внутренний коллайдер, но не оч удобно, таких объектов будет много и хочется по максимуму использовать средства самого юнити, без своих велосипедов.
Со слоями интересная идея, поколдую (хотя потом всё равно скрипт напишу). Ещё был вариант на каждую грань куба отдельный бокс-коллайдер запилить, тогда можно его полупрозрачным сделать, чтобы было видно содержимое, и при движении будет внутренний предмет двигаться, но мне пока не нужно так.
Вот я заморочился из-за мелочёвки...
десятирной фейспалм
>1. без выкрутасов пока что. для всех Rigidbody.isKinematic = false, Animator.enabled = false
как бы ты посоветовал переделать, скажем, юнити-чан под ragdoll. У нее на скелете вообще никаких rigidbody не наблюдается. Если же вешаю на какой-нибудь джоинт rigidbody, включив гравитацию и выключив isKinematic, то отрывается и улетает в пропасть
Кстати, мне тоже интересно.
Юнити-чан ведь вроде на characted controller существует. Как быть с этим компонентом, как нормально с гравитацией работать с ним?
Насколько я понимаю - это не rigidbody, а некий урезанный вариант.
а нахуй там что-то переделать? GameObject > 3D Object > Ragdoll. выстави туда правильные кости и будет у тебя рэгдолл. только размеры и позицию коллайдеров подредактируй и делай их isKinematic чтобы оно не делало сальто.
>>400560
да никак. чего там с гравитацией то работать? CharacterController сам её нормально применяет. можешь на CharacterController привесить Rigidbody, но в этом случае уж лучше сражу ебошить свой контролер с обычными коллайдерами.
> GameObject > 3D Object > Ragdoll. выстави туда правильные кости
ты про это? и название правильной кости типа еще угадать надо?
Для каждого предмета руками делать анимацию, учитывая что они могут быть как в левой, так и в правой руке? и в двух одновременно тоже
Или попробовать IK прикрутить? Но тогда еще большее говно выйдет.
Есть вообще какой нибудь бест практис для данного кейса? Может какие-нибудь видео туториалсы?
В гугле забанили.
Или все просто добавляют отдельную кость, на которую потом цепляют объект и не парятся?
Добавляют Empty, и берут от него transform. Этот empty чайл на твоей правой или левой (или по одному на каждой). И понес какбы в руке
>>400516
Но ведь согласно IEEE 754 оно не должно молча выдавать ноль при делении на ноль и вести себя по разному в разных средах
Пишут что можно эти исключения включить..
Select Debug > Exceptions then expand the tree to select Common Language Runtime Exceptions > System > System.ArithmeticException and check the "Thrown" option.
Правда не помогает.
А, у меня походу была проверка на ноль, выдавалось float.MaxValue, но webGL билд менял это на 0 почему то
Если рисовать спрайты в PainToolSAI , как их освободить от "рамки" холста, т.е. чтобы в игре была видна только область самого рисунка. Чтобы, например, нарисовав сферу, квадратный холст около неё не воспринимался как часть спрайта. Просто саи очень нравится для рисования, хочется именно в нём создавать спрайты, если так можно
Благодарю.
Еще вопрос по ебучему аниматору. В ебучем AnimationStateBehaviour не вызывается OnStateUpdate, пока не закончится переход из другого стейта, а мне нужно вызвать эвент в самом начале этого стейта, когда он еще переходит. Знаю про Animation Event, но с бихевиором больше свободы действий. Я конечно могу это обойти, но может кто-то лучше метод знает?
Серьезно, какого хуя, Юнити? Почему я должен городить костыли чтобы даже стандартный инструментарий работал как надо?
Аригато, просто не знал название этой функции для гуглинга, няша
1. Планируется рендерить 2млн квадратных текстурок (типа "пиксельная графика"). Проблемы с фпс будут?
2. Можно ли собрать под линукс и мак без особых проблем?
йеп. один хуй проще чем самому руками делать то-же самое. только советую вести руками контроль версий префабов с рэгдоллом. и ещё советую вынести коллайдеры потом на отдельный геймобжект чтобы крутить их нормально.
>>400817
1. но зачем? рисовать допизды чего-то совсем не проблема же. говно как всегда кроется в деталях. че делаешь то? каждый пиксель чтоли рисовать собрался отдельно? вот например смотри. 2.5 миллиона разноцветных квадратиков повернутых в камеру. проблем с фпс нет.
2. юнити же гордится мультиплатформенностью. было бы странно этого не ожидать.
>че делаешь то?
Я еще на стадии выбора фреймворка, так что пока ничего. Да и я бы сказал чего хочу, но меня обоссут, поэтому стесняюсь. Представь майнкрафт с видом сверху в 2д, а теперь отдали камеру чтобы захватить 2000 х 2000 квадратов. Судя по твоим скринам, проблем быть не должно. Что это за объекты у тебя?
зачем тебе такое(по твоим словам, значительное) отдаление? персонаж вместе с блоками станет всего лишь точкой. И сразщу непрошеный совет вьебу, т.к. ты тупой навечёг. сначало начни реализацию, а потом уже вопрошай. Причем вопрошать нужно у гугла и желательно на инглише, а так ты даже ровным счетом ни создал ничего. И это при том что ты за этим и пришел - создать что свое
Ну не совсем так. Я где-то с неделю назад поставил юнити, собрал пустой проект, увидел 17мб экзешник и немного приуныл. Потом по гайдам размножил одну текстуру много раз и даже не смог зайти проверить, как это работает, так как у меня все зависло. Я бомбанул и забросил. А сегодня вспомнил, что на сосаче есть раздел с геймдевом, поэтому решил уточнить.
И да, мне именно такое отдаление и нужно, поскольку это что-то вроде стратегии, персонаж будет не один и размером условно с точку.
тут всех обосрут, но начнут завидовать когда будет что показать.
но зачем 2к х 2к квадратов? ну тоесть масштаб конечно важно, но зачем столько разом на экран то совать? там же не разглядеть нихуя будет. проще пользоваться упрощением того что видишь чем брутфорсить все это.
да простые объекты. сделал struct из 8 float (3 на позицию, 4 на цвет, 1 на размер), сунул в ComputeBuffer, нарисовал через Graphics.DrawProcedural создавая все квады в самом шейдоре поворачивая их в камеру. можно и более интересные вещи делать.
>>400826
это не совсем то что обычно видно в профайлере. если быть точным то там 10 х 10 х 158 х 158 квадратиков. 2496400 квадратика.
>>400830
Мне именно столько и нужно, посколько эти объекты будут создаваться и уничтожаться. Во, нашел точный аналог того, что мне нужно, лол https://www.youtube.com/watch?v=gE7DV9xO7tE
Юнити сможет в такое?
да без проблем. можно даже их все разом редактировать если пользоваться ComputeShader. другое дело что пользуясь всякой шейдорной магией можно таких костылей написать интересных что прямо ух!
Спасибо за ответы, ушел ставить юнити.
Пикча случайно прилипла.
в каком месте там 4миллиона? там от силы максимум 500 квадратиков рисуется за раз
Я показал, что мне нужно, а как там у него работает это уже не важно, другой же движок. Я тут придумал еще одну аналогию - dwarf fortress. Это вид карты, но в самой игре тоже можно значительно отдалять камеру и видеть игровое поле.
Ну давай разберем по частям, тобою написанное. Судя по всему ты нихуя не знаешь, максимум можешь пару скриптов на питоне написать. Для того чтобы отрисовать карту такого типа не нужно 4 миллиона объектов, это во первых. Во вторых, если ты собрался делать ОТКРЫТЫЙ ЖИВОЙ МИР РЕАЛТАЙМ, то у тебя нихуя не выйдет. Хотя у тебя в любом случае не выйдет нихуя, ты же просто кирилл.
Мимо, я на плюсах, шарпе и пхп пишу. В юнити я не разбираюсь, но что тут странного блеать, если я с ним не работал никогда?
Мимо, человек умеющий в плюсы сисирп и пхп не зашел бы в эту помойку, и не писал бы невнятную парашу кириллическую. Вместо продуктивного чтения доков, выбрал уже который час ничего не делать. ггвп параша
Дело не в юнити, а в отсутствии представлений о том как вообще игры делают. Если хочешь денег заработать по-быстрому, то лучше дальше пили сайты, в гейдеве денег нет.
Я не собираюсь зарабатывать на этом, хех мда. Не к тебе конкретно, но в общем ситуация ясна, агрессивные школьники как всегда бдят. Один человек всё же ответил на мои вопросы >>400830 >>400834 и я ушел изучать юнити, но агрессивным школьникам захотелось выебнуться глубокими познаниями и просто пиздануть либо что, не давая ни ответов, ни помощи. Укатываюсь на реддит, там вроде бы средний возраст должен быть повыше.
Это карта мира, она существует отдельно от карты локации.
Какие будут проблемы в принципе, если скелет у моделек будет generic как и соответствующая анимация?
Можно ли существующий клип переключить их generic в гуманоидный?
Блядь, три секунды в гугле потратить не может и еще кого-то школьником называет. Гуманоид риг блядь сделан для гуманоидных персонажей, там есть ретаргетинг и еще пара плюшек искаропки, типа настроенного IK. В остальном никаких различий.
Про клип вообще ересь какую-то написал, риг переключается в персонаже, а не каждом клипе отдельно.
Анимешка, сделаная на риге типа джинерик, не будет играться на гуманоиде.
Вопрос про то и был, как ее конвертировать, капитан Очевидность
я не понял про что вы сретись но в настройках импорта модели во вкладке rig есть где то 4 типа вместе с гуманоидом и генерик. Мне так кажеться
У меня есть анимация, которая играется, если риг установлен на джинерик. Если переключаю на гуманоида, но моделька съеживается (muscle space) и не двигается. Юнити выдаёт предупреждение, что анимация не тот тот риг.
Понят но, что мне желательно все модели юзать как гуманоидов. Но анимация несовместима.
детекчу mmd-дебила
дело не в типе рига внутри унити, а в иерархии скелета. если там дохуя лишних костей, то конечно все по пизде пойдет в гуманоид риге. либо страдай, либо руками анимируй.
Анимуёб, ну кончай тупить.
Если у тебя дженерик-скелет и анимация написана под него, то анимируй хоть заанимируйся.
Я вообще мимо шел, но внезапно проиграл с вашего обсуждения.
То есть если у тебя негуманоидный скелет, то как прописать анимацию? Покажи скрин.
> как прописать анимацию?
Что значит "прописать"? Добавляешь готовую анимацию к скелету и всё.
Если ты "проиграл" с нашего обсуждения, то должен был видеть, что гуманоид от дженерика отличается только настроенным IK, ретаргетингом и прочей ебалой, которая подразумевает что у скелета есть руки, ноги, голова и туловище. А так хоть пятикрылого семихуя создавай и анимируй его как душе угодно.
Ну ладно.
См. Обсуждение в тхреаде про порноигори
Сложность в том, что надо сделать там, чтобы объект "исчезал" относительно глобальной системы координат, а не его развертки, так что анимировать текстурную карту не предлагайте.
Ты хоть сам читал что ты принёс? Никто и не говорил что это невозможно, говорили только в чём отличия.
Господи. И что тебе не так? Тебе ответили в чём отличие между гуманоидом и дженериком, чего тебе ещё нужно?
Вопрос бы про то, как джинерик анимацию натятуть на гуманоид.
Ты не смог ответить. Но продолжаешь усираться.
О боже. Выучи ты основы. Анимация натягивается на скелет. А всё остальное — лишь математика передвижения костей и суставов.
>О боже. Выучи ты основы.
Мамкин отличник? Ты это?
У меня анимация, которая работает, когда риг джинерик, но отказывается, когда переключен на гуманиода. Имена костей те же. В аватаре все, что надо, прописано.
Почему не работает и как починить?
> Мамкин отличник? Ты это?
Вообще да. Был отличником всё своё школьное время, с начала 90-ых и до первой половины 00-ых, если уж тебе так интересно.
Я даже не знаю кем ты там являешься, мамкиным хорошистом или ещё кем, но в треде тебе уже 10 раз всё пояснили, а если ты даже это не понял, то я боюсь представить что происходит у тебя в голове, если ты даже не можешь загуглить "unity generic humanoid rig".
>unity generic humanoid rig
Еще раз, для самый умных:
у меня мокап сделал generic clip. Он на гуманоивном риге не играется.
Теперь понятно?
Ладно, давай тогда без всякой хуйни.
> у меня мокап сделал generic clip
Со своим ригом?
> Он на гуманоивном риге не играется
Скорее всего потому что ты юзаешь на анимации риг из мокапа, но используешь модель с гуманоидным ригом.
Да и вообще, с какого хрена твой мокап хватает анимацию негуманоидную? Ты с кинекта писал что ли?
>Скорее всего потому что ты юзаешь на анимации риг из мокапа, но используешь модель с гуманоидным ригом.
Ты угадал с пятого раза.
Ты вообще до этого не со мной общался, лол.
Короче, твой вопрос можно понять только если ты скажешь как ты мокапил и под какую модель.
Тогда бери модель дженерик и в неё суй анимацию. Но тогда попрощайся с дефолтными IK.
> как джинерик анимацию переделать для работы с ригом гуманоида
Когда выбираешь какой аватар использовать под анимацию - выбери аватар не анимации, а модели (это в настройках импорта). Но готовься что всё похерится и придётся ручками налаживать.
Няша очень понятно объясняет разработку в юнити на примере создания агарио , наверное , каждому будет очень полезно и интересно посмотреть :з
не люблю мальчиков сорян
Благодарю, анон. Крутой шэйдер. Как раз то, что мне нужно.
Пишу из HumanPose в клип.
Общий вопрос: как добавлять новые свойства в клип? Удалять можно, но не добавлять
Мне надо добавить Root T
Вот есть у нас объект "персонаж", у персонажа есть поле "оружие", представленное классом, который мы создали. Откуда брать данные для этого поля? Могу ли я просто написать какой-нибудь скрипт типа "веапон_манагер", в нём прописать все нужные мне экземпляры класса "оружие" (типа меч, алебарда и т.д.) и просто написать в коде что-то типа "Вася.оружие = веапон_манагер.меч"
Не вызовет ли такой переизбыток данных (хочу напомнить, что в веапон_манагер около 100 экземпляров оружия) перегрузку оперативной памяти? Или лучше записывать данные с веапон_манагер на диск и считывать с него?
>Классы писать.
>Могу ли я просто написать какой-нибудь скрипт типа "веапон_манагер", в нём прописать все нужные мне экземпляры класса "оружие" (типа меч, алебарда и т.д.) и просто написать в коде что-то типа "Вася.оружие = веапон_манагер.меч"
Не вызовет ли такой переизбыток данных (хочу напомнить, что в веапон_манагер около 100 экземпляров оружия) перегрузку оперативной памяти? Или лучше записывать данные с веапон_манагер на диск и считывать с него?
Ну а если видов оружия не 100, а 148888? Или количество вообще никак не коррелирует с нагрузкой на оперативку? Если нет, то где хранятся экземпляры классов?
Парень, уже давно не 88-ой год, твои 148888 видов оружия в памяти займут места меньше чем твой хуй. Расслабься.
Твой менагер по оружию, если сказать очень упрощенно, хранит спикок типов и количество + сслылку на объет с собственно моделью этой йобы.
Модельки могут лежать в ассетах (не путать с деревом иерархии сцены) и спавниться (spawn) когда нужны.
Любые статы и конфиги - всегда в бд, а не в коде, у тебя вообще не должно быть в коде никаких конкретных чисел или строк.
Дело не в памяти, а в том, что тебе не нужно рекомпилить каждый раз, когда ты захочешь изменить/добавить что-то, и тебе в любом случае понадобятся сериализаторы/фильтры/кваери/итд.
разобрался
Не слушай это про если ты кирил. Кириллу и так пойдет.
А вообще тебе нужен класс описывающий оружие. Возможно, иерархия классов если ты хочешь обмазаться плюшками наследования. Конкретные данные каждого типа оружия можно читать из БД или просто из файлика, как тот про говорит. Можно и из кода, у принципе, если ты кирилл. Еще можно процедурно генерировать все что б не ебаться с данными.
На вот зацени
https://procedural-medieval-weapons.herokuapp.com/
https://dattasid.github.io/procsword.html
>>Вот, предположим, я делаю рпг в которой 100 с лишним видов оружия и у каждого есть свои параметры типа описания, урона, веса и т.д.
бля чет не могу предположить сорян
няша
Ебать ты поехавший. Но кажется тебе нужноуправление многопоточностью, гугли ит
если ты далек от погромирования то важный тебе ответ: не задавай вопросы пока не возникнет проблем. проблемы решай по мере поступления.
>Откуда брать данные для этого поля?
из инстанса этого оружия, конечно же.
хотя если у тебя предметы не имеют изменяемых параметров, например прочности или ещё какой хуйни то можно просто сказать "тут хуйня номер такой" и просто посмотреть статы у хуйни номер такой. но лучше так не делать.
>>401219
тут выше хуй хотел 4 миллиона квадратиков рисовать уникальных а ты какой-то хуйней заморочился.
>>401232
на самом деле когда этот хуй дойдет до этих вопросов он уже сам сможет на них ответить.
я нихуя не понял, но возможно корутины то что тебе надо.
IEnumerator yoba(){
while(smth){
yield return StartCorutine(other)
}yoba будет "на паузе" в ожидании конца действия "other"
}
Ты не юристом работаешь случаем?
вот что мне пришло в mosk
1. сделать все на стейтах
2. подумать нельзя ли это поменять, или так ли это необходимо
3. поменять комбинацию клавишь с EW E на QW E
или с EW E на E W
Ну , на самом деле это не клавиши, а создаваемый элемент, который, при обычных условиях исчезает, если его не создать в определённом месте
*Месте- то есть внутри другого objecta
чего так загадочно то? проблема то в чем? получение всей этой хуйни? синхронизация? почему проблема то? она не решается if()else?
Просто это же 2 разных скрипта (исчезновение при обычных условиях-1 и создание элемента в нужном месте-2)- наверное , можно попробовать сделать так:
If (условия для 2 скрипта и скрипт)
else
if ( условия для первого скрипта и скрипт)
Наверное да, аригато
сделай третий скрипт, который будет следить за логикой во всех остальных. чтобы в нем одном проходили всевозможные проверки а другие просто у него спрашивали можно ли им делать ту или другую хуйню. не размазывай логику по всем возможным местам.
Есть вопрос:
Предложим у игрока есть булава, как узнать скорость в наконечнике?
Суть в том что сила удара зависит от скорости булавы в момент касания с объектом т.е во время анимации, от расстояния между рукой и касаемой частью объекта, т.е чем ближе к руке часть модели которая каснулась к объекту тем ниже урон, от доп модификатора
если ньюфаг, то не усложняй.
Пожно повесить empty на наконечник и самплить его положение между фреймами. Когда сработает коллайдер, посчитать из двух последних
Можно рейкастить сферу. Даст больше инфы. Но игру не улучшит.
А если предложим потребуется сделать для меча, нацепить прямоугольных тригеров?
Алсо огромное спасибо
Да оно, спасибо антон
Няш, попробуй посмотреть координаты, может быть он наслаивается с другими текстурами
Я поменял Vector 2 на Vector 3 и добавил изменение размера по еще одной координате и заработало. Материал почему-то не работает как надо, если куб приплюснут в 0 по любой из координат.
можно просто менять 3д куб на спрайт сразу после трансформов всех
Ну так у меня изначально Vector2 был написан и я только в 2х координатах мог изменять => мой 3д-куб будет сплющен.
Спасибо этому треду, что заставляет все делать самому
https://www.youtube.com/watch?v=TNCng47imhU
+ тут средний unity IQ у битарда состовляет 20\100
начать с осознания того что в гугле есть всё.
В офф. доках унити ху3ва туча гайдов для новичков, в том числе и курс как создать простейший раннер
...с нужной тебе генерацией
https://youtu.be/JzezSQdKJoA
Вот я хочу создать эффект броска предмета.
В момент "отрыва" от руки персонажа включаю гравитацию на объекте. Далее нужно приложить силу. Но какого типа, Force или Impulse?
Для того чтобы реалистичный бросок получился силу надо прикладывать единовременно, или каждую секунду?
Приделал персу, что шагал наместе, рут моушн. Шагает по панели, уходя в горизонт. Но в свойствах анимации, хотя и прописано, что root motion is controlled by curves, не прописана average speed.
Риг у перса джинерик, если это важно. Юнети 5.6
лол это очень странно. для реалистичности?
ну вроде этого
велосити = скорость движения руки * нормализованный вектор направления
Спасибо, анон, я вроде разобрался.
Лень код писать, на playmaker делаю. Так что просто поставил единовременный impulse.
сразу бы так
заранее извиняюсь за тупой вопрос.
ну тогда ориентируйся по значениям Clippingg planes в камере
хотя кнопка 2д ничего тебе не сломает. Она просто меняет режим камеры сцены и всё. К тому же меняет в обе стороны, мне вот проще в без этой кнопки работать.
то есть в дальнейшем, если разобраться, проблем с текстурками не будет? обычно так и подгоняют?если так, то большое спасибо, анон.
окно Game это то как будет выглядеть твоя игра, вид из Main Camera
окно Scene это просмотр сцены, закулисье если хочешь
спасибо, теперь еще понятней
Ладно
Иди почитай про ECS и про наследование.
Может быть допетришь, почему у тебя контейнер в компонент не конвертируется.
мимоПРОбыдло
Бротишка, поцоны паерекатились https://2ch.hk/gd/res/401747.html (М)
А тебе наверно пул объектов нужен, гугли его
Или хз, ты пишешь путанно
Вы видите копию треда, сохраненную 14 марта 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.