24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
-------------------------------------------------------------- На Unity сделано много замечательных игр - Rust, Блицкриг 3, Pillars of Eternity, Tyranny, Kerbal Space Program, Hearhstone, Niva, yni ユニゲーム и многие другие, кроме этого, на Unity сейчас активно разрабатываются множество образовательных проектов, а также и проектов в дополненной реальности, использующих математическое моелирование. Главным преимуществом Unity перед другими движками является его простота для одиночной разработки. Не нужно иметь целую компанию девелоперов, чтобы сделать хорошую игру. Если ты один или имеешь небольшую команду и хочешь сделать хорошую игру без претензий на ААА, то Unity станет лучшим выбором. Тем не менее, даже крупные корпорации зачастую выбирают для своих игр именно Unity.
FAQ
- Какие у Unity сильные стороны? - Простота разработки, удобный инструментарий, кроссплатформенность, богатая документация, огромное сообщество.
- Какие у Unity слабые стороны? - Сложность в создании фотореалистичной графики. Для графики "как в Crysis" рекомендуется взять другой движок. Хотя Unity вполне способен выдавать не уступающую любым другим движкам картинку, это требует определённого навыка от разработчика.
- На каких языках я могу писать скрипты для Unity? - На выбор два языка - C# и UnityScript. UnityScript - это что-то среднее между JavaScript и ActionScript. Выбирай язык по своему вкусу, они оба вполне удобны, но помни, что большинство примеров написано на C#.
- Для каких жанров подходит Unity? - Для абсолютно любых! Жанр ограничивается лишь фантазией разработчика (и его умением писать скрипты, разумеется). Можно создавать и РПГ, и стратегии, и слэшеры. Можно делать VR-проекты или Minecraft/yni-подобные песочницы.
- На каких платформах работают созданные с помощью Unity игры? - Windows, Linux, MacOS, SteamOS, Android, iOS, Windows Phone, PlayStation4, Xbox One, WebGL, Oculus Rift и многие другие. Полный список можно найти на официальном сайте. Таким образом, игры Unity работают на десктопах, на смартфонах, планшетах, приставках, в браузерах, VR-очках и некоторых других системах.
- Часто вижу скриншоты с красивой природой на Unity. Как такое создать? - Очень просто! В Unity встроены удобные инструменты для создания террейна и SpeedTree для создания деревьев и готовая реализация ветра - не нужно ничего писать или скачивать и подключать плагины - ландшафт в Unity создаётся в пару кликов.
- Что такое стартер киты? - Starter Kit - это набор скриптов и префабов, а зачастую и графических элементов для игры. Они призваны облегчить разработку игры определённого жанра и как правило разбиты по жанрам (Action-RPG Starter Kit, RTS Starter Kit, 3D Shooter Starter Kit, Space Game Starter Kit, VR Starter Kit и так далее). Также бывают стартер киты различных игровых элементов, не связанных с геймплеем (Nature Starter Kit с дополнительными природными объектами, Medieval Starter Kit со средневековыми объектами и так далее). По сути, стартер киты выполняют в разработке игры ту же роль, что и фреймворки в программировании. Однако стоит отметить, что использование геймплейного стартер кита принуждает разработчика изучать большое количество чужого кода и чужой структуры для внесения своих изменений и полноценного использования. В связи с этим большинство разработчиков предпочитает писать почти всё с нуля, получая полное понимание работы своей игры. Новичкам крайне не рекомендуется начинать знакомство с Unity со стартер китов.
- Что нужно уметь делать для создания полноценной игры, кроме Unity-разработки? - Кроме непосредственной разработки игры на Unity, требуется также уметь создавать 3D модели (3ds Max, Blender, ZBrush), 2D рисунки (GraphicsGale, Aseprite, Piskel), текстуры (Substance Designer, NeoTextureEdit), музыку (FruityLoops, Ableton). Не обязательно учить это всё - например, в 2D играх не нужны 3D модели, а музыка необходима далеко не всегда. Также вы можете скачивать элементы для ваших игр на бесплатных сайтах. Если у вас есть деньги, то все необходимые элементы можно заказать у фрилансеров на https://www.fl.ru/ (русскоязычный) или https://www.upwork.com/ (англоязычный).
- Бесплатен ли Unity? - Можно свободно скачивать, использовать и продавать готовые игры на Unity с лицензией Personal - это абсолютно бесплатно! Но на бесплатной версии при запуске игры будет появляться короткий стартовый ролик "Made with Unity", а также ваши доходы ограничены 100 000 долларов в год. Для снятия этих ограничений нужно приобретать платные версии лицензий Unity. В конечном итоге, платные варианты используются лишь крупными компаниями с огромными доходами, тогда как обычные разработчики в большинстве своём используют бесплатную Personal лицензию.
- Движок Если ты уже умеешь использовать язык, то можно приступать непосредственно к изучению движка. Крайне рекомендется купить/скачать книгу Unity in action (Unity в действии). В ней подробно описываются множество возможностей движка. http://www.ozon.ru/context/detail/id/34792570/ Также посмотри на видеотуториалы с официального сайта: https://unity3d.com/learn/tutorials Если же ты не любишь видеотуториалы (или не понимаешь разговорный английский) и предпочитаешь текст, то посмотри здесь: http://catlikecoding.com/unity/tutorials/ Тут крайне подробно описан процесс разработки и приведены примеры кода. Эти туториалы универсальны и описывают множество различных частей игры, от работы с текстурами до генерации карты мира. А вот в этом туториале описыватся разработка двухмерной игры с видом сверху: https://www.raywenderlich.com/61532/unity-2d-tutorial-getting-started Это будет полезно, даже если ты планируешь разрабатывать трёхмерную игру. Ни в коем случае нельзя обойти вниманием этот сборник туториалов: https://noobtuts.com/unity В нём подробно описывается процесс пошагового создания разных игр - двухмерных и трёхмерных.
Разумеется, все эти туториалы охватывают лишь часть возможностей Unity. Самый надёжный способ выучить Unity - это начать делать игру и по мере разработки гуглить непонятные моменты.
Привет, помогите, у меня почему то не анимируется перс. Cоздаю анимацию, кликаю чтоб она открылась в animation, жму запись, щелкаю на полосу времени, выбираю ногу у перса и двигаю чуть чуть, типо начальное положение, потом снова на полосу времени, двигаю ногу. При нажатии на плей анимации нету, хотя со всей моделькой целиком это работает. Как челика анимировать? Ключи удалять и заного ставить пытался, с кривыми тоже.
Sup! Есть массив координат. Как сделать так, чтобы объект плавно перемещался сначала к 1 координате, потом к второй, потом к третьей и т.д.(динамически изменяется кол-во координат)?
>>461042 Да, только навмеш придётся переносить из плоскости XZ в плоскость XY. Но можешь обойтись и без этого. Если есть координата, в которую должен переместиться объект, то пидорь объект в эту сторону (сначала поворачивай, потом transform.Translate), как дошёл до точки — смещай цель из массива. >>461044 Blend Trees
>>461039 var movementQueue = new Queue<Vector3>(); while(movementQueue.Count > 0) { var targetPosition = movementQueue.Dequeue(); while(true) { transform.MoveToили как там было блядь var distance = targetPosition - transform.position; if (Mathf.Approximately(distance, 0)) break;
Есть одна low level API сеть. Она кидается byte[] из штатного NetworkTransport.QueueMessageForSending. Все бы ничего и все заибися, но юневая сеть может принимать не более 64 кб. т.е. буфер у NetworkTransport.Receive не может быть более 65535 байт. Пофиг какой канал ты используешь, хоть по 256 байт свой message порежь, в итоге оно соберется в сообщение, которое придется Recieve, и оно не должно быть больше 65535. Если больше - гроб, гроб, кладбище, пидор. А если вкратце - то, куда приходит жЫрный пакет намертво виснет (найс секурити). Но как же быть с сравнительно большими данными (содержимое инвентаря, диалог с пиздожорчиком и прочее)? "Резать" byte[] на куски? Но как потом пересобирать при получении? Есть ли решения? Гдэч помогач?
>>461126 >Скан войны и мира >64 кб Ну не надо, ну не стукай. Инвентарь с инфой о 20-30 шмотках одним пакетом если (ибо если уже двумя, то хз как их на том конце собирать) и все, приехали.
>>461130 > Инвентарь с инфой о 20-30 шмотках > 64 кб Што? У тебя инфа об одной шмотке занимает 2-3 кб? У меня все разновидности шмоток (42 штуки) суммарно чуть больше полкилобайта занимают. Просто передаёшь их name, по которому они из Resources подтягиваются.
>>461134 >Просто передаёшь их name, по которому они из Resources подтягиваются. Неоткуда брать инфу по Name. Сервер читает данные из БД, отсылает клиенту. Клиент, не имея доступа к БД, применяет все присланные данные. Проблема в том, что я выполняю Recieve, получаю заголовок, по которому понимаю что куда применять, и массив, который десериализую в свой тип данных (к примеру, Inventary). Если я буду присылать по одной шмотке, как я пойму когда начался "новый" инвентарь, а когда еще заполняется старый? >"Резать" byte[] на куски? Но как потом пересобирать при получении? Есть ли решения?
>>461141 >fragmented NIET. Это немного не так работает. От меня улетает сообщение в 10240 б. Максимальный размер пакета у меня, к примеру, 1024 б. Таким образом, сообщение режется на 10 кусков, кидается в получателя. На том конце оно получается, собирается обратно в цельное сообщение, ставится в очередь. Из очереди я его делаю Recieve. Буфер выделяемый на это сообщение не может быть больше 64 кб. Ты можешь свое сообщение хоть на тысячу кусков порезать, но на том конце его соберут и положат в очередь.
>>461143 >>461144 ну значит никак. Я не экстрасенс, чтобы угадывать что юнитидауны там нагородили, а документации нихуя нету. В этом случае проще всего использовать reliable sequenced или как оно там называется и интерпретировать как поток данных. в этом смысле это будет то же самое, что и TCP т.е. самому нужно форматировать данные.
Анон, помоги. Я все еще ебусь с 3д буллет хеллом. Как сделать, что бы камера над игроком двигалась вперед и в тоже время не давала игроку выйти за её пределы. Официальный гайд по космическим пострелушка это не то, там статичный задник.
Можно как то с новым навмешем делать модификаторы для какого то определённого агента или хотя бы типа агентов? Например, я хочу создать область, которую избегала бы часть агентов, но игнорировали остальные.
>>461229 Всё, нашёл. В NavMeshModifier есть фильтр агентов. К сожалению придётся создавать по отдельному типу агентов для каждой комбинации проходимостейкишечника
>>461166 Не тика, а сообщения. Сообщение это то что мы в итоге получаем. При передаче, сообщение режется на пакеты и кидается в сторону получателя. Меня смутило, что я, к примеру, данные инвентаря (List<Item>) отсылаю в одном сообщении, которое режется на пакеты по 1024. На том конце сообщение собирается и делается Recieve, с использованием буфера. Этот буфер не может быть больше 64 кб. А у меня только инвентарь уже 14000 байт. Если полученное сообщеие больше буфера Юнити умирает. А если инвентарь больше? Я уже хз как обьяснить подробнее. >>461149 Ты не в ту сторону воюешь. Читай выше. Данные и пакеты эт разные вещи. Юнитидауны сделали все правильно, и sequenced работает на уровне пакетов правильно. Я хоть мегабайтом могу в получателя кинутся, sequenced канал его честно порежет на кусочки и доставит. А вот после его сборки Юнитя сдохнет в конвульсиях.
>>461234 >инвентарь уже 14000 байт Как именно у тебя описывается отдельный итем из инвентаря? В случае отсутствия рандома, как в дьябле, достаточно передавать два значения - id предмета и количество, а остальное дергать из базы данных на стороне клиента.
>>461235 Собственно, как обычный класс из кучи переменных, описывающих параметры. Я его сериализую и вперед! Не важно, насколько компактен отдельный элемент инвентаря, важно что он List. т.е. различных элементов может быть впечатляюще дохуя. А кроме инвентаря есть еще цепочки диалогов и прочая крупная хрень. >остальное дергать из базы данных на стороне клиента Клиенту нельзя в базу. Вообще. Анально огорожен, ибо можно инициировать перебор айдишников и таким образом получить слишком много инфы. Таким образом, мой сервер, это эдакий SQL Proxy. >>461236 А вот тут поподробнее?
Есть вопрос, вопрос по 2д, вопрос такой: как двигать game object в самой анимации, при этом не давая игроку влиять на его движение в процессе этой анимации? Грубо говоря идет атака персонажа и он делает шаг, в котором game object двигается, а управлять в процессе этой атаки персонажем нельзя.
>>461239 Да откуда вы суки лезете-то? Это классика, это знать надо блядь!
Допустим, у тебя в игре есть всего 8 предметов. Следовательно, наличие того или иного предмета можно уложить в 1 байт, т.е. индекс бита в байте означает номер предметаю Если бит равен 0 -- предмета нет, если бит равен 1 -- предмет есть.
>>461273 Даже в голову не приходило, т.к. не понимаю как это можно будет тут использовать (сервер БД, реляционные бд, куча разных "шмоток", динамическое изменение параметров на взятые из БД - хз как это уживается с тем что ты предлагаешь). Ну еще можно на флешке человеку список с данными приносить. Если флешек будет вагон, мы достигнем, как ни странно, рекордной скорости передачи данных.
Двач, помогай, нагуглить не получается, хотя, возможно, просто я тупой. Скачал большой фреймворк (считай стартер пак) из которого леплю игрулю. В этом паке есть Animator, со всей написанной логикой, к которому обращаются скрипты там, меняют стейты и пр. Я хочу заменить анимации в нем на свои, но при драг н дропе в поле Motion просто остается None, при этом если туда перетащить любую другую анимацию из этого пака, то поле спокойненько себе меняется. (если что, в паке все анимации сделаны под риги антропоморфные, а у меня собака с legacy ригом) В чем может быть причина и как мне таки сменить эти чертовы анимации?
>>461330 И еще такой вопрос есть, вот я хочу сменить .fbx персонажа, который содержится в стертер паке, мне казалось, что порядок действий должен быть такой: 1. Пихаешь персонажа на сцену 2. Вешаешь на него Animator 3. Переопределяешь все анимации в аниматоре 4. Драг'н'дропаешь объект во все скрипты, где он был в паке, ну, тобишь кидаешь ссылки на все нужные элементы во все необходимые скипты
Я где-то проебался? Просто вроде я пропустил 3й шаг и все работает норм за исключением того, что анимации не проигрываются, в игре просто "деревянная" моделька собаки.
>>461294 И читал и смотрел и даже спрашивал (выслушивая ответы). Что, по твоему, не так? Я открыт для дискуссии. п.с. говно ебаное? Серьезно? как ты себе это представляешь?
>>461331 >Скачал большой фреймворк (считай стартер пак) из которого леплю игрулю. >в паке все анимации сделаны под риги антропоморфные, а у меня собака с legacy ригом >анимации не проигрываются, в игре просто "деревянная" моделька собаки. Решение очевидно. Скачай пак с готовой собакой. Именно так пишутся игры под юньку.
Так, а как мне материалы то загружать? Срать в главный класс не хочу, Resource.Load - тормозит и вообще отстой. А может мне создать класс-пустышку (moho) который будет иметь в паблик полях материалы? Или как мне из проекта загружать материалы? Через префабы какие?
Делаю мобильную игру по классической схеме с выбором уровней, которые различаются лишь декорациями/набором противников/доступным оружием (примерно как Angry Birds).
Разумеется нелогично было бы на каждый уровень делать отдельную сцену.
Как лучше организовать сам проект? Я так понимаю, что у меня будет 3 основных сцены: стартовый экран, экран с выбором уровня и сам уровень.
Соответственно, в сцену с уровнем мне нужно будет подгружать параметры: доступное оружие, фоновый спрайт, время и место появления врагов. Как это правильно сделать? Можно ли хранить набор параметров в отдельном массиве в контроллере (или в файле конфига) и при клике передавать в загружаемую сцену? Есть в Юнити какие-то нативные возможности?
>>461285>>461330 > Скачал большой фреймворк (считай стартер пак) > Новичкам крайне не рекомендуется начинать знакомство с Unity со стартер китов > Я где-то проебался? Да ну даже хуй знает.
Если ты будешь делать все на одной сцене, у тебя телефон охуеет от количества говна, которое тебе надо хранить в ОЗУ. Я не понимаю, почему сцены — это плохо, а вот ебашить велосипед руками — это в самый раз. Что поменяется-то? Сцены загружаются на раз-два, если пулить объекты и еще как-нибудь изъебываться.
>>461362 >Это член секты "Свидетели Оптимизации" >вот сейчас я кеширую трансформ, чтобы каждый раз не вызывать GetComponent() >и сразу после этого делают 100 рейкастов >в апдейте
>>461367 Так это под процедурную генерацию, хуй знает, как ты будешь ее писать для клона Angry Birds. >>461368 Ради этих 100 рейкастов и оптимизируем, лол.
>>461370 Какая разница, процедурно уровень генерится или нет? Можно тайлы и ручками задать, если хочется. Там вообще не про это в этих двух уроках, процедурная генерация там в предыдущих описана. А здесь именно подгрузка уровней и передача в них данных.
>>461376 >>Writing the Board Manager > "In this video we're going to create our board manager script, which is going to procedually generate our levels so that they're different each time the player plays." Я уже не понимаю, что тебе нужно. Сериализация всяких пушек и персонажей? Генерация уровней? Сохранение уровней? Глобальный менеджер, который хранит в себе персонажей и прочее говно?
Попробую иначе объяснить. Binding of Isaac знаешь?
Если бы его делали на юнити, то там каждая комната была бы отдельной сценой или же одной и той же сценой, в которую бы передавались данные о том, где и что лежит и состояние героя на текущий момент?
>>461392 Второе 100%. По-крайней мере я бы так делал. Хранил бы все в хмл или джейсоне или на-крайняк просто в Resources и манагерами подгружал бы в сцену (или AssetBundles). Насколько я знаю, ты вообще не можешь грузить сцены, которые ты не добавил в Build Settings при билде.
>>461357 Вот не знаешь, не пизди. >>461341 Так собака и была скачанная, в том то и дело, лол. Я, возможно, чего-то важного об анимациях не знаю, но проблему решил следующим образом: через Ctrl-D достал анимации из .fbx, открыл их в эдиторе, копировал кеи из эдитора, создавал новые анимации и вставлял туда кеи. И новые анимации заработали как надо, начали вставляться в любые Аниматоры и т.д. Сначала думал, что проблема в аниматоре, но нихуя, проблема именно в самих анимациях. Я не знаю, почему извлеченные анимации не хотели себя нормлаьно вести, но в итоге все оке.
>>461397 Попробуй сначала загрузить что-нибудь из Resources. Так и гуглишь, Unity Resources и желательно имеено документацию, а не выидосики. Там ряд ограничений для мобилок с ними связанный, так что если прямо по хардкору решишь, то гугли xml in unity, если пишешь скрипты на б-гмерзком джаваскрипте, то гугли json in unity Общий принцип хранения данных на диске поймешь, а потом и без туторов поймешь, как делать то, что ты хочешь.
>>461398 Спасибо за советы. Я обычно сначала всего оф. доки читаю, видосики только если нетривиальное что-то нужно сделать, но что 100% уже кто-то делал до меня.
XML мне ближе, я много раз их парсил/генерил по работе.
С Resources пока еще не знаком - делал саму механику игры, а теперь вот созрел все это дело собрать во что-то похожее на предбилдную версию.
>>461392 >>461397 Один этаж — одна сцена. Скрипт генерит комнаты, смотрит, какие спрайты и противников использовать. Спустился на этаж ниже — перезапустил сцену с новыми данными. Но Исаак на процедурной генерации, потому что там можно сделать нормальную процедурную генерацию. Минимальное требование для игры: возможность дойти до босса.
Если ты делаешь типа Исаака, то да, ты на верном пути. Но если у тебя есть конкретный набор карт/заданий, то тут просто нет смысла велосипедить. Сделай пачку сцен да гоняй менеджер из сцены в сцену.
>>461409 Открой исходный скрипт и поковыряйся там, если хочешь. Без знания как он устроен нормальный костыль вряд ли напишешь. Но вообще ковыряй в сторону бросания рейкаст сферы вниз.
>>461425 >10гб xml Ебать ты фуфел. Столько информации вникуда выкинул. Почитай про протобуферы хотя бы, а потом ебальник разевай, манька.
>>461345 У тебя материалы тормозят из-за того, что юнька прежде чем рендерить что-либо, грузит текстуру в гпу, "останавливая" цпу. мало кто это понимает из-за чего все кукарекают, что юнити тупая и плохо зделона В конце концов, попробуй LoadAsync.
>>461430 Ты просто дебил, похоже и не умеешь читать. Не я придумал эту хуйню хранить в XML, а наши госструктуры. Но тебе-то, понятно, лучше самоутвердиться тут, чем погуглить что такое "Федеральная информационная адресная система" и в каком виде она доступна.
Манька как раз ты, диванный теоретик, с нулевым опытом внедрения чего-либо.
И эти твои понты >мало кто это понимает говорят о том же самом.
Ну а если же ресурсы совсем external-external? например, через сеть подаются или с папки юзера - тут только через WWW.file читать, затем в рунтайме обрабатывать сырой файл (sic) и преобразовывать ресурс.
>>461433 Угомонись, молодой. Тебя направить пытаются тут, а ты пальцы гнуть начинаешь. В очко их себе загни лучше и подумай почему текстовая информация для пидорасов, а бинарная для батек.
>>461434 Еще раз. У тебя Resources.Load для external. Расскажи, пожалуйста, как у тебя п знаменитая папка в проектеи Resources оказалась в external?
Пионэр, ты б потише, а? Я понимаю, что ты у тебя передоз хабра и ты все на свете теперь знаешь. Вот как заработаешь первый лям своим говнокодом, тогда поговорим, ок? А то от тебя ни одного ответа по существу, одно кукареканье и агрессия на упоминание распространенного формата данных.
>>461479 Ты лучше видео своих поделий в юнити выложи, с удовольствием посмотрел бы и попроигрывал.
>>461490 Нет, мы писали, точнее уже написали аналог вот сервиса: dadata.ru для одной риелторской конторы.
>>461430 >У тебя материалы тормозят из-за того, что юнька прежде чем рендерить что-либо, грузит текстуру в гпу, "останавливая" цпу. мало кто это понимает из-за чего все кукарекают, что юнити тупая и плохо зделона
О, интересно. И как заставить юньку не останавливать ЦПУ? Я так понимаю что цпу стоит не только во время отправки текстуры, но и во время просчета новой текстуры в шейдоре. Потоки (системные) вроде как не хотят работать с Юнити АПИ.
>>461572 Помаленечку. Иногда на день-два на багах застреваю. Переделал немного логику слоев в симуляции. Теперь это не просто гора текстур а класс инкапсулирующий свойства слоя (кроме земли, правда). В ГУИ почти всю информацию и контроль вывел.
Лаву вот добавил. Но она выглядит как говно и не имеет температуры пока. Надо ей светимость, что ли добавить и зависимость цвета от температуры. В идеале еще добавить какое нибудь плавающее говно в лаву для эстетики, но лениво и память есть будет. И так в webGL чета не работает.
Пиздец как я охуел. Использую стандартную OpenFilePanelWithFilters а она блядь содержится в UnityEditor библиотеке и нихера не работает вне редактора. Как мне пичот, пиздец они ебанутые. нахуя мне эта функция в эдиторе? Мне в рантайме нужно. Теперь каждый блядь велосипедит свой диалог выбора файла, вообще охуеть, кросплатформенность, они говорили, игровой движок. Нет, хочу костылить базовый функционал под каждую платформу.
Анон, выручай. Делаю тестовое задание. Надо было сохранять карту из редактора в файл, и при старте игры восстанавливать сцену из файла. Все работало. Сегодня загружаю, пытаюсь запустить и при вызове scene.GetRootGameObjects() ловлю The scene is invalid. Шта бля? В доках только то, что, мол, сцена не загружена или не существует. Проверяю, и сцена есть, и загружена, но все равно Invalid. Ебанный в рот, как так-то?
Пикрелейтед 1 - Объекты "Зоны смерти", и "Мяча". Соответственно, если происходит коллизия (мяч попадает в зону), то триггерится вход в зону и смена сцены на "Проигрыш".
Пикрелейтед 2 - Скрипты зоны смерти и мяча, как видно вывожу в консоль, если триггернулся евент входа в "зону смерти" и вывожу координату Y мяча.
Пикрелейтед 3,4 - Стартую игру, мяч стоит на месте, координата Y не меняется вообще, через 160 фреймов внезапно срабатывает коллизия с зоной смерти, если опустить зону ниже, то коллизия срабатывает, но уже позже, как будто мяч медленно опускается вниз.
Узнал примерно на каком вызове Update() такое происходит и пошагово выполнял, подумал, что коллайдер падает вниз независимо от спрайта к которому привязан, но нет, на 122 Update() коллайдеры на своих местах, на 123 так же, но срабатывает метод входа в зону, при том, что коллайдеры не пересекаются.
>>461686 Раз 6 запускал, никаких проблем не было, не тригерился коллижн, отошел сделать чай, возвращаюсь обратно, чтобы еще раз проверить, что все нормально, просто жму запуск игры, проблема вернулась, да что за пиздец.
Можно ли как-то настроить навмеш или агента, чтобы агент не упирался в границу навмеша и никогда не подходил к границе меньше, чем на заданное расстояние?
>>461400 Нет, не ткнули. Фраза "У тебя неправильно, а как правильно я не знаю, на опыт релизнувшихся больших кампаний плюю, они тоже не правильно делают, все делают все неправильно один я правильно, но не делаю. Потому что хз как." не тянет даже на вялое указывание в стороны.
Есть скрипт, скрипт паузы. По нажатию на Esc включается панель паузы и включается курсор. Далее, по нажатию на Esc, меню паузы отключается, а курсор остается. Что мне сделать, чтоб убрать этот курсор? Cursor.Visible = false; как видно на пике не помогает, приходится еще раз кликать после отмены меню, чтоб скрыть курсор. Надеюсь, понятно всё написал. Так что, как мне скрыть этот долбаный курсор? Код пикрил
>>461811 1. Если не timescale, то что лучше? 2. Курсор всё так же появляется по выходу из меню и/или по нажатию на Esc, хоть я и вбил в апдейт. Я думаю, что придется там костыль какой нибудь делать, вообще в голову ничего не приходит.
Есть две гоночные машины - игрок и оппонент, оба пытаются доехать до определенной точки на карте. Если рядом игрок, бот пытается столкнуть его с дороги. Как проще реализовать такое поведение бота? Я придумал простенький алгоритм: если игрок слева или справа, на машину бота давит AddRelativeForce, толкающая ее в соответствующую сторону. Тогда, если игрок сзади, бот не дает ему проехать вперед. А если спереди - бот врезается в него сзади и подталкивает. Также хорошо работает и во время обгона. Бота начинает кидать в сторону игрока, и это выглядит так, словно он бодает игрока бочиной, сталкивает с дороги и продолжает ехать дальше. Но в ряде случаев такой алгоритм не работает. Например, если бота развернет на 90 градусов, когда рядом игрок. Какие-нибудь идеи?
>>461811 >пауза через timescale может привести к багам Хуй знает, у меня вроде норм работает. Ригидбоди пульки летают как летали. Хотя может я ещё не наткнулся на проблемы.
>>461810 Как бы я не ебался со скриптом, понял, что всё дело в FPS Controller'e, если его нет, т.е. когда на сцене просто камера, то всё работает замечательно, а вот когда добавляю на сцену ФПС игрока то начинается эта дрисня с мышкой. Хз как фиксить, это нужно лезть в код фпс контроллера или костыль думать какой нибудь.. ааааа пичот. Ну, по крайней мере, понял что дело в самом фпс контроллере, а не в скрипте. Жарко, однако.
>>461812 > Если не timescale, то что лучше? Через таймскейл и делай, только сначала открыл бы документацию и увидел вот это > If you lower timeScale it is recommended to also lower Time.fixedDeltaTime by the same amount.
>>461812 >>461945 (18:31:39) <at> I was trying to ask what Vooloo means with pausing, because it's well known that near-zero timescales mess up physics (18:34:11) <Usr> how else would you pause it (18:37:08) <at> depends on the project (18:38:32) <at> in some situations taking a (18:38:37) <at> as an example
>>461957 > because it's well known that near-zero timescales mess up physics > If you lower timeScale it is recommended to also lower Time.fixedDeltaTime by the same amount
>>461957 >>461962 проебал строку: (18:38:32) <at> in some situations taking a snapshot of physics objects states and temporarily setting them to sleep is a better option
>>461669 Ты, манька, не рвись. Юнитеки всё правильно сделали, просто ты костылепидор, который не понимает того, что игры на юньке -- это data-driven, а вот редактор code-driven. Но ничего, скоро и редактор переведут на data driven.
>>462331 >Да ты охуел, он 200 рублей стоит, а пить ты его будешь несколько месяцев минимум. Ты там воду что ли пьешь? 3 чаинки на кружку? Тебе намекнуть, почему чай называется ЧЕРНЫМ?
>Я больше на сахар трачу, чем на чай. >чай >с сахаром
>>462332 Хуй знает, что у тебя там за чай, у меня все ок. Второй раз уже завариваю, потому что я ленивое хуйло. > немудрено по диабетикам пидорашка первая в мире > В соответствии с исследованиями Ассоциации по Изучению Болезней Сердца, максимальное потребление сахара в день должно составлять: Для мужчин: 150 калорий в день (37,5 грамм или 9 чайных ложек) Пока вроде не умираю.
>>462342 Гуру. Без шуток. Ты должен быть богом Garbage Collector'а. В идеале, твой код должен подчищаться раз в тысячелетие и желательно только при подгрузках т.е. когда идет серьезный свопинг ресурсов. Тогда, возможно, даже на говноюнити будет стабильный FPS в серьезной 3D игре (а-ля Subnautica)
>>462347 Вот когда ты свой прототип доделаешь, когда на сцене будет ХУЕВА тыща объектов и все текстурированы, когда повер всего этого спец-эффекты, блум, годрейс, и остальной пост-процессинг - вот тогда ты запустишь Риву, и покажешь не только FPS, но и фреймтайм/лаг между фреймами и если он на протяжении 10 минут активной игры будет в рамках приемлемого лага для данного СТАБИЛЬНОГО FPS (16ms/60FPS) - тогда и будешь роток разевать.
>>462348 >тыща объектов и все текстурированы, когда повер всего этого спец-эффекты, блум, годрейс, и остальной пост-процессинг >сисярп >Garbage Collector
При экспорте из 3д макса в юнити не экспортировались Pivat'ы. Как фиксить? Я думаю, при экспорте какие галочки забыл указать, но вот какие именно отвечают за пивот не понятно, хелп плиз.
>>462591 Ебанутый? Все нормально в скрипте, просто этот имбецил где-то в другом месте обосрался. Вообще уровень большинства пользователей юнити это пытаться в свободное время засунуть куб в круглое отверстие, а потом писать "ваш движок говно, ниумеет ничего искаропки"
У меня есть дурацкая задачка. Нужно использовать материалы в не-моно объекте. Грузить их через ресурсы - неправильно, через инспектор - не могу. Как получить ссылки на материалы? Я сделал публичный моно-объект список материалов, ссылка на который устанавливается вручную. но это жи хуйня какая то. Как правильно сделать?
Чему у меня пиксельный шейдор выдает одинаковые значения во всех точках хотя я ему подогнал норм текстурку и инспектор ее видит? Я не обосрался ли с нормалью, например? Предполагается, что предмет плоский.
Переименовал текстуру в шейдоре в _MainTex и все заработало. Оно что ли никак не может без этого слова? А если я ее по другому хочу назвать? Плохо сделоли, негодно.
>>462710 Мать твою трахал, подгружаешь скриптабл обжект через ресурсы на старте в свой маняобъект, а в скриптаблобжекте все материалы хранятся, плюс можно через инспектор редактировать. И вообще иди нахуй.
>>462669 >var materials = MyAssetBundleManager.LoadMaterials(); Чет это совсем как из пушки по воробьям
>>462674 >SCRIPTABLE OBJECT Интересно, но так то это тот же mono только без гейм обжект
Я тут подумал - в моем случае материалы всего лишь прокладка между шейдерами и ГПУ. А что если материалы вовсе не хранить, а создавать их в рантайм из шейдеров? Меньше связей - меньше багов. Плюс можно не хранить имена шейдеров, а грузить все что есть в папке Шэйдэрс, потом через рефлекшен вызывать их.
Поясните за создание анимации в Юнити. Хочу, чтобы дверь открывалась ровно за 4 секунды. Как это правильно сделать? И что означает Samples в данном случае?
Сменил на 4 samples. И подстроил кейфреймы на таймлайне. Открывает за 4 сек. Но что-то мне кажется, что я неправильно делаю.
>>462902 Вот из-за таких мыслей как у тебя, юнити превращается в говно. Тебе дали, блядь, возможность создавать какой угодно шейдер и пропихивать его куда угодно и как угодно, не написав НИ ЕДИНОЙ СТРОЧКИ кода. В принципе, дело твоё. Хочешь ебаться с кодом, изобретая велосипед -- пожалуйста.
Ты мне лучше скажи, браток, ты при генерации меша используешь стандартный движок террейна юньки или свой велосипед изобрёл?
>>462976 >Тебе дали, блядь, возможность создавать какой угодно шейдер и пропихивать его куда угодно и как угодно, не написав НИ ЕДИНОЙ СТРОЧКИ кода Что мне за радость от отсутствия кода? Надо связанность сокращать, а не код. Ошибки я и без кода могу херачить, линкуя всякую хуйню в инспекторе.
Например, создал шейдер с новым функционалом. Можем работать? Хуйс, иди создай бесполезный материал, в него укажи ссылку на шейдер (текстовую, блиать!!), ссылку на материал тоже где то укажи, на каждом этапе по ошибке соверши.
>>462976 >Ты мне лучше скажи, браток, ты при генерации меша используешь стандартный движок террейна юньки или свой велосипед изобрёл?
Меш у меня вообще плоский, еба. А карта высот хранится в текстурах, генерируется перлин шумом и в реалтайме редактируется\подвергается эрозии.
>>462984 Мне кажется, что у тебя синглетон головного мозга, т.к. в твоём случае один шейдер используется у тебя только в одном месте и в одном материале. А юнька расчитана на то, что ты написал один шейдер и можешь спокойно хуячить тонну разных материалов для всех случаев жизни, а также использовать один и тот же шейдер где только хочешь. Переиспользование же -- охуенно!
По поводу меша, ты его на ЦПУ выдавливаешь или на ЖПУ?
Анон посоветуй мануалов по написанию чарактер контроллеров. Во всём, что я пока что видел, делают одну монструозную хуитку для каждого персонажа. Даже если забыть о том, что вносить какие то изменения будет не очень удобно, такой вариант очень не очень в случае большого количества разных персонажей, например, в эрпоге или стратегии.
Вместо abstract EnemyBaseClass {} abstract EnemyBossBaseClass {} abstract NPCBaseClass {} abstract NPCSpecialBaseClass {} abstract NpcUniqueSnowflakeBaseClass abstract PlayerCharBaseClass {} abstract TemporalPlayerCharBaseClass {} abstract SpecialPlayerCharBaseClass {} и их наследники.
можно банально захуячить лишь голые базы для Enemy/NPC/Player и затем декорировать под спец-типы. А если ты так просто сделаешь 3 базовых класа и попробуешь наследовать, то в игре со 100500 персонажей, где и боссы еще могут быть подтипные и ни один ни два, а хуева туча в сцене, а потом еще и ростом левела как простые енеми пойдут - ты захлебнешься сучечке тупое
class ActorController : MonoBehaviour { public AttackComponent m_attackComponent; public MovementComponent m_movementComponent;
public void Move() { m_movementComponent.Move(); }
public void Attack() { m_attackComponent.Attack(); }
}
abstract class MovementComponent : MonoBehaviour { public abstract void Move(); }
abstract class AttackComponent : MonoBehaviour { public abstract void Attack(); }
[/code]
А потом сидишь и пишешь реализации для передвижения, атаки и прочей хуйни, которая нужна в игре. Но стучишься в нужные действия только через ActorController ну или блядь назови его CharacterController, мне похуй
>>463157 >Создаешь абстрактный base class, от него наследуешь кастомные? Слабо решает проблему незапланированного расширения. Знай я весь геймдизайн наперёд обошёлся бы и самыми всратыми методами.
>используй Decorator Да, я с самого начала пытался сделать модульную архитектуру, но не получается собрать всё воедино.
На самом высоком уровне контроллер - это набор отдельных классов операторов для самых малых, неделимых действий: WalkOperator, ShootOperator, например. И если мне понадобится добавить персонажу отдельный функционал, я просто добавлю один из универсальных операторов - DernutAnusOperator, либо напишу новый, реализующий тот же интерфейс - DernutAnusOperatorSpecialForPes:IDernutAnusOperator. Здесь всё гладко.
Но ниже идут анимации и начинаются проблемы. Аниматор у каждого свой и уникальный. Можно написать прослойку между операторами и аниматором. Но так лишь удобнее, прослойка всё равно должна быть у каждого своя. У меня конечно спрайтопораша и можно написать свой модульный аниматор, но очень сильно не хочется - и так кода накалякал уже много, а игры всё нет.
>>463354 >и так кода накалякал уже много, а игры всё нет. Умерить аппетиты? либо же, если ГОТЮ очень хочеться - придеться как все девы-одиночки - ДЕСЯТИЛЕТИЯМИ.
>>463366 Ну проблемы с аниматор из за ебланской модульности. В наследовании такой хуйни нет. Написал один раз getcomponent<hyinimator> и юзай его хоть в move хоть в очке
>>463364 Но если у рыбы, птицы и верблюда вообще разный набор действий? Что если они все три могут двигаться, но при этом птица срёт гуано, генерируя полезный ресурс для игрока, рыба его атакует, а верблюд разговаривает? Делать один турбобазовый класс для них всех?
>>463369 > getcomponent<hyinimator> Это же относится и к хуениматору. Что если у аниматоров разных персонажей мало общих черт?
>>463359 Да наверное будут пытаться пилить модульную(хотя бы частично) прослойку для аниматора. Спасибо >>463370 анону, это может помочь.
>>463405 >Что если они все три могут двигаться, но при этом птица срёт гуано, генерируя полезный ресурс для игрока, рыба его атакует, а верблюд разговаривает? Proxy pattern?
>>463405 Я тут подумал и вспомнил про такую штуку как конечный автоматю state machine Аниматор сам по себе уже конечный автомат. Так почему бы не взять и угореть по StateMachineBehaviour?
>>461026 (OP) Как называется паттерн когда создаешь какой нить обьект вот таким образом KindOfBulder.Jokes(5).Count(2).Something("Puppy").Headshots(4) ? Мне это надо для создания условий победы\поражения. сейчас смог сделать подобие, но хочу знать как оно делается по уму. К тому же мне в конце нужно приписывать .Done() что бы получить только что созданный список, не уверен что это необходимость
Подскажите, что делаю не так. По идеи при касании объекта "Destroy" должно происходить уничтожение объекта "working". Но почему то не работает. Поясните пожалуйста.
В общем пришёл к выводу, что я переусложнил теорию, когда на практике всё гораздо проще. Модульности контроллера уже достаточно для независимого обращения к аниматору. Ведь если мне понадобится добавить орангутана, поедающего фрукты, то ему понадобится новый оператор ConsumeOperatorю В то же время наоборот, если я чему то добавляю ConsumeOperatorю, то подразумевается, что у него есть анимация поедания. Правда придётся придерживаться определённых правил в создании аниматоров, например, имя триггера для инициации анимации стрельбы у всех, кто использует один и тот же ShootOperatorю, должно быть одно, а не MakeShot в одном, Ratata в другом и AndruhaHuyach в третьем. Прослойку для аниматора всёже сделал, но она служит больше для удобства обращения, контроля и упрощения работы с анимационными эвентами.
>>463588 >Карты нормалей -- это нормали per-pixel, а нормали, про которые ты говоришь -- это per-vertex. >Чуешь разницу? Теперь чую. Нормаль per-pixel это, грубо говоря, текстура с нормалями которая рисуется между вершинами. Там вроде не так много визуальной разницы, можно попробовать, вместе с цветовыми текстурами
>>463571 Так. С этим разобрался. Но, столкновение обрабатывается, когда объект "working" имеет тэг "kill". А нужно, что бы обрабатывался объект "dest". Он привязан к "working". Это такая поверхность над врагом как бы, что бы типа его можно было убить прыгнув на него, но когда персонаж касается поверхности, ничего не происходит.
Может это я не правильно реализовывающую убийство врага ?
>>463604 Ты как-то не с той стороны подошел к проблеме, имхо. У тебя враг будет иметь возможность убивать персонажа? Как реализовывать будешь? Еще один коллайдер повесишь, только уже на ноги?
Я диванный, но я бы повесил триггер-коллайдер на игрока, триггер-коллайдер на врага.
В OnColliderEnter2D поставил бы проверку, где находится персонаж относительно врага. Если он сильно выше (то есть не совершает прыжок непосредственно перед врагом, врезаясь коленом ему в нос), то уничтожал бы врага. Если нет - отнимал здоровье у игрока.
>>463668 >>463669 При помощи векторов проверять, верно ли позиционирован прикоснувшийся игрок. Но если ты совсем новичок, тебе нужно в первую очередь научиться гуглить. И это не упрек, а совет, который некорректен лишь в том случае если у тебя есть наставник. Но раз тебя занесло СЮДА, то очевидно единственный твой наставник это анон который может быть кем угодно и доверять которому все равно что елозить попой по асфальту. Так что лучший твой наставник это Google.com как впрочем и для 90% населения земли. Гугли как сделать марио, желательно на английском и проверь не одну ссылку, а несколько.
>>463687 > если ты совсем новичок, тебе нужно в первую очередь научиться гуглить > желательно на английском Вот этот хуй всё верно сказал. Гугл и инглиш — твои лучшие помощники.
>>461026 (OP) Знающий анон, помоги с юнити ui. Мне нужно, чтобы имейдж перемещался за курсором при попадании курсора в определенные области экрана. Нужно не просто изменение координаты, а плавное перемещение из точки А в Б, причем эти А и Б могут быть произвольными. Я думал запилить анимацию, но не уверен, что анимация годится, ведь это нужно каждый раз программно создавать новый клип с перемещением из новой точки в новую точку - ебалово какое-то.
>>463882 > Нужно не просто изменение координаты, а плавное перемещение из точки А в Б, причем эти А и Б могут быть произвольными yobaImage.transform.position = Vector3.MoveTowards (yobaImage.transform.position, yobaDestinationPosition, speed * Time.deltaTime);
>>463734 >>463687 Нашел как какой-то парень создавал марио на unity. У него подсмотрел как это можно сделать. Сделал, все работает. Жаль только я английский не знаю
>>463923 Step 1. Ставишь Google Chrome. Step 2. Ставишь на Google Chrome расширение Google Translate Step 3. Выделяешь английский текст Step 4. Получаешь перевод Step 5. Через какое то время при желании и множественных повторах 3-4 шагов начнешь запоминать что да как делается в этом забугорном языке. А если будешь пытаться запомнить часто встречающиеся слова при помощи например ассоциаций и образов, так вообще через месяц пендосом станешь и мать родная не узнает.
Фигачил я тут шэйдер для того, чтобы на кваде планеты рисовать. Нужно было ювишки исказить, нашел такую фигню (пик1). Но elliptical и Fg мне не подошли. А в Шварце-Кристофеле такая хуйня (пик2). Как мне запихнуть многочлен лагранжа и комплексные числа в шейдер? Может это можно как-то сфэйкать?
>>464079 Ты ебанулся на отлично. Не, можно найти аналитическое решение твоей хуйни но это жи пиздец. Может можно наложить текстуру на сферу а потом сплющить ее? Если таки соберешь считать по ебанутым формулам то считай на ЦПУ, там и библиотеку найдешь для интегралов
Анон, рейтани пятнашки. Начал во вторник. Есть несколько режимов. Кастомный - где можно ввести любую размерность. Стандартный, на время и реверс. Можно сделать паззл из фото или взять фото из файловой системы. Есть проблемы с соотношением сторон и ориентацией горизонтальных фоток, но попробую исправить в ближайшее время. Короче рейт поделие.
>>464215 Дизайн не самый приятный. Поищи коллекции градиентов, есть готовые наборы. Можешь накидать абстрактную иллюстрашку на фон. Мудрить не надо, из примитивов.
Есть object1 с RigidBody и MeshCollider (via Convex) Есть object2 с RigidBody и CapsuleCollider
Оба используют полноценный RB (non-kinematic)
Нужно без хаков сделать так, что бы при столкновении, object2 отскакивал от object1, оказывая минимум действия на object1. Хак - дать object1 массу в 999, к примеру, но это НИПРАВИЛЬНА
>>464575 К сожалению, если я изменю физ. параметры obj1, это повлияет obj2. То есть, мне все же нужно, что бы obj2 как град слегка отскакивал от obj1, но при этом, если obj1 со всей дури вхреначивается в obj2 - последний отскакивал так же, как если бы obj1 был стационарен.
Есть охуевшего размера моделька (точнее группа моделей, хуй знает как сказать, сцена) здания со внутренней отделкой и прочим безобразием на 5 миллионов полигонов в общей сложности. Есть какие-то практики нарезки на куски, чтобы юнити не отбросила копыта? Ради эксперимента попробовал сдампить в obj, вышло 500 с лишним мегабайт.
>>464592 А не проще ли внутренюю отделку в префабы зафигачить и грузить их по мере надобности? Например, когда игрок открывает ту или иную дверь, тогда грузим префаб на сцену. Как только игрок вышел из комнаты и закрыл за собой дверь -- выгружаем из памяти.
Эээээ блэт, хули я не могу модельку из блендера экспортировать? Атлас текстурки по пизде идут. Шел по гадйу на ютубе, на этом моменте у типа текстуры нормально наложились. Думал с размером проебался, так ведь правильно выставил.
>>464619 Пиздос, пошел комменты читать у него к видосу, хуй знает где нашел комментарий с такой же проблемой и оказывается он блять забыл указать хуйню из-за которой все по пизде и пошло.
Пацаны, я - нуб. Делал-делал проект и вдруг Хуяк железо подвело - комп ребутнулся аварийно. Теперь проект не запускается, крашится при открытии. Чего делать?
Хочу сделать лестницу. Типовую такую, как в девятиэтажке из плит. Вопрос: ебашить на каждую ступеньку по коллайдеру это совсем шизофрения? Как делать лестницы правильно? Поставить перед ступеньками невидимую наклонную плоскость? Но я хочу, чтобы модельки ходили по ступенькам.
>>464862 Да ты охуел там, у тебя игрок охуеет от того, что камеру трясет на каждой ступеньке. Получится Sonic 2006. >>464788 Делай просто рампу и будет заебись.
Анончики, а как в 2к18 делают дороги? Вот есть допустим террейн с травкой и на нём террейн коллайдер. А посреди этой травки идет асфальтовая дорога. И по-идее у нее другие физические свойства, нежели у земли с травкой. Как делать асфальтовую дорогу в таком случае - отдельным объектом с меш-коллайдером? Или теперь можно изъебнуться и как-то запихать всё на один террейн?
Как лучше всего организовать цепочку вызовов? Есть различные сервисы, которые объединяются в одном классе GameService для удобства. Там есть метод Login, который работает с ГуглПлей и с ПлейФаб(пикрелейтед). Вот как я организовал вызовы: https://pastebin.com/hhJfBhg3
Мне такой подход не очень нравится. Может есть решение лучше?
>>465010 >Top-quality game development tutorials! Unity, C#, Game Design, Photoshop and the list goes on. If you want to become a developer this channel will help guide you through it!
Кто сможет найти хоть одну его игру, которая умудрилась попасть на стим-стор - получит шоколадку.
>я профессиональный девелопер, вот мой список игр: []
Допустим мне надоело из проекта в проект копировать общие классы. Можно в юнити сделать так чтобы оно брало общие классы (и всю хурму) из некоего внешнего общего проекта?
>>465364 Нит. Кто нибудь знает как package.json в github работает? Он, что ли, автоматически подставляет в твой проект содержимое указанных зависимостей?
>>465358 1) Открываешь MonoBehaviour 2) Прописываешь в нём нужные классы и войды 3) Наследуешься от него 4) Все пацаны на районе смотрят на тебя с уважением, а бабы от одного твоего вида текут водопадом и теряют сознание
Делать, видимо, буду так: буду экспортировать пакаджи с номерами, типа UIv5, UIv6, UIv7. Потом, в прикладном проекте, старые пакаджи удалять, новые добавлять. Где камни?
Есть код: класс-хуясс [Serializable] public class ButtonPressEvent : UnityEvent { }
public ButtonPressEvent OnPress = new ButtonPressEvent();
public void OnPointerDown(PointerEventData eventData) { OnPress.Invoke(); } ... Я вручную указываю в инспекторе имя объекта для события OnPress и метод который должен вызваться. Как эти данные указать в коду а не инспекторе?
>>465385 > через GameObject.Find GameObject.Find ОЧЕНЬ медленный, поэтому если у тебя этот функционал в hotspot - подумай 999 раз прежде чем хуячить такую тупость.
Бля анон, объясни, не понимаю вопросик один. Пересмотрел уже несколько раз епту видосы обучающие на сайте юнити про интерфейсы. Не понимаю в чем их суть, если в самих интерфейсах не описываются методы, а только их имена. Я думал что это мол аналог наследования, когда есть метод и его можно использовать во всех потомках не переписывая заново. Так в чем суть если используя интерфейс, нужно каждый раз писать внутренности метода?
>>465461 Потому что ты потом можешь обращаться к экземплярам класса по интерфейсу. Тебе не нужно будет привязываться в коде к конкретным классам, а лишь к интерфейсу, который они будут реализовать.
сап анон, я расчехлил юнити на эти выходные и пошел наконец нетворкинг читать. Делаю игру про Voevalee. Беда в том, что снаряды кастующиеся через [command] с очень большой задержкой появляются на клиенте, хотя даже при пинге 100 такой херни не должно быть.
>>465659 ну я пока вообще не секу как накодить вангу, лучше подскажи что подтюнить в настройках синхронизации, network.transform там и вот это всё, чтобы задержка между instantiate и моим положением не была такой огромной.
Вообще не догоняю. На сервере спавнит, на клиенте даже не заходил в CmdFire, никаких ошибок, в дебаге вообще не заходит в функцию. Кто знает как лечить эту ёбань?
Пиздец, как тяжко одному вкатываться. Тестуры самому дизайнить и перерывать тонный фотошопов - это уже месяц отскрочки работы над игрой. Модели самому дизайнить, это 2 месяца, ибо Blender пиздец какой тугой, платное все по стопицот тыщь стоит, а аналоги блендера кашляют в сторонке.
Потому еще месяц аудитеории ля того, что бы хотя бы звук спозиционировать и не было такое говно, как в 99% индищита.
А потом ВНЕЗАПНО так шейдеры и lightmaps - тут вообще пиздец, полжизни можно вложить на понимание этого.
Как вообще через это пройти в разумные сроки? Как вы вкатывалсиь в геймдев?
>>465727 > >Потому еще месяц аудитеории ля того, что бы хотя бы звук спозиционировать и не было такое говно, как в 99% индищита. > >А потом ВНЕЗАПНО так шейдеры и lightmaps - тут вообще пиздец, полжизни можно вложить на понимание этого. > Работаю в тестировании 7 лет, потихоньку то сё)
Гарантирую, лоуполи моделинг можно освоить на тытрубе за неделю-две. Еще за две недели научится текстурить по таким же гайдам и почитать про цветувую теорию (если совсем вкуса нет, то брать правила прям оттуда). Профит!
Другое дело если хочешь крузис, и ничего не умеешь (и команды нет) то нихуя не получится, это очевидно.
>>465733 >Гарантирую, лоуполи моделинг можно освоить на тытрубе за неделю-две. Еще за две недели научится текстурить по таким же гайдам и почитать про цветувую теорию (если совсем вкуса нет, то брать правила прям оттуда). Профит!
>>465727 Ты хочешь за неделю бесплатно без смс стать кодзимой? Руководить своей студией макак, вниманеблядствовать в соц. сетях, фоткать свой хавчить, пороться с голливудскими актерами и хайпить на весь мир? А то что он 30 лет шел к этому, это уже не аргумент? Или хочешь кнопку сделать пездато и заработать 100 миллионов?
>>465725 как это понять? ты на сервере что то спавнишь? шта, я понемаю конечно что есть такая вещь как синхронизация с сервером что бы усложнить четарское бытие, но мне кажеться ты не это делаешь и все напутал. ну или я все напутал.
>>461777 Если я правильно понял, тебя ткнули в то, что тебе не надо гонять по сети сериализованные объекты, а гонять надо айди объектов в бд. Если у тебя в инвентаре объекты с изменяемыми свойствами, то лучше по сети гонять айди вместе со скриптами, которые будут модифицировать созданный объект с айди, полученным по сети.
Так есть mono behavior класс MessagePanel не привязанный к какому либо объекту. У него есть статический метод Instantiate() который должен из префаба создать объект (окно) к которому и привязан скрипт MessagePanel
Вопрос: как мне лучше получить линк на префаб? Только через поиск по имени?
>>465899 > Только через поиск по имени? Поиск по имени работает только если объект уже на сцене. А так - только через русоурцес или не еби мозги, пихай скрипт на пустой контроллер и через сериалайзфилд передавай в него префаб.
>>465901 Чет хуева опять сделали. Я так хотел инкапсулировать поведение в одном классе. Теперь мне надо в каком то левом классе хранить префаб или грузить его с лагами Resource.Load пичалька..
>>465899 Можно добавить на сцену го который будет хранить твой префаб. И тогда можно обратится к префабу через этот объект. Получить этот объект можно с помощью синглтона, статичного метода или через поиск, как хочешь.
>>465808 >Ты когда на велосипеде ездить учился начал с изучения производства карбоновых рам? Потом пошёл каучук на шины добывать? Теплое с мягким. Геймдев с узким персональным скиллом.
>>465899 Используй ScirtableObject для хранения различных настроек игры, в том числе ссылки на префабы и другие ресурсы. Создай один специальный ScirtableObject, который будет в папке Resources - это будут главные настройки игры: https://pastebin.com/m2TVpu5R
Через них ты можешь получить доступ к нужным ресурсам. Это может быть класс UISettings.
>>466077 Поддерживаю этого господина: в первую очередь ищи решение проблемы в гугле, даже если найденное тебя не устроит, оно может дать тебе несколько полезных идей. Говорю по собственному опыту, потому что меня иногда в угаре увлекает писание велосипедов, после которого просыпаешься спустя три дня с тройной вложенной рекурсией через рефлексию, хотя решается всё в три строчкииногда эти три строчки даже бывают написаны, но изобретать так весело!
>>466094 > потому что меня иногда в угаре увлекает писание велосипедов, после которого просыпаешься спустя три дня с тройной вложенной рекурсией через рефлексию, хотя решается всё в три строчки
А как в профайлере понять что конкретно цп грузит? Ну вот там говорится, что фиксед апдейт. А у меня в нём 25 функций, каждая из которых вызывает ещё по 25. Профайлер может как-то конкретизировать?
Кто может помочь по Ligtmapping'у в 2017 версии? Режим Bake как будто не работает, запекает только Albedo. Только что проверил старую версию 5.5.5. Там в настройках есть Directional-Specular. Вот он нормально все карты печет.
>>466094 >в первую очередь ищи решение проблемы в гугле Ну вот я решение своей не нашел. Использую Rigidbody + Capsule collider, двигаю перса через velocity. Нужно сделать кастомную гравитацию и обработку лестниц/slopes/ramps.
Нигде похожего варианта намой не нашел, либо через transform двигают с кастомной коллизией (*ой жесть), либо у них там примитивный Raycast, который чреват теми же проблемами, + своих куча (каститься только луч, а не коллайдер перса, а значит на краю платформы он сломается; множественные лучи ничем не отличаются от CapsuleCast я юзаю).
Короче, вторую неделю решаю траблу.
>>466240 Погляди тут анон, вроде она поясняет разницу между 5.x и 2017.x
>>466289 Да хуй с ним со стенами, их модно напажитить, если нужно.
Главная проблема, это наклонные поверхности и лестницы. Если реализовать char controller через активный rigidbody и двигать через velocity то проблема коллизий уходит на второй план, но вот проблема лестниц и склонов актуальна. Запретить нудные стенами можно, но ведь есть те, которые нужно разрешить. Ты не поверишь на какие высоты стандартный RB + capsule может взбираться. Через Physics material это не решить, уже пробовал, можно лишь трение подтвикать но движение все-равно будет.
Я нуб, на С# могу только калькулятор и хелло ворлд написать, подскажите мне пожалуйста как сделать мишень и двигающийся курсор, так чтобы игрок не мог двигать курсор, а только мог нажать клавишу в определенный момент и выстрелить
Сап, геймдевач. Подскажи нубу, как сделать анимацию исчезновения предмета? Делаю 2d платформер. Вот у меня гг подбирает медальку, но не знаю, как прицепить анимацию исчезновения этой медальки при подбирании. И сразу же вопрос об анимации смерти врагов. Тоже не понимаю как её прикрутить. Буду очень признателен. Если есть ссылки на подробную реализацию этих вещей или хотя бы скажете как это гуглить - очень поможете. Заранее спасибо.
>>466496 >Instantiate Можно чуть более подробно как это гуглить? Я чуть менее чем нихуя не щарю в С#, ай да я.. Если что, предмет у меня сам по себе исчезает при подборе, но нет именно анимации.
Да, показано, но как сделать это при условии исчезновения я не догнал. На персонаже - да, а на предметах - нет.
>>466500 Это-то понятно, я не про это. Эта штука ведь отвечает за создание экземпляров и всё такое. А меня именно анимация волнует. Не понимаю как прописать это предмету.
>>466499 >>466499 1) Дублируешь свой объект медальки. 2) Удаляешь все кроме спрайта (и скрипта если он есть). 3) Создаешь анимацию подбора, вешаешь на объект. 4) Добавляешь скрипт (или в уже существующий) в котором в Start() лежит Destroy(gameObject, 0.8f); Время выставляешь как удобно. 5) Сохраняешь объект c названием medalPickUpAnimation 6) В начале скрипта где обрабатывается подбор медальки создаешь переменную GameObject medalPickUpAnimation. 7) В инспекторе добавляешь в этот слот сделанный объект из п.5 8) В месте в скрипте где обрабатывается подбор медальки вставляешь Instantiate(medalPickUpAnimation, transform.position, transform.rotation);
Вуаля, при подборе ты вызываешь копию медальки, которая проигрывает анимацию со старта. Осталось только синхронизировать длительность анимации и время уничтожения объекта.
Меня скорее всего закидают говном за этот способ вместо нормального аниматора, но я нюфаг, мне можно.
>>466495 > Вызвать её вовремя И в чём проблема вызывать её вовремя? Вешай на монетку аниматор, пихай в него анимацию, ебошь булевскую переменную, делай переход по этой переменной и в скрипте через setbool присваивай переменной true в нужное время.
>>466505 Если это костыль, то наверное так лучше не делать.
>>466507 Да, понимаю. Но они сделаны для перса. Не понимаю, как для предмета или моба это сделать. Для перса у меня получилось сделать дополнительные анимации, но предметами засада.
>>466508 >ебошь булевскую переменную Это как? Я аутист.
>делай переход по этой переменной и в скрипте через setbool присваивай переменной true в нужное время ЯННП. Блядь, прохо быть тупым.
>>466511 >>Да, понимаю. Но они сделаны для перса. Не понимаю, как для предмета или моба это сделать. Для перса у меня получилось сделать дополнительные анимации, но предметами засада.
>>466511 > Это как? Ручками. Никогда окно аниматора не видел? > ЯННП Ну тогда открывай базовые туторы с офсайта и чисти их вилкой. Как я люблю этих хэлоуворлдщиков, которые вместо того, чтобы учить азы, сразу лезут в дебри.
>>466529 Уметь делать всё - не всегда хорошо. Уверен, что ты более силён в кодинге и это нормально. Я вот даже хэлоуворлд не могу написать.
Было бы, конечно, совсем чудесно найти кого-нибудь в пару и херачить игоры, разделив кодинг и рисовач на двое. По крайней мере продуктивнее было бы в несколько раз.
>>466536 Ну ебана. Создаешь скрипт для монетки, вешаешь его на саму монету, в OnCollisionEnter там вызываешь GetComponent<Animator>().SetTriger("PickedUp"). И вешаешь на монету аниматор, где переход к анимации исчезновения через тригер. А на самой анимации фигачишь вызов OnAnimationFinished из скрипта монеты, в котором она просто дестоится. Ну еще можно в OnCollisionEnter коллайдер отключать, чтобы нельзя было собрать монету два раза, пока анимация идет.
>>466527 >>466526 >>466531 Блять, отличный граф. скилл. Ты Tilemap юзаешь в Unity 2017 для левел-дизигна?
Я бы тимнулся с тобой код писать, но я медленный в этом плане (в плане кода, однако такие проблемы как изсечновение монетки - мелочь). Однако пи наличие хуйдожника, что будет ассеты пилить, могу левел-дизигном заниматья.
Я хотел сделать симуляцию атмосферы, на ее основе сделать геймплей - типа, где дождик и тепло там биота растет. Твоя цель вырастить биоту терраформируя планету. Но чет энтузиазм кончается, и формулы на атмосферу сложные и нинужно это никому.
>>466642 >Жалко. >Мимо тот чувак из скай, что тебе пытался помочь Лол, привет
>>466531 > Было бы, конечно, совсем чудесно найти кого-нибудь в пару Я бы вписался, но я уже в другом проекте занят который меня уже доебал, ибо руководитель проекта тупит безбожно.
>>466655 Печально это, конечно. Желаю тебе терпения. Хотя я сейчас призадумался - мне было бы очень ревниво делить именно этот проект строго попалам с кем-то, так как бОльшая часть сделана, а мне нужен лишь саппорт в таких вещах, как исчезновение монетки, лол.
>>466657 Всё познается в сравнении, а я, будучи не художником, вовсе не считаю свой графен охуенным в последней инстанции. И вопрос тут не о графене стоял, как бы.
>>466657 >Пиздец местные наворачивают и нахваливают графон мобилкоговна только уродливый. Юнити стронг. Может ты тогда свой графон покажешь, который ушел дальше чем "пара still images" и еще и прям аж докажешь что твоё, а не какой-то obscure-проект с приватного форума?
Хорошо что у нас есть художник и моделлер. Он, правда, в 3д лепит и рисует нормально, а в 2д у него проблемы, но я б все волосы на голове повыдёргивал, если б мне пришлось учиться рисовать.
>>466679 >но я б все волосы на голове повыдёргивал, если б мне пришлось учиться рисовать Люди на это десятилетия тратят, и все-равно под конец жизни - так себе маляки.
>>466677 >но мне кажется это всё относительно Да, но если у тебя слабо с кодингом, то тебе достаточно разобраться в общей сути, чтобы хуярить визуальные новеллы, раннеры и прочую хуйню, Юнити всё делает за тебя. Либо натянуть свой графон на готовый фреймворк.
Если же у тебя слабо с рисованием, то ты либо ишешь разношерстный графон, и у тебя Снейк сражается с Марио, либо стараешься подтянуть скилл и срёшь всратым пиксельартомкак я
>>466680 >Люди на это десятилетия тратят, и все-равно под конец жизни - так себе маляки. Научиться рисовать может любой дурак. То, что это непостижимое исскуство — байка от недохудожников, которые хотят казаться илитариями.
>>466686 >Научиться рисовать может любой дурак. Безусловно. Вот только без наличия предпосылок ака ТАЛАНТА (ах, чувствую запах пердаков) у тебя на это может уйти более десятка лет, и под конец упорных трудов у 90% результаты на уровне дешевых комиксов от силы. За это время можно вкатиться не только в 3D моделлинг (не получается в анатомию - хуяч пропы, билдинги, архитектура ажеунно интересная вещь), но и в костяк геймдева, изучить любой движок.
А теперь сравни: стотыщь лет, убитых, чтобы научиться рисовать качественный арт в продакшен-масштабах фабрики для того, что бы выдать игру свой мечты и сорвать миллион продаж, или же крепкое среднее знание движков, кодинга и моделинга?
>>466688 > Вот только без наличия предпосылок ака ТАЛАНТА Поддвачну. У нас в классе учился пацан, который в 5-ом классе уже выдавал такое, что все охуевали. В 10-ом классе у него уже была собственная выставка. Под конец универа он рисовал уже такие вещи, что я охуевший просто был. А потом он забил на это дело и стал успешным банкиром
>>466688 >Вот только без наличия предпосылок ака ТАЛАНТА >у тебя на это может уйти более десятка лет Ну тоже фигня полная. Тут талант вообще не причем. Тут от желания зависит. Это любимая отмазка тех, кто нормально учиться не может. Типа мол, таланта нет, пол жизни придется тратить. Как и с музыкой — брехня всё это.
Кто знает или ткнёт куда смотреть, насколько хорошо хуюнити распараллеливает операции запекания освещения и прочей пижни? И что важнее, частота или корки?
Работал с юнити только на четырёхядерниках, намыливаюсь взять E5 2680 v2 - стоит ли овчинка выделки?
Анон, что я делаю не так. Пытаюсь запилить быструю систему сохранения и загрузки последней сцены.
В каждой n-ой сцене есть скрипт, в котором записано PlayerPrefs.SetInt("scene", n); А в самой первой сцене есть scen = PlayerPrefs.GetInt("scene"); А затем уже при нажатии кнопки загрузки должна происходить эта самая загрузка самой последней сцены. Но у меня срабатывает она через раз в самой юнити. А когда проект собираю, то там вообще перестает работать. Что не так?
>>466727 Ну, во-первых, никто не ебёт так трансформ напрямую, для этого есть транстлейт. А, во-вторых, вот так вот тупо ты не можешь изменять одну из координат позишена, тебе нужен буферный вектор3.
>>466718 >В самой первой сцене Она нулевая. А теперь смотрим скрипт апи: public static int GetInt(string key, int defaultValue = 0); Returns the value corresponding to key in the preference file if it exists. If it doesn't exist, it will return defaultValue.
Если игрок запускает игру в певый раз, первая (нулевая) сцена грузит себя в бесконечном цикле. Напиши: scen = PlayerPrefs.GetInt("scene",1); и будет тебе счастье
>>466718 Это (>>466741) что касается "проект собираю и не работает"
А что касается кнопки загрузки, то ты скорее всего запоминаешь "последнюю сцену" перед тем как загрузить и получается, что грузится та же сцена, что и была до этого. Исправить это можно тучей вариантов, но я бы просто В Don'tDestroyOnLoad запихнул бы запоминатель сцен и в него бы две сцены: предыдущую и текущую. А в плеер префы лез бы вообще только при загрузке и выгрузке приложухи.
Ща: Метод OnClick(), который висит на твоей кнопке: { ZapominatelScen.instance.lastScena = n; // номер этой сцены
При загрузке любой сцены, в каком-нибудь ее контроллере: ZapominatelScen.instance.scenaDlyaZagruzkiPoKnopke = ZapominatelScen.instance.lastScena;
В каком-нибудь синглтоновом менеджере, который находится опять таки в DontDestroy: void OnApplicationQuit() { PlayerPrefs.SetInt("scene",ZapominatelScen.instance.scena); }
Ну и в 0й сцене просто грузишь и все. Что то типа SceneManager.LoadScene(PlayerPrefs.GetInt("scene",1));
Есть камера, камера рендерит определённые слои. Тут я жму кнопку и через cullingMask отсекаю один из слоёв. Соответственно, он мгновенно исчезает и больше не рендерится. Можно ли сделать чтоб он исчез не сразу, а растворился аки призрак? Или придётся с материалами ебаться?
>>466915 Я такого кода не видел ни разу, если честно, сам обычно в гугл транслейтор лезу, если не могу сам перевести. Вот только что хуже: писать транслитом или писать с лютейшими ошибками на английском? Главное же, что бы твой код могли читать коллеги и ты сам. Если вокруг Васяны, то им транслитом ток проще будет
>>466969 Какое тебе ограничение нужно? Чтоб объект за определённые пределы не вышел? Если да, то юзай Mathf.Clamp и не еби мозги. Что ж вы так любите велосипеды писать? Всё давно написано.
>>466971 Да при чём тут мудак. То что опыта мало - это понятно. Но хотя бы гугли на инглише что тебе надо перед тем как велосипедить. В 80% случаев тебя на документацию и выкинет. Если, конечно, умеешь грамотно составлять запрос.
>>466841 Через cullingMask нельзя так сделать. Я ни разу не реализовывал такую фичу, но если бы пришлось, я бы попытался поработать с альфой материала. Можно анимацией, можно любым твинером.
>>466973 Ну если опыта мало, можно и костыль написать для расширения кругозора. Если уже захочешь вкатиться в профессиональное проганье, то любого джуна учат как правильно невелосипедить и т.д., так что не бугурти, зай.
>>466978 Да я и не бугурчу. Я просто не пойму почему бы сначала не вкатиться в самые-самые примитивные туторы с офсайта. В том же спейс шутере этот самый Mathf.Clamp используется на самых ранних стадиях. Быстрее же будет, чем потом велосипедить и репу чесать почему велосипед не едет.
Если ты объявляешь переменную внутри какого-либо блока, то она существует только в контексте этого блока.
if (random == 1){ var obj = Instantiate(textOne); obj.transform.position = new Vector3(pozx - 1.54f, pozy + 2.23f, pozz); obj.transform.parent = this.gameObject.transform; yield return new WaitForSeconds(2); Destroy(obj); }
И будет тебе счастье. А вообще, советую написать отдельный скрипт, который уничтожает объект по прошествии определенного кол-ва времени, особенно, если таких объектов у тебя в игре много и они разные.
Юнитаны, есть анимационный клип, в котором меняется позиция г/о, дочернего содержащему аниматор. В окне Animation всё выглядит как надо, но в игре позиция не меняется. В чём может быть проблема?
>>467183 У меня была точно такая же проблема - не срабатывала анимация открывания сундука. Так же как у тебя - аниматор висел на сундуке и анимировал дочерний объект (крышку). И вот в аниматоре всё норм, а в игре хуй. Джва часа ебался, а оказалось что на крышке (не на сундуке, а именно на крышке) стоял static. Если у тебя там галочки нет, то я хуй знает в чём проблема. Я в аналогичной ситуации всё испробовал.
>>467213 Кажется я приблизился к ответу. Не знаю должно ли так быть, но аниматор производит только относительное изменение позиции, беря изначальной ту, которая была у г/о до начала клипа, а не ту, которую указывал я в клипе. При этом в окне Animation г/о перемещается правильно. Я упустил ещё какую то галочку?
>>467225 > беря изначальной ту, которая была у г/о до начала клипа Чего блять? Задавай в ключах какие хочешь параметры. Что там оно у тебя само "берёт"?
>>467233 Задаю, да, но объект не перемещается по этим точкам, к нему лишь применяются изменения параметров относительно первого ключа.
Например дочерний объект находится в точке А, создаю клип, в котром он из точки А перемещается в Б, затем в В. После этого перемещаю объект из А в А" и запускаю анимацию.
В окне Animation объект в начале клипа переместится в А, затем в Б, затем в В. В игре же во время анимации объект останется в А" и переместится в Б" и В", отличие которых от Б" и В", такое же как отличие А" от А.
Другими словами: в окне Animation сохраняются координаты, в игре только траектория.
>>467250 > Например дочерний объект находится в точке А, создаю клип > После этого перемещаю объект из А в А" и запускаю анимацию Почему не записать анимацию сразу из А''?
>>467252 Много для чего. Не просто же так в СпрайтРендерере есть поле Color. Можно показывать, например, что по тебе попали. А если у тебя ГТА, то можно тачки разоцветные пилить. В общем, вариантов масса. Специально для тебя пикрил запилил.
>>467225 >но аниматор производит только относительное изменение позиции, беря изначальной ту, которая была у г/о до начала клипа, а не ту, которую указывал я в клипе. Ну так создай две анимации для обоих положений или же, в скрипте, в в зависимости от того, в каком полоджении объект - проигрывай нормальную анимацию или реверсную?
>>467286 В моём случае только в скрипте двигать пожалуй. Идея была в том, что в зависимости от ветки анимации объект перемещается в определённое место. Сами субъекты - спрайт персонажа и гейобъект, в который в процессе запихивает спрайт предмета в руках. В случае стрелялы - спрайт оружия может переместиться в позицию для стрельбы от бедра или прицельной. Сама анимация сейчас просто плейсхолдер, оружие даже не двигается, просто находится в точке. Поэтому долго не мог найти причину - думал, что эти анимационные ключи не работают вовсе.
Таки нашёл похожую проблему и воркараунд: не анимировать корневой объект, а только его детей. Перенёс спрайт персонажа в отдельный объект, дочерний холдеру аниматора, и всё работает ок. При запуске анимации с изменением позиции шута телепортируется в нужную точку и сидит там. При смене клипа на клип без ключей для позиции шуты, она телепортируется на исходную позицию.
>>467343 > Перенёс спрайт персонажа в отдельный объект, дочерний холдеру аниматора У тебя ж так и было > меняется позиция г/о, дочернего содержащему аниматор
>>467356 Да, но теперь все анимируемые объекты дочерние объекту, содержащему аниматор. До этого на нём был спрайт персонажа, используемый в клипах, теперь корневой г/о не анимируется вовсе.
Относительно причины этой хуеты идей нет абсолютно.
>>467424 >рандомно дёргающимися спрайтами Эта проблема из-за чисел с плавающей запятой в позиции. Есть хитрое решение, когда в атласе спрайтов по бокам от спрайтов дублируются их пиксели.
>>467417 Спасибо за агрессивную попытку помочь, но всё и так было в локальных координатах. Значения в проперти указывается в локальных координатах. Перемещение должно быть относительно материнского объекта.
>>467343 Не победил, а подебил. Всё отлично сработало в тестовой сцене, и я на радостях забил хуй. Но когда сегодня исправил исходный объект и его клипы, что бы вы думали произошло? Нихуя!
В конце концов я сделал два одинаковых геймобъекта с двумя одинаковыми детьми, у всех одинаковые имена, одинаковое положение(за исключением Y координаты родителя), один и тот же анимационный клип, один и тот же лайаут аниматора. Единственно отличие - в одном случае аниматор новый, во втором - очищенная от всего копия старого аниматора с тем же клипом, что и в новом. В одном случае работает нормально, во втором - как прежде.
Запилю пожалуй треды на форуме и реддитекогда вернусь с орбиты
>>467469 > конце концов я сделал два одинаковых геймобъекта с двумя одинаковыми детьми, у всех одинаковые имена, одинаковое положение(за исключением Y координаты родителя), один и тот же анимационный клип, один и тот же лайаут аниматора.
Я хуй знает что у тебя там за трабла, аноно, но звучит как пиздец.
>>467479 Я много про что не писал, но гипотезы же были. Ну если бы я вспомнил про разный блендингменял я его ещё в 5.6 если не раньше, то я бы увидел чем эти два аниматора всё таки отличаются, остальное то было одинаковым. И решение перебором возможных причин наугад было бы найдено. Но да, всё же я тупой, мог догадаться про блендинг из того факта, что к дочернему объекту применяются векторы изменений, а не заменяются сами значения.
>>467559 Потому что по-хитрому сгруппировал спрайты в кучу, и даже растения не касаются зелеными частями блоков, вот только он об этом ничего не говорит.
>>467565 Да, блоки в тайлмапе все в куче, поэтому линий в игре и не видно, т.к. пиксели соседних блоков друг с другом смешиваются. Одним словом движок в принципе не умеет это дело исправлять, всё это фиксится исключительно фотошопом на этапе подготовки тайлмапа.
Вопрос: в течение игры, необходимо менять меш у какого-то объекта, допустим этих мешей 10 штук, как хранить ссылки на эти меши? Делать массив мешей и таскать ссылки оттуда? Звучит довольно тупо, на мой взгляд.
>>467580 Если хочется прямо по-хардкору, то можешь просто ради лулзов ссылки зашить в xml или json. Но это на самом деле не нужно. В простом public массиве в скрипте, висящем на самом объекте, которому надо поменять меш нету ничего "тупого".
Объясните дауну почему моя камера не летает по нажатию клавишь. Пару месяцев назад делал где-то тоже самое и все работало(только проебал комп с исходником) http://pastebin.ru/j7ueHf9p
>>467619 При чем тут мои демки вообще? Назови мне самые графонистые игры на юнити? Сразу на ум придет Escape From Tarkov и Ghost Of A Tale. Первая графикой на уровне BF3 и жрет непозволительно много, требует 16ГБ оперативки, тормозит на топовых видеокартах и процессорах даже на высоких. Вторая выглядит чуть-чуть лучше, но в ней нет ни четких текстур, ни нормальных PBR-материалов, ни какой-то серьезной симуляции физики или частиц, и вечно риалтайм тени пидорасит.
Есть в юнити хоть что-то похожее по качеству графики в риалтайме: освещения, частиц, симуляции одежды, теней и материалов качественных? Я хоть юнити и люблю, но движок буквально задыхается от хоть сколько-то современных условий рендера.
Я могу еще перечислить очень и очень плохую и старую систему террейна, освещение для которого печется непозволительно долго, а сам террейн убивает производительность, что приходится идти и покупать для него плагины. Мягкие тени и освещение в реальном времени тоже не самая сильная сторона юнити, вот на UE4 multi-bounce indirect lighting даже пустую сцену охуенно красивой делает. И в целом, если не брать йоба-демки типо Unreal Paris и отскакивать от парагона, на котором они также демонстрируют кучу технологий, вполне понятно, с чем юнити не справляется.
И вообще я вопрос не про это задал, а про то, кто перекатывается/собирается перекатиться. Я не собираюсь превращать это в срач о том, какой движок лучше или нет.
>>467639 >Первая графикой на уровне BF3 и жрет непозволительно много, требует 16ГБ оперативки, тормозит на топовых видеокартах и процессорах даже на высоких. Почитал пару отзывов @ Сделал выводы о игре У каждой игры всегда есть куча отзывов рода «У МИНЯ ТИТАН И НИ ТЯНИИИИИИИИИИИИИИИИИИИИИИТ»
>>467644 Я играл в нее, чувак. Играл также мой друг с GTX1080, 24GB оперативки и i5 8 поколения. У меня железо попроще, 970, 16GB и i5 6 поколения. Оба бегали на средних настройках с дикими лагами на таможне, поэтому играли почти всегда только завод.
Но тут не об игре разговор идет, а о том, какая технология за ней стоит. Учитывая, что разработчики самоуверенно сказали, что они движок как свои 5 пальцев знают и у них там большая часть всего написана под них и также оптимизирована, и видя на выходе (хоть еще и не релиз) такую игру, я понимаю, что с выбором технологии они крайне сильно ошиблись.
>>467648 Давай без этого, из-за того, что они русские, хуже программировать они не стали. Уже из того, что они выжимают из Юнити, видно, что ребята очень хорошо знают свою работу. К примеру, видел ВК одного из чуваков, который писал шейдеры для игры, там просто колоссальная работа была проделана по оптимизации. Так что они реально уперлись в лимит движка уже, по ним это видно.
>>467649 >хуже программировать они не стали Плохие новости. Вспомни хоть что-нибудь за последние 10 лет от русских хорошее? Олсо, в расте графоний приятный оче.
>>467650 В расте артстайл сам по себе спокойный и не претендует на ААА-графику, и в целом там довольно мало мелких объектов и всего такого. У Таркова же говна на картах навалом, все это еще с освещением, затенением, кое-где отражения. Короче пайплайн по-полной задействуется.
>Вспомни хоть что-нибудь за последние 10 лет от русских хорошее?
Да ничего не вспомню от русских студий, кроме War Thunder, который классно выглядит и хорошо работает. Зато знаю много разработчиков в том же Unity и Epic Games из России. Да и вообще в любой ААА-студии есть хороший процент русских. У нас сама по себе индустрия не сильно развита, потому что все сваливают. Те же ребята из ZeptoLab на заре 20ХХ, когда делали первую Cut The Rope, нанимали людей в офис в России, а потом как денег подняли -- со свистом свалил в Европу.
>>467649 >русские, хуже программировать они не стали Русские не могут в качественный продукт без живительных пенделей со стороны "западных партнеров". Причем это не только программирования касается, просто посмотри вокруг.
>>467701 Никто и не спорит, что лучше. Но вкатываться в него в 100 раз сложнее брайнлетам. В Юнити лего собрал и выложил в стим-стор, а в УЕ нужно 100 лет пилить базу, а потом уже кубики собирать.
Да, сравниваю с позиции капа и еще с позиции качества при должном усилие. Я на Юнити уже участвовал в разработке 3D-проектов, там довольно прожорливые тени и GI, и много всего надо настраивать, чтобы выглядело не как говно -- чтобы тени не клипались и т.д. На UE4 же подобного качества достигнуть очень просто, и в целом все это работает пошустрее из-за доступа к пайплайну (в юнити только в следующем релизе что-то похожее будет, но не факт, что даст возможности UE4).
Юнити для 2D отлично подходит и для игр, которые будут работать на старых ПК (при одинаково среднем графоне с UE4). UE4 же позволяет делать очень хороший графон при должной производительности на нормальных ПК.
И по поводу капа еще добавлю -- террейн система уже огромный минус в юнити, сам по себе ограничивающий меня в работе над проектом с большими локациями. Из-за этого надо покупать плагины, которые решают от силы 20% скопившихся за 11 лет проблем террейна. Производительность хуйня, качественные текстуры и растительность убивают ее напрочь. Да и работать, если честно, в юнити уже заебало. Воркфлоу никакой -- пихать каждый раз на сцену префаб, чтобы его отредактировать, это вообще сущий ад. И префабы еще и нестинг не поддерживают. Хз. Единственный минус, который я у UE4 нашел -- C++, потому что компилировать даже пустой проект надо 5-15 секунд, на юнити же огромные проекты в районе пары секунд обновляют все скрипты, спасибо C# и модульной архитектуре.
Господа, как обычно визуализируют в инспекторе(или как это правильно называется, окошко scene) невидимые объекты? Вот у меня есть какой-то empty object c навешаным скриптом, как сделать его видимым в инспекторе(например обозначить его каким-нибудь полупрозрачным кубом или сферой), так чтобы все это отображалось только в инспекторе, но не в работающей сцене.
>>467760 Мало работал с юнитивски террейном, но во всяких Обливионах, Муравьиндах и Скайримах очень похожая система, по-крайней мере за то время, что я работал с Юньковским террейном, я разницы не почувствовал. Производительность можно увеличить за счет лодов и дальность прорисовки. Не обязательно рендерить траву на всем террейне, например. Да что я тебе объясняю, сам все знаешь. В конце концов за 11 лет можно было написать свою обработку террейна и жить нормально, в конце концов я особо не понимаю, что там такого именно в самом базовом классе, что тебе загрузит производительность по самые яйца.
Ну выглядит нормально, не более. Интерфейс классный если только.
>>467965 Как раз-таки у юнити-террейна плохой ЛОД, трава, деревья и culling. Точнее очень хуевый.
Ну отлично, ты перечислил игры, которым уже больше 7 лет. У Юнити старый террейн и в нем туча проблем, на форумах очень много тредов по этому поводу и я даже читал пост гнева какой-то от человека, который 5 лет оплачивал подписку на юнити и слышал каждый год обещания разработчиков, что они займутся проблемой террейна. Ну и в фидбеке давно уже New Terrain System в planned висит, с 2013 года нахуй (https://feedback.unity3d.com/suggestions/improved-unity-terrain-core-engine)
Если ты мне не веришь, что он хуевый, можешь сравнить с UE4 террейном (и в целом с простотой создания уровней там). Либо почитать треды на юнитифорумс с обсуждением того, почему вся система террейна там устарела и ее срочно надо менять.
А по поводу переписывания террейна -- я на юнити не 11 лет работаю, а меньше 5, но и мне время тратить на переписывания базовых вещей не хочется, тем более когда их поломает следующее обновление.
Что народ нынче использует для пиксельарта? Я про тех, кто вообще рисовать не умеет. Есть какие хелперы, которые могут сделать частично "заебись" ну или хотя бы "на это терпимо смотреть"?
Сап, двощ. Я пиздец какой начинающий игродел и задался тупым вопросом, где делается весь уровень? В 3д моделлере или в самой юнити с помощью примитивных прямоугольников?
>>468077 Примитивная геометрия и архитектура, террейн - в Unity, пропы и модели - в 3D-китах (типа твоей сексуальной русалки на корабле, да и сам корабль)
Я перед НГ кидал сюда свои пятнашки, какой то анон помог с дизайном. Так вот карочи я выложил игру в плей стор. Наконец то я дошел до этапа когда купил девелопер аккаунт и выложил свое поделие. Похуй что никому не нужное говно, главное что первый шаг сделан блять ебаный шашлык. Теперь можно делать шидевор и после купаться в деньгах от рекламы очевидно.
>>468328 ˅ v ^ Немного не то. Просто я делаю сортировку в таблицах, и этот значок должен означать в какую сторону включена сортировка. А как гуглить это не знаю. О, знаю это жи caret symbol
>>468370 В скрипте, из которого передаёшь, создаёшь ссылку на скрипт, в который передаёшь, и задаёшь. Типа: Script otherScript = FindObjectOfType<Script>(); otherScript.variable = value;
Сравнивал я, сравнивал предикаты да не высравнял. Там, похоже, система как то оптимизирует предикаты из-за чего сначала дебаггер перестает работать и потом и логика ломается. Но мне норм.
>>468512 Предикат - это обычный делегат под капотом. Нихуя там не оптимизируется. Спорю, ты используешь пидорский МоноДевелоп, вместо того, чтобы работать на Visual Studio.
>>468525 Обоссать бы тебя. Разница в инструментарие. У монодевелопа он так мощно сосёт, что Unity наконец-то отказывается от его поддержки в пользуй Visual Studio.
>>468540 Так причем тут блять IDE-то? Я даже не тот анон. У тебя забор деревянный, и две банки краски: голубая "НЕВА" и голубая немецкая "Баума" в 10 раз дороже. Ты второй краской забор покрасишь - он из деревянного в железно-бетонный превратиться?
>>468524 >Нихуя там не оптимизируется. Спорю, ты используешь пидорский МоноДевелоп, вместо того, чтобы работать на Visual Studio. Нит, у меня кошерная ms vs 2017
Хз, что но что там странное происходит. Часть я уже понял. У меня там был combined предикат состоящий из одного предиката А. Я вычитаю из него А и происходит какая то хуета. Что, впрочем, логично, наверно.
>>468516 Там кстати опенсорсный ксп делают на реддите (пока правда только замеры делают)
че-то двач мой пост сожрал, не удивлюсь если два раза будет.
>>467484 ваще заебись. то на что можно смотреть очень долго. в 2011 году, кстати, вышел from dust где из водной эрозии сделали ртс-пазл клевый.
>>467487 а, это. Через ComputeBuffer и Material.SetBuffer. в юнити же через какой-то клевый api можно редактировать буфферы на видеокарте где в качестве содержимого может быть struct. я сделал отдельно шейдор для точки, линии и плоскости где указывался бы отдельно цвет каждого элемента и его размеры, поверх этого сделал дебагер который бы редактировал буфферы и всю эту хуйню. получилось клево.
https://www.assetstore.unity3d.com/en/#!/content/85181 собственно можешь скачать мой навмеш, почитать, спиздить мой дебагер. У него ещё другие фичи есть, например он через Handles выводит текст в сцене в нужной позиции. Без такой хуйни было бы трудно сделать навмеш. интересующее тебя в классах PFDDebugerScene который собственно сидит в сцене и рисует все это и Debuger_K из которого все это дебажится.
у меня раньше был дебагер который через Handles делал то-же самое, но он медленноват когда надо отдебажить хуилион всяких точек и линий.
>>468608 я надеюсь ты не анонимными делегатами пользуешься для такого. какие-то сорта манипуляций со сложением или вычитанием анонимных делегатов делать вообще не следует.
>>468609 >я надеюсь ты не анонимными делегатами пользуешься для такого. какие-то сорта манипуляций со сложением или вычитанием анонимных делегатов делать вообще не следует.
Да, анонимной лямбдой
private Predicate<PopUnit> filterArtisans = new Predicate<PopUnit>(x => x.popType != PopType.Artisans);
Тут я наверно и обосрался
Попробовал так - тоже не получается private Predicate<PopUnit> filterArtisans = _filterArtisans; private static bool _filterArtisans(PopUnit x) { return x.popType != PopType.Artisans; }
>>468612 Кароч проблема именно в попытке вычесть А из А. По идеи должно давать null, а на самом деле фигня происходит.
>>468609 >я надеюсь ты не анонимными делегатами пользуешься для такого А чем они хуже? Их невозможно сравнивать потому что каждый раз создается новая сущность? Т.е. при каждом обращении к Predicate<PopUnit>(x => x.popType != PopType.Artisans) лямбда будет конвертироваться в новый предикат?
>>468584 Сейчас планета это сфера с натянутым материалом, поверхность я еще не делал. Расчеты в реальном масштабе, отрисовывается в уменьшенном, кроме 50 км пузыря вокруг активного крафта.
>>468612 >>468618 >>468641 ты конечно уже и сам все посмотрел. но вообще, шарп же вроде как в этом случае делает чтото вроде "вот у нас bool result, инвокнем все делегаты, каждый инвок будет совать свой результат в result, в конце вернем result"
если написать то что на скриншотике то результат будет: invocationList.Length: 3 findAllResult: 3 False False True
лучше уж свою имплементацию хранения и применения делегатов написать.
>>468668 Да. Я так понял, предикат - тупо переименованный делегат. Т.е. он не рассчитан на логическое суммирование составных предикатов. Выполняются то все предикаты, но в выборку findAll идет только последний.
>>468668 >лучше уж свою имплементацию хранения и применения делегатов написать.
Для этого вроде как существует Expression<Func<T, bool>> но мне лень туда сейчас лезть.
Спрошу только, может кто знаток, можно ли в С# SQL подобным запросом выковыривать данные из структуры типа (примерчик бы помог): Есть лист государств, каждое государство имеет лист провинций, каждая провинция имеет лист фабрик и лист попов.
Нужно получить лист всех попов или фабрик с определенным фильтром.
Будет ли запрос в таком случае быстрее чем перебор foreach?
>>468722 >Да. Я так понял, предикат - тупо переименованный делегат. Predicate и Action это стандартный делегаты по типу: return <T> (принял <T>) и return void (принял <T>)
Их просто для тебя сделали по дефолту, если нужна такая функц. и не хочешь свои писать по сто раз.
>>468762 Я идеалогически против сотрудничества с кем-то и против опенсорса. И не зря, судя по тому, что у них больше ста участников, конь не валялся и последний коммит был месяц назад. Впрочем, если у них взлетит, я буду только рад, космосимов все равно практически нет.
>>468769 Работающая орбитальная механика несколько сложнее, чем у них сделано, не говоря уже о том, что движок (любой) не тянет прямые вычисления для объектов на сцене, надо сначала считать "в уме", потом уже изъебываться и все это отрисовывать. И как всегда 80% работы проходят над "малозначительной" хуйней, типа иконок, дизайна и всего такого прочего.
>>468772 >И как всегда 80% работы проходят над "малозначительной" хуйней, типа иконок, дизайна и всего такого прочего. Потому что реальное дело требует нехилых познаний в математике, физике и погроме, а люди с такмим познаниями могут зарабатывать дельное быбло, вместо того, что ты тратить время на реддит-хуету?
>>468778 >реддит-хуету Зря ты так, я бы поучаствовал и даже поделился своим кодом, если бы не желание зарабатывать геймдевом, сидя дома, а не въебывая после основной работы. Вот какой-нибудь немец-погромист с двадцатилетним стажем и сбережениями вполне может себе позволить просто для фана сидеть дома и пилить опенсорц-космосим.
>>468836 Ну я пиарился только в ксп-треде на двоще, так что ничего удивительного, тащемта. Будет геймплей - буду пиариться вконтакте и на реддите. Можно будет даже твиттор запилить.
>>468827 >>468837 >>468480 Хуетой страдаешь, у тебя явно дело стопорится дельное. Прототайп хуячишь, затем неделю тратить на стотыщьпицот мылов все инди-паблишерам с предолжениями, находишь и дело в шляпе.
В противном случае, 100 долларов на Steam Direct и сам релизишь.
>>468841 >паблишерам Спасибо, но работа у меня уже есть. Пока идет разработка и кто-то хочет поддержать - можно задонатить. Потом в стим выложу, наверное.
>>468842 >заставят работать.. Вот этот шарит. Хочу в трусах сидеть дома и пилить космосим мечты за 5+к баксов в месяц от заинтересованных. Просто для бабла можно продаться в какой-нибудь варгейминг, недавно от них спам в линкедин был, опять какое-то говно пилят.
>>468846 >пилить космосим мечты за 5+к баксов Ну это ты дюзы раскатал. Тут на порнографии то едва тыщенку зашибают.. Я вот 300 хочу за симулятор кокономики
>>468850 Порнушных проектов миллион с хвостиком, а альтернатива огурцам пока одна, из известных мне. Соответственно комьюнити не размазывается.
>>468851 20 тысяч это мало, если надо где-то жить и что-то есть. Студентам из миллионников в этом смысле хорошо, можно на шее родителей посидеть. В моем случае если доход упадет, то я быстро и решительно перееду жить под ближайший мост.
А почему у меня в классе-потомке monoBeahaivor не вызывается start() метод? Мне ее виртуальной объявить или как? Или это из-за того что потомок - generic?>>468872
abstract public class UITableNew<T> : MonoBehaviour, IRefreshable, IFiltrable<T> public void Start() {
}
потомок:
public class ProductionWindowTable : UITableNew<Factory> { private SortOrder typeOrder, provinceOrder, productionOrder, resourcesOrder, workForceOrder, profitOrder, profitabilityOrder, salaryOrder, unemploymentOrder;
public void Start() { typeOrder = new SortOrder(this, x => x.getType().GetHashCode()); provinceOrder = new SortOrder(this, x => x.getProvince().getID()); productionOrder = new SortOrder(this, x => x.getGainGoodsThisTurn().get()); resourcesOrder = new SortOrder(this, x => x.getInputFactor().get()); workForceOrder = new SortOrder(this, x => x.getWorkForce()); profitOrder = new SortOrder(this, x => x.getProfit()); profitabilityOrder = new SortOrder(this, x => x.getMargin().get()); salaryOrder = new SortOrder(this, x => x.getSalary()); unemploymentOrder = new SortOrder(this, x => x.getProvince().getUnemployedWorkers()); }
>>468934 Я сделал, но нет. В классе-предке останавливается на брекпоинте (2 раза почему то, хотя потомков больше 1), а в потомке - не останавливается. И поля остаются непроинициализированными.
>>468952 В том коде у тебя Start() - вообще приватный метод. В рабочем потомке она вызывается из AddHeader, а в нерабочем - не вызывается вообще никак.
Анон, в VS 2017 (подозреваю из-за нового VS Tools for Unity) автоматически дописывается private при интеллисенсе стандартных функций монобеха. Я в глаз ебусь, как это можно отключить (чтобы интеллисенс остался, но не добавлял private)?
>>468698 а кто тут ещё такую хуйню то выкладывать может? я конечно. на самом деле хуево. последний результат был в том что я написал для ИИ контролер чтобы он по сети мог работать. потом переключился наверно на 5-6 дней на процедурную анимацию, сделал клевый блендор кривых, но забросил. но картинку покажу. потом переключился на какое-то время на оптимизацию навмеша, так как меня посетила одна клевая идея как можно сделать заебись. заглянул глубже в алгоритмы растеризации, недели две репу чесал, навмеш стал на 30-40% быстрей генерироваться, стало заебись. после того как апдейт выложил в ассетстор мне чего-то люди стали писать интересные вещи, задавать интересные вопросы, количество закачек выросло в 2-3 раза. решил уже сделать фичу которую чаще всего просили - локал авойденс. и когда погрузился туда то неожиданно недели за две до нового года попал в больничку. вышел перед новым годом, но там и времени не было. теперь вот снова локал авойденс делаю. но там вроде и так почти все сделал. осталось добавить тень от навмеша в допустимую скорость. и по человечески написать нахождение самой нижней точки при пересечении множества плоскостей.
День добрый господа. Пилю тактическую Рпг в стиле Darkness Dungeon. Хотелось бы как-то отобразить весь баланс игры. Скорее всего это называет математической моделью. Вопрос: по каким запросам гуглить подобные методики? Может есть какая-то литература или даже софтExel.
>>468973 >Mono только вызовет если скрипт на обьекте Оно и висит. Обект правда не включен. Но в том и суть, оба объекта выключены, на одном старт срабатывает - на другом нет.
>>469003 Иди по стопам дидов откуда выросли все рпг и все рогалики, почитать рулбуки от вахи, мотыги, WoD, и т.д. Посмотреть их таблички персонажей и т.д. Разраб данжеона несколько карточных игр и настолок создал прежде чем в геймдев пришёл. А там только листочки и тестирование с такими же аутистами.
>>469027 Такого нет. Но заметил что многие с 5.6 пока не слезают. Дальше просто пошло обновление двигла всем чем можно, и пока останавливатся не собираются, перекатишься где-нить к 2018.3, правда они собираются монодевелоп выкинуть, а я уже к нему привык
>>469092 Не страдал бы ты хуйнёй, да переходил бы к нам в уеч-тред. У нас это делается парок кликов мышки. Бросаешь на блюпринт блок-условие, в него пишешь "helth <> deltahelth" на выход подключаешь блок-branch, из этого блока два выхода, к первому подключаешь следующие блоки, которые у тебя пойдут, если равно, а ко второму - подключаешь блоки, которые у тебя пойдут, если не равно. Вот так всё просто и никакое гомопидорское программирование не нужно.
>>469127 Можно менять переменную и подписать кого угодно на эти изменения через события. Пикрелейтед, собственно. Меняешь переменную через Property, срабатывает метод в подписанном на это событие классе.
Суть такова, есть окно, у него всплывает тултип на кнопке закрытия окна. Кнопка нажимается, окно закрывается, тултип продолжает висеть на курсоре потому что тултип логически - отдельное окно и обычно тултип закрывается когда курсор сдвигается с кнопки.
Так вот, как мне по правильному уведомить тултип что его окно исчезло и пара бы ему тоже исчезнуть?
>>469204 Т.е. так надо, что ли: (для окна) public event EventHandler Hidden; public virtual void OnHide() { gameObject.SetActive(false); EventHandler handler = Hidden; if (handler != null) handler(this, null); }
Теперь надо подписаться на событие. Так?
В тултипе: void ReactionOnHiddenWindow(); (окно).Hidden+=ReactionOnHiddenWindow();
>>469250 У меня окон много (и не окон) А тул тип один. Тупо добавляешь компонент тултипа куда угодно и оно работает. Ну и суть в том чтобы правильно эвенты делать. А то че я как лох то без эвентов.
Вот, накатал Вопрос: правильно ли вообще, особенно - наименование (соответствует стандартам?) Как защитить event OnHidden чтобы мимокрокодил не сломал его? Как принято? Сеттер зафигачить? abstract public class Hideable : MonoBehaviour, IHideable { // declare delegate (type) public delegate void Hidden(Hideable eventData);
//declare event of type delegate public event Hidden OnHidden;
public virtual void Hide() { gameObject.SetActive(false); if (OnHidden != null) OnHidden(this); } ...
Анон, я засунул адмоб рекламу в игру. В общем суть вопроса в чем - я запускаю баннер внизу, а он отображается не в самом низу, а чуть выше. Как я выяснил - это потому, что у меня на мобиле нет физических кнопок, и они выдвигаются снизу. Реклама сдвинута именно на ту высоту, на которую они выдвигаются. Шо делоть? Неужели вверх передвигать баннер?
Есть последняя 64бит Убунту, установлена на виртуальной машине. Скачал с itch.io пару игр на Юнити, но они не запускаются, вылетают с ошибкой
>>Unable to preload the following plugins: >> ScreenSelector.so
Что с этим можно сделать? А вообще, доставьте своих небольших игр на Юнити, собранных под 64бит Линукс, чисто протестировать: или это опять библиотек не хватает, или это такие игры с itch.io
Got a SIGABRT while executing native code. This usually indicates a fatal error in the mono runtime or one of the native libraries used by your application.
Система почти свежая, только установил библиотеку для запуска 32бит кода.
>>469092 Лучше всего в аксессор запихнуть проверку на негативный value, во-первых, не нужно ивенты писать, во-вторых, работает только тогда, когда меняется значение переменной.
>>469329 >>469331 Тащемта проперти это просто методы установки и чтения параметраи в рантайме в них раскрывается Там что нет никакой завязки на проперти, это просто выглядит более приятно.
>>469338 Когда нужно абстрагировать поставщика информации от получателя. Observer тоже подойдёт в этом случае. Минус ивентов - очень сложный поиск багов.
>>469355 >Когда нужно абстрагировать поставщика информации от получателя. Observer тоже подойдёт в этом случае. Минус ивентов - очень сложный поиск багов. Спасибо
Ты это имеешь в виду? List<PopType> re = new List<Capitalists>();
Ругается
Ошибка CS0029 Не удается неявно преобразовать тип "System.Collections.Generic.List<Nashet.EconomicSimulation.Capitalists>" в "System.Collections.Generic.List<Nashet.EconomicSimulation.PopType>".
Проблема в Clamp. Как только я посмотрю выше горизонта и значение станет чуть ниже 0 то Clamp почему то вернет 45 и я мгновенно смотрю в пол. Т. е. углы [-45, 0] мне почему то недоступны. Что я делаю не так?
>>469367 >>469372 >>469374 Ты блядь тупой или да? Нахуй ты пытаешься его инициализировать листом другого типа? Чего ты добиваешься? Ты хочешь как на украине? Ебаный дебил, читай внимательно. Ты можешь запихать в List<PopType> любую хуйню, которая наследуется от PopType. Понимаешь? Капиталисты, хуестократы, твоя жирная мамаша. Ты просто добавляешь его в лист и оно там лежит, потом при обращении преобразуешь в нужный тип. Какого хуя ты пытаешься сделать я вообще не понимаю. Иди в пизду.
>>469367 >List<PopType> re = new List<Capitalists>() as List<PopType>; Я конечно понимаю, что за такие вопросы убивают нахуй, но почему не сделать List<PopType> re = new List<PopType>()?
>>469396 Можно объявить два класса, и реализовать в них один и тот же интерфейс, или унаследовать их от одного предка: class Mamka : MonoBehaviour, IParent {} class Papka : MonoBehaviour, IParent {}
И хранить их вместе как List<IParent>, делая штуки вроде parent.AskMoney(), не вникая в реализацию конкретного экземпляра, потому что денег дать могут оба.
>>469403 Просто я упростил пример. На самом деле там есть интерфейс IInvestable который реализуют фабрики и проекты фабрик (2 несвязанных между собой типа) И мне нужно получить список IInvestable как сумму списка фабрик и проектов фабрик. Прост я думал анон по принципу ответит а не станет цепляться к конкретному случаю.
Ида as IEnumerable<IInvestable> выдает null exception, как и можно было догадаться. Таки как мне это засунуть в один IEnumerable список? (В List - знаю как)
public IEnumerable<IInvestable> getAllInvestmentsProjects(Predicate<IInvestable> predicate = null) { var res = getAllFactories(x => canUpgradeFactory(x.getType()) && predicate(x)) as IEnumerable<IInvestable>; res.Concat(FactoryType.getAllInventedTypes(getCountry(), x => x.canBuildNewFactory(this) && predicate(x)) as IEnumerable<IInvestable>);
public IEnumerable<IInvestable> getAllInvestmentsProjects() { var res = getAllFactories(x => canUpgradeFactory(x.getType())) as IEnumerable<IInvestable>; res.Concat(FactoryType.getAllInventedTypes(getCountry(), x => x.canBuildNewFactory(this)) as IEnumerable<IInvestable>); return res; }
Чо как вам? https://blogs.unity3d.com/2018/01/18/2018-and-graphics/ Привет новые тормоза, юнька теперь станет ещё медленнее. Алсо уже подтвердили, что новый "облегчённый" мобильный рендер работает медленнее текущего, лол. Да, ещё поддержку сабстанс паинтера скоро вырубят нахуй, ибо нехуй сторонние материалы импортировать, покупай в сторе, сука.
Нужно сделать параллакс в 2д. Что эффективней по производительности: - двигать фоны самому скриптом; - не ебать мозги и использовать камеру с перспективой для фонов?
Анончики, ну вбросьте какой-нибудь свой небольшой проект на Юнити собранный для Linux 64bit. Хоть куб с First Person Control Camera Node. Хочу всё же разобраться почему игоры с itch.io не запускаются.
>>469551 Вручную, конеш. Нельзя просто так взять и прилепить на Землю и спутник риджидбоди, это не будет работать. Физон считается для материальных точек с массой, потом отрисовывается на сцене в масштабе.
>>469384 Правильно ли я понимаю что в transform.localEulerAngles мы можем записывать отрицательные углы, и он даже повернет как надо объект, но если мы обратимся к тому что там фактически хранится - там будет только [0, 360]?
>>469577 Мне нужно понять почему не работает этот код. Я просто сейчас учусь по Unity in Action, и там есть работающий кусок кода, но там вращение по Y работает через приращение дельты как раз, а вращение вдоль X по другому. Я решил сделать вращение по X так же, через дельту, и соснул, пытаюсь понять почему.
>>469583 > Я решил сделать вращение по X так же Так а нафига ты тогда используешь Input.GetAxis ("Mouse Y"), если хочешь крутиться по X. К тому же, при вращении по Х тебе кламп нахер не нужен, ты можешь крутиться на все 360.
>>469585 Сорян, по -> вдоль. Но суть в том что я хотел крутиться вдоль обоих осей (крутиться по вертикали и по горизонтали), и когда я кручусь по вертикали то нужен Clamp. Правильно ли я понимаю что причина вот в этом посте? >>469576
Сап, анончики. Пришла мне в голову идея запилить гибрид exanima и dark messiah: игра в околофентезийном сеттинге, где основной упор будет на мили, которое будет просчитываться по физону, но с предзаписанными анимациями. Например в exanima: там если человечка ебануть по голове молотком, то он просядет, голова наклонится и т.д. Всё прекрасно за исключением слишком хитровыебанного управления, хочу просто нажимать УДАР СВЕРХУ, УДАР СБОКУ, ТКНУТЬ. Так вот, идея мне очень понравилась, я распалился, начал клепать модельки и вот только сейчас призадумался: а как собственно реализовать physics-based бои с заранее записанными анимациями? Навешать IK куда нужно и засрать всю модельку коллайдерами?
Пилил ли кто-нибудь подобное? В какую сторону копать? Какие подводные камни?
>>469584 >>469598 Потому что движок ломается, если подсовывать ему объекты с массами, которые отличаются в тысячу раз и более, да еще и на таких расстояниях, как в Солнечной системе.
>>469628 Я считаю скорости и позиции для материальных точек, потом на основании этой инфы рисую объекты вокруг активного крафта. В режиме карты сильно уменьшаю размеры, примерно в миллиард раз, в зависимости от масштаба, в режиме реального мира ставлю объекты, которые ближе 50 км на реальном расстоянии и с реальными размерами, остальные уменьшаю и располагаю во внешней 100 км сфере.
>>469591 Разобрался, да, я правильно в итоге понял как работает transform.eulerAngles. Если запустить transform.localEulerAngles = new Vector3 (-1, -1, -1); Debug.Log (transform.localEulerAngles.ToString()); transform.localEulerAngles = new Vector3 (361, 361, 361); Debug.Log (transform.localEulerAngles.ToString());
>>469663 > Никто не использует Quaternions напрямую, ибо для простой записи ротации нужно нехуевые операции в уме проделать для расчета Кватерyиона Что, простите? Где ж ты был когда я использовал Quaternion.LookRotation, Quaternion.Angle и Quaternion.Slerp? Оно, оказывается, не используется, ну надо же.
>>469665 > Quaternion.LookRotation Ну и где ты там сука расчитывал вручную Кватернион?
Оба метода принимают Vector3. Сигнатура Quaternion: Quaternion(float x, float y, float z, float w)
Рассчитай-ка мне на коленке тут и сейчас влево-вверх на 38 градусов в Кватернионе быстра? А если в IM-чате спрошу с тайм-лимитом? Не использую готовые инструменты - у тебя полдня уйдет нахуй.
>>469667 > Ну и где ты там сука расчитывал вручную Кватернион? Ты жопой не виляй, разговор был про > Никто не использует Quaternions напрямую Я вот использовал именно кватернионы, да. И нет, не ручками, а средствами движка, именно для этого он и нужен.
Еще раз, выблядок тупой, где ты напрямую расчитывал Кватерионы, покажи мне хоть один пример. Покажи мне свою chalk board где ты imaginary numbers sequences высчитывал?
Тебе русским языком сказано, что все значения углов, будь то Euler или AxisAngle - Unity преобразует в Quaterion internal.
>>469832 Ну вот твою говноподелку пустят и что? В стиме в месяц до 1000 говноиди треша релизится, из них 1-5 ИСКЛЮЧИТЕЛЬНЫХ игр более 50к продаются, остальные даже 5-7 не дотягивают (5-7 для остального говна - это пиздей как хорошо так то)
о. какую хуйню я, кажется, смог! луч из черной точки и синей линии - инпут, красная точка аутпут. и визуализация получения. надо будет точность чуть поправить.
>>468968 >Как же это все страшно... страшно. но зато какое могущество!
>Что с тобой случилось такое? внезапно большие проблемы с пищеварением. теперь буду разъезжать по больничкам и слушать что мне расскажут врачи.
>>468986 разумеется я тебя помню. собственно, что-нибудь интересное смог?
у меня до сих пор никакой здравой идеи нет как заимплементить память для ИИ. какой-то огромный вопрос как её реализовать. притом и короткую для тактических решений и длительную для глобальных решений похоже придется реализовывать по разному.
>>469770 чисто так на всякий случай следует сказать. большое увлечение интерфейсами и анонимными делегатами конечно повышает читабельность кода, но GC тоже работу подкидывает. весь этот мусор в один прекрасный момент может коллапсировать.
>>469834 Кококо, сразу сдулся и передергивает. >Ну вот видишь, смысла делать игры нету
Нет, просто ты тупой идиот, думающий что зарелизив свою пиксельговно в Стиме ты сразу станешь богам, купишь яхту и все будет заебись. Прям как 13 тысяц всех остальных девелоперов, что зарелизи свои игры в стиме, да?
>>469817 Хочешь сказать при ienumerable.concat создается новый, третий IEnumerable? Похоже на то, и это печально.
И все же This method is implemented by using deferred execution. The immediate return value is an object that stores all the information that is required to perform the action. The query represented by this method is not executed until the object is enumerated either by calling its GetEnumerator method directly or by using foreach in Visual C#
>>469837 Прикольно. Мне вчера с реддита народ повалил за сотню.
Ты не пробовал в web GL свою сбилдить и зарелизить?
>>469836 >внезапно большие проблемы с пищеварением У меня тоже, лол.
>>469836 >весь этот мусор в один прекрасный момент может коллапсировать У меня и так там цирк с конями с коллектором. Но работает. Так то это интерфейсы, имплементацию потом можно и поменять если мешать будет.
>>469842 >Что там происходит? Обход препятствий программирует
>>469846 >Обход препятствий программирует А usesace какой? Navmesh в 99% будет быстрее. Впрочем, заметно это будет лишь при 90-100+ объектов или на очень слабой тачке.
>>469848 >Не, не пробовал. Как оно относится с большому количеству потоков? Которые System? Никак не относится. Потоков нет, но вы держитесь. Браузеры в одном потоке на страницу работают, по крайней мере по мнению Юнити.
>>469851 Если снимаешь хату, то считай половины двадцатки уже нету. И при работе 3D-макакой постоянная работа уже рай земной. >>469852 На самом деле надо было сделать кучу текстур, но меня чёрт заставил полезть в эксперименты по нагрузке на новую видяху, хотя в 90% игр пухи с другого ракурса кроме жопы видны лишь в виде убитых лодов
Гейдеваны, ради практики пытаюсь реализовать conway game of life в unity. Рисую обычными квадратиками в 2d, но не знаю как лучше это делать. Пока все что придумал это юзать обычную texture2d на canvas и при изменении стейта пробегать все пиксели в текстуре (setPixel) и устанавливать нужный цвет.
Но как то это выглядит костыльно. Есть ли какие-нибудь более правильные способы? Можно ли в unity рисовать какие-то низкоуровневые примитивы типа прямоугольника, эллипса, линии типа как на canvas в android?
>>469860 >Можно ли в unity рисовать какие-то низкоуровневые примитивы типа прямоугольника, эллипса, линии типа как на canvas в android? Можно, гугли procedural mesh generation Unity
>>469859 Не, там достаточно слабое влияние. Даже на солнечной орбите между Землей и Марсом спутник летает достаточно стабильно, близко к эллиптической орбите.
>>469863 Я и на шейдерах потом заебашу(уже писал на голом ogl) просто хочу пока разобраться с гуями, спрайтами и другой 2d поебенью.
>>469861 В 2d хочу же. Кстати я не так давно гуглил по поводу mesh generation, пишут что проще генерировать в воксельной форме(в каком-нибудь другом пакете), а потом уже переводить в обычные меши. Кто-нибудь вообще в тредика пробовал продедурго что-нибудь генерировать.
Еще заране спрошу у анонов смогу ли я в юнити реализвать передвежение игрока от 1 лица по тору? Не сосну ли я на каком-нибудь этапе потому что тор не convex?
>>469836 а хотя лол стоп. хлебнул кофе, посмотрел ещё раз и задумался. я же случайно сделал все наоборот. вот теперь - правильно. в том видео красная точка в первом пересечении, а надо то в последнем.
>>469842 не-не. лучики это инпут. условно лучик это дельта скорости для того чтобы избежать столкновения. но иногда дельты скорости могут все смотреть в разные стороны, так что допустимой скорости уклонения нет вообще. самым лучшим решением в этом случае пожалуй будет нахождение первой доступной скорости при сдвигании дельты скорости в обратном направлении. а красная точка это результат этой манипуляции. в этом случае движение будет вместе со всеми, а не туда куда надо.
>>469846 >У меня и так там цирк с конями с коллектором. Но работает. Так то это интерфейсы, имплементацию потом можно и поменять если мешать будет. не ну так то конечно да, но я к тому что когда пишешь этот поток сознания то ты хоть периодически думай как можно его заимплементить без генерации мусора. но да, стоит пожелать удачи и мозгов побольше. ты полез туда где я не был, но там похоже очень интересно.
>>469850 как бы я уже написал навмеш. он ищет путь. а вот коллижен авойденс не не писал. сижу пишу. на самом деле очень интересно, надо будет потом попробовать реализовать в 3д. например чтобы симулировать полет дронов.
>>469868 >пишут что проще генерировать в воксельной форме(в каком-нибудь другом пакете), а потом уже переводить в обычные меши. Кто-нибудь вообще в тредика пробовал продедурго что-нибудь генерировать. Если тебе один раз сгенерировать - то да. А если много раз то берешь Перлина и генерируешь
>>469868 >Еще заране спрошу у анонов смогу ли я в юнити реализвать передвежение игрока от 1 лица по тору? Не сосну ли я на каком-нибудь этапе потому что тор не convex? Просто камеру крутишь и все. Не важно куда тор изогнут, лишь бы полигоны были нужной стороной наружу.
>>469837 Тут кстати прямо напрашиваются интерфейсы в виде элт-мониторов и прочих 80-х, и одиночная игра где какой-нибудь сюжетец про нех, бога, и высшую цель который передают говорящие головы с помехами, и записи об этом получаемые с заброшенных станций и спутников через стыковку и просмотр их архивов, этакий uplink в космосе. Ну и расслабляющий музон. https://www.youtube.com/watch?v=nCovkN38VZI Так как делать второй ksp как-то маловато смысла. Всё, на этом больше не кирилльствую
>>469871 >не ну так то конечно да, но я к тому что когда пишешь этот поток сознания то ты хоть периодически думай как можно его заимплементить без генерации мусора.
А ты вообще уверен что в нынешнем mono генерится мусор сверх нормы? Слышал это миф от старых версий..
>>469875 >Так как делать второй ksp как-то маловато смысла На самом деле есть. Тормоза убрать, мультиплеер встроить, графон завезти. Еще всякого можно накрутить. Вот как space engineers жрали с чавканьем. А это то еще уг.
>>469836 >собственно, что-нибудь интересное смог? Под грузом накопившихся логических костылей при построении плана в ГОАП выкинул его на мороз и запилил свой ХТН планнер. Пока всё устраивает.
>притом и короткую для тактических решений и длительную для глобальных решений похоже придется реализовывать по разному Хуй знает. Вопрос сильно зависит от сложности мира. У меня вся память хранится в одном словаре, но клиенты у памяти самые разнообразные.
>>469875 Ну если отбросить кирильство про сюжет с говорящими головами, на который у меня не хватит ресурсов, то в целом про стилистику элт мониторов ты угадал, в ту сторону я и пилю. >второй ksp Если смотреть в целом, то это именно клон ксп. Но у меня запасен список киллер-фич, из-за которых будет совпадать только жанр: конструирование на уровне "проектируем двигатель, прокладываем проводку", n-body, вид от первого лица без какого-либо интерфейса вообще с возможностью перемещаться внутри станций и нажимать кнопки и все такое прочее. Релиз, естественно, не завтра.
>>469879 >"проектируем двигатель, прокладываем проводку", n-body, вид от первого лица без какого-либо интерфейса вообще с возможностью перемещаться внутри станций и нажимать кнопки и все такое прочее А караваны можно будет грабить? И я надеюсь если тебе космическая пыль в один глаз попадет, то половина экрана будет черной?
>>469667 Vector3 axis = new Vector3(1,1,0); //ось, вокруг которой вертим твою мамашу на хую new Quaternion(Mathf.Cos(38/2), Mathf.Sin(38/2) axis.x, Mathf.Sin(38/2) axis.y, Mathf.Sin(38/2) * axis.z); Че ты несешь там со своими комплексными числами?
Посоветуйте какой-нибудь бесплатный сервис для отслеживания ошибок в игре. Чтобы я мог из игры автоматически отправить отчёт об ошибке и потом посмотреть его на сайте.
Анон, помоги с прозрачностью спрайтов. У меня есть спрайт атлас с черным фоном. и в игре черный фон. Как сделать, чтобы черный фон был цветом прозрачности? Сейчас у меня при наложении спрайтов черный фон одного спрайта перекрывает другой спрайт
Короче хотел устроится программистом игровой логики в одну компанию, поэтому пишу сюда, задали задание Задача 1: Реализовать строковый калькулятор, который: 1. Выполняет операции сложения, вычитания, умножения и деления над целыми и дробными числами. 2. Правильно определяет порядок вычисления при использовании скобок. 3. Проверяет правильность входной строки и в случае ошибки, сообщает об этом. 4. Работает из командной строки. Задача 2: Написать класс MyList<T>, который реализует интерфейс IList<T> Ебался 3-4 дня, все сделал, итог - на данный момент нам нужен более подготовленный специалист. По делу что конкретно не сказали, видать ебаный HR не заморачивается такими вопросами, и мой вопрос решила заигнорить, собственно прошу вас прокомментировать мое творение, не поливайте говном, не претендую на то что я все сделал идеально- просто хочу знать что не так для дальнейшего развития. 1 задание : https://pastebin.com/KbNuEV7T 2 задание : https://pastebin.com/Tg0MrA0a
>>488449 >программистом игровой логики в одну компанию >Реализовать строковый калькулятор, который: Если бы тебя брали в компанию которая делает компиляторы это еще куда ни шло, но задавать такую хуйню в геймдеве это пиздец.
При приеме на веб-макакинг меня без тех-собеседований бросили на проект что бы на практике смог показать что умею, кстаи меня взяли на работу. Я считаю что это самое правильно тестирования для приема на роботу.
>ебаный HR Ейчары самый бесполезный кусок говна во всей индустрии айти.
Добро пожаловать в тред Unity - лучшего 3D и 2D игрового движка современности!
Прошлый тред:
Шапка:
http://www.writeurl.com/publish/zukmrogwv45ptyuseyol
---------------------------
Официальный сайт: 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
yni ユニゲーム:
https://www.youtube.com/watch?v=gnkBKtnYeb8
https://www.youtube.com/watch?v=qKcEi-rs9sw
The Unity Awards 2017 Winners: https://www.youtube.com/watch?v=8--xPOlY7kU
Made With Unity 2D Games Showreel 2017:
https://www.youtube.com/watch?v=NMUr2yNALhU
Unite Austin 2017 - Writing High-Performance C# Scripts:
https://www.youtube.com/watch?v=tGmnZdY5Y-E&t=1686s
--------------------------------------------------------------
На Unity сделано много замечательных игр - Rust, Блицкриг 3, Pillars of Eternity, Tyranny, Kerbal Space Program, Hearhstone, Niva, yni ユニゲーム и многие другие, кроме этого, на Unity сейчас активно разрабатываются множество образовательных проектов, а также и проектов в дополненной реальности, использующих математическое моелирование.
Главным преимуществом Unity перед другими движками является его простота для одиночной разработки. Не нужно иметь целую компанию девелоперов, чтобы сделать хорошую игру. Если ты один или имеешь небольшую команду и хочешь сделать хорошую игру без претензий на ААА, то Unity станет лучшим выбором. Тем не менее, даже крупные корпорации зачастую выбирают для своих игр именно Unity.
FAQ
- Какие у Unity сильные стороны?
- Простота разработки, удобный инструментарий, кроссплатформенность, богатая документация, огромное сообщество.
- Какие у Unity слабые стороны?
- Сложность в создании фотореалистичной графики. Для графики "как в Crysis" рекомендуется взять другой движок. Хотя Unity вполне способен выдавать не уступающую любым другим движкам картинку, это требует определённого навыка от разработчика.
- На каких языках я могу писать скрипты для Unity?
- На выбор два языка - C# и UnityScript. UnityScript - это что-то среднее между JavaScript и ActionScript. Выбирай язык по своему вкусу, они оба вполне удобны, но помни, что большинство примеров написано на C#.
- Для каких жанров подходит Unity?
- Для абсолютно любых! Жанр ограничивается лишь фантазией разработчика (и его умением писать скрипты, разумеется). Можно создавать и РПГ, и стратегии, и слэшеры. Можно делать VR-проекты или Minecraft/yni-подобные песочницы.
- На каких платформах работают созданные с помощью 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 - это начать делать игру и по мере разработки гуглить непонятные моменты.