Это копия, сохраненная 16 ноября 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Прошлый тред: >>456736 (OP)
Шапка:
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 - это начать делать игру и по мере разработки гуглить непонятные моменты.
720x406, 0:39
Cоздаю анимацию, кликаю чтоб она открылась в animation, жму запись, щелкаю на полосу времени, выбираю ногу у перса и двигаю чуть чуть, типо начальное положение, потом снова на полосу времени, двигаю ногу. При нажатии на плей анимации нету, хотя со всей моделькой целиком это работает. Как челика анимировать? Ключи удалять и заного ставить пытался, с кривыми тоже.
Создаёшь аниматор, вешаешь его на модель, потом создаёшь анимацию, пихаешь её в аниматор, создаёшь условия.
Да, только навмеш придётся переносить из плоскости XZ в плоскость XY.
Но можешь обойтись и без этого. Если есть координата, в которую должен переместиться объект, то пидорь объект в эту сторону (сначала поворачивай, потом transform.Translate), как дошёл до точки — смещай цель из массива.
>>61044
Blend Trees
Функция которая бы отслеживала достижение каждой новой точки и по оному лерпила новую корутину до следующей точки?
Не обязательно корутину. У меня так мобы бегают через обычный трансформ.транслейт
Может это не сильно правильно, но вроде работает.
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;
yield return null;
}
}
тушка вся может анимироваться а ноги нет((( на пике видно, что я делаю не так?
ТУПОЙ ЮНИТИ БЛ, СКАЧАЛ ДРУГОГО ПЕРСА И ОН НЕ ХОЧЕТ АНИМИРОВАТЬ, ГОВНО ПО ТТОРИАЛУ ДЕЛАЮ А ОНО НЕ РАБОТАЕТ
Она кидается byte[] из штатного NetworkTransport.QueueMessageForSending.
Все бы ничего и все заибися, но юневая сеть может принимать не более 64 кб. т.е. буфер у NetworkTransport.Receive не может быть более 65535 байт. Пофиг какой канал ты используешь, хоть по 256 байт свой message порежь, в итоге оно соберется в сообщение, которое придется Recieve, и оно не должно быть больше 65535. Если больше - гроб, гроб, кладбище, пидор. А если вкратце - то, куда приходит жЫрный пакет намертво виснет (найс секурити).
Но как же быть с сравнительно большими данными (содержимое инвентаря, диалог с пиздожорчиком и прочее)? "Резать" byte[] на куски? Но как потом пересобирать при получении? Есть ли решения?
Гдэч помогач?
Мне больше интересно где продаются пакетики с псилоцибами.
С чего ты взял что это сахар?
Хоть бы поменял шапку. Unity Script-то всё.
во первых нахуя, во вторых зачем? ты там пытаешься войну и мир переслать одним пакетом?
Одним файлом.
>Скан войны и мира
>64 кб
Ну не надо, ну не стукай.
Инвентарь с инфой о 20-30 шмотках одним пакетом если (ибо если уже двумя, то хз как их на том конце собирать) и все, приехали.
Страшно представить что там за инфа если она не влезает в 64КБ.
> Инвентарь с инфой о 20-30 шмотках
> 64 кб
Што? У тебя инфа об одной шмотке занимает 2-3 кб?
У меня все разновидности шмоток (42 штуки) суммарно чуть больше полкилобайта занимают. Просто передаёшь их name, по которому они из Resources подтягиваются.
Это ж не сахар, а d6.
>Просто передаёшь их name, по которому они из Resources подтягиваются.
Неоткуда брать инфу по Name. Сервер читает данные из БД, отсылает клиенту. Клиент, не имея доступа к БД, применяет все присланные данные.
Проблема в том, что я выполняю Recieve, получаю заголовок, по которому понимаю что куда применять, и массив, который десериализую в свой тип данных (к примеру, Inventary). Если я буду присылать по одной шмотке, как я пойму когда начался "новый" инвентарь, а когда еще заполняется старый?
>"Резать" byte[] на куски? Но как потом пересобирать при получении? Есть ли решения?
>fragmented
NIET. Это немного не так работает.
От меня улетает сообщение в 10240 б. Максимальный размер пакета у меня, к примеру, 1024 б. Таким образом, сообщение режется на 10 кусков, кидается в получателя. На том конце оно получается, собирается обратно в цельное сообщение, ставится в очередь. Из очереди я его делаю Recieve. Буфер выделяемый на это сообщение не может быть больше 64 кб. Ты можешь свое сообщение хоть на тысячу кусков порезать, но на том конце его соберут и положат в очередь.
>>61144
ну значит никак. Я не экстрасенс, чтобы угадывать что юнитидауны там нагородили, а документации нихуя нету.
В этом случае проще всего использовать reliable sequenced или как оно там называется и интерпретировать как поток данных. в этом смысле это будет то же самое, что и TCP т.е. самому нужно форматировать данные.
Ты бы нервничал поменьше, братишка. Если хочешь заниматься разработкой, такие ситуации будут возникать постоянно, одна за другой годами.
Почему бы не вбросить своё говно в юнити-тред, подумал я. И вот оно здесь.
Ты молодец :3
> Vector3 bounds = new Vector3((Mathf.Clamp(rb.position.x, boundary.xMin, boundary.xMax)), 0.0f, (Mathf.Clamp(rb.position.z, boundary.zMin, boundary.zMax)));
> rb.position = bounds;
В предыдущем треде было. Вроде работало.
Но камера находится в движении, кораблик просто залочится на месте.
И это из туториал все того же.
Например, я хочу создать область, которую избегала бы часть агентов, но игнорировали остальные.
//move camera
boundary.xMax = camera.transform.position.x + screenwidth/2;
boundary.xMin = camera.transform.position.x - screenwidth/2;
boundary.yMax = camera.transform.position.y + screenheight/2;
boundary.yMin = camera.transform.position.y - screenheight/2;
Vector3 bounds = new Vector3((Mathf.Clamp(rb.position.x, boundary.xMin, boundary.xMax)), 0.0f, (Mathf.Clamp(rb.position.z, boundary.zMin, boundary.zMax)));
rb.position = bounds;
Впрочем напрямую менять позицию ригидбоди не стоит.
Всё, нашёл.
В NavMeshModifier есть фильтр агентов.
К сожалению придётся создавать по отдельному типу агентов для каждой комбинации проходимостейкишечника
Не тика, а сообщения. Сообщение это то что мы в итоге получаем. При передаче, сообщение режется на пакеты и кидается в сторону получателя.
Меня смутило, что я, к примеру, данные инвентаря (List<Item>) отсылаю в одном сообщении, которое режется на пакеты по 1024. На том конце сообщение собирается и делается Recieve, с использованием буфера. Этот буфер не может быть больше 64 кб. А у меня только инвентарь уже 14000 байт. Если полученное сообщеие больше буфера Юнити умирает. А если инвентарь больше?
Я уже хз как обьяснить подробнее.
>>61149
Ты не в ту сторону воюешь. Читай выше. Данные и пакеты эт разные вещи. Юнитидауны сделали все правильно, и sequenced работает на уровне пакетов правильно. Я хоть мегабайтом могу в получателя кинутся, sequenced канал его честно порежет на кусочки и доставит. А вот после его сборки Юнитя сдохнет в конвульсиях.
>инвентарь уже 14000 байт
Как именно у тебя описывается отдельный итем из инвентаря?
В случае отсутствия рандома, как в дьябле, достаточно передавать два значения - id предмета и количество, а остальное дергать из базы данных на стороне клиента.
Собственно, как обычный класс из кучи переменных, описывающих параметры. Я его сериализую и вперед! Не важно, насколько компактен отдельный элемент инвентаря, важно что он List. т.е. различных элементов может быть впечатляюще дохуя.
А кроме инвентаря есть еще цепочки диалогов и прочая крупная хрень.
>остальное дергать из базы данных на стороне клиента
Клиенту нельзя в базу. Вообще. Анально огорожен, ибо можно инициировать перебор айдишников и таким образом получить слишком много инфы. Таким образом, мой сервер, это эдакий SQL Proxy.
>>61236
А вот тут поподробнее?
statemachine для character states как вариант?
if (character.state != CharacterState.Attacking) {}
bool isControllable;
Update()
{
if (isControllable)
{
SpinYoba();
}
}
Там уже либо через ивент, либо напрямую переключаешь isControllable.
Даже в официальных мануалах было. Лочишь инпут в начале анимации, анлочишь в конце. МОжно использовать анимационные ивенты.
В цифрах.
Зачатки Job System если ты планируешь свой говноклон Total War
Еще можно C# 4+ подключить, для дельных свистоперделок
Я недавно постил в том же стиле.
Да откуда вы суки лезете-то? Это классика, это знать надо блядь!
Допустим, у тебя в игре есть всего 8 предметов. Следовательно, наличие того или иного предмета можно уложить в 1 байт, т.е. индекс бита в байте означает номер предметаю Если бит равен 0 -- предмета нет, если бит равен 1 -- предмет есть.
Ему же 13 лет, что ты хотел?
Даже в голову не приходило, т.к. не понимаю как это можно будет тут использовать (сервер БД, реляционные бд, куча разных "шмоток", динамическое изменение параметров на взятые из БД - хз как это уживается с тем что ты предлагаешь). Ну еще можно на флешке человеку список с данными приносить. Если флешек будет вагон, мы достигнем, как ни странно, рекордной скорости передачи данных.
Ты очень плох в английском. Не нужно знать шарпы, чтобы понять что это переводится как "ширина экрана".
Из юнитевого класса Screen. Это и нагуглить можно было.
Во-первых, это не я предлагал.
Во-вторых, твоя схема говно ебаное.
Иди почитай как в играх сетёвку делают.
Скачал большой фреймворк (считай стартер пак) из которого леплю игрулю. В этом паке есть Animator, со всей написанной логикой, к которому обращаются скрипты там, меняют стейты и пр. Я хочу заменить анимации в нем на свои, но при драг н дропе в поле Motion просто остается None, при этом если туда перетащить любую другую анимацию из этого пака, то поле спокойненько себе меняется. (если что, в паке все анимации сделаны под риги антропоморфные, а у меня собака с legacy ригом)
В чем может быть причина и как мне таки сменить эти чертовы анимации?
И еще такой вопрос есть, вот я хочу сменить .fbx персонажа, который содержится в стертер паке, мне казалось, что порядок действий должен быть такой:
1. Пихаешь персонажа на сцену
2. Вешаешь на него Animator
3. Переопределяешь все анимации в аниматоре
4. Драг'н'дропаешь объект во все скрипты, где он был в паке, ну, тобишь кидаешь ссылки на все нужные элементы во все необходимые скипты
Я где-то проебался? Просто вроде я пропустил 3й шаг и все работает норм за исключением того, что анимации не проигрываются, в игре просто "деревянная" моделька собаки.
И читал и смотрел и даже спрашивал (выслушивая ответы).
Что, по твоему, не так? Я открыт для дискуссии.
п.с. говно ебаное? Серьезно? как ты себе это представляешь?
>Скачал большой фреймворк (считай стартер пак) из которого леплю игрулю.
>в паке все анимации сделаны под риги антропоморфные, а у меня собака с legacy ригом
>анимации не проигрываются, в игре просто "деревянная" моделька собаки.
Решение очевидно. Скачай пак с готовой собакой. Именно так пишутся игры под юньку.
Делаю мобильную игру по классической схеме с выбором уровней, которые различаются лишь декорациями/набором противников/доступным оружием (примерно как Angry Birds).
Разумеется нелогично было бы на каждый уровень делать отдельную сцену.
Как лучше организовать сам проект? Я так понимаю, что у меня будет 3 основных сцены: стартовый экран, экран с выбором уровня и сам уровень.
Соответственно, в сцену с уровнем мне нужно будет подгружать параметры: доступное оружие, фоновый спрайт, время и место появления врагов. Как это правильно сделать? Можно ли хранить набор параметров в отдельном массиве в контроллере (или в файле конфига) и при клике передавать в загружаемую сцену? Есть в Юнити какие-то нативные возможности?
В углу компонента знак шестеренки - reset. Зачение измененное в инспекторе имеет приоритет над значением в скрипте.
Ты сейчас говоришь, что тебе нужен функционал отдельной сцены, но новые сцены использовать нельзя, нет.
Я тебя не понял. Я не зря привел в пример Злых птиц. Ты предполагаешь, что там каждый уровень - отдельная сцена?
https://gamedev.stackexchange.com/questions/117668/unity-scene-performance-better-to-use-one-scene-and-toggle-what-is-active
Если ты будешь делать все на одной сцене, у тебя телефон охуеет от количества говна, которое тебе надо хранить в ОЗУ. Я не понимаю, почему сцены — это плохо, а вот ебашить велосипед руками — это в самый раз. Что поменяется-то? Сцены загружаются на раз-два, если пулить объекты и еще как-нибудь изъебываться.
>>61356
Ну в общем-то все понятно. Я совершил ошибку признаю. Прежде чем спрашивать на дваче, нужно было покурить официальный туториал:
https://unity3d.com/ru/learn/tutorials/s/2d-roguelike-tutorial
>Writing the Board Manager
>Writing the Game Manager
Где показана ровно та схема, которую я описал в первом посте. >>61348
>Это член секты "Свидетели Оптимизации"
>вот сейчас я кеширую трансформ, чтобы каждый раз не вызывать GetComponent()
>и сразу после этого делают 100 рейкастов
>в апдейте
Да, 3 аттосекунды компенсируют то, что рейкасты делаются раз в кадр, а не пять раз в секунду.
Какая разница, процедурно уровень генерится или нет? Можно тайлы и ручками задать, если хочется. Там вообще не про это в этих двух уроках, процедурная генерация там в предыдущих описана. А здесь именно подгрузка уровней и передача в них данных.
>>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 знаешь?
Если бы его делали на юнити, то там каждая комната была бы отдельной сценой или же одной и той же сценой, в которую бы передавались данные о том, где и что лежит и состояние героя на текущий момент?
Второе 100%. По-крайней мере я бы так делал. Хранил бы все в хмл или джейсоне или на-крайняк просто в Resources и манагерами подгружал бы в сцену (или AssetBundles). Насколько я знаю, ты вообще не можешь грузить сцены, которые ты не добавил в Build Settings при билде.
Вот не знаешь, не пизди.
>>61341
Так собака и была скачанная, в том то и дело, лол. Я, возможно, чего-то важного об анимациях не знаю, но проблему решил следующим образом: через Ctrl-D достал анимации из .fbx, открыл их в эдиторе, копировал кеи из эдитора, создавал новые анимации и вставлял туда кеи. И новые анимации заработали как надо, начали вставляться в любые Аниматоры и т.д. Сначала думал, что проблема в аниматоре, но нихуя, проблема именно в самих анимациях. Я не знаю, почему извлеченные анимации не хотели себя нормлаьно вести, но в итоге все оке.
Попробуй сначала загрузить что-нибудь из Resources. Так и гуглишь, Unity Resources и желательно имеено документацию, а не выидосики. Там ряд ограничений для мобилок с ними связанный, так что если прямо по хардкору решишь, то гугли xml in unity, если пишешь скрипты на б-гмерзком джаваскрипте, то гугли json in unity
Общий принцип хранения данных на диске поймешь, а потом и без туторов поймешь, как делать то, что ты хочешь.
Спасибо за советы. Я обычно сначала всего оф. доки читаю, видосики только если нетривиальное что-то нужно сделать, но что 100% уже кто-то делал до меня.
XML мне ближе, я много раз их парсил/генерил по работе.
С Resources пока еще не знаком - делал саму механику игры, а теперь вот созрел все это дело собрать во что-то похожее на предбилдную версию.
Тебя уже ткнули ебальником, что у тебя не так, а ты всё равно упираешься, что у тебя база анально огорожена и лежит на сервере.
Страдай дальше, в общем.
>XML мне ближе, я много раз их парсил/генерил по работе.
Обоссать бы тебя, только жаль силы писюна на тебя тратить.
>>61397
Один этаж — одна сцена. Скрипт генерит комнаты, смотрит, какие спрайты и противников использовать. Спустился на этаж ниже — перезапустил сцену с новыми данными.
Но Исаак на процедурной генерации, потому что там можно сделать нормальную процедурную генерацию. Минимальное требование для игры: возможность дойти до босса.
Если ты делаешь типа Исаака, то да, ты на верном пути. Но если у тебя есть конкретный набор карт/заданий, то тут просто нет смысла велосипедить. Сделай пачку сцен да гоняй менеджер из сцены в сцену.
Желательно найти решение уже в готовом так как слишком много уже сделал на его базе.
Открой исходный скрипт и поковыряйся там, если хочешь. Без знания как он устроен нормальный костыль вряд ли напишешь.
Но вообще ковыряй в сторону бросания рейкаст сферы вниз.
Трение у материала поменяй.
Что тебе не понравилось, петушок?
Прочел Дайв инту Питон и шишка встала?
Приходилось работать с ФИАС/КЛАДР когда-нибудь, с 10Гб иксмл файлами? Если нет, то ебало завали и не отсвечивай.
Если ресурсы external - то только Resource.Load
Если внутренние - то ассет-бундл аналог resource.load
>10гб xml
Ебать ты фуфел. Столько информации вникуда выкинул. Почитай про протобуферы хотя бы, а потом ебальник разевай, манька.
>>61345
У тебя материалы тормозят из-за того, что юнька прежде чем рендерить что-либо, грузит текстуру в гпу, "останавливая" цпу. мало кто это понимает из-за чего все кукарекают, что юнити тупая и плохо зделона
В конце концов, попробуй LoadAsync.
Ты просто дебил, похоже и не умеешь читать. Не я придумал эту хуйню хранить в XML, а наши госструктуры. Но тебе-то, понятно, лучше самоутвердиться тут, чем погуглить что такое "Федеральная информационная адресная система" и в каком виде она доступна.
Манька как раз ты, диванный теоретик, с нулевым опытом внедрения чего-либо.
И эти твои понты
>мало кто это понимает
говорят о том же самом.
Нет, ничего не перепутал.
Ну а если же ресурсы совсем external-external? например, через сеть подаются или с папки юзера - тут только через WWW.file читать, затем в рунтайме обрабатывать сырой файл (sic) и преобразовывать ресурс.
Угомонись, молодой.
Тебя направить пытаются тут, а ты пальцы гнуть начинаешь. В очко их себе загни лучше и подумай почему текстовая информация для пидорасов, а бинарная для батек.
>>61434
Еще раз. У тебя Resources.Load для external. Расскажи, пожалуйста, как у тебя п знаменитая папка в проектеи Resources оказалась в external?
>Угомонись, молодой.
Пионэр, ты б потише, а? Я понимаю, что ты у тебя передоз хабра и ты все на свете теперь знаешь. Вот как заработаешь первый лям своим говнокодом, тогда поговорим, ок? А то от тебя ни одного ответа по существу, одно кукареканье и агрессия на упоминание распространенного формата данных.
>>61479
Ты лучше видео своих поделий в юнити выложи, с удовольствием посмотрел бы и попроигрывал.
>>61490
Нет, мы писали, точнее уже написали аналог вот сервиса: dadata.ru для одной риелторской конторы.
Игори тут не при чем, я имел неосторожность упомянуть XML, на который почему-то агрится местный клоун.
>У тебя материалы тормозят из-за того, что юнька прежде чем рендерить что-либо, грузит текстуру в гпу, "останавливая" цпу. мало кто это понимает из-за чего все кукарекают, что юнити тупая и плохо зделона
О, интересно. И как заставить юньку не останавливать ЦПУ? Я так понимаю что цпу стоит не только во время отправки текстуры, но и во время просчета новой текстуры в шейдоре. Потоки (системные) вроде как не хотят работать с Юнити АПИ.
Помаленечку. Иногда на день-два на багах застреваю. Переделал немного логику слоев в симуляции. Теперь это не просто гора текстур а класс инкапсулирующий свойства слоя (кроме земли, правда). В ГУИ почти всю информацию и контроль вывел.
Лаву вот добавил. Но она выглядит как говно и не имеет температуры пока. Надо ей светимость, что ли добавить и зависимость цвета от температуры. В идеале еще добавить какое нибудь плавающее говно в лаву для эстетики, но лениво и память есть будет. И так в webGL чета не работает.
Это хорошая серия книг? И где их можно скачать? На рутрекере нет
Pajeet, my son...
Win32Exception: ApplicationName='C:/AndroidSDK\platform-tools\aapt.exe', CommandLine='package --auto-add-overlay -v -f -m -J "gen" -M "AndroidManifest.xml" -S "res" -I "C:/AndroidSDK\platforms\android-25\android.jar" -F bin/resources.ap_', CurrentDirectory='Temp/StagingArea'
System.Diagnostics.Process.Start_noshell (System.Diagnostics.ProcessStartInfo startInfo, System.Diagnostics.Process process)
System.Diagnostics.Process.Start_common (System.Diagnostics.ProcessStartInfo startInfo, System.Diagnostics.Process process)
System.Diagnostics.Process.Start ()
(wrapper remoting-invoke-with-check) System.Diagnostics.Process:Start ()
UnityEditor.Utils.Program.Start (System.EventHandler exitCallback) (at C:/buildslave/unity/build/Editor/Mono/Utils/Program.cs:44)
UnityEditor.Utils.Program.Start () (at C:/buildslave/unity/build/Editor/Mono/Utils/Program.cs:28)
UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
UnityEditor.Android.PostProcessor.Tasks.TasksCommon.Exec (System.String command, System.String args, System.String workingdir, System.String errorMsg)
UnityEditor.Android.PostProcessor.Tasks.BuildResources.CompileResources (UnityEditor.Android.PostProcessor.PostProcessorContext context)
UnityEditor.Android.PostProcessor.Tasks.BuildResources.Execute (UnityEditor.Android.PostProcessor.PostProcessorContext context)
UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context)
UnityEditor.Android.PostProcessAndroidPlayer.PostProcess (BuildTarget target, System.String stagingAreaData, System.String stagingArea, System.String playerPackage, System.String installPath, System.String companyName, System.String productName, BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry, UnityEditor.BuildReporting.BuildReport report)
UnityEditor.Android.AndroidBuildPostprocessor.PostProcess (BuildPostProcessArgs args)
UnityEditor.PostprocessBuildPlayer.Postprocess (BuildTargetGroup targetGroup, BuildTarget target, System.String installPath, System.String companyName, System.String productName, Int32 width, Int32 height, BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry, UnityEditor.BuildReporting.BuildReport report) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/PostprocessBuildPlayer.cs:271)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)
Build completed with a result of 'Failed'
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)
UnityEditor.BuildPlayerWindow+BuildMethodException: 3 errors
at UnityEditor.BuildPlayerWindow+DefaultBuildMethods.BuildPlayer (BuildPlayerOptions options) [0x00207] in C:\buildslave\unity\build\Editor\Mono\BuildPlayerWindowBuildMethods.cs:172
at UnityEditor.BuildPlayerWindow.CallBuildMethods (Boolean askForBuildLocation, BuildOptions defaultBuildOptions) [0x00050] in C:\buildslave\unity\build\Editor\Mono\BuildPlayerWindowBuildMethods.cs:83
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)
Win32Exception: ApplicationName='C:/AndroidSDK\platform-tools\aapt.exe', CommandLine='package --auto-add-overlay -v -f -m -J "gen" -M "AndroidManifest.xml" -S "res" -I "C:/AndroidSDK\platforms\android-25\android.jar" -F bin/resources.ap_', CurrentDirectory='Temp/StagingArea'
System.Diagnostics.Process.Start_noshell (System.Diagnostics.ProcessStartInfo startInfo, System.Diagnostics.Process process)
System.Diagnostics.Process.Start_common (System.Diagnostics.ProcessStartInfo startInfo, System.Diagnostics.Process process)
System.Diagnostics.Process.Start ()
(wrapper remoting-invoke-with-check) System.Diagnostics.Process:Start ()
UnityEditor.Utils.Program.Start (System.EventHandler exitCallback) (at C:/buildslave/unity/build/Editor/Mono/Utils/Program.cs:44)
UnityEditor.Utils.Program.Start () (at C:/buildslave/unity/build/Editor/Mono/Utils/Program.cs:28)
UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
UnityEditor.Android.PostProcessor.Tasks.TasksCommon.Exec (System.String command, System.String args, System.String workingdir, System.String errorMsg)
UnityEditor.Android.PostProcessor.Tasks.BuildResources.CompileResources (UnityEditor.Android.PostProcessor.PostProcessorContext context)
UnityEditor.Android.PostProcessor.Tasks.BuildResources.Execute (UnityEditor.Android.PostProcessor.PostProcessorContext context)
UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context)
UnityEditor.Android.PostProcessAndroidPlayer.PostProcess (BuildTarget target, System.String stagingAreaData, System.String stagingArea, System.String playerPackage, System.String installPath, System.String companyName, System.String productName, BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry, UnityEditor.BuildReporting.BuildReport report)
UnityEditor.Android.AndroidBuildPostprocessor.PostProcess (BuildPostProcessArgs args)
UnityEditor.PostprocessBuildPlayer.Postprocess (BuildTargetGroup targetGroup, BuildTarget target, System.String installPath, System.String companyName, System.String productName, Int32 width, Int32 height, BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry, UnityEditor.BuildReporting.BuildReport report) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/PostprocessBuildPlayer.cs:271)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)
Build completed with a result of 'Failed'
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)
UnityEditor.BuildPlayerWindow+BuildMethodException: 3 errors
at UnityEditor.BuildPlayerWindow+DefaultBuildMethods.BuildPlayer (BuildPlayerOptions options) [0x00207] in C:\buildslave\unity\build\Editor\Mono\BuildPlayerWindowBuildMethods.cs:172
at UnityEditor.BuildPlayerWindow.CallBuildMethods (Boolean askForBuildLocation, BuildOptions defaultBuildOptions) [0x00050] in C:\buildslave\unity\build\Editor\Mono\BuildPlayerWindowBuildMethods.cs:83
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)
Делаю тестовое задание. Надо было сохранять карту из редактора в файл, и при старте игры восстанавливать сцену из файла. Все работало.
Сегодня загружаю, пытаюсь запустить и при вызове scene.GetRootGameObjects() ловлю The scene is invalid.
Шта бля? В доках только то, что, мол, сцена не загружена или не существует. Проверяю, и сцена есть, и загружена, но все равно Invalid.
Ебанный в рот, как так-то?
Перемести папку с Android SDK в Program Files
Теперь немного изменилась ошибка:
Win32Exception: ApplicationName='C:/Program Files/AndroidSDK\platform-tools\aapt.exe', CommandLine='package --auto-add-overlay -v -f -m -J "gen" -M "AndroidManifest.xml" -S "res" -I "C:/Program Files/AndroidSDK\platforms\android-25\android.jar" -F bin/resources.ap_', CurrentDirectory='Temp/StagingArea'
System.Diagnostics.Process.Start_noshell (System.Diagnostics.ProcessStartInfo startInfo, System.Diagnostics.Process process)
System.Diagnostics.Process.Start_common (System.Diagnostics.ProcessStartInfo startInfo, System.Diagnostics.Process process)
System.Diagnostics.Process.Start ()
(wrapper remoting-invoke-with-check) System.Diagnostics.Process:Start ()
UnityEditor.Utils.Program.Start (System.EventHandler exitCallback) (at C:/buildslave/unity/build/Editor/Mono/Utils/Program.cs:44)
UnityEditor.Utils.Program.Start () (at C:/buildslave/unity/build/Editor/Mono/Utils/Program.cs:28)
UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
UnityEditor.Android.PostProcessor.Tasks.TasksCommon.Exec (System.String command, System.String args, System.String workingdir, System.String errorMsg)
UnityEditor.Android.PostProcessor.Tasks.BuildResources.CompileResources (UnityEditor.Android.PostProcessor.PostProcessorContext context)
UnityEditor.Android.PostProcessor.Tasks.BuildResources.Execute (UnityEditor.Android.PostProcessor.PostProcessorContext context)
UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context)
UnityEditor.Android.PostProcessAndroidPlayer.PostProcess (BuildTarget target, System.String stagingAreaData, System.String stagingArea, System.String playerPackage, System.String installPath, System.String companyName, System.String productName, BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry, UnityEditor.BuildReporting.BuildReport report)
UnityEditor.Android.AndroidBuildPostprocessor.PostProcess (BuildPostProcessArgs args)
UnityEditor.PostprocessBuildPlayer.Postprocess (BuildTargetGroup targetGroup, BuildTarget target, System.String installPath, System.String companyName, System.String productName, Int32 width, Int32 height, BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry, UnityEditor.BuildReporting.BuildReport report) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/PostprocessBuildPlayer.cs:271)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)
Перемести папку с Android SDK в Program Files
Теперь немного изменилась ошибка:
Win32Exception: ApplicationName='C:/Program Files/AndroidSDK\platform-tools\aapt.exe', CommandLine='package --auto-add-overlay -v -f -m -J "gen" -M "AndroidManifest.xml" -S "res" -I "C:/Program Files/AndroidSDK\platforms\android-25\android.jar" -F bin/resources.ap_', CurrentDirectory='Temp/StagingArea'
System.Diagnostics.Process.Start_noshell (System.Diagnostics.ProcessStartInfo startInfo, System.Diagnostics.Process process)
System.Diagnostics.Process.Start_common (System.Diagnostics.ProcessStartInfo startInfo, System.Diagnostics.Process process)
System.Diagnostics.Process.Start ()
(wrapper remoting-invoke-with-check) System.Diagnostics.Process:Start ()
UnityEditor.Utils.Program.Start (System.EventHandler exitCallback) (at C:/buildslave/unity/build/Editor/Mono/Utils/Program.cs:44)
UnityEditor.Utils.Program.Start () (at C:/buildslave/unity/build/Editor/Mono/Utils/Program.cs:28)
UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
UnityEditor.Android.PostProcessor.Tasks.TasksCommon.Exec (System.String command, System.String args, System.String workingdir, System.String errorMsg)
UnityEditor.Android.PostProcessor.Tasks.BuildResources.CompileResources (UnityEditor.Android.PostProcessor.PostProcessorContext context)
UnityEditor.Android.PostProcessor.Tasks.BuildResources.Execute (UnityEditor.Android.PostProcessor.PostProcessorContext context)
UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context)
UnityEditor.Android.PostProcessAndroidPlayer.PostProcess (BuildTarget target, System.String stagingAreaData, System.String stagingArea, System.String playerPackage, System.String installPath, System.String companyName, System.String productName, BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry, UnityEditor.BuildReporting.BuildReport report)
UnityEditor.Android.AndroidBuildPostprocessor.PostProcess (BuildPostProcessArgs args)
UnityEditor.PostprocessBuildPlayer.Postprocess (BuildTargetGroup targetGroup, BuildTarget target, System.String installPath, System.String companyName, System.String productName, Int32 width, Int32 height, BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry, UnityEditor.BuildReporting.BuildReport report) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/PostprocessBuildPlayer.cs:271)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)
Пикрелейтед 1 - Объекты "Зоны смерти", и "Мяча". Соответственно, если происходит коллизия (мяч попадает в зону), то триггерится вход в зону и смена сцены на "Проигрыш".
Пикрелейтед 2 - Скрипты зоны смерти и мяча, как видно вывожу в консоль, если триггернулся евент входа в "зону смерти" и вывожу координату Y мяча.
Пикрелейтед 3,4 - Стартую игру, мяч стоит на месте, координата Y не меняется вообще, через 160 фреймов внезапно срабатывает коллизия с зоной смерти, если опустить зону ниже, то коллизия срабатывает, но уже позже, как будто мяч медленно опускается вниз.
Узнал примерно на каком вызове Update() такое происходит и пошагово выполнял, подумал, что коллайдер падает вниз независимо от спрайта к которому привязан, но нет, на 122 Update() коллайдеры на своих местах, на 123 так же, но срабатывает метод входа в зону, при том, что коллайдеры не пересекаются.
Раз 6 запускал, никаких проблем не было, не тригерился коллижн, отошел сделать чай, возвращаюсь обратно, чтобы еще раз проверить, что все нормально, просто жму запуск игры, проблема вернулась, да что за пиздец.
Увеличь радиус агента.
Нет, не ткнули. Фраза
"У тебя неправильно, а как правильно я не знаю, на опыт релизнувшихся больших кампаний плюю, они тоже не правильно делают, все делают все неправильно один я правильно, но не делаю. Потому что хз как."
не тянет даже на вялое указывание в стороны.
По нажатию на Esc включается панель паузы и включается курсор. Далее, по нажатию на Esc, меню паузы отключается, а курсор остается. Что мне сделать, чтоб убрать этот курсор? Cursor.Visible = false; как видно на пике не помогает, приходится еще раз кликать после отмены меню, чтоб скрыть курсор. Надеюсь, понятно всё написал. Так что, как мне скрыть этот долбаный курсор? Код пикрил
Начнем с того, что если у тебя в игре используется физика Unity - пауза через timescale может привести к багам.
Касательнр курсора - просто в апдейте забей:
Cursor.visible == isPaused;
1. Если не timescale, то что лучше?
2. Курсор всё так же появляется по выходу из меню и/или по нажатию на Esc, хоть я и вбил в апдейт.
Я думаю, что придется там костыль какой нибудь делать, вообще в голову ничего не приходит.
>1. Если не timescale, то что лучше?
Не могу сказать, опыта нет, но вон Cuphead свою паузу изобрели через PausableComponent base class
>2. Курсор всё так же появляется по выходу из меню и/или по нажатию на Esc, хоть я и вбил в апдейт.
Ищи что-то где-то ставит его
Как проще реализовать такое поведение бота?
Я придумал простенький алгоритм: если игрок слева или справа, на машину бота давит AddRelativeForce, толкающая ее в соответствующую сторону. Тогда, если игрок сзади, бот не дает ему проехать вперед. А если спереди - бот врезается в него сзади и подталкивает. Также хорошо работает и во время обгона. Бота начинает кидать в сторону игрока, и это выглядит так, словно он бодает игрока бочиной, сталкивает с дороги и продолжает ехать дальше.
Но в ряде случаев такой алгоритм не работает. Например, если бота развернет на 90 градусов, когда рядом игрок.
Какие-нибудь идеи?
Подожди, тут где то был писатель АИ на ифах, нужно только дождаться.
>пауза через timescale может привести к багам
Хуй знает, у меня вроде норм работает. Ригидбоди пульки летают как летали.
Хотя может я ещё не наткнулся на проблемы.
Как бы я не ебался со скриптом, понял, что всё дело в FPS Controller'e, если его нет, т.е. когда на сцене просто камера, то всё работает замечательно, а вот когда добавляю на сцену ФПС игрока то начинается эта дрисня с мышкой. Хз как фиксить, это нужно лезть в код фпс контроллера или костыль думать какой нибудь.. ааааа пичот. Ну, по крайней мере, понял что дело в самом фпс контроллере, а не в скрипте. Жарко, однако.
> Если не timescale, то что лучше?
Через таймскейл и делай, только сначала открыл бы документацию и увидел вот это
> If you lower timeScale it is recommended to also lower Time.fixedDeltaTime by the same amount.
Я с курсором не баловался, но попробуй в блоке else поменять местами две верхние строчки. Может он игнорирует любое дрочево при таймскейле 0.
>>61945
(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
> 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
Спасибо, а как быть с курсором? Есть ответ?
Действительно. Спасибо.
Ты, манька, не рвись.
Юнитеки всё правильно сделали, просто ты костылепидор, который не понимает того, что игры на юньке -- это data-driven, а вот редактор code-driven.
Но ничего, скоро и редактор переведут на data driven.
Как?
Вот суки падлы мрази твари
ctrl+z?
>>класть сахар до пакетика
>Фу блять нахуй таким быть.
Одобряю твою ярость, анон!
Таким лучше вообще не родиться
Да ты охуел, он 200 рублей стоит, а пить ты его будешь несколько месяцев минимум. Я больше на сахар трачу, чем на чай.
>Да ты охуел, он 200 рублей стоит, а пить ты его будешь несколько месяцев минимум.
Ты там воду что ли пьешь? 3 чаинки на кружку?
Тебе намекнуть, почему чай называется ЧЕРНЫМ?
>Я больше на сахар трачу, чем на чай.
>чай
>с сахаром
немудрено по диабетикам пидорашка первая в мире
Хуй знает, что у тебя там за чай, у меня все ок. Второй раз уже завариваю, потому что я ленивое хуйло.
> немудрено по диабетикам пидорашка первая в мире
> В соответствии с исследованиями Ассоциации по Изучению Болезней Сердца, максимальное потребление сахара в день должно составлять: Для мужчин: 150 калорий в день (37,5 грамм или 9 чайных ложек)
Пока вроде не умираю.
мужик! с чашкой! ловите его!
Гуру.
Без шуток. Ты должен быть богом Garbage Collector'а. В идеале, твой код должен подчищаться раз в тысячелетие и желательно только при подгрузках т.е. когда идет серьезный свопинг ресурсов.
Тогда, возможно, даже на говноюнити будет стабильный FPS в серьезной 3D игре (а-ля Subnautica)
Хуета жи е. У меня по несколько гигабайт в тик чистилось и мне было норм. Лучше бы вы игры делали вместо дрочи движка и мусора.
Вот когда ты свой прототип доделаешь, когда на сцене будет ХУЕВА тыща объектов и все текстурированы, когда повер всего этого спец-эффекты, блум, годрейс, и остальной пост-процессинг - вот тогда ты запустишь Риву, и покажешь не только FPS, но и фреймтайм/лаг между фреймами и если он на протяжении 10 минут активной игры будет в рамках приемлемого лага для данного СТАБИЛЬНОГО FPS (16ms/60FPS) - тогда и будешь роток разевать.
А пока - молока обтирай с губ ссучонок.
>тыща объектов и все текстурированы, когда повер всего этого спец-эффекты, блум, годрейс, и остальной пост-процессинг
>сисярп
>Garbage Collector
Да ты охуел? На заводе вообще лафа, пьешь водку, валяешься в грязи. Да и платят порою больше
Райское место!
using UnityEngine;
public class CameraMove : MonoBehaviour {
public GameObject player;
void Update()
{
transform.position = new Vector3(player.transform.position.x, player.transform.position.y, -10f);
}
}
В юнити есть реализована ньютоновская физика, с инерцией и ускорением или нужно ручками код писать.
Как фиксить? Я думаю, при экспорте какие галочки забыл указать, но вот какие именно отвечают за пивот не понятно, хелп плиз.
бамп вопросу
Но параметры ускорения или маневрирования объекта это уже нужно кодом регулировать?
Кроме гравитации, да. Хотя можешь какой нибудь компонент запилить, если ручками не хочешь.
Ебанутый? Все нормально в скрипте, просто этот имбецил где-то в другом месте обосрался. Вообще уровень большинства пользователей юнити это пытаться в свободное время засунуть куб в круглое отверстие, а потом писать "ваш движок говно, ниумеет ничего искаропки"
Я сделал публичный моно-объект список материалов, ссылка на который устанавливается вручную. но это жи хуйня какая то. Как правильно сделать?
float vapor = tex2D(_VaporField, IN.uv_MainTex).x;
o.Albedo.r = vapor / _MaxVaporForBlackColor;
o.Alpha = 1.0;
o.Normal = fixed3(0,1,0);
https://pastebin.com/JJRA3caF
БЛЕАТЬ
Переименовал текстуру в шейдоре в _MainTex и все заработало. Оно что ли никак не может без этого слова? А если я ее по другому хочу назвать? Плохо сделоли, негодно.
Мать твою трахал, подгружаешь скриптабл обжект через ресурсы на старте в свой маняобъект, а в скриптаблобжекте все материалы хранятся, плюс можно через инспектор редактировать. И вообще иди нахуй.
Как школа?
Вот так materials.evaporate.SetTexture("_MainTex", water.main.READ);
Уже пару раз замечал что при замене _MainTex на другое имя - перестает работать.
Естественно, меняю имя и в шейдере и в сишарпе, лол.
720x480, 0:11
Что делать?
Спрайтшит кидашь на сцену, тебе предлагают сохранить файл анимации. Его потом кидаешь в аниматор. Всегда так делал.
Какого хуя? Как он вообще должен понять что ты там анимируешь?
>var materials = MyAssetBundleManager.LoadMaterials();
Чет это совсем как из пушки по воробьям
>>62674
>SCRIPTABLE OBJECT
Интересно, но так то это тот же mono только без гейм обжект
Я тут подумал - в моем случае материалы всего лишь прокладка между шейдерами и ГПУ. А что если материалы вовсе не хранить, а создавать их в рантайм из шейдеров? Меньше связей - меньше багов. Плюс можно не хранить имена шейдеров, а грузить все что есть в папке Шэйдэрс, потом через рефлекшен вызывать их.
Сменил на 4 samples. И подстроил кейфреймы на таймлайне. Открывает за 4 сек. Но что-то мне кажется, что я неправильно делаю.
Samples - кол-во кадров в секунду? Если я задал 4, значит максимум 4 кадра для 1 секунды могу задать.
Спасибо братишка. Раньше просто кидал в аниматор и заебись все было. А сейчас почему-то выебываться начал.
На файлообменник.
или в гитхаб pages например
Вот из-за таких мыслей как у тебя, юнити превращается в говно.
Тебе дали, блядь, возможность создавать какой угодно шейдер и пропихивать его куда угодно и как угодно, не написав НИ ЕДИНОЙ СТРОЧКИ кода.
В принципе, дело твоё. Хочешь ебаться с кодом, изобретая велосипед -- пожалуйста.
Ты мне лучше скажи, браток, ты при генерации меша используешь стандартный движок террейна юньки или свой велосипед изобрёл?
>Тебе дали, блядь, возможность создавать какой угодно шейдер и пропихивать его куда угодно и как угодно, не написав НИ ЕДИНОЙ СТРОЧКИ кода
Что мне за радость от отсутствия кода? Надо
связанность сокращать, а не код. Ошибки я и без кода могу херачить, линкуя всякую хуйню в инспекторе.
Например, создал шейдер с новым функционалом. Можем работать? Хуйс, иди создай бесполезный материал, в него укажи ссылку на шейдер (текстовую, блиать!!), ссылку на материал тоже где то укажи, на каждом этапе по ошибке соверши.
>>62976
>Ты мне лучше скажи, браток, ты при генерации меша используешь стандартный движок террейна юньки или свой велосипед изобрёл?
Меш у меня вообще плоский, еба. А карта высот хранится в текстурах, генерируется перлин шумом и в реалтайме редактируется\подвергается эрозии.
Запилил, кстати, замкнутый кругооборот воды. Теперь дождь идет не из ниоткуда а из облаков который образовались из испарившейся воды
Это первая версия, только только из под пера. Полигоны то там не нужны, а карта высот будет а то плоско как то выглядит.
>>63003
>Жиденькие облака m8
Что за m8?
Там еще 2 проблемки у меня - как облака движутся ИРЛ?
И как сделать чтобы полигоны облаков были видны с обеих сторон? Не меняя порядок вершин, естественно.
Потом еще ебаться с тепловым балансом от испарения\конденсации\заморозки воды
>Там еще 2 проблемки у меня - как облака движутся ИРЛ?
Чую Гугл охуеет от внезапной смены паттерна твой истории поиска.
Мне кажется, что у тебя синглетон головного мозга, т.к. в твоём случае один шейдер используется у тебя только в одном месте и в одном материале.
А юнька расчитана на то, что ты написал один шейдер и можешь спокойно хуячить тонну разных материалов для всех случаев жизни, а также использовать один и тот же шейдер где только хочешь.
Переиспользование же -- охуенно!
По поводу меша, ты его на ЦПУ выдавливаешь или на ЖПУ?
1. microsoft store
2. itch.io
3. альтернатива itch.io которую сделали недавно, поэтому не ебу как её название
Скринов накидай.
>Ну так я то свой случай реализую, а не какой то абстрактный
Пару сообщений тому назад: >В принципе, дело твоё.
>На ЖПУ, в вертекс шейдере
Моё увожение.
>Моё увожение.
Делов то:
void vert(inout appdata_full v)
{
v.tangent = float4(1,0,0,1);
v.vertex.y += _AtmoHeight x _ScaleY + tex2Dlod(_MainTex, float4(v.texcoord.xy, 0.0, 0.0))x_ScaleCloudsHeight;
}
не, там что то с буквой s было
Даже если забыть о том, что вносить какие то изменения будет не очень удобно, такой вариант очень не очень в случае большого количества разных персонажей, например, в эрпоге или стратегии.
А чо, базовые принципы OOP не применить?
Создаешь абстрактный base class, от него наследуешь кастомные?
Не хочешь писать кучу таких - используй Decorator, не?
наследование. интерфейсы. это зависит от конкретной задачи. любая деталь может поменять код.
>>Не хочешь писать кучу таких - используй Decorator, не?
лол преколист, щас бы декоратором создавать персонажей. вот ты еблан чел
А Б С Т Р А К Ц И И
Сам еблан.
Вместо
abstract EnemyBaseClass {}
abstract EnemyBossBaseClass {}
abstract NPCBaseClass {}
abstract NPCSpecialBaseClass {}
abstract NpcUniqueSnowflakeBaseClass
abstract PlayerCharBaseClass {}
abstract TemporalPlayerCharBaseClass {}
abstract SpecialPlayerCharBaseClass {}
и их наследники.
можно банально захуячить лишь голые базы для Enemy/NPC/Player и затем декорировать под спец-типы. А если ты так просто сделаешь 3 базовых класа и попробуешь наследовать, то в игре со 100500 персонажей, где и боссы еще могут быть подтипные и ни один ни два, а хуева туча в сцене, а потом еще и ростом левела как простые енеми пойдут - ты захлебнешься сучечке тупое
[code lang="C#"]
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, мне похуй
[code lang="C#"]
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, мне похуй
>Создаешь абстрактный base class, от него наследуешь кастомные?
Слабо решает проблему незапланированного расширения. Знай я весь геймдизайн наперёд обошёлся бы и самыми всратыми методами.
>используй Decorator
Да, я с самого начала пытался сделать модульную архитектуру, но не получается собрать всё воедино.
На самом высоком уровне контроллер - это набор отдельных классов операторов для самых малых, неделимых действий: WalkOperator, ShootOperator, например. И если мне понадобится добавить персонажу отдельный функционал, я просто добавлю один из универсальных операторов - DernutAnusOperator, либо напишу новый, реализующий тот же интерфейс - DernutAnusOperatorSpecialForPes:IDernutAnusOperator.
Здесь всё гладко.
Но ниже идут анимации и начинаются проблемы. Аниматор у каждого свой и уникальный. Можно написать прослойку между операторами и аниматором. Но так лишь удобнее, прослойка всё равно должна быть у каждого своя.
У меня конечно спрайтопораша и можно написать свой модульный аниматор, но очень сильно не хочется - и так кода накалякал уже много, а игры всё нет.
>и так кода накалякал уже много, а игры всё нет.
Умерить аппетиты?
либо же, если ГОТЮ очень хочеться - придеться как все девы-одиночки - ДЕСЯТИЛЕТИЯМИ.
это не единственая реализация, их овер дохуя .
Хуй знает, валенки-кун, модульный аниматор звучит как то, что нужно, если нужна модульность.
Отпишись, если сообразишь чо.
В чем проблема сделать
BaseControl > Navelny
BaseControl > Analny
и просто оверайдить move, attack под свои нужды.
Ну проблемы с аниматор из за ебланской модульности. В наследовании такой хуйни нет. Написал один раз getcomponent<hyinimator> и юзай его хоть в move хоть в очке
Майнер - это круто и модно, сейчас все майнят. Так что заходите.
Но если у рыбы, птицы и верблюда вообще разный набор действий? Что если они все три могут двигаться, но при этом птица срёт гуано, генерируя полезный ресурс для игрока, рыба его атакует, а верблюд разговаривает?
Делать один турбобазовый класс для них всех?
>>63369
> getcomponent<hyinimator>
Это же относится и к хуениматору. Что если у аниматоров разных персонажей мало общих черт?
>>63359
Да наверное будут пытаться пилить модульную(хотя бы частично) прослойку для аниматора. Спасибо >>63370 анону, это может помочь.
>Что если они все три могут двигаться, но при этом птица срёт гуано, генерируя полезный ресурс для игрока, рыба его атакует, а верблюд разговаривает?
Proxy pattern?
>Делать один турбобазовый класс для них всех?
Чему бы и не сделать? Заодно и дупликацию кода снизишь.
Угу, трех-мерные. Я наверное сделал самые велосипедные облака в юнити.
Беру два плоских меша, один выдавливаю в одну сторону, другой - в другую и складываю половинки.
Хз, потом может попробую штатными средствами сделать облака
>Беру два плоских меша, один выдавливаю в одну сторону, другой - в другую и складываю половинки.
Велосепедитс
>Чему бы и не сделать?
Потому что при появлении в их компании орангутана, который ест фрукты, супергипертурбобазовый класс придётся менять.
Но ведь есть жи переопределение методов.
Было move(){..} сделал move(){я покакал base.move()}
Метод simulate(), например, или update().
Впрочем, на компонентах, было бы наверное лучше. Компоненты лучше решают проблему множественного наследования (чем интерфейсы)
Я тут подумал и вспомнил про такую штуку как конечный автоматю state machine
Аниматор сам по себе уже конечный автомат. Так почему бы не взять и угореть по StateMachineBehaviour?
Что лучше Amplify Shader Editor или Shader Forge.
Если на персии нет, значит нигде нет. И если тупо через гугл на китайские релизы этой новой версии не выходишь.
Как называется паттерн когда создаешь какой нить обьект вот таким образом
KindOfBulder.Jokes(5).Count(2).Something("Puppy").Headshots(4)
?
Мне это надо для создания условий победы\поражения.
сейчас смог сделать подобие, но хочу знать как оно делается по уму. К тому же мне в конце нужно приписывать .Done() что бы получить только что созданный список, не уверен что это необходимость
Нахрена ты в Update запихал, если есть коллайдеры?
OnColliderEnter2D event отрабатывай.
https://docs.unity3d.com/ru/530/ScriptReference/GameObject.CompareTag.html
https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnCollisionEnter2D.html
>Лучше бы карты нормалей и текстуры к земле прикрутил.
Но нормали там есть.. А текстуры - может сделаю..
Да.
Карты нормалей -- это нормали per-pixel, а нормали, про которые ты говоришь -- это per-vertex.
Чуешь разницу?
Ведь если мне понадобится добавить орангутана, поедающего фрукты, то ему понадобится новый оператор ConsumeOperatorю В то же время наоборот, если я чему то добавляю ConsumeOperatorю, то подразумевается, что у него есть анимация поедания.
Правда придётся придерживаться определённых правил в создании аниматоров, например, имя триггера для инициации анимации стрельбы у всех, кто использует один и тот же ShootOperatorю, должно быть одно, а не MakeShot в одном, Ratata в другом и AndruhaHuyach в третьем.
Прослойку для аниматора всёже сделал, но она служит больше для удобства обращения, контроля и упрощения работы с анимационными эвентами.
>Карты нормалей -- это нормали per-pixel, а нормали, про которые ты говоришь -- это per-vertex.
>Чуешь разницу?
Теперь чую. Нормаль per-pixel это, грубо говоря, текстура с нормалями которая рисуется между вершинами. Там вроде не так много визуальной разницы, можно попробовать, вместе с цветовыми текстурами
Так. С этим разобрался. Но, столкновение обрабатывается, когда объект "working" имеет тэг "kill". А нужно, что бы обрабатывался объект "dest". Он привязан к "working". Это такая поверхность над врагом как бы, что бы типа его можно было убить прыгнув на него, но когда персонаж касается поверхности, ничего не происходит.
Может это я не правильно реализовывающую убийство врага ?
Ты как-то не с той стороны подошел к проблеме, имхо. У тебя враг будет иметь возможность убивать персонажа? Как реализовывать будешь? Еще один коллайдер повесишь, только уже на ноги?
Я диванный, но я бы повесил триггер-коллайдер на игрока, триггер-коллайдер на врага.
В OnColliderEnter2D поставил бы проверку, где находится персонаж относительно врага. Если он сильно выше (то есть не совершает прыжок непосредственно перед врагом, врезаясь коленом ему в нос), то уничтожал бы врага. Если нет - отнимал здоровье у игрока.
Я так понимаю, это как то вот так делается. А как мне все это объединить? Проверить значение тега ребенка?
Боюсь у меня сил не хватит на такое.
coll.gameObject.tranform.Find("name")
Для того что бы убить монстраа прыгнув ему на голову можно без этой платформы обойтися
Хех, у меня получилось то же что и в примере по c#
>>63669
При помощи векторов проверять, верно ли позиционирован прикоснувшийся игрок. Но если ты совсем новичок, тебе нужно в первую очередь научиться гуглить. И это не упрек, а совет, который некорректен лишь в том случае если у тебя есть наставник. Но раз тебя занесло СЮДА, то очевидно единственный твой наставник это анон который может быть кем угодно и доверять которому все равно что елозить попой по асфальту. Так что лучший твой наставник это Google.com как впрочем и для 90% населения земли. Гугли как сделать марио, желательно на английском и проверь не одну ссылку, а несколько.
> если ты совсем новичок, тебе нужно в первую очередь научиться гуглить
> желательно на английском
Вот этот хуй всё верно сказал. Гугл и инглиш — твои лучшие помощники.
>Ставишь галочку Is Trigger.
>А в коде ставишь событие случилось ли столкновения с персонажем или нет.
И сквозь врагов бегать?
>("working/dest") такая запись не работает нужно что то одно ставить working или dest.
мануал читай
Знающий анон, помоги с юнити ui.
Мне нужно, чтобы имейдж перемещался за курсором при попадании курсора в определенные области экрана. Нужно не просто изменение координаты, а плавное перемещение из точки А в Б, причем эти А и Б могут быть произвольными.
Я думал запилить анимацию, но не уверен, что анимация годится, ведь это нужно каждый раз программно создавать новый клип с перемещением из новой точки в новую точку - ебалово какое-то.
> Нужно не просто изменение координаты, а плавное перемещение из точки А в Б, причем эти А и Б могут быть произвольными
yobaImage.transform.position = Vector3.MoveTowards (yobaImage.transform.position, yobaDestinationPosition, speed * Time.deltaTime);
Step 1. Ставишь Google Chrome.
Step 2. Ставишь на Google Chrome расширение Google Translate
Step 3. Выделяешь английский текст
Step 4. Получаешь перевод
Step 5. Через какое то время при желании и множественных повторах 3-4 шагов начнешь запоминать что да как делается в этом забугорном языке. А если будешь пытаться запомнить часто встречающиеся слова при помощи например ассоциаций и образов, так вообще через месяц пендосом станешь и мать родная не узнает.
Помогают, что бы это не было
У него уже гузло необратимо деформировалось, если сейчас вытащит кал будет сыпаться на ходу.
У нас во дворе за такие вопросы убивают нахуй!
Ну, рисуй в RenderTexture и используй Unlit шейдер. Никто и не заменит подмены.
Ты ебанулся на отлично. Не, можно найти аналитическое решение твоей хуйни но это жи пиздец. Может можно наложить текстуру на сферу а потом сплющить ее? Если таки соберешь считать по ебанутым формулам то считай на ЦПУ, там и библиотеку найдешь для интегралов
https://drive.google.com/file/d/1l_WBx4KON33gtsz8IGymR_kNOzZ3V7Q1/view?usp=sharing
Ах да, забыл добавить что игра на ведроид.
Мог бы хотя бы скриншоты сделать. Или видос снять. Рейтанет тебя какой-нибудь распидорас и все.
Ты прав. Вот наделал самых важных моментов.
Дизайн не самый приятный. Поищи коллекции градиентов, есть готовые наборы. Можешь накидать абстрактную иллюстрашку на фон. Мудрить не надо, из примитивов.
Спасибо! С Наступающим!))
Есть object2 с RigidBody и CapsuleCollider
Оба используют полноценный RB (non-kinematic)
Нужно без хаков сделать так, что бы при столкновении, object2 отскакивал от object1, оказывая минимум действия на object1.
Хак - дать object1 массу в 999, к примеру, но это НИПРАВИЛЬНА
Предложения?
Rigidbody.MovePosition
> при столкновении, object2 отскакивал от object1, оказывая минимум действия на object1
https://docs.unity3d.com/Manual/class-PhysicMaterial.html
К сожалению, если я изменю физ. параметры obj1, это повлияет obj2. То есть, мне все же нужно, что бы obj2 как град слегка отскакивал от obj1, но при этом, если obj1 со всей дури вхреначивается в obj2 - последний отскакивал так же, как если бы obj1 был стационарен.
А не проще ли внутренюю отделку в префабы зафигачить и грузить их по мере надобности?
Например, когда игрок открывает ту или иную дверь, тогда грузим префаб на сцену. Как только игрок вышел из комнаты и закрыл за собой дверь -- выгружаем из памяти.
Дык я в общем-то и хочу порезать эту залупу на куски, вопрос только как это поэффективней сделать.
Пиздос, пошел комменты читать у него к видосу, хуй знает где нашел комментарий с такой же проблемой и оказывается он блять забыл указать хуйню из-за которой все по пизде и пошло.
зависит от много чево. можно порезать на кубики, а можно отделять дома вместе с отделкой, и в юнити перестроить
Начал осваивать движок, прошёл курс сишарпа.
Хочу попробовать сделать тайловую карту по которой бегает герой.
Нашёл пачку уроков по таким вещам.
И столкнулся с проблемой.
Вот например один из уроков:
https://youtu.be/70sLhuE1sbc?t=19m4s
Я отмотал на время. когда там начинают писать код.
И там добавляют в меню возможность делать тайлы.
Повторил я этот код и у меня в итоге возникает ошибка в виде пикрелейтед.
И я не понимаю почему - там же явно коду объясняется что такое WaterTile! Почему он не понимает, что это такое?
Опс картинка отклеилась. Вот что у меня за трабла.
Как я вижу два варианта:
- Compound Collider
- MeshCollider для лестницы сделай, по форме и вперед ровнять по габаритам.
гугли
Благодарствую.
>у тебя игрок охуеет от того, что камеру трясет на каждой ступеньке.
Ну так а скрипт амортизации делают на этот случай.
Дебил.
Easy roads 3d гугли, тебе хватит
Мне такой подход не очень нравится. Может есть решение лучше?
Я бы за такие слова тебе пизды дал.
Нашёл туториал
https://www.youtube.com/watch?v=zc8ac_qUXQY
Сделал всё по нему.
У меня кнопка после нажатия становится хайлайтнутой, и оно не пропадает пока я не нажму на другую.
В чём дело?
Может быть в том, что так и должно быть?
>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!
Кто сможет найти хоть одну его игру, которая умудрилась попасть на стим-стор - получит шоколадку.
>я профессиональный девелопер, вот мой список игр: []
Я, конечно, могу все повесить на синглтон GameManager с единой инстанцией и с него/к нему делать запросы когда надо, но ведь пиздец же.
В глаза ебешься, мразь? Спектрум это спектр, дата это дата. Пошел нахуй короче.
разу не использовал синглтон. Я нормален?
>Поцоны, я занимаюсь погроммированием около 20
>Unity beginners thread
Возвращайся в /b/ и учись траллить правильно, тупая лолка
При чем желательно чтобы эти общие классы грузились из гитхаба.. Т.е. вот исправил общие классы - и во всех проектах это изменилось..
Нит. Кто нибудь знает как package.json в github работает? Он, что ли, автоматически подставляет в твой проект содержимое указанных зависимостей?
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 и метод который должен вызваться. Как эти данные указать в коду а не инспекторе?
> Как эти данные указать в коду а не инспекторе?
Получи объект и вызови в нём метод. Ах да, метод должен быть публичным, само собой.
Не, мне нужно что то типа OnPress = ButtonPressEvent(имя объекта, метод объекта);
Только там у конструктора нет параметров. OnPress.AddListener() вроде не подходит или я не понимаю как использовать
Пиши войд, в который передавай две строки. По первой получай объект через GameObject.Find и по второй передавай имя метода.
> через GameObject.Find
GameObject.Find ОЧЕНЬ медленный, поэтому если у тебя этот функционал в hotspot - подумай 999 раз прежде чем хуячить такую тупость.
мимо
public string url;
private UnityEvent OnPress = new UnityEvent();
private void Start()
{
OnPress.AddListener(() => { OpenLinkJSPlugin(url); });
}
public void OnPointerDown(PointerEventData eventData)
{
OnPress.Invoke();
}
Интерфейс он нечто вроде "контракта", если классы используют один интерфейс они гарантированно следуют "контракту".
Потому что ты потом можешь обращаться к экземплярам класса по интерфейсу. Тебе не нужно будет привязываться в коде к конкретным классам, а лишь к интерфейсу, который они будут реализовать.
Можно реализовывать множественное наследование
Можно пихать в один список разные классы без общего предка
>Можно пихать в один список разные классы без общего предка
Вот теперь кажется понял. Спасибо.
1600x900, 0:42
ну я пока вообще не секу как накодить вангу, лучше подскажи что подтюнить в настройках синхронизации, network.transform там и вот это всё, чтобы задержка между instantiate и моим положением не была такой огромной.
Тут есть аноны, которы покупают ПЛЮСОу версию Юнитей? (Которая за 35 бачинских в месяц)
Потому еще месяц аудитеории ля того, что бы хотя бы звук спозиционировать и не было такое говно, как в 99% индищита.
А потом ВНЕЗАПНО так шейдеры и lightmaps - тут вообще пиздец, полжизни можно вложить на понимание этого.
Как вообще через это пройти в разумные сроки? Как вы вкатывалсиь в геймдев?
>
>Потому еще месяц аудитеории ля того, что бы хотя бы звук спозиционировать и не было такое говно, как в 99% индищита.
>
>А потом ВНЕЗАПНО так шейдеры и lightmaps - тут вообще пиздец, полжизни можно вложить на понимание этого.
>
Работаю в тестировании 7 лет, потихоньку то сё)
Утрируешь.
Гарантирую, лоуполи моделинг можно освоить на тытрубе за неделю-две. Еще за две недели научится текстурить по таким же гайдам и почитать про цветувую теорию (если совсем вкуса нет, то брать правила прям оттуда). Профит!
Другое дело если хочешь крузис, и ничего не умеешь (и команды нет) то нихуя не получится, это очевидно.
>Гарантирую, лоуполи моделинг можно освоить на тытрубе за неделю-две. Еще за две недели научится текстурить по таким же гайдам и почитать про цветувую теорию (если совсем вкуса нет, то брать правила прям оттуда). Профит!
Лолка
Ты хочешь за неделю бесплатно без смс стать кодзимой? Руководить своей студией макак, вниманеблядствовать в соц. сетях, фоткать свой хавчить, пороться с голливудскими актерами и хайпить на весь мир? А то что он 30 лет шел к этому, это уже не аргумент?
Или хочешь кнопку сделать пездато и заработать 100 миллионов?
>А то что он 30 лет шел к этому, это уже не аргумент?
Анонас, мне со своим сраком лет 5 максимум осталось, хочу ЗДЕСЬ И СЕЙЧАС
Мешок зелени и все будет.
как это понять? ты на сервере что то спавнишь? шта, я понемаю конечно что есть такая вещь как синхронизация с сервером что бы усложнить четарское бытие, но мне кажеться ты не это делаешь и все напутал. ну или я все напутал.
зачем? у тебя есть команда и готовый план? для одинокого волка без опыта в покупке нет необходимости
Модельки и текстурки это, конечно, круто, но это не игра. Делай прототип.
Если я правильно понял, тебя ткнули в то, что тебе не надо гонять по сети сериализованные объекты, а гонять надо айди объектов в бд. Если у тебя в инвентаре объекты с изменяемыми свойствами, то лучше по сети гонять айди вместе со скриптами, которые будут модифицировать созданный объект с айди, полученным по сети.
У него есть статический метод Instantiate() который должен из префаба создать объект (окно) к которому и привязан скрипт MessagePanel
Вопрос: как мне лучше получить линк на префаб? Только через поиск по имени?
> Только через поиск по имени?
Поиск по имени работает только если объект уже на сцене. А так - только через русоурцес или не еби мозги, пихай скрипт на пустой контроллер и через сериалайзфилд передавай в него префаб.
Чет хуева опять сделали. Я так хотел инкапсулировать поведение в одном классе. Теперь мне надо в каком то левом классе хранить префаб или грузить его с лагами Resource.Load
пичалька..
Можно добавить на сцену го который будет хранить твой префаб. И тогда можно обратится к префабу через этот объект. Получить этот объект можно с помощью синглтона, статичного метода или через поиск, как хочешь.
>Ты когда на велосипеде ездить учился начал с изучения производства карбоновых рам? Потом пошёл каучук на шины добывать?
Теплое с мягким. Геймдев с узким персональным скиллом.
Используй ScirtableObject для хранения различных настроек игры, в том числе ссылки на префабы и другие ресурсы. Создай один специальный ScirtableObject, который будет в папке Resources - это будут главные настройки игры: https://pastebin.com/m2TVpu5R
Через них ты можешь получить доступ к нужным ресурсам. Это может быть класс UISettings.
Эй, онон, ты фикс нашел?
>Пиши код, остальное бери готовое код тоже бери готовый
Типичная чмоня русская. Лишь бы всё своровать.
Поддерживаю этого господина: в первую очередь ищи решение проблемы в гугле, даже если найденное тебя не устроит, оно может дать тебе несколько полезных идей.
Говорю по собственному опыту, потому что меня иногда в угаре увлекает писание велосипедов, после которого просыпаешься спустя три дня с тройной вложенной рекурсией через рефлексию, хотя решается всё в три строчкииногда эти три строчки даже бывают написаны, но изобретать так весело!
Ты в каком ауле живёшь? Есть изначально бесплатные ассеты, алё, нерусня ты наша.
> потому что меня иногда в угаре увлекает писание велосипедов, после которого просыпаешься спустя три дня с тройной вложенной рекурсией через рефлексию, хотя решается всё в три строчки
public Sprite textOne; - типа туда кидаю нужный спрайт.
Instantiate(); -??? А что дальше то, я вообще не понимаю как эта фигня работает.
deep profile кнопочка есть на панели профайлера.
> Instantiate
> я вообще не понимаю как эта фигня работает
Давай я тебе помогу, юный друг.
https://docs.unity3d.com/ScriptReference/Object.Instantiate.html
Смотри как всё просто.
Только что проверил старую версию 5.5.5. Там в настройках есть Directional-Specular. Вот он нормально все карты печет.
>в первую очередь ищи решение проблемы в гугле
Ну вот я решение своей не нашел.
Использую Rigidbody + Capsule collider, двигаю перса через velocity. Нужно сделать кастомную гравитацию и обработку лестниц/slopes/ramps.
Нигде похожего варианта намой не нашел, либо через transform двигают с кастомной коллизией (*ой жесть), либо у них там примитивный Raycast, который чреват теми же проблемами, + своих куча (каститься только луч, а не коллайдер перса, а значит на краю платформы он сломается; множественные лучи ничем не отличаются от CapsuleCast я юзаю).
Короче, вторую неделю решаю траблу.
>>66240
Погляди тут анон, вроде она поясняет разницу между 5.x и 2017.x
Найдешь ответ - отпишись.
_______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________alright
Несомненно технология невидимых стен в геймдеве ещё не использовалась. Не могу вообще представить, чтобы в игре были невидимые стены!
Да хуй с ним со стенами, их модно напажитить, если нужно.
Главная проблема, это наклонные поверхности и лестницы. Если реализовать char controller через активный rigidbody и двигать через velocity то проблема коллизий уходит на второй план, но вот проблема лестниц и склонов актуальна. Запретить нудные стенами можно, но ведь есть те, которые нужно разрешить. Ты не поверишь на какие высоты стандартный RB + capsule может взбираться.
Через Physics material это не решить, уже пробовал, можно лишь трение подтвикать но движение все-равно будет.
Если шо это только для плоскости) сделан для теста, так что работает исключительно номинально
https://pastebin.com/KeVT6Tvm
хуижен, как говорится. Стучусь об коллайдеры в ригидбади, или ты про пол ?
14 лет.
Подготовь анимацию подбора медальки и вызывай её Instantiate'ом.
P.S. В видео нет анимации исчезновения, но показано как запускать разные анимации объекта в зависимости от условий.
>Instantiate
Можно чуть более подробно как это гуглить? Я чуть менее чем нихуя не щарю в С#, ай да я.. Если что, предмет у меня сам по себе исчезает при подборе, но нет именно анимации.
Да, показано, но как сделать это при условии исчезновения я не догнал. На персонаже - да, а на предметах - нет.
Это-то понятно, я не про это. Эта штука ведь отвечает за создание экземпляров и всё такое. А меня именно анимация волнует. Не понимаю как прописать это предмету.
>>66499
1) Дублируешь свой объект медальки.
2) Удаляешь все кроме спрайта (и скрипта если он есть).
3) Создаешь анимацию подбора, вешаешь на объект.
4) Добавляешь скрипт (или в уже существующий) в котором в Start() лежит Destroy(gameObject, 0.8f); Время выставляешь как удобно.
5) Сохраняешь объект c названием medalPickUpAnimation
6) В начале скрипта где обрабатывается подбор медальки создаешь переменную GameObject medalPickUpAnimation.
7) В инспекторе добавляешь в этот слот сделанный объект из п.5
8) В месте в скрипте где обрабатывается подбор медальки вставляешь Instantiate(medalPickUpAnimation, transform.position, transform.rotation);
Вуаля, при подборе ты вызываешь копию медальки, которая проигрывает анимацию со старта. Осталось только синхронизировать длительность анимации и время уничтожения объекта.
Меня скорее всего закидают говном за этот способ вместо нормального аниматора, но я нюфаг, мне можно.
В видео у персонажа три анимации: Idle, Run и Jump.
Как они сделаны понимаешь?
Почему они меняются понимаешь?
Что мешает сделать по аналогии?
> Вызвать её вовремя
И в чём проблема вызывать её вовремя? Вешай на монетку аниматор, пихай в него анимацию, ебошь булевскую переменную, делай переход по этой переменной и в скрипте через setbool присваивай переменной true в нужное время.
Если это костыль, то наверное так лучше не делать.
>>66507
Да, понимаю. Но они сделаны для перса. Не понимаю, как для предмета или моба это сделать. Для перса у меня получилось сделать дополнительные анимации, но предметами засада.
>>66508
>ебошь булевскую переменную
Это как? Я аутист.
>делай переход по этой переменной и в скрипте через setbool присваивай переменной true в нужное время
ЯННП. Блядь, прохо быть тупым.
Никак.
>>Да, понимаю. Но они сделаны для перса. Не понимаю, как для предмета или моба это сделать. Для перса у меня получилось сделать дополнительные анимации, но предметами засада.
И в чем разница между персом и предметом?
> Это как?
Ручками. Никогда окно аниматора не видел?
> ЯННП
Ну тогда открывай базовые туторы с офсайта и чисти их вилкой.
Как я люблю этих хэлоуворлдщиков, которые вместо того, чтобы учить азы, сразу лезут в дебри.
Я, собственно, и для перса не могу прикрутить анимацию смерти :с В общем, я тебя понял. Спасибо.
>>66520
Видел.
Так и сделаю.
Да я даже в хэлоуворлд не могу, я десигнер по образованию, не кодер.
>>66521
Не думаю, лучше основательно разобраться и сделать нормально, чем потом костыль на костыле плодить.
Вообще я вебом и интерфейсами занимаюсь, а игру делаю впервые. Все скрины выше - мои. И это ещё.
Хе, спасибо большое.
>>66529
Уметь делать всё - не всегда хорошо. Уверен, что ты более силён в кодинге и это нормально. Я вот даже хэлоуворлд не могу написать.
Было бы, конечно, совсем чудесно найти кого-нибудь в пару и херачить игоры, разделив кодинг и рисовач на двое. По крайней мере продуктивнее было бы в несколько раз.
Исчезновения.
Ну ебана. Создаешь скрипт для монетки, вешаешь его на саму монету, в OnCollisionEnter там вызываешь GetComponent<Animator>().SetTriger("PickedUp"). И вешаешь на монету аниматор, где переход к анимации исчезновения через тригер. А на самой анимации фигачишь вызов OnAnimationFinished из скрипта монеты, в котором она просто дестоится. Ну еще можно в OnCollisionEnter коллайдер отключать, чтобы нельзя было собрать монету два раза, пока анимация идет.
>>66526
>>66531
Блять, отличный граф. скилл.
Ты Tilemap юзаешь в Unity 2017 для левел-дизигна?
Я бы тимнулся с тобой код писать, но я медленный в этом плане (в плане кода, однако такие проблемы как изсечновение монетки - мелочь). Однако пи наличие хуйдожника, что будет ассеты пилить, могу левел-дизигном заниматья.
Да, бро, я сам так ничего толкового и не нагуглил
1152x780, 1:00
>>62987
Самое клевое во всем разделе показываешь. Видео хоть сделай, интересно же на это в движении посмотреть!
>Видео хоть сделай, интересно же на это в движении посмотреть!
Мне лень, да и заброшу, наверно, этот проект
Поковыряю свой симулятор экономики (пикрил) и пойду на работу устраиваться (говночистом)
А ты можешь скочать экзешник или сурсы и сам посмотреть (atmosphere branch - недоделанная)
https://github.com/Nashet/Interactive-Erosion
> да и заброшу, наверно, этот проект
Я хотел сделать симуляцию атмосферы, на ее основе сделать геймплей - типа, где дождик и тепло там биота растет. Твоя цель вырастить биоту терраформируя планету. Но чет энтузиазм кончается, и формулы на атмосферу сложные и нинужно это никому.
>>66642
>Жалко.
>Мимо тот чувак из скай, что тебе пытался помочь
Лол, привет
Полистай в ньфаготреде последние 100 постов. Я там упрощенную схему для климата накидал другому челику.
Нашел, да? спасибо. У чувака норм подход только количество воды не симулируется. Как в simearth.
Это первый тестовый проект на юнити в целом. Я не думал об этом, но если выйдет всё хорошо, то почему бы нет.
> Было бы, конечно, совсем чудесно найти кого-нибудь в пару
Я бы вписался, но я уже в другом проекте занят который меня уже доебал, ибо руководитель проекта тупит безбожно.
Потому что у остальных графика уровня "Как называется эта болезнь?"
Печально это, конечно. Желаю тебе терпения.
Хотя я сейчас призадумался - мне было бы очень ревниво делить именно этот проект строго попалам с кем-то, так как бОльшая часть сделана, а мне нужен лишь саппорт в таких вещах, как исчезновение монетки, лол.
Да похер, для 2д такой графон сойдёт, а большинство тут рисует на уровне пикрилейтеда.
Всё познается в сравнении, а я, будучи не художником, вовсе не считаю свой графен охуенным в последней инстанции. И вопрос тут не о графене стоял, как бы.
>Пиздец местные наворачивают и нахваливают графон мобилкоговна только уродливый. Юнити стронг.
Может ты тогда свой графон покажешь, который ушел дальше чем "пара still images" и еще и прям аж докажешь что твоё, а не какой-то obscure-проект с приватного форума?
Понятно...
В общем зря волнуешься. Научиться кодить на приемлемом уровне гораздо проще, чем научиться рисовать.
>но я б все волосы на голове повыдёргивал, если б мне пришлось учиться рисовать
Люди на это десятилетия тратят, и все-равно под конец жизни - так себе маляки.
>но мне кажется это всё относительно
Да, но если у тебя слабо с кодингом, то тебе достаточно разобраться в общей сути, чтобы хуярить визуальные новеллы, раннеры и прочую хуйню, Юнити всё делает за тебя.
Либо натянуть свой графон на готовый фреймворк.
Если же у тебя слабо с рисованием, то ты либо ишешь разношерстный графон, и у тебя Снейк сражается с Марио, либо стараешься подтянуть скилл и срёшь всратым пиксельартомкак я
> у тебя Снейк сражается с Марио
Лол, было у меня похожее. Достались мне моделька Ларки из перезапуска ТР и моделька Ватмана. Такая-то пара.
>Люди на это десятилетия тратят, и все-равно под конец жизни - так себе маляки.
Научиться рисовать может любой дурак. То, что это непостижимое исскуство — байка от недохудожников, которые хотят казаться илитариями.
>Научиться рисовать может любой дурак.
Безусловно.
Вот только без наличия предпосылок ака ТАЛАНТА (ах, чувствую запах пердаков) у тебя на это может уйти более десятка лет, и под конец упорных трудов у 90% результаты на уровне дешевых комиксов от силы.
За это время можно вкатиться не только в 3D моделлинг (не получается в анатомию - хуяч пропы, билдинги, архитектура ажеунно интересная вещь), но и в костяк геймдева, изучить любой движок.
А теперь сравни: стотыщь лет, убитых, чтобы научиться рисовать качественный арт в продакшен-масштабах фабрики для того, что бы выдать игру свой мечты и сорвать миллион продаж, или же крепкое среднее знание движков, кодинга и моделинга?
> Вот только без наличия предпосылок ака ТАЛАНТА
Поддвачну. У нас в классе учился пацан, который в 5-ом классе уже выдавал такое, что все охуевали. В 10-ом классе у него уже была собственная выставка. Под конец универа он рисовал уже такие вещи, что я охуевший просто был.
А потом он забил на это дело и стал успешным банкиром
>Вот только без наличия предпосылок ака ТАЛАНТА
>у тебя на это может уйти более десятка лет
Ну тоже фигня полная. Тут талант вообще не причем. Тут от желания зависит. Это любимая отмазка тех, кто нормально учиться не может. Типа мол, таланта нет, пол жизни придется тратить. Как и с музыкой — брехня всё это.
>когда "можется" на уровне ч0рного властелина, но у "хочется" голова болит
Тупая сука поди думал никому его порисулки не нужны. А мог бы сейчас в какой-нибуль ImagineFX работать, Pacific Rim 2 концептить
Ну может он и рисует в свободное время, кто знает. Я его после универа и не видел уже 10 лет.
И что важнее, частота или корки?
Работал с юнити только на четырёхядерниках, намыливаюсь взять E5 2680 v2 - стоит ли овчинка выделки?
Вот вчера в треде постил линк на Unite 2017 выступление какой-то тян, которая там у них светоспецом работает. Более актуальной инфы не найти
Пытаюсь запилить быструю систему сохранения и загрузки последней сцены.
В каждой n-ой сцене есть скрипт, в котором записано
PlayerPrefs.SetInt("scene", n);
А в самой первой сцене есть
scen = PlayerPrefs.GetInt("scene");
А затем уже при нажатии кнопки загрузки должна происходить эта самая загрузка самой последней сцены.
Но у меня срабатывает она через раз в самой юнити.
А когда проект собираю, то там вообще перестает работать.
Что не так?
Порядок инициализации кривой?
В чем ошибка? Не двигается и все.
> playerPosition.x += Input.GetAxis("Horizontal") * playerVelocity;
Лол. Странно ещё что тебя консоль нахуй не послала.
Ну, во-первых, никто не ебёт так трансформ напрямую, для этого есть транстлейт. А, во-вторых, вот так вот тупо ты не можешь изменять одну из координат позишена, тебе нужен буферный вектор3.
И что означает Vector2.right в приведенном выражении:
playerRB.MovePosition (playerRB.position + Vector2.right moveX playerSpeed Time.deltaTime);*
>В самой первой сцене
Она нулевая. А теперь смотрим скрипт апи:
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); и будет тебе счастье
Cпасибо!
Это (>>66741) что касается "проект собираю и не работает"
А что касается кнопки загрузки, то ты скорее всего запоминаешь "последнюю сцену" перед тем как загрузить и получается, что грузится та же сцена, что и была до этого. Исправить это можно тучей вариантов, но я бы просто В Don'tDestroyOnLoad запихнул бы запоминатель сцен и в него бы две сцены: предыдущую и текущую. А в плеер префы лез бы вообще только при загрузке и выгрузке приложухи.
Ща:
Метод OnClick(), который висит на твоей кнопке:
{
ZapominatelScen.instance.lastScena = n; // номер этой сцены
SceneManager.LoadScene(ZapominatelScen.instance.scenaDlyaZagruzkiPoKnopke);
}
При загрузке любой сцены, в каком-нибудь ее контроллере:
ZapominatelScen.instance.scenaDlyaZagruzkiPoKnopke = ZapominatelScen.instance.lastScena;
В каком-нибудь синглтоновом менеджере, который находится опять таки в DontDestroy:
void OnApplicationQuit()
{
PlayerPrefs.SetInt("scene",ZapominatelScen.instance.scena);
}
Ну и в 0й сцене просто грузишь и все. Что то типа
SceneManager.LoadScene(PlayerPrefs.GetInt("scene",1));
Можно скриптами почти все что угоно делать
Можно ли сделать чтоб он исчез не сразу, а растворился аки призрак? Или придётся с материалами ебаться?
этот перфект инглиш просто до слез
Например, для передачи цвета
https://docs.unity3d.com/400/Documentation/ScriptReference/Color-operator_Vector4.html
>тян, которая там у них светоспецом работает
>тян
Теперь понятно, почему в юнити все так плохо со светом.
1280x720, 0:19
>ZapominatelScen
>scenaDlyaZagruzkiPoKnopke
Чет орнул. На самом деле, юнити-разработчики во всяких ИП "Василий Васильевич" так и пишут код.
Я такого кода не видел ни разу, если честно, сам обычно в гугл транслейтор лезу, если не могу сам перевести. Вот только что хуже: писать транслитом или писать с лютейшими ошибками на английском?
Главное же, что бы твой код могли читать коллеги и ты сам. Если вокруг Васяны, то им транслитом ток проще будет
Спел чекер поставь
>Чет орнул.
Да это местный экземпляр, постоянно тут такую хуету творит.
Страшно его код видеть.
> во всяких ИП "Василий Васильевич" так и пишут код
Я думаю даже там за такое монтировкой по ебалу бьют.
По сравнению с O_CREAT всё хуйня.
Ну типо прихуйнули компонент RigidBody2D к объекту.
Cпасибо, счастья, здоровья, чтоб еда там была
>>66841
{
playerRB.MovePosition (playerRB.position + Vector2.left 1 playerSpeed * Time.deltaTime);
}
Насколько по шкале (от 1 до 10) васянства стоит этот спосою ограничения движения объекта?
Какое тебе ограничение нужно? Чтоб объект за определённые пределы не вышел? Если да, то юзай Mathf.Clamp и не еби мозги.
Что ж вы так любите велосипеды писать? Всё давно написано.
Тебе чего, пару коллайдеров не поставить? Думаешь, постоянный чек в апдейте будет лучше?
Да при чём тут мудак. То что опыта мало - это понятно. Но хотя бы гугли на инглише что тебе надо перед тем как велосипедить. В 80% случаев тебя на документацию и выкинет.
Если, конечно, умеешь грамотно составлять запрос.
Через cullingMask нельзя так сделать.
Я ни разу не реализовывал такую фичу, но если бы пришлось, я бы попытался поработать с альфой материала. Можно анимацией, можно любым твинером.
https://www.youtube.com/watch?v=znxkIafV8nM
(я бы делал твинером)
Спасибо за наводку, буду курить.
Ангельский плох, в этом проблема.
Ну если опыта мало, можно и костыль написать для расширения кругозора. Если уже захочешь вкатиться в профессиональное проганье, то любого джуна учат как правильно невелосипедить и т.д., так что не бугурти, зай.
Да не, мой начальник так писал.
Да я и не бугурчу. Я просто не пойму почему бы сначала не вкатиться в самые-самые примитивные туторы с офсайта. В том же спейс шутере этот самый 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);
Ошибка: The name `obj' does not exist in the current context
Потому что если условие не выполняется, obj is null
Добавь
if (obj != null) { тут твой код }
Хотя лучше запихать в сам блок первого IF
else {return;}
>Ошибки как бы нет))0
Если ты объявляешь переменную внутри какого-либо блока, то она существует только в контексте этого блока.
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);
}
И будет тебе счастье. А вообще, советую написать отдельный скрипт, который уничтожает объект по прошествии определенного кол-ва времени, особенно, если таких объектов у тебя в игре много и они разные.
Да, даже вручную в аниматоре ставил триггер.
У меня была точно такая же проблема - не срабатывала анимация открывания сундука. Так же как у тебя - аниматор висел на сундуке и анимировал дочерний объект (крышку). И вот в аниматоре всё норм, а в игре хуй. Джва часа ебался, а оказалось что на крышке (не на сундуке, а именно на крышке) стоял static. Если у тебя там галочки нет, то я хуй знает в чём проблема. Я в аналогичной ситуации всё испробовал.
Кажется я приблизился к ответу. Не знаю должно ли так быть, но аниматор производит только относительное изменение позиции, беря изначальной ту, которая была у г/о до начала клипа, а не ту, которую указывал я в клипе. При этом в окне Animation г/о перемещается правильно.
Я упустил ещё какую то галочку?
> беря изначальной ту, которая была у г/о до начала клипа
Чего блять?
Задавай в ключах какие хочешь параметры. Что там оно у тебя само "берёт"?
Задаю, да, но объект не перемещается по этим точкам, к нему лишь применяются изменения параметров относительно первого ключа.
Например дочерний объект находится в точке А, создаю клип, в котром он из точки А перемещается в Б, затем в В.
После этого перемещаю объект из А в А" и запускаю анимацию.
В окне Animation объект в начале клипа переместится в А, затем в Б, затем в В. В игре же во время анимации объект останется в А" и переместится в Б" и В", отличие которых от Б" и В", такое же как отличие А" от А.
Другими словами: в окне Animation сохраняются координаты, в игре только траектория.
> Например дочерний объект находится в точке А, создаю клип
> После этого перемещаю объект из А в А" и запускаю анимацию
Почему не записать анимацию сразу из А''?
Много для чего. Не просто же так в СпрайтРендерере есть поле Color.
Можно показывать, например, что по тебе попали.
А если у тебя ГТА, то можно тачки разоцветные пилить.
В общем, вариантов масса.
Специально для тебя пикрил запилил.
Потому что один и тот же объект в разных клипах будет перемещаться из разных стартовых точек. Придётся перемещать в скрипте, что поделать.
>но аниматор производит только относительное изменение позиции, беря изначальной ту, которая была у г/о до начала клипа, а не ту, которую указывал я в клипе.
Ну так создай две анимации для обоих положений или же, в скрипте, в в зависимости от того, в каком полоджении объект - проигрывай нормальную анимацию или реверсную?
В моём случае только в скрипте двигать пожалуй.
Идея была в том, что в зависимости от ветки анимации объект перемещается в определённое место.
Сами субъекты - спрайт персонажа и гейобъект, в который в процессе запихивает спрайт предмета в руках. В случае стрелялы - спрайт оружия может переместиться в позицию для стрельбы от бедра или прицельной.
Сама анимация сейчас просто плейсхолдер, оружие даже не двигается, просто находится в точке. Поэтому долго не мог найти причину - думал, что эти анимационные ключи не работают вовсе.
Звучит как проблема между root transform и local transform?
Первый работает относительно мировых координат, второй - относительно родителя.
Но в клипе указываются как раз таки локальные координаты. И Animation всё правильно воспроизводит, что самое странное.
ЕБАТЬ ТЫ ГЕНИЙ В СКОЛКОВО РАБОТАЕШЬ НЕБОСЬ
Оно по умолчанию выключено, схуя бы мне его включать для начала.
А работаешь в сколково ты штатным психологом видимо
Перенёс спрайт персонажа в отдельный объект, дочерний холдеру аниматора, и всё работает ок. При запуске анимации с изменением позиции шута телепортируется в нужную точку и сидит там. При смене клипа на клип без ключей для позиции шуты, она телепортируется на исходную позицию.
> Перенёс спрайт персонажа в отдельный объект, дочерний холдеру аниматора
У тебя ж так и было
> меняется позиция г/о, дочернего содержащему аниматор
Пап, ну хватит.
Дебыч, это не баг, а особенность аниматора. Если ты хочешь чтобы анимация воспроизводилась в глобальных координатах, юзай animation.
Всё?
>рандомно дёргающимися спрайтами
Эта проблема из-за чисел с плавающей запятой в позиции. Есть хитрое решение, когда в атласе спрайтов по бокам от спрайтов дублируются их пиксели.
Спасибо за агрессивную попытку помочь, но всё и так было в локальных координатах. Значения в проперти указывается в локальных координатах. Перемещение должно быть относительно материнского объекта.
>>67343
Не победил, а подебил. Всё отлично сработало в тестовой сцене, и я на радостях забил хуй. Но когда сегодня исправил исходный объект и его клипы, что бы вы думали произошло? Нихуя!
В конце концов я сделал два одинаковых геймобъекта с двумя одинаковыми детьми, у всех одинаковые имена, одинаковое положение(за исключением Y координаты родителя), один и тот же анимационный клип, один и тот же лайаут аниматора. Единственно отличие - в одном случае аниматор новый, во втором - очищенная от всего копия старого аниматора с тем же клипом, что и в новом.
В одном случае работает нормально, во втором - как прежде.
Запилю пожалуй треды на форуме и реддитекогда вернусь с орбиты
https://drive.google.com/open?id=1Aw1JYoqDsc6mABRHIlD3cF0sTbIrNYyB сцена с аниматорами, если кому интересно.
> конце концов я сделал два одинаковых геймобъекта с двумя одинаковыми детьми, у всех одинаковые имена, одинаковое положение(за исключением Y координаты родителя), один и тот же анимационный клип, один и тот же лайаут аниматора.
Я хуй знает что у тебя там за трабла, аноно, но звучит как пиздец.
Пожалуй ты прав.
Жаль, что никто не понял про блендинг из описания, и потребовалось тщательное сравнение аниматоров.
Я много про что не писал, но гипотезы же были.
Ну если бы я вспомнил про разный блендингменял я его ещё в 5.6 если не раньше, то я бы увидел чем эти два аниматора всё таки отличаются, остальное то было одинаковым. И решение перебором возможных причин наугад было бы найдено.
Но да, всё же я тупой, мог догадаться про блендинг из того факта, что к дочернему объекту применяются векторы изменений, а не заменяются сами значения.
Энивей спасибо, анон.
>Видео хоть сделай, интересно же на это в движении посмотреть!
Стопчик. Была жи мини-видюха
https://youtu.be/9R8hk3Yn_nI
Я нихуя не пони но выглядит круто
Как ты отрисовываешь всё это дерьмо в Game? У меня всё это дебажное говно только в сцене видно.
Это понятно, меня интересует какими методами это отрисовывается.
Так это можно добиться простым кодированием, зачем разработчика заморачиватся и создавать отдельный компонент.
Линии между спрайтами.
Навороченный движок не умеет убирать полоски. Фиксится в фотошопе дублированием границ каждого спрайта.
https://www.youtube.com/watch?v=QW53YIjhQsA
Потому что по-хитрому сгруппировал спрайты в кучу, и даже растения не касаются зелеными частями блоков, вот только он об этом ничего не говорит.
Да, блоки в тайлмапе все в куче, поэтому линий в игре и не видно, т.к. пиксели соседних блоков друг с другом смешиваются. Одним словом движок в принципе не умеет это дело исправлять, всё это фиксится исключительно фотошопом на этапе подготовки тайлмапа.
Можешь скриптом vertices подправлять на одном меше.
Че тупого то? А массив картинок - тупо?
Если хочется прямо по-хардкору, то можешь просто ради лулзов ссылки зашить в xml или json. Но это на самом деле не нужно. В простом public массиве в скрипте, висящем на самом объекте, которому надо поменять меш нету ничего "тупого".
Пару месяцев назад делал где-то тоже самое и все работало(только проебал комп с исходником)
http://pastebin.ru/j7ueHf9p
При чем тут мои демки вообще? Назови мне самые графонистые игры на юнити? Сразу на ум придет Escape From Tarkov и Ghost Of A Tale. Первая графикой на уровне BF3 и жрет непозволительно много, требует 16ГБ оперативки, тормозит на топовых видеокартах и процессорах даже на высоких. Вторая выглядит чуть-чуть лучше, но в ней нет ни четких текстур, ни нормальных PBR-материалов, ни какой-то серьезной симуляции физики или частиц, и вечно риалтайм тени пидорасит.
https://youtu.be/5BqodzWZIUA
Есть в юнити хоть что-то похожее по качеству графики в риалтайме: освещения, частиц, симуляции одежды, теней и материалов качественных? Я хоть юнити и люблю, но движок буквально задыхается от хоть сколько-то современных условий рендера.
Я могу еще перечислить очень и очень плохую и старую систему террейна, освещение для которого печется непозволительно долго, а сам террейн убивает производительность, что приходится идти и покупать для него плагины. Мягкие тени и освещение в реальном времени тоже не самая сильная сторона юнити, вот на UE4 multi-bounce indirect lighting даже пустую сцену охуенно красивой делает. И в целом, если не брать йоба-демки типо Unreal Paris и отскакивать от парагона, на котором они также демонстрируют кучу технологий, вполне понятно, с чем юнити не справляется.
И вообще я вопрос не про это задал, а про то, кто перекатывается/собирается перекатиться. Я не собираюсь превращать это в срач о том, какой движок лучше или нет.
>Первая графикой на уровне BF3 и жрет непозволительно много, требует 16ГБ оперативки, тормозит на топовых видеокартах и процессорах даже на высоких.
Почитал пару отзывов
@
Сделал выводы о игре
У каждой игры всегда есть куча отзывов рода «У МИНЯ ТИТАН И НИ ТЯНИИИИИИИИИИИИИИИИИИИИИИТ»
Я играл в нее, чувак. Играл также мой друг с GTX1080, 24GB оперативки и i5 8 поколения.
У меня железо попроще, 970, 16GB и i5 6 поколения.
Оба бегали на средних настройках с дикими лагами на таможне, поэтому играли почти всегда только завод.
Но тут не об игре разговор идет, а о том, какая технология за ней стоит. Учитывая, что разработчики самоуверенно сказали, что они движок как свои 5 пальцев знают и у них там большая часть всего написана под них и также оптимизирована, и видя на выходе (хоть еще и не релиз) такую игру, я понимаю, что с выбором технологии они крайне сильно ошиблись.
> разработчики самоуверенно сказали
Ты ведь про русских говоришь. Тут не в технологиях ошибка.
Давай без этого, из-за того, что они русские, хуже программировать они не стали. Уже из того, что они выжимают из Юнити, видно, что ребята очень хорошо знают свою работу. К примеру, видел ВК одного из чуваков, который писал шейдеры для игры, там просто колоссальная работа была проделана по оптимизации. Так что они реально уперлись в лимит движка уже, по ним это видно.
>хуже программировать они не стали
Плохие новости. Вспомни хоть что-нибудь за последние 10 лет от русских хорошее?
Олсо, в расте графоний приятный оче.
В расте артстайл сам по себе спокойный и не претендует на ААА-графику, и в целом там довольно мало мелких объектов и всего такого. У Таркова же говна на картах навалом, все это еще с освещением, затенением, кое-где отражения. Короче пайплайн по-полной задействуется.
>Вспомни хоть что-нибудь за последние 10 лет от русских хорошее?
Да ничего не вспомню от русских студий, кроме War Thunder, который классно выглядит и хорошо работает. Зато знаю много разработчиков в том же Unity и Epic Games из России. Да и вообще в любой ААА-студии есть хороший процент русских. У нас сама по себе индустрия не сильно развита, потому что все сваливают. Те же ребята из ZeptoLab на заре 20ХХ, когда делали первую Cut The Rope, нанимали людей в офис в России, а потом как денег подняли -- со свистом свалил в Европу.
>юнити вообще с рендером качественным не справляется
>Назови мне самые графонистые игры на юнити?
Экспертная техническая оценка уровня /гд/
>русские, хуже программировать они не стали
Русские не могут в качественный продукт без живительных пенделей со стороны "западных партнеров". Причем это не только программирования касается, просто посмотри вокруг.
Никто и не спорит, что лучше.
Но вкатываться в него в 100 раз сложнее брайнлетам.
В Юнити лего собрал и выложил в стим-стор, а в УЕ нужно 100 лет пилить базу, а потом уже кубики собирать.
>При чем тут мои демки вообще?
Т.е. игры у тебя нет, вместо этого ты ерзаешь между движками.
>>67648
>Ты ведь про русских говоришь. Тут не в технологиях ошибка
Неистово двачую.
>>67649
>Давай без этого, из-за того, что они русские, хуже программировать они не стали
Конечно нет. Просто врут безостановочно.
Да не, просто ты сравниваешь движки с позиции капа, который ты не факт что сможешь достичь.
Это вообще не я отвечал.
Да, сравниваю с позиции капа и еще с позиции качества при должном усилие. Я на Юнити уже участвовал в разработке 3D-проектов, там довольно прожорливые тени и GI, и много всего надо настраивать, чтобы выглядело не как говно -- чтобы тени не клипались и т.д. На UE4 же подобного качества достигнуть очень просто, и в целом все это работает пошустрее из-за доступа к пайплайну (в юнити только в следующем релизе что-то похожее будет, но не факт, что даст возможности UE4).
Юнити для 2D отлично подходит и для игр, которые будут работать на старых ПК (при одинаково среднем графоне с UE4). UE4 же позволяет делать очень хороший графон при должной производительности на нормальных ПК.
И по поводу капа еще добавлю -- террейн система уже огромный минус в юнити, сам по себе ограничивающий меня в работе над проектом с большими локациями. Из-за этого надо покупать плагины, которые решают от силы 20% скопившихся за 11 лет проблем террейна. Производительность хуйня, качественные текстуры и растительность убивают ее напрочь. Да и работать, если честно, в юнити уже заебало. Воркфлоу никакой -- пихать каждый раз на сцену префаб, чтобы его отредактировать, это вообще сущий ад. И префабы еще и нестинг не поддерживают. Хз. Единственный минус, который я у UE4 нашел -- C++, потому что компилировать даже пустой проект надо 5-15 секунд, на юнити же огромные проекты в районе пары секунд обновляют все скрипты, спасибо C# и модульной архитектуре.
В марте рендер пайплайн откроют полностью.
>скопившихся за 11 лет проблем террейна
В юнити террейн в нынешнем виде появился с 3 версии вроде, до этого другой был.
Вот у меня есть какой-то empty object c навешаным скриптом, как сделать его видимым в инспекторе(например обозначить его каким-нибудь полупрозрачным кубом или сферой), так чтобы все это отображалось только в инспекторе, но не в работающей сцене.
Инспектор и сцена - совершенно разные окна. Определись что ты хочешь и напиши с нормальными определениями.
Мало работал с юнитивски террейном, но во всяких Обливионах, Муравьиндах и Скайримах очень похожая система, по-крайней мере за то время, что я работал с Юньковским террейном, я разницы не почувствовал. Производительность можно увеличить за счет лодов и дальность прорисовки. Не обязательно рендерить траву на всем террейне, например. Да что я тебе объясняю, сам все знаешь. В конце концов за 11 лет можно было написать свою обработку террейна и жить нормально, в конце концов я особо не понимаю, что там такого именно в самом базовом классе, что тебе загрузит производительность по самые яйца.
Ну выглядит нормально, не более. Интерфейс классный если только.
>>67965
Как раз-таки у юнити-террейна плохой ЛОД, трава, деревья и culling. Точнее очень хуевый.
Ну отлично, ты перечислил игры, которым уже больше 7 лет. У Юнити старый террейн и в нем туча проблем, на форумах очень много тредов по этому поводу и я даже читал пост гнева какой-то от человека, который 5 лет оплачивал подписку на юнити и слышал каждый год обещания разработчиков, что они займутся проблемой террейна. Ну и в фидбеке давно уже New Terrain System в planned висит, с 2013 года нахуй (https://feedback.unity3d.com/suggestions/improved-unity-terrain-core-engine)
Если ты мне не веришь, что он хуевый, можешь сравнить с UE4 террейном (и в целом с простотой создания уровней там). Либо почитать треды на юнитифорумс с обсуждением того, почему вся система террейна там устарела и ее срочно надо менять.
А по поводу переписывания террейна -- я на юнити не 11 лет работаю, а меньше 5, но и мне время тратить на переписывания базовых вещей не хочется, тем более когда их поломает следующее обновление.
Шел бы ты уже из юнити-треда.
Я про тех, кто вообще рисовать не умеет. Есть какие хелперы, которые могут сделать частично "заебись" ну или хотя бы "на это терпимо смотреть"?
A смысл?
Я пиздец какой начинающий игродел и задался тупым вопросом, где делается весь уровень?
В 3д моделлере или в самой юнити с помощью примитивных прямоугольников?
Примитивная геометрия и архитектура, террейн - в Unity, пропы и модели - в 3D-китах (типа твоей сексуальной русалки на корабле, да и сам корабль)
Спасибо
Спасибо
Хуй знает как ты гуглил, первая же ссылка
http://codercdy.com:8989/U_Unity.in.Action.2015.6.pdf
Никак :3
Да за 2015 издание я нашел, хотелось бы текущий дамп с Manning изд. Н2
https://play.google.com/store/apps/details?id=com.LemonGames.Fifteen
Блять, нельзя что ли было вырезанный кусок сохранять и по завершению мозайки его подставлять
Поконкретнее скажи, что и где именно?
˅ v ^
Немного не то. Просто я делаю сортировку в таблицах, и этот значок должен означать в какую сторону включена сортировка. А как гуглить это не знаю. О, знаю это жи caret symbol
Юнити, кстати, не ASCII жи использует?
В скрипте, из которого передаёшь, создаёшь ссылку на скрипт, в который передаёшь, и задаёшь. Типа:
Script otherScript = FindObjectOfType<Script>();
otherScript.variable = value;
Спасибо, чуть посже проверю
Плохо быть работоблядком. (
Базаришь.
private Predicate<T> filters = new Predicate<T>(x => true);
public void AddFilter(Predicate<T> filter)
{
filters+=filter;
}
public void RemoveFilter(Predicate<T> filter)
{
filters -= filter;
}
public void ClearAllFiltres()
{
filters = x => true;
}
Predicate<T> хуи = new Predicate<T>(x => x.isStul());
Predicate<T> пики = new Predicate<T>(x => x.isStul());
Надо их сравнить. Сравнение нихуя не работает, естественно, потому что сравнение идет по ссылке а не по значению.
Есть идеи как их таки сравнить по значению?Стандартный Equals не помогает
Обколются своими предикатами, а потом не знают что сними делать.
А что конкретно сравнивать? Predicate.Method или что?
Мне, конкретно, желательно реализовать функцию bool predicate1.contains(predicate2)
Т.е. не просто сравнение а налие одного предиката в другом
Нашел вроде а.GetInvocationList().Contains(б) говорит если предикат a содержит б
Мамка заплатит.
inb4: читай теорию цвета
Ну да, из той же оперы что и ksp. Возможно будет отдельная тулза для редактирования крафтов, в т.ч. на телефоны. Но это не точно.
Предикат - это обычный делегат под капотом.
Нихуя там не оптимизируется. Спорю, ты используешь пидорский МоноДевелоп, вместо того, чтобы работать на Visual Studio.
Обоссать бы тебя.
Разница в инструментарие. У монодевелопа он так мощно сосёт, что Unity наконец-то отказывается от его поддержки в пользуй Visual Studio.
Так причем тут блять IDE-то?
Я даже не тот анон. У тебя забор деревянный, и две банки краски: голубая "НЕВА" и голубая немецкая "Баума" в 10 раз дороже. Ты второй краской забор покрасишь - он из деревянного в железно-бетонный превратиться?
И без грамматики, и без элементарной матеши меняется только знак, ты все еще остаешься довном.
Как ты так делал что такие большие планеты так мало потребляли памяти компютера.
вырастидерево на юнити?
Так масштаб планета/корабль оригинальные?
>>68524
>Нихуя там не оптимизируется. Спорю, ты используешь пидорский МоноДевелоп, вместо того, чтобы работать на Visual Studio.
Нит, у меня кошерная ms vs 2017
Хз, что но что там странное происходит. Часть я уже понял. У меня там был combined предикат состоящий из одного предиката А. Я вычитаю из него А и происходит какая то хуета. Что, впрочем, логично, наверно.
>>68516
Там кстати опенсорсный ксп делают на реддите (пока правда только замеры делают)
>>67484
ваще заебись. то на что можно смотреть очень долго.
в 2011 году, кстати, вышел from dust где из водной эрозии сделали ртс-пазл клевый.
>>67487
а, это. Через ComputeBuffer и Material.SetBuffer. в юнити же через какой-то клевый api можно редактировать буфферы на видеокарте где в качестве содержимого может быть struct. я сделал отдельно шейдор для точки, линии и плоскости где указывался бы отдельно цвет каждого элемента и его размеры, поверх этого сделал дебагер который бы редактировал буфферы и всю эту хуйню. получилось клево.
https://www.assetstore.unity3d.com/en/#!/content/85181 собственно можешь скачать мой навмеш, почитать, спиздить мой дебагер. У него ещё другие фичи есть, например он через Handles выводит текст в сцене в нужной позиции. Без такой хуйни было бы трудно сделать навмеш.
интересующее тебя в классах PFDDebugerScene который собственно сидит в сцене и рисует все это и Debuger_K из которого все это дебажится.
у меня раньше был дебагер который через Handles делал то-же самое, но он медленноват когда надо отдебажить хуилион всяких точек и линий.
>>68608
я надеюсь ты не анонимными делегатами пользуешься для такого. какие-то сорта манипуляций со сложением или вычитанием анонимных делегатов делать вообще не следует.
>я надеюсь ты не анонимными делегатами пользуешься для такого. какие-то сорта манипуляций со сложением или вычитанием анонимных делегатов делать вообще не следует.
Да, анонимной лямбдой
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; }
Кароч проблема именно в попытке вычесть А из А. По идеи должно давать null, а на самом деле фигня происходит.
>>68609
>я надеюсь ты не анонимными делегатами пользуешься для такого
А чем они хуже? Их невозможно сравнивать потому что каждый раз создается новая сущность? Т.е. при каждом обращении к Predicate<PopUnit>(x => x.popType != PopType.Artisans) лямбда будет конвертироваться в новый предикат?
Просто безымянные методы короче писать
Ты пишешь, что у тебя дебаггер перестаёт работать. А я тебе пишу, что дебаггер твой хуйня.
Сейчас планета это сфера с натянутым материалом, поверхность я еще не делал.
Расчеты в реальном масштабе, отрисовывается в уменьшенном, кроме 50 км пузыря вокруг активного крафта.
>опенсорсный ксп
У меня антиопенсорсный. Чисто мой вижон, работаю один.
Да и чем больше космоигр, тем лучше.
>>68618
>>68641
ты конечно уже и сам все посмотрел. но вообще, шарп же вроде как в этом случае делает чтото вроде "вот у нас bool result, инвокнем все делегаты, каждый инвок будет совать свой результат в result, в конце вернем result"
если написать то что на скриншотике то результат будет:
invocationList.Length: 3
findAllResult: 3
False
False
True
лучше уж свою имплементацию хранения и применения делегатов написать.
Да. Я так понял, предикат - тупо переименованный делегат. Т.е. он не рассчитан на логическое суммирование составных предикатов. Выполняются то все предикаты, но в выборку findAll идет только последний.
>>68668
>лучше уж свою имплементацию хранения и применения делегатов написать.
Для этого вроде как существует Expression<Func<T, bool>> но мне лень туда сейчас лезть.
Спрошу только, может кто знаток, можно ли в С# SQL подобным запросом выковыривать данные из структуры типа (примерчик бы помог):
Есть лист государств, каждое государство имеет лист провинций, каждая провинция имеет лист фабрик и лист попов.
Нужно получить лист всех попов или фабрик с определенным фильтром.
Будет ли запрос в таком случае быстрее чем перебор foreach?
>>68684
https://www.reddit.com/r/OpenSpaceProgram/
>Да. Я так понял, предикат - тупо переименованный делегат.
Predicate и Action это стандартный делегаты по типу:
return <T> (принял <T>)
и
return void (принял <T>)
Их просто для тебя сделали по дефолту, если нужна такая функц. и не хочешь свои писать по сто раз.
Спасибо. Надо будет там запостить своё космоподелие, когда наконец 0.2 выпущу, мож лойсов насыпят.
Я идеалогически против сотрудничества с кем-то и против опенсорса. И не зря, судя по тому, что у них больше ста участников, конь не валялся и последний коммит был месяц назад.
Впрочем, если у них взлетит, я буду только рад, космосимов все равно практически нет.
Работающая орбитальная механика несколько сложнее, чем у них сделано, не говоря уже о том, что движок (любой) не тянет прямые вычисления для объектов на сцене, надо сначала считать "в уме", потом уже изъебываться и все это отрисовывать.
И как всегда 80% работы проходят над "малозначительной" хуйней, типа иконок, дизайна и всего такого прочего.
>И как всегда 80% работы проходят над "малозначительной" хуйней, типа иконок, дизайна и всего такого прочего.
Потому что реальное дело требует нехилых познаний в математике, физике и погроме, а люди с такмим познаниями могут зарабатывать дельное быбло, вместо того, что ты тратить время на реддит-хуету?
>А в чем суть? Каждый пишет свой кспклон и выкладывает штоль?
Да. Причем сам KSP тоже дефакто опенсорсен
>>68771
>И не зря, судя по тому, что у них больше ста участников, конь не валялся и последний коммит был месяц назад
Коммитят то полтора инвалида, причем один в юнити другой в годот. Остальные - массовка, типа меня
>реддит-хуету
Зря ты так, я бы поучаствовал и даже поделился своим кодом, если бы не желание зарабатывать геймдевом, сидя дома, а не въебывая после основной работы.
Вот какой-нибудь немец-погромист с двадцатилетним стажем и сбережениями вполне может себе позволить просто для фана сидеть дома и пилить опенсорц-космосим.
Ну я пиарился только в ксп-треде на двоще, так что ничего удивительного, тащемта.
Будет геймплей - буду пиариться вконтакте и на реддите. Можно будет даже твиттор запилить.
>буду пиариться вконтакте
Как ты себе это представляешь?
>>68837
>Можно будет даже твиттор запилить
И кто и как будет в этот твитор попадать?
>>68837
>и на реддите
Хз в какой раздел тебе посоветовать. В dev blogs все мертво. Может быть, truegamedev
>>68841
>все инди-паблишерам с предолжениями, находишь и дело в шляпе
Но они же заставят работать..
неон
>паблишерам
Спасибо, но работа у меня уже есть.
Пока идет разработка и кто-то хочет поддержать - можно задонатить. Потом в стим выложу, наверное.
>заставят работать..
Вот этот шарит. Хочу в трусах сидеть дома и пилить космосим мечты за 5+к баксов в месяц от заинтересованных. Просто для бабла можно продаться в какой-нибудь варгейминг, недавно от них спам в линкедин был, опять какое-то говно пилят.
Порнушных проектов миллион с хвостиком, а альтернатива огурцам пока одна, из известных мне. Соответственно комьюнити не размазывается.
>>68851
20 тысяч это мало, если надо где-то жить и что-то есть. Студентам из миллионников в этом смысле хорошо, можно на шее родителей посидеть. В моем случае если доход упадет, то я быстро и решительно перееду жить под ближайший мост.
>20 тысяч это мало
Хуя ты буржуй охуевший ты там икрой черной осетровой по утрам завтракаешь? Мне 8-9 штук на месяц хватает прожить.
18к на аренду квартиры, 15к пожрать плюс еще надо одежду, бытовую хуйню и все остальное.
Город?
Блять, если бы я сдавал квартиру за 18к ябы нахуй работать забил, пилил бы себе чего-нить потихоньку
Кажи сука
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());
}
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());
}
override Start() жи
В смысле в родителе virtual и оверрайдишь в чилде.
public abstract class AbstractShit : MonoBehaviour
{
protected virtual void Start()
{
}
}
Я сделал, но нет. В классе-предке останавливается на брекпоинте (2 раза почему то, хотя потомков больше 1), а в потомке - не останавливается. И поля остаются непроинициализированными.
>Ну захуячь тогда new Start() похрен
Не работает. Вероятно, моно не может в дженерик. На форумах что то пишут про это, правда старые посты.
Гитхаб наверно еще лучше
больной потомок: https://github.com/Nashet/EconomicSimulation/blob/dev/Assets/EconomicSimulation/Scripts/PanelTables/ProductionWindowTable.cs
аналогичный но работающий потомок https://github.com/Nashet/EconomicSimulation/blob/dev/Assets/EconomicSimulation/Scripts/PanelTables/PopulationPanelTable.cs
предок: https://github.com/Nashet/EconomicSimulation/blob/dev/Assets/UnityUIUtils/Scripts/MyTable.cs
Так то я проблему решил - проверяю данные на null при первом обращении
Из предка Start убрал - потому что в другом потомке и без этого норм работает.
В том коде у тебя Start() - вообще приватный метод. В рабочем потомке она вызывается из AddHeader, а в нерабочем - не вызывается вообще никак.
Наоборот жи, в нерабочем (ProductionWindowTable.cs) вызывается из AddHeader в качестве костыльного решения проблемы.
а кто тут ещё такую хуйню то выкладывать может? я конечно. на самом деле хуево. последний результат был в том что я написал для ИИ контролер чтобы он по сети мог работать.
потом переключился наверно на 5-6 дней на процедурную анимацию, сделал клевый блендор кривых, но забросил. но картинку покажу.
потом переключился на какое-то время на оптимизацию навмеша, так как меня посетила одна клевая идея как можно сделать заебись. заглянул глубже в алгоритмы растеризации, недели две репу чесал, навмеш стал на 30-40% быстрей генерироваться, стало заебись. после того как апдейт выложил в ассетстор мне чего-то люди стали писать интересные вещи, задавать интересные вопросы, количество закачек выросло в 2-3 раза. решил уже сделать фичу которую чаще всего просили - локал авойденс. и когда погрузился туда то неожиданно недели за две до нового года попал в больничку. вышел перед новым годом, но там и времени не было. теперь вот снова локал авойденс делаю.
но там вроде и так почти все сделал. осталось добавить тень от навмеша в допустимую скорость. и по человечески написать нахождение самой нижней точки при пересечении множества плоскостей.
как доделаю то вернусь обратно к ИИ.
>>68722
лол а я кстати залез. там очень интересно. смотри как клево.
https://blogs.msdn.microsoft.com/meek/2008/05/02/linq-to-entities-combining-predicates/ обязательно почитай
>как доделаю то вернусь обратно к ИИ
Давай, интересно, что получится. Я, если помнишь, с пол года назад горел тут от дискуссий о ГОАП.
>Mono только вызовет если скрипт на обьекте
Оно и висит. Обект правда не включен. Но в том и суть, оба объекта выключены, на одном старт срабатывает - на другом нет.
Иди по стопам дидов откуда выросли все рпг и все рогалики, почитать рулбуки от вахи, мотыги, WoD, и т.д. Посмотреть их таблички персонажей и т.д. Разраб данжеона несколько карточных игр и настолок создал прежде чем в геймдев пришёл. А там только листочки и тестирование с такими же аутистами.
Такого нет. Но заметил что многие с 5.6 пока не слезают. Дальше просто пошло обновление двигла всем чем можно, и пока останавливатся не собираются, перекатишься где-нить к 2018.3, правда они собираются монодевелоп выкинуть, а я уже к нему привык
Как сделать проверку "Если health уменьшилось, то..."
До такого мы тут ещё не дошли.
То есть нужно понять, что health уменьшилось.
Хуетой какой-то страдаешь, у тебя же есть функция которая делает уменьшение - вот тебе и событие уменьшения.
Бля, жиза. Чет я тупанул.
Шарунишка
Не страдал бы ты хуйнёй, да переходил бы к нам в уеч-тред. У нас это делается парок кликов мышки.
Бросаешь на блюпринт блок-условие, в него пишешь "helth <> deltahelth" на выход подключаешь блок-branch, из этого блока два выхода, к первому подключаешь следующие блоки, которые у тебя пойдут, если равно, а ко второму - подключаешь блоки, которые у тебя пойдут, если не равно. Вот так всё просто и никакое гомопидорское программирование не нужно.
Да я уже сделал с помощью скрипта.
Я кстати тоже так хотел сделать, но чет не получилось. Ну у меня ситуация немного другая.
Можно менять переменную и подписать кого угодно на эти изменения через события. Пикрелейтед, собственно.
Меняешь переменную через Property, срабатывает метод в подписанном на это событие классе.
Да без разницы, это однохуйственно синглтон.
Только нужна ещё проверка activeBody != value
Суть такова, есть окно, у него всплывает тултип на кнопке закрытия окна. Кнопка нажимается, окно закрывается, тултип продолжает висеть на курсоре потому что тултип логически - отдельное окно и обычно тултип закрывается когда курсор сдвигается с кнопки.
Так вот, как мне по правильному уведомить тултип что его окно исчезло и пара бы ему тоже исчезнуть?
И в чём проблема?
Дороу, рад что не забросил, ты молодец.
Т.е. так надо, что ли:
(для окна)
public event EventHandler Hidden;
public virtual void OnHide()
{
gameObject.SetActive(false);
EventHandler handler = Hidden;
if (handler != null)
handler(this, null);
}
Теперь надо подписаться на событие. Так?
В тултипе:
void ReactionOnHiddenWindow();
(окно).Hidden+=ReactionOnHiddenWindow();
У меня окон много (и не окон)
А тул тип один. Тупо добавляешь компонент тултипа куда угодно и оно работает. Ну и суть в том чтобы правильно эвенты делать. А то че я как лох то без эвентов.
Вот, накатал
Вопрос: правильно ли вообще, особенно - наименование (соответствует стандартам?)
Как защитить 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);
}
...
Subscriber:
protected void Start()
{
if (ownerWindow != null)
ownerWindow.OnHidden += OnHiddenOwner;
}
void OnHiddenOwner(Hideable eventData)
{
// forces tooltip to hide
OnPointerExit(null);
}>>69250
У меня окон много (и не окон)
А тул тип один. Тупо добавляешь компонент тултипа куда угодно и оно работает. Ну и суть в том чтобы правильно эвенты делать. А то че я как лох то без эвентов.
Вот, накатал
Вопрос: правильно ли вообще, особенно - наименование (соответствует стандартам?)
Как защитить 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);
}
...
Subscriber:
protected void Start()
{
if (ownerWindow != null)
ownerWindow.OnHidden += OnHiddenOwner;
}
void OnHiddenOwner(Hideable eventData)
{
// forces tooltip to hide
OnPointerExit(null);
}>>69250
А-а-а. Так вот в чём дело!
>>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бит кода.
Вот вам сведения о системе
> 64бит Убунту, установлена на виртуальной машине
> они не запускаются, вылетают с ошибкой
Какое загадочное дело, Ватсон.
Лучше всего в аксессор запихнуть проверку на негативный value, во-первых, не нужно ивенты писать, во-вторых, работает только тогда, когда меняется значение переменной.
Больше читай про аксессоры тут -- https://docs.microsoft.com/ru-ru/dotnet/csharp/programming-guide/classes-and-structs/properties
>>69331
Тащемта проперти это просто методы установки и чтения параметраи в рантайме в них раскрывается
Там что нет никакой завязки на проперти, это просто выглядит более приятно.
>>69338
Когда нужно абстрагировать поставщика информации от получателя. Observer тоже подойдёт в этом случае. Минус ивентов - очень сложный поиск багов.
Ты корабли делал с компонентом RigidBody? Что была инерция, ускорение и торможение?
>Когда нужно абстрагировать поставщика информации от получателя. Observer тоже подойдёт в этом случае. Минус ивентов - очень сложный поиск багов.
Спасибо
List<PopType> re = new List<Capitalists>();
Говорит что нельзя явно преобразовать (PopType - предок Капиталиста, естественно)
Если я напишу List<PopType> re = new List<Capitalists>() as List<PopType>;
Это приведет к потери информации или тормозам?
Значит создавай свой асбтрактный тип листа и пихай дочерей туда? В чем дело?
List<PopType> re = new List<Capitalists>();
Ругается
ОшибкаCS0029Не удается неявно преобразовать тип "System.Collections.Generic.List<Nashet.EconomicSimulation.Capitalists>" в "System.Collections.Generic.List<Nashet.EconomicSimulation.PopType>".
Блять, абстрактный класс от которого дочери идут какой?
Вот смотри, есть в Unity Component
List<Component> stuff = new List List<Component>();
stuff.add(BoxCollider2D)
stuff.add(SpriteRenderer)
stuff.add(RigidBody)
if (stuff[1] is Rigidbody) {
move
}
>Блять, абстрактный класс от которого дочери идут какой?
PopType.
Но мне нужно не Capitalist привести к PopType а
список List<PopType> re = new List<Capitalists>();
Собственно вопрос, правильно это преобразовать таким образом as List<PopType>
float delta = Input.GetAxis ("Mouse Y") * sensetiveVer;
_rotationX = Mathf.Clamp (transform.localEulerAngles.x - delta, -45f, 45f);
float _rotationY = transform.localEulerAngles.y;
transform.localEulerAngles = new Vector3 (_rotationX, _rotationY, 0);
Проблема в Clamp. Как только я посмотрю выше горизонта и значение станет чуть ниже 0 то Clamp почему то вернет 45 и я мгновенно смотрю в пол. Т. е. углы [-45, 0] мне почему то недоступны. Что я делаю не так?
>>69372
>>69374
Ты блядь тупой или да? Нахуй ты пытаешься его инициализировать листом другого типа? Чего ты добиваешься? Ты хочешь как на украине? Ебаный дебил, читай внимательно. Ты можешь запихать в List<PopType> любую хуйню, которая наследуется от PopType. Понимаешь? Капиталисты, хуестократы, твоя жирная мамаша. Ты просто добавляешь его в лист и оно там лежит, потом при обращении преобразуешь в нужный тип. Какого хуя ты пытаешься сделать я вообще не понимаю. Иди в пизду.
Для того что ты написал риджидбоди не нужен. Два корабля рядом красиво плавают друг относительно друга по физону, но не сталкиваются.
>List<PopType> re = new List<Capitalists>() as List<PopType>;
Я конечно понимаю, что за такие вопросы убивают нахуй, но почему не сделать List<PopType> re = new List<PopType>()?
Можно объявить два класса, и реализовать в них один и тот же интерфейс, или унаследовать их от одного предка:
class Mamka : MonoBehaviour, IParent {}
class Papka : MonoBehaviour, IParent {}
И хранить их вместе как List<IParent>, делая штуки вроде parent.AskMoney(), не вникая в реализацию конкретного экземпляра, потому что денег дать могут оба.
IParent это интерфейс, объявляющий общие методы:
interface IParent {
void AskMoney();
void CheckHomework();
}
Оба родителя реализуют этот интерфейс, возможно по разному, и к ним можно обращаться как к экземплярам этого интерфейса.
Да это понятно, я не понял в чём программический эффект инициализации листа как листа потомков, чтобы потом сразу скастить его в родителей.
Нет никакого эффекта. Тот анон не понимает, как работает ООП и лепит костыли на ровном месте.
Просто я упростил пример.
На самом деле там есть интерфейс 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>);
return res;
}
Этот пример лучше:
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/
Привет новые тормоза, юнька теперь станет ещё медленнее. Алсо уже подтвердили, что новый "облегчённый" мобильный рендер работает медленнее текущего, лол.
Да, ещё поддержку сабстанс паинтера скоро вырубят нахуй, ибо нехуй сторонние материалы импортировать, покупай в сторе, сука.
- двигать фоны самому скриптом;
- не ебать мозги и использовать камеру с перспективой для фонов?
Я не мастер-красноглаз, но запустить его не получилось. Получаю что-то типа такого (красным обозначил вывод в консольку).
Если бы проблема была в разрядности, то ошибка выглядела бы по другому.
Тоже вопрос интересует, отпишись как решил?
Тогда через какой компонент ты прописывал физику, там ускорение инерция и т.д.? Или ты вручную прописывал физику?
Вручную, конеш. Нельзя просто так взять и прилепить на Землю и спутник риджидбоди, это не будет работать.
Физон считается для материальных точек с массой, потом отрисовывается на сцене в масштабе.
Правильно ли я понимаю что в transform.localEulerAngles мы можем записывать отрицательные углы, и он даже повернет как надо объект, но если мы обратимся к тому что там фактически хранится - там будет только [0, 360]?
Мне нужно понять почему не работает этот код.
Я просто сейчас учусь по Unity in Action, и там есть работающий кусок кода, но там вращение по Y работает через приращение дельты как раз, а вращение вдоль X по другому. Я решил сделать вращение по X так же, через дельту, и соснул, пытаюсь понять почему.
>Нельзя просто так взять и прилепить на Землю и спутник
Это почему нельзя? Ведь ригидбодю основывается на ньютоновской физике.
> Я решил сделать вращение по X так же
Так а нафига ты тогда используешь Input.GetAxis ("Mouse Y"), если хочешь крутиться по X. К тому же, при вращении по Х тебе кламп нахер не нужен, ты можешь крутиться на все 360.
Так вот, идея мне очень понравилась, я распалился, начал клепать модельки и вот только сейчас призадумался: а как собственно реализовать physics-based бои с заранее записанными анимациями? Навешать IK куда нужно и засрать всю модельку коллайдерами?
Пилил ли кто-нибудь подобное? В какую сторону копать? Какие подводные камни?
Потому что нужно повторить расчёты для рб из физдвижка в своих расчётах, а потом применить на сцене. Так теплее и ламповее.
Смотрел одно видео, там рассказывалось что если масса РБ больше в сто раз за другой РБ, значить игра будет работать с ошибками
Потому что сути это не изменит. Разница в массах все равно будет такой же и движок все еще не сможет переварить дистанции.
Я считаю скорости и позиции для материальных точек, потом на основании этой инфы рисую объекты вокруг активного крафта.
В режиме карты сильно уменьшаю размеры, примерно в миллиард раз, в зависимости от масштаба, в режиме реального мира ставлю объекты, которые ближе 50 км на реальном расстоянии и с реальными размерами, остальные уменьшаю и располагаю во внешней 100 км сфере.
Типа того, ага.
Разобрался, да, я правильно в итоге понял как работает 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());
То получу
(359.0, 359.0, 359.0)
(1.0, 1.0, 1.0)
Спасибо
Зачем ты используешь углы Эйлера если в юнити по умолчанию используются квантерионы?
Так он и использует Квантерионы, просто через euer.
Вот код Unity:
public Vector3 localEulerAngles
{
get
{
return this.localRotation.eulerAngles;
}
set
{
this.localRotation = Quaternion.Euler(value);
}
}
>>69658
Никто не использует Quaternions напрямую, ибо для простой записи ротации нужно нехуевые операции в уме проделать для расчета Кватерyиона:
https://www.youtube.com/watch?v=mHVwd8gYLnI
Q это то, чем Unity оперирует под одеялом, юзеру проще использовать обычные углы
> Никто не использует Quaternions напрямую, ибо для простой записи ротации нужно нехуевые операции в уме проделать для расчета Кватерyиона
Что, простите?
Где ж ты был когда я использовал Quaternion.LookRotation, Quaternion.Angle и Quaternion.Slerp? Оно, оказывается, не используется, ну надо же.
> Quaternion.LookRotation
Ну и где ты там сука расчитывал вручную Кватернион?
Оба метода принимают Vector3. Сигнатура Quaternion:
Quaternion(float x, float y, float z, float w)
Рассчитай-ка мне на коленке тут и сейчас влево-вверх на 38 градусов в Кватернионе быстра? А если в IM-чате спрошу с тайм-лимитом? Не использую готовые инструменты - у тебя полдня уйдет нахуй.
> Ну и где ты там сука расчитывал вручную Кватернион?
Ты жопой не виляй, разговор был про
> Никто не использует Quaternions напрямую
Я вот использовал именно кватернионы, да. И нет, не ручками, а средствами движка, именно для этого он и нужен.
СУКА тупая, читай что тебе пишут даун:
>>69659
>>69663
Еще раз, выблядок тупой, где ты напрямую расчитывал Кватерионы, покажи мне хоть один пример. Покажи мне свою chalk board где ты imaginary numbers sequences высчитывал?
Тебе русским языком сказано, что все значения углов, будь то Euler или AxisAngle - Unity преобразует в Quaterion internal.
Я понимаю что сегодня вечер пятницы, так что дам тебе шанс проспаться.
git submodule
ти прост лалка ничево не знаеш про кватренеоны))))))
Пришлось сделать на List<> но я не доволен. Хотелось бы на Ienumerable<>, без лишних итераций.
public List<IInvestable> getAllInvestmentsProjects(Predicate<IInvestable> predicate)
{
List<IInvestable> res = new List<IInvestable>();
getAllFactories(x => canUpgradeFactory(x.getType()) && predicate(x)).PerformAction(x => res.Add(x));
FactoryType.getAllInventedTypes(getCountry(), x => x.canBuildNewFactory(this) && predicate(x)).PerformAction(x => res.Add(x));
return res;
}
loop time в выделенном файле анимации.
Ну вот твою говноподелку пустят и что? В стиме в месяц до 1000 говноиди треша релизится, из них 1-5 ИСКЛЮЧИТЕЛЬНЫХ игр более 50к продаются, остальные даже 5-7 не дотягивают (5-7 для остального говна - это пиздей как хорошо так то)
1152x780, 0:10
надо будет точность чуть поправить.
>>68968
>Как же это все страшно...
страшно. но зато какое могущество!
>Что с тобой случилось такое?
внезапно большие проблемы с пищеварением. теперь буду разъезжать по больничкам и слушать что мне расскажут врачи.
>>68986
разумеется я тебя помню. собственно, что-нибудь интересное смог?
у меня до сих пор никакой здравой идеи нет как заимплементить память для ИИ. какой-то огромный вопрос как её реализовать.
притом и короткую для тактических решений и длительную для глобальных решений похоже придется реализовывать по разному.
>>69770
чисто так на всякий случай следует сказать. большое увлечение интерфейсами и анонимными делегатами конечно повышает читабельность кода, но GC тоже работу подкидывает. весь этот мусор в один прекрасный момент может коллапсировать.
>И кто и как будет в этот твитор попадать?
В общем я решился и начал социальную активность.
Вчера зарегал свитор и твитнул скриншот:
https://twitter.com/GamesPathfinder/status/954340832122843137
За ночь набралось 8 лойсов и 3 ретвита, часть из них даже не боты.
Кококо, сразу сдулся и передергивает.
>Ну вот видишь, смысла делать игры нету
Нет, просто ты тупой идиот, думающий что зарелизив свою пиксельговно в Стиме ты сразу станешь богам, купишь яхту и все будет заебись. Прям как 13 тысяц всех остальных девелоперов, что зарелизи свои игры в стиме, да?
http://positech.co.uk/cliffsblog/2017/06/23/your-indie-game-will-flop-and-you-will-lose-money/
тупой даун
Стим давно неактуален:
http://www.asymco.com/2018/01/08/the-ios-economy-updated/
Хочешь сказать при 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#
Что там происходит? Ты нашел нормали линий и отображаешь их с размером в distance?
>Нет, просто ты тупой идиот, думающий что зарелизив свою пиксельговно в Стиме ты сразу станешь богам, купишь яхту и все будет заебись
Нет, это ты передёргиваешь, а я об еба-заработке даже ничего не писал. Я вообще игры не делаю только 3D-ассеты продаю
Прикольно. Мне вчера с реддита народ повалил за сотню.
Ты не пробовал в web GL свою сбилдить и зарелизить?
>>69836
>внезапно большие проблемы с пищеварением
У меня тоже, лол.
>>69836
>весь этот мусор в один прекрасный момент может коллапсировать
У меня и так там цирк с конями с коллектором. Но работает. Так то это интерфейсы, имплементацию потом можно и поменять если мешать будет.
>>69842
>Что там происходит?
Обход препятствий программирует
Вообще
>Как заработок?
Игровые модели - дохло, кресла и шкафы для интерьеров проще продать. Хотя я не мегамастер вообщем-то
>Обход препятствий программирует
А usesace какой?
Navmesh в 99% будет быстрее. Впрочем, заметно это будет лишь при 90-100+ объектов или на очень слабой тачке.
>Не, не пробовал. Как оно относится с большому количеству потоков?
Которые System? Никак не относится. Потоков нет, но вы держитесь. Браузеры в одном потоке на страницу работают, по крайней мере по мнению Юнити.
Но может можно выкинуть потоки и показывать один рендер в web демке. Настройки качества только поднять.
Тогда не взлетит, у меня расчет траекторий жрет по одному потоку на крафт потом тредпул зделою.
Работающее n-body это одна из киллер-фич. Собственно, кроме него там ничего стоящего пока нет. N-body без потоков ниработает.
Если снимаешь хату, то считай половины двадцатки уже нету. И при работе 3D-макакой постоянная работа уже рай земной.
>>69852
На самом деле надо было сделать кучу текстур, но меня чёрт заставил полезть в эксперименты по нагрузке на новую видяху, хотя в 90% игр пухи с другого ракурса кроме жопы видны лишь в виде убитых лодов
Прям без маня-SOI как в ksp? Не сложновато приматам будет? Искусственные спутники с орбит не свалятся от мимо Юпитера?
Рисую обычными квадратиками в 2d, но не знаю как лучше это делать.
Пока все что придумал это юзать обычную texture2d на canvas и при изменении стейта пробегать все пиксели в текстуре (setPixel) и устанавливать нужный цвет.
Но как то это выглядит костыльно. Есть ли какие-нибудь более правильные способы? Можно ли в unity рисовать какие-то низкоуровневые примитивы типа прямоугольника, эллипса, линии типа как на canvas в android?
>Можно ли в unity рисовать какие-то низкоуровневые примитивы типа прямоугольника, эллипса, линии типа как на canvas в android?
Можно, гугли procedural mesh generation Unity
Будь мужыком, ябошь life на шейдорах! Только жпу, только хардкор! https://www.alanzucconi.com/2016/03/16/cellular-automata-with-shaders/#part1
Не, там достаточно слабое влияние.
Даже на солнечной орбите между Землей и Марсом спутник летает достаточно стабильно, близко к эллиптической орбите.
Я и на шейдерах потом заебашу(уже писал на голом ogl) просто хочу пока разобраться с гуями, спрайтами и другой 2d поебенью.
>>69861
В 2d хочу же. Кстати я не так давно гуглил по поводу mesh generation, пишут что проще генерировать в воксельной форме(в каком-нибудь другом пакете), а потом уже переводить в обычные меши. Кто-нибудь вообще в тредика пробовал продедурго что-нибудь генерировать.
Еще заране спрошу у анонов смогу ли я в юнити реализвать передвежение игрока от 1 лица по тору? Не сосну ли я на каком-нибудь этапе потому что тор не convex?
1152x780, 0:11
а хотя лол стоп. хлебнул кофе, посмотрел ещё раз и задумался. я же случайно сделал все наоборот. вот теперь - правильно. в том видео красная точка в первом пересечении, а надо то в последнем.
>>69842
не-не. лучики это инпут. условно лучик это дельта скорости для того чтобы избежать столкновения. но иногда дельты скорости могут все смотреть в разные стороны, так что допустимой скорости уклонения нет вообще. самым лучшим решением в этом случае пожалуй будет нахождение первой доступной скорости при сдвигании дельты скорости в обратном направлении. а красная точка это результат этой манипуляции.
в этом случае движение будет вместе со всеми, а не туда куда надо.
>>69846
>У меня и так там цирк с конями с коллектором. Но работает. Так то это интерфейсы, имплементацию потом можно и поменять если мешать будет.
не ну так то конечно да, но я к тому что когда пишешь этот поток сознания то ты хоть периодически думай как можно его заимплементить без генерации мусора.
но да, стоит пожелать удачи и мозгов побольше. ты полез туда где я не был, но там похоже очень интересно.
>>69850
как бы я уже написал навмеш. он ищет путь. а вот коллижен авойденс не не писал. сижу пишу.
на самом деле очень интересно, надо будет потом попробовать реализовать в 3д. например чтобы симулировать полет дронов.
Лол нет. Посмотри как тут график рисется
https://github.com/Nashet/EconomicSimulation/blob/master/Assets/EconomicSimulation/Scripts/Panels/GoodsPanel.cs
>>69868
>пишут что проще генерировать в воксельной форме(в каком-нибудь другом пакете), а потом уже переводить в обычные меши. Кто-нибудь вообще в тредика пробовал продедурго что-нибудь генерировать.
Если тебе один раз сгенерировать - то да. А если много раз то берешь Перлина и генерируешь
>>69868
>Еще заране спрошу у анонов смогу ли я в юнити реализвать передвежение игрока от 1 лица по тору? Не сосну ли я на каком-нибудь этапе потому что тор не convex?
Просто камеру крутишь и все. Не важно куда тор изогнут, лишь бы полигоны были нужной стороной наружу.
Я же правильно понимаю, что ты на плоской поверхности шевелишь карту нормалей, чтобы нарисовать рельеф?
Тут кстати прямо напрашиваются интерфейсы в виде элт-мониторов и прочих 80-х, и одиночная игра где какой-нибудь сюжетец про нех, бога, и высшую цель который передают говорящие головы с помехами, и записи об этом получаемые с заброшенных станций и спутников через стыковку и просмотр их архивов, этакий uplink в космосе. Ну и расслабляющий музон. https://www.youtube.com/watch?v=nCovkN38VZI
Так как делать второй ksp как-то маловато смысла. Всё, на этом больше не кирилльствую
Не только. Еще меш изгибаю шейдером.
https://github.com/Nashet/Interactive-Erosion
>>69871
>не ну так то конечно да, но я к тому что когда пишешь этот поток сознания то ты хоть периодически думай как можно его заимплементить без генерации мусора.
А ты вообще уверен что в нынешнем mono генерится мусор сверх нормы? Слышал это миф от старых версий..
>Так как делать второй ksp как-то маловато смысла
На самом деле есть. Тормоза убрать, мультиплеер встроить, графон завезти. Еще всякого можно накрутить. Вот как space engineers жрали с чавканьем. А это то еще уг.
>собственно, что-нибудь интересное смог?
Под грузом накопившихся логических костылей при построении плана в ГОАП выкинул его на мороз и запилил свой ХТН планнер. Пока всё устраивает.
>притом и короткую для тактических решений и длительную для глобальных решений похоже придется реализовывать по разному
Хуй знает. Вопрос сильно зависит от сложности мира. У меня вся память хранится в одном словаре, но клиенты у памяти самые разнообразные.
Ну если отбросить кирильство про сюжет с говорящими головами, на который у меня не хватит ресурсов, то в целом про стилистику элт мониторов ты угадал, в ту сторону я и пилю.
>второй ksp
Если смотреть в целом, то это именно клон ксп. Но у меня запасен список киллер-фич, из-за которых будет совпадать только жанр: конструирование на уровне "проектируем двигатель, прокладываем проводку", n-body, вид от первого лица без какого-либо интерфейса вообще с возможностью перемещаться внутри станций и нажимать кнопки и все такое прочее.
Релиз, естественно, не завтра.
>"проектируем двигатель, прокладываем проводку", n-body, вид от первого лица без какого-либо интерфейса вообще с возможностью перемещаться внутри станций и нажимать кнопки и все такое прочее
А караваны можно будет грабить? И я надеюсь если тебе космическая пыль в один глаз попадет, то половина экрана будет черной?
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);
Че ты несешь там со своими комплексными числами?
Пиздец ты просто поехавший. Съеби в /pr/, к играм твоя хуйня никакого отношения не имеет и к юнити тоже.
Как сделать, чтобы черный фон был цветом прозрачности?
Сейчас у меня при наложении спрайтов черный фон одного спрайта перекрывает другой спрайт
Я вообще другой анонас.
>Пиздец ты просто поехавший. Съеби в /pr/, к играм твоя хуйня никакого отношения не имеет и к юнити тоже.
Но ведь здесь все мои друзья..
Задача 1:
Реализовать строковый калькулятор, который:
1. Выполняет операции сложения, вычитания, умножения и деления над целыми и дробными
числами.
2. Правильно определяет порядок вычисления при использовании скобок.
3. Проверяет правильность входной строки и в случае ошибки, сообщает об этом.
4. Работает из командной строки.
Задача 2:
Написать класс MyList<T>, который реализует интерфейс IList<T>
Ебался 3-4 дня, все сделал, итог - на данный момент нам нужен более подготовленный специалист.
По делу что конкретно не сказали, видать ебаный HR не заморачивается такими вопросами, и мой вопрос решила заигнорить, собственно прошу вас прокомментировать мое творение, не поливайте говном, не претендую на то что я все сделал идеально- просто хочу знать что не так для дальнейшего развития.
1 задание : https://pastebin.com/KbNuEV7T
2 задание : https://pastebin.com/Tg0MrA0a
Navmesh + waypoints + random pick
тебе не перезвонят
>программистом игровой логики в одну компанию
>Реализовать строковый калькулятор, который:
Если бы тебя брали в компанию которая делает компиляторы это еще куда ни шло, но задавать такую хуйню в геймдеве это пиздец.
При приеме на веб-макакинг меня без тех-собеседований бросили на проект что бы на практике смог показать что умею, кстаи меня взяли на работу. Я считаю что это самое правильно тестирования для приема на роботу.
>ебаный HR
Ейчары самый бесполезный кусок говна во всей индустрии айти.
Это копия, сохраненная 16 ноября 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.