Это копия, сохраненная 26 января 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Прошлый тред: [ссылка]
Официальный сайт: https://unity3d.com/ru
Документация: https://docs.unity3d.com/ru/current/Manual/index.html
Уроки: https://unity3d.com/ru/learn/tutorials
Форум: https://forum.unity3d.com/
Магазин ассетов: https://unity3d.com/ru/asset-store
UnityWiki: http://wiki.unity3d.com/index.php/Main_Page
На Unity сделано много замечательных игр - Rust, Блицкриг 3, Pillars of Eternity, Tyranny, Kerbal Space Program и многие другие. Главным преимуществом Unity перед другими движками является его простота для одиночной разработки. Не нужно иметь целую компанию девелоперов, чтобы сделать хорошую игру. Если ты один или имеешь небольшую команду и хочешь сделать хорошую игру без претензий на ААА, то Unity станет лучшим выбором. Тем не менее, даже крупные корпорации зачастую выбирают для своих игр именно Unity.
FAQ
- Какие у Unity сильные стороны?
- Простота разработки, удобный инструментарий, кроссплатформенность, богатая документация, огромное сообщество.
- Какие у Unity слабые стороны?
- Сложность в создании фотореалистичной графики. Для графики "как в Crysis" рекомендуется взять другой движок. Хотя Unity вполне способен выдавать не уступающую любым другим движкам картинку, это требует определённого навыка от разработчика.
- На каких языках я могу писать скрипты для Unity?
- На выбор два языка - C# и UnityScript. UnityScript - это что-то среднее между JavaScript и ActionScript. Выбирай язык по своему вкусу, они оба вполне удобны, но помни, что большинство примеров написано на C#.
- Для каких жанров подходит Unity?
- Для абсолютно любых! Жанр ограничивается лишь фантазией разработчика (и его умением писать скрипты, разумеется). Можно создавать и РПГ, и стратегии, и слэшеры. Можно делать VR-проекты или Minecraft-подобные песочницы.
- На каких платформах работают созданные с помощью Unity игры?
- Windows, Linux, MacOS, SteamOS, Android, iOS, Windows Phone, PlayStation4, Xbox One, WebGL, Oculus Rift и многие другие. Полный список можно найти на официальном сайте. Таким образом, игры Unity работают на десктопах, на смартфонах, планшетах, приставках, в браузерах, VR-очках и некоторых других системах.
- Часто вижу скриншоты с красивой природой на Unity. Как такое создать?
- Очень просто! В Unity встроены удобные инструменты для создания террейна и SpeedTree для создания деревьев и готовая реализация ветра - не нужно ничего писать или скачивать и подключать плагины - ландшафт в Unity создаётся в пару кликов.
- Что такое стартер киты?
- Starter Kit - это набор скриптов и префабов, а зачастую и графических элементов для игры. Они призваны облегчить разработку игры определённого жанра и как правило разбиты по жанрам (Action-RPG Starter Kit, RTS Starter Kit, 3D Shooter Starter Kit, Space Game Starter Kit, VR Starter Kit и так далее). Также бывают стартер киты различных игровых элементов, не связанных с геймплеем (Nature Starter Kit с дополнительными природными объектами, Medieval Starter Kit со средневековыми объектами и так далее). По сути, стартер киты выполняют в разработке игры ту же роль, что и фреймворки в программировании. Однако стоит отметить, что использование геймплейного стартер кита принуждает разработчика изучать большое количество чужого кода и чужой структуры для внесения своих изменений и полноценного использования. В связи с этим большинство разработчиков предпочитает писать почти всё с нуля, получая полное понимание работы своей игры. Новичкам крайне не рекомендуется начинать знакомство с Unity со стартер китов.
- Что нужно уметь делать для создания полноценной игры, кроме Unity-разработки?
- Кроме непосредственной разработки игры на Unity, требуется также уметь создавать 3D модели (3ds Max, Blender, ZBrush), 2D рисунки (GraphicsGale, Aseprite, Piskel), текстуры (Substance Designer, NeoTextureEdit), музыку (FruityLoops, Ableton). Не обязательно учить это всё - например, в 2D играх не нужны 3D модели, а музыка необходима далеко не всегда. Также вы можете скачивать элементы для ваших игр на бесплатных сайтах. Если у вас есть деньги, то все необходимые элементы можно заказать у фрилансеров на https://www.fl.ru/ (русскоязычный) или https://www.upwork.com/ (англоязычный).
- Бесплатен ли Unity?
- Можно свободно скачивать, использовать и продавать готовые игры на Unity с лицензией Personal - это абсолютно бесплатно! Но на бесплатной версии при запуске игры будет появляться короткий стартовый ролик "Made with Unity", а также ваши доходы ограничены 100 000 долларов в год. Для снятия этих ограничений нужно приобретать платные версии лицензий Unity. В конечном итоге, платные варианты используются лишь крупными компаниями с огромными доходами, тогда как обычные разработчики в большинстве своём используют бесплатную Personal лицензию.
Обучение
- Язык
Итак, с чего же начать изучение этого замечательного движка? Прежде всего, с изучения языка. Самые основы C# можно узнать на интерактивных курсах здесь:
https://dotnetcademy.net/CSharp/Beginner
или в текстовом туториале здесь:
https://www.tutorialspoint.com/csharp/csharp_quick_guide.htm
Для изучения основ UnityScript выучи вначале основы JavaScript:
https://learn.javascript.ru/
Помни, что далеко не все элементы JS есть в US. Чтобы понять, в чём разница между этими двумя языками, прочти эту статью:
http://wiki.unity3d.com/index.php/UnityScript_versus_JavaScript
Помни, что тебе достаточно одного языка из двух и учить их оба одновременно не нужно.
- Движок
Если ты уже умеешь использовать язык, то можно приступать непосредственно к изучению движка. Крайне рекомендется купить/скачать книгу Unity in action (Unity в действии). В ней подробно описываются множество возможностей движка.
http://www.ozon.ru/context/detail/id/34792570/
Также посмотри на видеотуториалы с официального сайта:
https://unity3d.com/learn/tutorials
Если же ты не любишь видеотуториалы (или не понимаешь разговорный английский) и предпочитаешь текст, то посмотри здесь:
http://catlikecoding.com/unity/tutorials/
Тут крайне подробно описан процесс разработки и приведены примеры кода. Эти туториалы универсальны и описывают множество различных частей игры, от работы с текстурами до генерации карты мира. А вот в этом туториале описыватся разработка двухмерной игры с видом сверху:
https://www.raywenderlich.com/61532/unity-2d-tutorial-getting-started
Это будет полезно, даже если ты планируешь разрабатывать трёхмерную игру. Ни в коем случае нельзя обойти вниманием этот сборник туториалов:
https://noobtuts.com/unity
В нём подробно описывается процесс пошагового создания разных игр - двухмерных и трёхмерных.
Разумеется, все эти туториалы охватывают лишь часть возможностей Unity. Самый надёжный способ выучить Unity - это начать делать игру и по мере разработки гуглить непонятные моменты.
Шапка: http://www.writeurl.com/publish/zukmrogwv45ptyuseyol
>из-за этого проваливания он на мгновение тормозит
Так ну это сейчас внезапно пофиксилось добавлением материала с нулевым трением на мой прыгающий объект(решал проблему залипания в стену во время прыжка). Но вот это кратковременное проваливание никак не могу решить, я уже и массу и гравитацию объекта менял, игрался и так и сяк, мне надо чтобы он быстро падал, но при этом он в любом случае немного уходит кратковременно в коллайдер земли, это не красиво выглядит. ЧЯДНТ? Алсо, масса = 1, gravityscale выставляю не больше 3.
Да я смотрел, всё видно.
ищешь unity asset extractor. Найдешь годный, вкинешь сюда.
UnityAssetsExplorer, например, не все экстрактит. И не опенсорс, чтобы поправить.
Программно попробуй пофиксить. В FixedUpdate проверь, если провалился, ручками его телепортируй на ноль. FixedUpdate вызывается как раз перед просчетом физики. Авось не взорвется ничего (может надо будет переключить режим на кинематику и обратно), но я не специалист.
хуя они лого поменяли, послединй раз сидел с 5.2
>второе, нельзя использовать using Newtonsoft.Json
Дллку в папку с проектом закинь, ту что с версией NET 3.5
Да короче я додумался сменить метод обнаружения столкновений с дискретного на непрерывный и проваливаться конечно перестало. Смущает, что этот метод более затратный, ну да хуй с ним, у меня не много объектов будет в сценах
Про это я не вспомнил, да
Искал ответа в прошлом треде но он утонул.
В общем, суть такова: знакомлюсь с с#+unity.
Собрал какой-то первый мини-проектик. Аналог Flappy Bird.
Когда запускаю игру в Юнити-Scene - все играет, не лагает и вообще ведет себя так, как мне требовалось.
Сбилдил. Закинул на тестовый самсунг А5. Все очень лагает, дергается.
Анон посоветовал открыть Профайлер. Открыл - пикрилейтед. Куда глядеть дальше?
Алсо - в настройках проекта отключил вертикальную синхронизацию. Стало чуть чуть поулчше
В настройках проекта/other settings/scripting backend .net 4.6 выстави, будут тебе асинки
Бро, я запустил проект с открытым профайлером. Но немного не понимаю, в чем проблема.
Пикрилейтед - моя догадка что проблема в памяти. Но как быть дальше?
Котаны. Воспользовался Профайлером. Нашел кажется свою проблему. Дело в нагрузке на CPU. Я так понимаю этот параметр очень сильно завышен. (Vievers.FixedUpdate на пикче - это основной скрипт, в котором инициализируются объекты на сцене и т.д.). До этого он был просто Update. После замены на FixedUpdate загрузка в профайлере упала примерно на 20%.
Подскажите, как бы мне снизить данный параметр?
Заранее извиняюсь за свои нубовопросы.
В общем решил.
Проблема крылась в том, что я в основном скрипте получал ссылку на другой скрипт не кешируя его.
Требовалось везде закешировать такие вот вещи.
new = FindObjectOfType<Walking>();
поставь continuous collision detection
Логгирование можно выключить в настройках билда, вообще летать будет.
Да, полностью перестало.
Есть два предположения, почему не работает: либо нужно сетмешить в апдейте, либо я в какие-то ебеня меш оффсетаю по ошибке (оффсетать позицию текста нужно для того, что из сгенерированного по позициям большого окна текста мелкие куски-строки в маленькие кликабельные окошки засунуть). Либо ещё какая-то хуйня.
Кто-нибудь делал меш для УИ и отображал его в ректангле? Как это делается по-нормальному?
Я хочу вместо текста создать несколько маленьких текстов, некоторые из которых кнопки.
>кликабельный текст
Вот бы в юнити был юайный элемент, по которому можно кликать, и на котором был бы размещен текст...
Да не, слишком это сложно.
Разместить сверху прозрачную кнопку и не ебать мозг. А вообще разрабы юньки хуй клали на эти ваши гипертексты.
Да, ручками каждый отдельный текст исследовать и растянуть кнопочку поверх нужного словечка. Не еби мозг своими костылями, пожалуйста.
Сейчас бы кнопки создавать, когда есть эвент систем
Весь текст - одна большая кнопка, тебе лишь нужны координаты курсора и слова. У меня так тултипы в инвентаре сделаны.
Это если не хотим делать подсветку отдельных слов и т.п. Идея-то твоя норм, но у меня как бы уже всё готово, только меш в уи не отображается. Вертексы текста генерируются верно, - позиции новых окошек правильный выходят, - но с самим отображением проблемы.
Мне не нужно где-нибудь вертексы апплаить, как нужно апплаить новосозданную текстуру? Какая-то ерунда, если CanvasRenderer.SetMesh в апдейт сунуть, тоже ничего не даёт.
В чем проблема разбить текст на слова и слово сделать нодой? А потом менять аттрибуты нод.
Нет, ты один такой ебанутый. Когда мне нужна была "ссылка", я просто заебашил прозрачную кнопку.
DisableRectClipping ничего не даёт, ничего не даёт и UploadMeshData, без разницы, в апдейте или нет, CanvasRenderer банально не рендерит заданный меш.
Какие ещё переносы? Я не модифицирую генерируемый юнити текст, я его же и беру, а в нём переносов. У меня проблема не в том, как разбить, как перенести и т.п., у меня меш не воспринимается канвасрендерером.
Вот гляди. Когда юнити вбирает в себя текст, он автоматом проводит его через текстгенератор и автоматом же выводит на экран то ли в виде текстмеша, то ли в ещё каком виде, но в любом случае это - меш, который идёт в канвасрендерер. Я беру базовый текстгенератор и пытаюсь созданный им меш всунуть в канвасрендерер. По итогу ошибки никакой не выдаёт в логе, но ничего не видно ни в игре, ни в редакторе.
Помогите мне кто-нибудь, а. Я ж ебанутый, я ж не отступлю и превращу вертексы в текстуру и буду заливать текст через имейджи и спрайты.
Вот код. Укажите, пожалуйста, что в нём не так.
using System.Collections;
using UnityEngine;
public class DestroyCol : MonoBehaviour {
void OnCollisionDetected(Collision collision) {
if (Input.GetMouseButtonDown(0))
{
Destroy (this.gameObject);
}
}
}
>>81778
Ты ловишь нажатие мышки в тот самый момент, когда происходит этот твой OnCollisionDetected. Тебе нужно отдельно ловить стояние впритык, и если есть стояние впритык, то отдельно ловить нажатие мышки. Банально сделай булеан для стояния впритык, делай трю, когда OnCollisionDetected, и делай фальз, когда игрок отходит от объекта. Затем в апдейте делаешь проверку на буль стояния впритык, и если да, то проверяй на Input.GetMouseButtonDown(0)
>Ты ловишь нажатие мышки в тот самый момент, когда происходит этот твой OnCollisionDetected.
Т.е. ты проверяешь, нажали ли мышь, в тот самый фрейм, когда коллижн сработал. Поэтому и не работает.
НО, теперь возникает проблема. Когда я НЕ отпуская клавишу "вперёд" нажимаю клавишу "назад", игрок не тормозит и продолжает бежать. Мало того, при последующем отпускании клавиши "вперед", игрок прежде чем сменить направление продолжает скользить.
Ладно, тогда я добавил в предыдущее условие проверку: Input.GetAxis("Horizontal") == 0 или отпущена клавиша "Horizontal", тогда обнуляем velocity ригидбоди.
Ну при этом всё вроде бы заработало, но побегав с минуту я увидел, что всё-равно иногда игрок проскакивает и начинает скользить. Видимо при одновременном нажатии клавиши "вперед" и "назад" и затем отпускании какой-нибудь одной из них, горизонтальная ось не всегда резко переходит в ноль.
Короче, не знаю понятно ли написал, но может поможете придумать алгоритм, что бы при осуществлении движения игрока методами физ. системы, игрок резко тормозил при отпускании клавиши, и:
-если нажата клавиша "вперед" - бежим вперед
-если при нажатой клавиши "вперед" нажимается клавиша "назад" - останавливаемся.
Вообще возможно ли используя Input.GetButton("Horizontal") сделать четкое условие, что если нажаты одновременно две клавиши, то возвращаем резко ноль?
Короче отбой ребята, все это хуйня
> всё-равно иногда игрок проскакивает и начинает скользить
Я сейчас просто зашел в настройки проекта в InputManager, и там во вкладке Horizontal поднял параметр Sensitivity с 3 на 30, и все перестало проскакивать. Я так понял это скорость, с которой ось изменяется от 0 до 1, я её увеличил, и теперь быстрее проходит время с которым ось уходит в 0, и теперь успевает просчитаться обнуление моей скорости после смены направления. Правильно ли я понял?
>Полагаю, двигаешь через AddForce, в ригидбади Dynamic стоит
Да. C кинематикой все еще больше усложнится, коллизии проверять неудобней, или я не прав?
Есть у меня скрипт NodeNet, который хранит лист Node, каждая нода хранит связи с другими нодами. Получается такая сетка. Есть кастомный инспектор для этого дела, который на сцене рисует сетку в редакторе. Так вот, я хочу, чтобы по клику на Habdle-се точки открывался инспектор для неё. Хочу сделать это через Selection.ActiveObject = node. Но для этого Node должно наследоваться от UnityEngibe.Object. Наследоваться от MoboBehaviour или от ScriptableOvject - плохая идея, если наследуюсь от Object и создаю инстансы через new, возвращает null. Чеделать, пасаны?
>>81951
А если у меня в сети будет около 5000 точек, юнити не будет охуевать, когда при выборе точки будет открываться окно Project с 5000 scriptableObject-ами. Если можно их как-нибудь скрывать, такой вариант меня бы вполне устроил. Вот взять например AnimatorController, там при выборе каждого стэйта или дерева смешивания открывается его инспектор, все эти штуки BlendTree, Motion и.т.д. наследуются от Obkect. Как они создаются?
а как это влияет на то, что на первой пикче видно спрайт, а на второй он находится за сталинами?
спасибо, анон
Как это фиксить?
Это настоящие ленабутс 4?
Когда создаёшь новый скрипт, не открывай его сразу, а переключись на студию, тогда вылезет окно, мол, надо обновить список файлов в проекте. После этого скрипт корректно встанет, и всё будет подсвечиваться.
Не, квест не делаю, ненавижу квесты. Просто не хочу писать свою диалоговую систему и систему управления несколькими камерами в сцене, синхронизацию с анимацией персонажей и т.п. для создания крутых кат-сцен.
Кто работал с ассетом, как впечатления? Открытый ли код? Документация норм? Много ли багов? Какие подводные камни?
если покупать соберешься, напиши разработчику, что ты из Украины, он мне за 10$ её продал.
А если написать, что я больной дцп негр-еврей трансгендер из украины, бесплатно отдаст?
Лол, а если напишу что из России? Вообще не продаст?
>>82281
Крутая штука. Но меня все же беспокоит диалоговая система. Текст надо где-то хранить и организовать, выводить на экран побуквенно и желательно с возможностью проматывать назад. Менюшки интерактивные для вариантов выбора ответов.
Создатель приключений, главным образом, этим полезен, а не работой с камерами, звуками и анимациями.
Хочешь, я тебе свой велосипед дам попользовать? Заодно скажешь, как оно и чего не хватает, буду благодарен за фидбек. У меня там нодовый редактор есть с параметрами, условиями и ивентами на переходах
Fungus. OK, посмотрю его, может лучше подойдет.
>>82313
А что не выложишь в стор свой велосипед. Может даже бабла на этом поднимешь, если ценник задирать не станешь.
Без обид, анон, но мне для коммерции инструмент нужен, а не для развлечения. И этот инструмент должен быть с документацией, поддержкой, комьюнити и, желательно, несколькими годами разработки.
А, все. Поставил текстуру в хайг квалити и нормально стало.
Лол, да эта текстура не выглядит на 2k, мутная вся какая-то. 1к поставь и будет не хуже.
Сосачую за фунгус, пиздатый костыль.
На его нодах (корутинах) можно хоть всю логику игры слепить но зачем?.
Еще и заплатят, что бы ты не высовывался
Прошлый тред листай, читай про физдвижки.
Это атлас, вся модель одной текстурой идет.
Вот ето ты ебонат((((
class ClickableText : Text, IPointerClickHandler
{
[SerializeField]
UnityEvent m_OnClick; // это событие пропихни в реализацию интерфейса
//сижу с мобилы, дальше писать лень
}
мимоПРОбыдло
Это чтобы приватные поля показывались в инспекторе и сохранялись. Гули "юнити сериализация"
>как вертексы через канвасрендерер
Никак. Канвас рендерер рендерит только канвас итемы.
Не понимаю что ты хочешь делать? Добавь меш рендерер и все.
Вроде еще нужно режим поменять на режим с камерой.
Режим с камерой (как я понял) нужен для "существования" УИ в той же вселенной, что и нормальные 3д объекты сцены. Меш рендерер нужен для 3д объектов сцены, т.е. ты предлагаешь высунуть мою хуетень из мирка УИ в 3дмирок с дополнительной ёблей по высоте.
В принципе попробовать стоит (если других предложений нет), но переход всего УИ на другой тип камеры... ну, это будет больно. Слои не работают (а я их где-то там использую), высоту мануально выставлять, опять бояться, что рейкастер будет детектить кнопки там, где их нет.
>Канвас рендерер рендерит только канвас итемы.
Но во всех вопросах/ответах было сказано, что в канвасрендерер можно сувать меши и/или вертексы (если версия юнити старая) и что он должен рендерить. А ещё было дохуя неотвеченных вопросов, где канвасрендерер ничего не отображал.
>Режим с камерой (как я понял) нужен для "существования" УИ в той же вселенной
Для этого нужен режим world. Камера нужна, чтобы рендерить канвас камерой (например, с пост-эффектами)
>Меш рендерер нужен для 3д объектов сцены, т.е. ты предлагаешь высунуть мою хуетень из мирка УИ в 3дмирок с дополнительной ёблей по высоте.
Так ты как-бы собрался рендерить 3д объекты?
Это правильный способ. По другому ты не сделаешь. Рейкаст и т.д. можно настроить. Хотя бы добавить просто rect transform.
А вообще гугли EventSystem
>в канвасрендерер можно сувать меши и/или вертексы
Да, ты просто делаешь свой объект дочерним в иерархии и можешь использовать экранные координаты.
Ничего другого canvas в принципе и не делает
Короче параша ебаная, ему там сертефикат не нравился, потом другая неведомая хуйня вылезла. В общем скачал готовую либу с гитхаба и все завелось с первой копипасты. Завтра буду разрабатывать анус дальше.
Сложный скриптинг. Еще 3 месяца назад пытался освоить unity(c#). Всё получалось. Пусть элементарные кубики, но я их двигал по сетке сам, писал код. Хоть и простенькой но самостоятельно. Затем 2 месяца было некогда заниматься.
Сегодня не смог создать абсолютно ничего. Очень сложный скриптинг. Всё через костыли. Задача была создать на пустом холсте слайдер от (1 - 320) и добавить второй элемент text, чтобы выводить туда значение позиции Slider.
Напрямую через событие слайдера это сделать разумеется невозможно. Создал пустой скрипт добавил в него два глобальных объекта (public GameObject S) и (public GameObject T). Далее долго ломал голову как инициализировать эти переменные соответственно чтобы объект S унаследовал слайдер, а Т объект текстовое поле. Перетянуть этот скрипт на слайдер, а потом в соответствующие поля назначить Slider1 and Text1 соответственно? или как то иначе? а затем необходимо через Update считывать позицию бегунка слайдера?
Очень плохо, что нет нигде самоучителя с логически законченными программами. Разумеется чтобы они были коротенькими. Т.е. Если речь в уроке идёт о Transform. То необходимо писать целиком весь код от начала и до канца, или хотябы схемотично уазывать куда какой скрипт подключать. Не надо ограничеваться скупыми:
Урок номер 8
"Трансформация"
void Start() {
// Start the enemy ten units behind the player character.
transform.position = player.transform.position - Vector3.forward * 10f;
}
"Всё ребята молодцы, всем успехов"
Далее урок 9....
Так не учат, господа. Я никогда не стану учить новый ЯП, пока не выучу НАИЗУСТЬ примеры консольных "Хеллоувордов" того или иного языка. Идти дальше, можно лишь познав азы - на зубок. В Unity, я нигде не видел простых примеров. Либо скупое описание как в примере выше, либо сразу делают игру.
(PS. Боже, какое горе что delphi и прочие паскалеподобные IDE не могут компилировать в APK. В жизни не стал бы осваивать эти заморочки C#'ые)
Я не пытаюсь выглядеть умнее. Костылём, я называю отсутствие прямого обращения к свойству элемента(ов). Как к примеру в других IDE.
В Unity же так: Хочешь присвоить событие нажатия кнопки - пиши отдельный скрипт. Концепция сложная очень. По крайней мере для движка ионизирующегося как для новичков.
Да все мучаются с ним. Нет поддержки нормальной. Help'ы скупые. Я собственно хелпами и недоволен. У меня не к движку претензии, а к хелпам в основном. Движок может и нормальный, но освоить его должным образом, до уровня "сел и пиши игру" - оч сложно. Теми уч. материалами которые есть в об доступе. В основном все его осваивают по принципу "Я видел, так кто то делал уже".
Я собственно и не собирался делать игру на Unity. Мне необходимо было просто переписать одну из своих программ сделанную ранее под windows, чтобы пользоваться на android. Простая прикладная программа для работы с данными, в принципе ничего сложного. Чтение строк из memo и обработка нажатий кнопок. Думал просто на Unity ПЕРЕреализовать это. Помню просто что в unity есть элементы UI и чисто на кнопочках и текстовых полях думал собрать.
Освоил все по официальным докам, че там сложного-то? Забиндить событие на метод монобехевиора это блять пиздец нетривиально чтоль? От какого нибудь WPF или Vue.js ты бы наверное вообще порвался нахуй.
>но освоить его должным образом, до уровня "сел и пиши игру" - оч сложно.
Прст у вас нестыковка парадигм, а так движок не самый сложный
Скорее всего да. Именно так я тоже думал сегодня. Ты прав
Наверное я порвался бы да. Ты прав. Не спою
>Напрямую через событие слайдера это сделать разумеется невозможно. Создал пустой скрипт добавил в него два глобальных объекта (public GameObject S) и (public GameObject T). Далее долго ломал голову как инициализировать эти переменные соответственно чтобы объект S унаследовал слайдер, а Т объект текстовое поле. Перетянуть этот скрипт на слайдер, а потом в соответствующие поля назначить Slider1 and Text1 соответственно? или как то иначе? а затем необходимо через Update считывать позицию бегунка слайдера?
сделай какой-нибудь класс наследуемый от монобихейвора, сделай в нем метод типа public void OnSliderValueChange(float value). название метода похуй. тогда если ты слайдеру сунеш геймобжект с этим приклепленным компонентом и выбери этот метод сверху. теперь когда значение слайдера будет менятся то будет вызыватся тот метод и туда соваться значение слайдера.
ты бы лучше в треде вопросы задавал конкретные, а не ныл что хуйня-говно
> сделай какой-нибудь класс наследуемый от монобихейвора, сделай в нем метод типа public void OnSliderValueChange(float value)...
Спасибо за совет. Попробую. Но уже чуть позже, я уже на sketchware пилю сижу приложение. А за совет спасибо.
> .... теперь когда значение слайдера будет менятся то будет вызыватся тот метод и туда соваться значение слайдера.
Вот так я и педставлял примерно. Но я думал что необходимо событие change ловить в самом слайдере. А не создавать класс с наследованием от слайдера.
> ты бы лучше в треде вопросы задавал конкретные, а не ныл что хуйня-говно
Да стрёмно просто как-то. Вопрос ведь ламерский и я сам это осознаю. Тут ведь все уверенные пользователи unity, a я салага. Вот и очконул.
Путям копания в говнах интернета удалось установить, что это изза того что я выключил всинк.
Где-то под капотом хуюнити, все мои Time.deltatime операции делались так быстро, что были практички равны нулю.
Пришлось на старте игры захардкодить фреймрейт в 60, и теперь в билде что с всинком, что без, все работаит.
Юнитиребенок познает мир короче.
>ThreadPool.
кстати о нем. у меня когда он создает треды юнити неожиданно начинает делать что-то под капотом и фризит. в профайлере интернал говно всякое. вот тут в какую сторону смотреть я даже не знаю.
>>82913
>Вот так я и педставлял примерно. Но я думал что необходимо событие change ловить в самом слайдере. А не создавать класс с наследованием от слайдера.
но наследоваться от слайдера и не надо. наследоваться надо от монобихейвора чтобы была возможность класс прилепить на геймобжект. юнити там потом само хитро смотрит через рефлексию есть ли подходящий по сигнатуре метод, когда ты слайдеру сунеш геймобжект и компонент. и если есть то предлагает тебе его. можно конечно наследоваться от слайдера и делать так, но нахуй оно надо если у юнити такая клевая фича с делегатами уже есть. хотя был тут один интересный человек которому не нравилось как там кнопка работает.
эти делегаты можно и через код делать с помощью Slider.onValueChanged.AddListener.
кстати у юнити UI опенсорсный https://bitbucket.org/Unity-Technologies/ui можешь почитать, если интересно.
>Да стрёмно просто как-то. Вопрос ведь ламерский и я сам это осознаю. Тут ведь все уверенные пользователи unity, a я салага. Вот и очконул.
да как бы весь тред для того чтобы задавать тупые вопросы. и иногда хвастаться достижениями.
задавать тупые вопросы и отвечать на них важно. иногда не ты один не знаешь ответ на вопрос, но другим просто не так надо как тебе.
>>82916
лол даже интересно стало в каких кондициях ты такие результаты получил. я делал всякую хуйню, но такой не видел.
>лол даже интересно стало в каких кондициях ты такие результаты получил.
Я пытался заставить персонажа не двигаться, пока он полностью не повернется в сторону движения. Поэтому ввел условие, что пока персонаж не повернется, скорость равна нулю (в билде персонаж поворачивался кстати, но не двигался).
Я не знаю, что конкретно ломалось, потому что я новичок и говнокодер, пизжущий код с unity answers.
Мораль токова короче - изменение/отключение vsync в quality settings (а так же low/meduim quality в билде по дефолту) может повилять на ваши вычисления с deltatime.
Ага. Мне надо было вытащить маску из альфа-канал с 3-ого MIP'а . Пришлось вместо этого рендерить в текстуру, делать ReadPixels и так читать. Буквально тащить через анал.
> не закешировать статически что тебе надо при билде
или
> генерировать мипы динамически на ебаной мабиле, а потом их вытаскивать на проц
Какой-т пиздец, я блять даже не знаю что хуже, я бы с тобой рядом в метро не сел.
Этосамое, текстура как бы импортируется и у ней уже мипы все посчитаны. И мне как то не очень интересно тратить время на прикручивание вытаскивалки этой маски в ScriptableObject какой нибудь, всё через анальный юнитевский папйплайн. Но, блядь, предупредить могли бы всё равно.
Алсо упражнение: прочитай-как мне спрайт из Asset Bundle.
Теперь я знаю в лицо того, кто ебёт мне батарейку на самом деле нет, у меня ипхоне. Пиздец сложно вытаскивалку маски перенести в папочку Editor. Просто в ахуе, просто.
Ага. Потому что её потом надо встраивать в билд. И не говори мне что держать копию текстурки в оперативке - это прямо таки невозможный расход ресурсов и получение byte[] два раза за всю сессию из этой копии и такой же предрасчитанной чем то отличается, ага.
Есть точка А. Как найти точку Б, зная расстояние между ними и угол? Наверное вопрос из школьной программы матана. Алсо можно ли найти угол между точками относительно камеры? (Например на пике от А до Б угол ~125%)
Углы не измеряются в процентах
ну ты и поставил вопросы.
направление = new Vector2(Mathf.Cos(угол Mathf.PI / 180), Mathf.Sin(угол Mathf.PI / 180))
угол между точками относительно камеры - переведи нужное в пространство камеры и найди его. https://docs.unity3d.com/ScriptReference/Camera.WorldToScreenPoint.html
>Как найти точку Б, зная расстояние между ними и угол?
Vector3.MoveTowards(Quaternion.AngleAxis(UGOL, Vector3.up) Vector3.forward DLINA);
>Какую либу?
WebSocketSharp
Там дедло в другом было, обжект диспосед ексэпшон,не захотелось ебаться дальше.
Заинтересовался AR но появилось несколько вопросов:
1) Я могу сделать рейкаст от экрана до отрисованого объекта? Например нажал на отрисованую кнопку/объект и что-то произошло
2) Я видел варианты когда отрисованый объект крепится к рисунку на листочке или к игральной карте есть ли возможность крепить объект к любой ближайшей плоскости (игральная карта, тетрадь т.д.) и брать информацию об угле наклона объекта, его координаты етц.
3) Планирую работать с ведром, есть 2 кроссплатформенных сдк(ведро,иОС) - vuforia и 8 wall, и чисто на ведро ARCore, что лучше?
4) Есть ли вообще смысл пилить что-то на AR?
Task<T> поддерживается и для ведра?
>корутины вызываются каждый фрейм
ЧТО
Они обрабатываются каждый фрейм, вызываются один раз при StartCoruotine
https://docs.unity3d.com/Manual/BestPracticeUnderstandingPerformanceInUnity3.html
>Coroutines are best employed when dealing with long asynchronous operations, such as waiting for HTTP transfers, Asset loads or file I/O to complete.
WaitUntil
Ого, спасибо большое!
>>83560
Изначально я не думал вообще об создании игр такого жанра, однако в АР вижу реализацию примерно такой:
Есть виртуальный бордель Можно грабить корованы который отображается на любой плоскости, например стол здание можно строить, естественно в верх, нужно поднимать кэш, следить за путанами етц, во время игры можно за всем наблюдать крыша-стены определенного этажа становятся прозрачными Джва года жду такую игру
>Есть виртуальный бордель
Этот анон всё делает правильно!
AR - ебёшь Hatsune Miku у себя на кухне
VR - то же самое, но в её дворце
На ютьюбе есть охуенный видос с ней в AR. Если не забуду, притащу ссылку сегодня.
>async
Другой трэд, из которого данные таскать через жопу
Поэтому яскозал юнети-поги придумали корутину
>юнети-поги придумали корутину
Представляю, как большинство будет писать адскую смесь из корутин и ооп
корутины+ооп ( ведь ты+большинство знает только эту парадигму ) = адская смесь
А что не так?
Славо погу есть юнети и с ней возможность всё исправить!
классическим мэм ооп-мани
Думаю дальше юзать Пёрзонал, а бабло спустить на вхор.
Какии подводные?
Сифилис
Cykabliat! Об этом я не подумол!
Жду видос.
Алсо я бордель скорее, примерно, в вот таком виде представлял себе. прикрил
Хотя если сможешь, распиши, пожалуйста, более подробно как это взаимодействие должно происходить мне действительно интерестно
>AR - ебёшь Hatsune Miku у себя на кухне
AR - как название говорит, расширенная реальность.
То есть кухня твоя, а к ней добавлены игровые ништяки с привязкой к местности. В тех же очках твои кагбэ руки (в юнети они тоже game object, которые работают в связке rigid body/collider, а значит, двигая их, можно взаимодействовать с прочими объектами на сцене.
Толкнуть няшу, чтобы та ёбнулась на пол. Тут триггерится анимация, что она плачет. Если ее в течении 10 сек не пожалеть (погладить по голове теми же VR-руками, она переключится в rogue mode. Но можно теми же "руками" взять фаллоиммитатор и уебать ей им.
В конце концовэто твои больные фонтазии!
>Как сделать один огромный террейн, который бы подгружался по мере движения игрока
тормозящим как в субнаутике
Хочу грузить ассеты в игру с сервака. Могу в SceneManager.LoadScene("sex_slave_burning");
Но нужно с сервака. Поэтому вопросы:
- где быстро и дёшево захостить без СМС? Смогу в пхп
- как вам идея: ключ = имя файла. После загрузки уничтожается, значит ключ одноразовый
>Как сделать один огромный террейн
Procedural terrain generation
Или асинхронно подгружать и дропать ассеты
>где быстро и дёшево захостить без СМС?
Где угодно
>как вам идея: ключ = имя файла
Спиздил идею.
В конце концов подвигал маркер дестинейшена - идёт нормально. Вернул в старую позицию - идёт нормально.
Ощущения будто жигули ремонтируешь.
Нахуя писать свой движок, если можно просто не юзать парашу для конченых даунов навмеш, встроенный неткод и т.д., но юзать все остальное, что сделано заебися?
>>83721
>>83712
>>83717
>>83724
Прочитал/посмотрел всё это:
1) Могу сказать что на видосах хуита которую без контроллеров хрен реализуешь По поводу скана рук могу лишь сказать то что это вполне возможно но не у каждого в кармане gtx1337 i13 228gb ram
2) По поводу взаимодействия, есть два стула: нажатие на экран, нажатие на кнопки-триггеры в пространстве
1 вариант будет играться как кот-том, думаю понятно.
2 вариант будет выглядеть примерно так: https://www.youtube.com/watch?v=Fgd21lbhikU
Есть ещё вариант когда ты подходишь к персонажу и что-то происходит
>>83544 >>83702 анон
Пришёл представитель соседней секты, записывающий всех в сектанты, даже не читая посты.
хочу написать игру на юнити, но вообще не понимаю код, работу с программами и прочее, в школе где я учился информатика была никакующая, следовательно у меня даже базы нет. с чего начать изучение? книги по конкретному языку почитать? или для меня уже всё проебано и мне в геймдеве делать нехуй?
пока только сидел рисовал спрайты для своей хуйни, но к юнити не прикасался
прикоснись. базовое говно имеет порог вхождения даже дураков не понимающих английский
1. Формулируешь задачу.
2. Разбиваешь задачу на мелкие этапы.
3. Пишешь реализации мелких этапов.
4. ????????
5. Выгода.
>Могу сказать что на видосах хуита которую без контроллеров хрен реализуешь По поводу скана рук могу лишь сказать
Контроллеры типа тех, что я сделал
https://drive.google.com/file/d/0B5eCY5SALqIZdWNkbkNUNi1JUGs/view?usp=drivesdk
https://drive.google.com/file/d/0B5eCY5SALqIZLWVFaGR6SllLOFk/view?usp=drivesdk
Из этих датчиков можно и перчатку сделать в писе ковыряться
И в продолжение моего поста
В AR сам боженька как бы велел перемещаться по реальной местности, видя ее. Программе не надо "рисовать" твой аватар ни на кухне, ни в комнате. Но надо трейсить твои перемещения, чтобы виртуальные объекты, созданные в игре, видели и реагировали на тебя.
Грубо говоря, чтобы Мику поворачивалась точно на тебя и шугалась, если почувствует приближение твоих волосатых лап. Контроллеры на тебе передадут соответствующие данные твоему двойнику-невидимке на сцене в игре
Без английского будет очень-очень тяжело
Зато в треде потом можно всех еблом тыкать в релиз в стиме, пока они пилят игорей мечты.
>Где угодно
Ношёл bluehost.com
с чатиком, блэть, о насучных проблемах, блэть
Есть в раше чёнить дороже $2.95 cykablat!?
Не хочу плотить так мало блэть
>>где быстро и дёшево захостить без СМС?
>Где угодно
Поддерживают asp core 2 блэт
Это охуительно или лажа?
Мне нужно чисто по ссылке с ключом раздавать контент донатам и дропать файлики после успешного скачивания
>- как вам идея: ключ = имя файла. После загрузки уничтожается, значит ключ одноразовый
И что это даст?
МОНЕТАРИЗАЦИЯ
О
Н
Е
Т
А
Р
И
З
А
Ц
И
Я
только чоткие донаты получат по своему именованому файлу, задав комбинацию = имя файла для загрузки
Кого Adobe наебал, валенок ты тупорылый? Adobe завтавили убить флеш потому как все главные игроки заявили о том, что больше не будут поддерживать это дырявое говно.
Лучше бы сидел в своей глухой пещере и не квакал
Манямирок
Хочу понять
Bolt предоставляет полный визуальный сценарий для Unity, позволяя художникам, дизайнерам и программистам создавать механику игрового процесса и интерактивные системы без написания одной строки кода.
Он давно есть, на сколько я знаю, в нём есть проблема: если девы закинут проект и не дай бог у вас половина игры на болте сделана тогда вам придётся навсегда остаться на текущей версии юнети
>Посоны тут это, аналог блюпринтов на юнити вышел.
Привет из 2010
Playmaker существует несколько лет.
Двачую адеквата. Пользую Playmaker. Брат жив
Кстати забыл сказать тебе что твой контроллер охуеннен, правда я не представляю каким образом сделать перчатку, в смысле чтобы любой человек мог скачать твоё приложение и уже иметь возможность полноценно играть
Алсо я здесь пока что буду сидеть, буду плодить на ведро мини игры, для портфеля.
Перчатки, ясное дело, на коленке не сделаешь.Один датчик стоит 13 долларов, но он охуителен по качеству и скорости реакции. Так не просто гироскоп+акселорометр+компас, но и кастомный процессор, который делает так называемую sensor fusion. То есть по алгоритмам вычисляет из потоков данных всех трех собственно абсолютное положение в виде кватерниона. Это значение передаётся соответствующей кости.
Для перчатки надо по датчику на фалангу в идеале. Но можно и упростить.
Я больше думал о создании кастомных анимаций, которых просто нет
Ни разу не экранированые. Медный лакированный 0.3мм.
2 питание
2 данные
Эти обжие
И по одному на "chip select"
Только вот не получается ничего. Почти. Даже если я в иде-шке подключаю эту мою либу, юнька всё равно говорит, что не видит либы. Всё потому что у неё свой компилятор.
Пока придумано два варианта. Можно копировать дллку либы в юнити проект, но это херовый вариант так как после кажлого изменения либы нужно заново собирать и копировать эту дллку. Ещё можно делать символическую ссылку на дллку и тогда её вручную копировать уже не придётся. Но это тоже херовый и гдючный вариант.
Короче ваши идеи.
>юнька всё равно говорит, что не видит либы
Ну первая строчка в гугле же. Закинь либу в ассеты.
Так получится что библиотека должна будет знать о проектах, которым она нужна, а это не правильно.
Ну если ещё точнее, проект библиотеки.
Я подобную задачу решил через симлинки. Просто, быстро, никаких глюков. Из минусов, если поменялись пути то надо будет эти симлинки править, и так просто на другой машине не развернёшь проект.
По идее автоматом рекомпиляция ассембли происходит, если Юнити замечает, что используемый скрипты изменились. Скрипты должны быть в ассетах и прикручены к чему-то
Прикол в том, что в моём случае юнити не замечает изменений.
Ну заебись, теперь художникам не нужны кодеры. Лучше бы сделали такой инструмент, чтобы кодерам не нужны были художники. Например нейрочеть, которая генерирует модели и арты на основе текстового описания.
Прыщеблядство не болезнь, просто ставишь шинду и делаешь игры.
нахуй иди обратно в толстый тред
иногда пишу юнит-тесты, иногда DI, иногда хуярю по много тысяч срок в одном классе. надо же всё делать по мере надобности. а почему ты спрашиваешь?
Пол года на юнити. Про инъекцию только теорию смотрел. В текущем проекте средней величины вполне и без неё всё норм. Как и без тестов. Самый большой класс - это 1к строк, но он внутри разделён на 3 части. А так стараюсь дробить логику на довольно мелкие и, по возможности, независимые компоненты.
Без менеджера зависимостей остается только пердолинг
Да на самом деле не особо. У нас на работе 3 проекта на одном ядре. Пердолинг возникает только когда кто-то выпиливает в один из проектов какую-нибудь фичу, а потом все вдруг решают, что неплохо бы её в ядре иметь.
Есть код
if (a== null || a != null && b != c)
Я правильно понимаю что сначала выполнится a != null && b != c а потом результат сравнится с a== null?
А то кодаси мне говорит что я дурак данное выражение будет всегда тру.
Скобки ставь.
Схуяли если у && приоритет выше
Когда открываешь скрипт, пишешь переменную, например Vector3, он её не видит, не автозаполняет, сама vector3 не подсвечивается зеленым в воркспейсе как и class : monobehaviour. Также из других скриптов нельзя сделать getcomponent<class>, его там просто нет. Не знаю, с чем это связано.
лол нихуя се стереотипы
Просто сделай Reload проекта
Что бы зеленая фигура появлялась на определённом уровне, без использования Raycast и plane.
>>84659
А, понял, тебе нужно получить точку где Ray соприкасается с указанным plane?
В таком случае, у plane должен быть Collider, дабы рейкаст вернул результат. Представь себе plane - твоя посадочная площадка, у нее полюбому коллайдер будет. Вот ты рейкастишь простым лучом в нужно направлении, и получаешь резулльтат, который либо null (нет столкновений), либо возвращает RayCastHit с данным. Вот на основе этих данных что угодно твори (если нуль - то нихуя)
точку соприкосновения луча и плоскости что-ли захотел?
на http://wiki.unity3d.com/index.php/3d_Math_functions
там вроде была хуйня для нахождения этого.
https://forum.unity.com/threads/absolutely-rough-non-smooth-material-with-standard-shader.294409/
>А, понял, тебе нужно получить точку где Ray соприкасается с указанным plane?
Это у меня уже сделано, но меня интересует возможно ли это сделать без Raycast и plane, как то разработчики делают чтобы в космических стратегиях появлялся таргет на нужной высоте и месте но там нету никакого plane, просто пустое пространство.
>как то разработчики делают чтобы в космических стратегиях появлялся таргет на нужной высоте
Ну так а в чем дело? Точку относительно чего вычислять будем, знаешь? К примеру, корабль игрока - задаешь вектор направления, задаешь длину и пожалуйста, вычисляешь конец вектора относительно координат игрока.
А с металлом че делать? В жопу себе засунуть? Почему в уече френель в PBR настраивается, а в этом поделии нихуя - жрите что дают?
Походу надо править исходники стандартного шейдера, других путей нет. Влом - пиздец, пока покрасил roughness чуть менее белым - серый блик, вымывающий цвета, стал поменьше, поклал хуй.
Относительно камеры, только я не знаю какие нужны вычисления делать, чтобы можно было делать как на пикче.
дурак чтоли. я же тебе уже дал ссылку на вики. воспользуйся там LinePlaneIntersection
Сам дурак, он же сказал:
> но так как plane я не буду использовать
Я вообще не понимаю его проблему. Есть начало вектора (поз. камеры), есть направление (normalized rotation), есть желаемая длина - проецируй ни хочу.
Plane как объект в мире он использовать не хочет. а не как абстрактную хуйню выражаемую двумя векторами.
При смещении луча длина все время меняется.
Город
Размер конторы/количество юнити кодеров
Скилл-зп
На Марио висит обычный 2D Box Collider, на граунде Tilemap Collider, если повесить тоже 2D Box Collier такая же проблема.
Ну и приложу строчки кода, который отвечают за движение, может в них проблема. Я пару дней всего в Юнити, если что. Спасибо.
Во-первых, сделай combined collider for Tilemap, у тебя сейчас каждая тайле по коллайдеру на харю.
Во-вторых, вангую, что логика гравитации немного опускает трубочиста на пару пикселей вниз и он влепляется в коллайдер пола, прыжок это фиксит, конечно.
Вообще, используй двойной вид - Game Scene и Editor Scene вместе, что бы увидеть что там
Меня тоже смутило, то что там на каждый блок идет отдельный коллайдер, но как сделать его комбинированным так и не нашел. Да и сейчас гугл по запросу combined collider for Tilemap ничего не выдает. Не подскажешь?
И сейчас пытаюсь настроить физику. Первое что пришло в голову, так это повесить материал на коллайдер земли со значением Boiciness 0.0001, чтобы 100% Марио вылетал из коллайдера земли, только теперь Марио колбасит немного, если продолжать сталкиваться с блоком сбоку. Буду думать над этим.
На гиф не видно как его колбасит, но да ладно.
Да как-то не доверяю я тому, какие зп указаны на хх. Хочется узнать именно от реальных анонов.
5 лет назад
ДС
3 кодера
воннаби-сениор - 120
С тех пор ушел в ML, ибо ну его нахуй парашкинский гейдев.
Meta Language
Это древняя проблема box2d. Нужно использовать круглый коллайдер для ног
Mysticism Lesson
Ты настолько тупой, что даже не увидел выделение жирным буквы "е"? Мужеложство, а не мужеложество.
Marijuana Legalization
Men's Love
Под кроватью ещё свиней поищи.
https://www.intuit.ru/studies/courses/3487/729/info
Претендует ли на добавление в шапку?
всё что не на английском - не претендует.
Какой-то агрессивный JS-школьник.
Чтобы тебе было понятнее, префабы - это как JSON.
Вам показывать стыдно, потому как я не художник и у меня просто кубики стреляют по шарикам, но не суть. Можно ли такое показывать при приёме на работу? Сознание не потеряют от смеха? Или там надо чтоб графон, музон, постобработка и Аллах?
Да он имел ввиду прототипы из JS, хак для реюзабельности кода к ООП имеющий мало отношения.
Непонятно как в его тупой башке префабы с этим смешались.
> полагаю это зависит от того на кого ты собрался устраиваться. на погромиста или артиста
На погромиста, конечно же. Желательно на юньке, но вряд ли в нашем Зажопинске на ней что-то делают, так что пробую куда-нибудь пристроить свою задницу удалённо. Так что кужно хоть какое-нибудь обоссанное портфолио, которое потихоньку клепаю.
Хуй знает что дрочить на софтварном кодерстве. Я писал несколько хуёвин плюс курсачи и диплом, но писал их для себя. Несколько утилит для экономии времени.
>>85019
> ебанул бы чего ещё помимо тавер дефенса
Есть ещё тетрис, змейка, сапёр и ещё одна хуерга, которую даже не знаю как описать. Экспериментировал с матаном, в результате есть проект, который просто генерирует разное говно. Интересно это только мне.
Суть не в том что чего-то не хватает, меня интересует нужно ли покупать/воровать/рисовать модельки/текстурки для прототипов или же всем похуй.
И то верно.
Ладно, буду думать что ещё пиздануть.
Что там обычно в качестве тестового задания спрашивают? Чтоб, как говорится, два раза не вставать.
Хуёво знаю. Разве что MVC могу вспомнить, адаптер, медиатор, фабрику, обсёрвера и декоратора. Ну и синглтон, понятное дело.
Надо бы действительно вспомнить это дело, а то с универа уже больше 10-ти лет прошло.
броу, у меня есть парочка вопросов по поводу Адмоба. Был бы рад, если поможешь с ответами. Не оставишь почту/телеграм для связи?
Он жаждет принять в свой влажный ротик твой упругий жезл. Соглашайся.
Нужно рандомно генерировать позицию для спавна зомбака, но не ближе, чем столько-то метров от перса
чичас зомбак тупа спавниться в одной точке - у дальних ворот, и чапает за нами
> Нужно рандомно генерировать позицию для спавна зомбака, но не ближе, чем столько-то метров от перса
И в чём проблема?
Есть 4 точки
Есть точка игрока.
Вычисляешь длину вектора от игрока до каждой точки
Находишь самую удаленную и генерируешь матрицу и можешь там свой любимый рендомный алгоритм забабахать для выбора точки
К примеру, если нужно лишь в одном углу, можешь и два других включить
выбираешь рандомную точку в квадрате, проверяешь расстояние. слишком близка - повторяешь
Нуи это проверяй
>Совсем-совсем рендомную?
тут еще будет хуйня с тем, что зомбак будет спавниться и на памятниках
Если нужен вообще охуенный рендом, не привязанный к спавн-поинтам,то будет затратно. Нужно будет:
а) найти удаленную точку
б) кастнуть коллайдер размером с моба, дабы убедиться что не спавним его внутри чего-то
с) спавнить
Если с первого раза получилось то мб и в 16мс уложимся если мобов немного. А если 20-30? А если с первого раза нихуя? Каждый кас тбудет пиздец
Теперь каждый скрипт открывает в новом окне блять
asset store жи
Дискас.
программист юнити, это не вася из бирюлюво, это штучный и дорогой товар, ему ваши предложения просто оскорбительны.
По делу-то есть что скозать?
Я всегда думал, что только художнеки - обидчивые копризные пидарасы. Внезапно и мамкины погромисты туда же
Или дело в цине?
500 чего?
В день?
Что там у тебя за игра, могу БЫДЛОкодить, ~8 часов в день, результат будет прямо пропор. оплате.
Ты говори что именно тебе надо. А то вдруг ты там пилишь очередного убийцу фоллаута, за которого никто за пятихатку даже яйца не почешет.
Но ведь PM не отвергает быдлоскрипты...
Шейдер
Какая тебе хуй разница - он платит за быдлокодинг - сиди да пили. Код есть, процесс идет. Ему сдавать, а не тебе.
Первая адекватная реакция на мой пост итт
Надо взять 10 рандомных объектов из массива и выставить там этот самый bool в true.
Казалось бы - бери Random.Range от ноля до длины массива и ебошь 10 раз. Но вдруг рандом несколько раз выдаст одинаковое число.
Как максимально трушно решить эту задачу?
var x = new Random();
i = x.Next(blah); // первая генерация
int c = 0;
while (array.value != true && c < 10)
{
array.value = true;
i = x.Next(blah);
//custom shuffle if you want
c++
}
Вообще, подумай еще, а правда ли всегда ли массиве будут как минимум 10 с false
И даже если будут - чем их меньше, тем хуже алгоритм.
Правильнее да, выделять лист, но в зависимости от частоты - грязи будет много
>>85166
У листоеба памяти дохуя, каждый раз аллокацию делать. Он любит, когда при игре в 60+FPS GC начинает УБОРОЧКУ
Но вообще да, грамотное ООП-решение - это завести у объекта, который перебирает коллекцию метод, в котором будет перебираться набор уникальных рандомных значений. Внутри этого метода будет своя коллекция (ака список).
Если есть хотя бы 0.0000001% вероятности повторения того же значения
Я про это. Поэтому только рандомный выбор из оставшихся из труъ
> а правда ли всегда ли массиве будут как минимум 10 с false
Да, всегда. Или 10 или больше, но никак не меньше.
А хули ты будешь делать?
Ок, допустим у тебя есть правильно выделенный array, contiguous, 40 рыл. Ты генеришь рендом от 0 до макс. границы в lenght и добавляешь объект в отдельный List<>. А дальше что? Если выпадет опять 10, нужно проверять на Contains и в случае с List - это линейный поиск. И даже если это мелочь, у тебя все-равно будет цикл аналогичен while{} потому как проверка на Contains.
Ок, возьмем List как начальный массив и HashSet. Тут казалось бы проще, можно роллить что угодно, из List удаляешь, в hashSet хуячишь, но для каждой операции ту будешь аллокатить новый лист и потом тебе нужно будет переобавлять их обратно в начаkьный List из HashSet - эти операци тоже недешевы
ты - хуй.
Я тебя понял.
Зачем аллокатить каждый раз? Зачем удолять? Сделай лист типа ключ-значение.
Ты не можешь в логеку?
Берётся копия одного списка, суётся в список. Рандом указывает на кондедата. Тот копируется и из списка изымается. След.рандом проводится с оставшимися
>Берётся копия одного списка, суётся в список.
99 ТЫРАБАЙТ ПАМЯТИ
@
5ms Garиage Collection every 1000 frames
Чистая эссенция быдлокодинга.
можешь скачать стандартные шейдоры в https://unity3d.com/ru/get-unity/download/archive там в DefaultResourcesExtra\VR\Shaders есть SpatialMappingWireframe.shader допили его чуть напильником.
Иди читай что GC делаетс frametime и framepacing в Unity
И лучше не возвращайся, тут и так достаточно долбоебов по типу "ЮНИТИ ДЕРЬМО ТОРМОЗНУТОЕ ВСЕ ТОРМОЗИТ РЯЯЯ"
для вас сисярп сделали, а вы продолжаете байтоёбствовать в массивах
В последних юнитях завезли capsule collider 2d специально для персонажей.
Просят пройти по списку. Если используешь foreach, то тебя обоссывают и выгоняют, потому что НИАПТИМИЗИРАВАНА ПЛАХОЙ КОД ПЛАХОЙ.
>>Update лучше не засорять
>лолщто. если у тебя в update() делает больше одной вещи, ты что-то делаешь не так
Жопочтец? Жопочтец!
Я и говорю "не засорять"
>Как максимально трушно решить эту задачу?
Гляжу в дотнете такое ООП-безумие, что даже для рандома есть свой класс. Я заглянул в референс, а там вот какое есть:
>NextBytes(Byte[]) Заполняет элементы указанного массива байтов случайными числами.
Так вот тебе и трушное (байтоёбское) решение: генерируй массив байтов нужной тебе длины (равной длине массива твоих объектов) получай случайное заполнение байтами, проверяй на соответствие маске, маска должна содержать столько нулей, сколько тебе нужно. И наконец, накладывай кучкой этот массив на булевое свойство твоих объектов, где очевидно 1 = тру, 0 = нетру.
Чтобы сплеш скрин убрать из билда. Издатели такую херню не любят в играх от юнити.
Никаких циклов внутри игры, основанной на главном цикле. Если тебе нужны циклические действия - цикл у тебя уже есть. Переформатируй своё мышление под эту парадигму. Тебе нужен бесконечный спавн врагов? Ты делаешь функцию, которая добавляет одного врага, если прошло N секунд времени. Чтобы считать секунды, твоя функция принимает параметром дельту времени. Это не зависит от движка. Это везде так, где используется главный цикл.
Видимо он запутался на каком-то из этапов:
1. Resources.Load() десериализует объект из префаба, но не добавляет его на сцену (я так понимаю повторные вызовы возвращают одну и ту же ссылку, объект хранится где-то в кеше).
2. Instantiate() клонирует существующий объект и добавляет его на сцену.
>Это везде так, где используется главный цикл.
Эмм, ты из криокамеры пишешь? Просто в движках и в юнити в частности - давно уже джоп-пулы, гатхер-скаттер, системы, вотэто вот все и single-main-loop - прямой путь к core i7 в минимальных требованиях и отсосу с портом на мобилки.
Лучше так
>void Update() { if ((elapsed += Time.deltaTime) >= time) { elapsed -= time; SendMessage("OnTimer"); }}
и сохранить как компонент. Тогда можно добавить таймер к любому объекту просто добавив компонент
Ты долбоёб? Он всё правильно написал. Твой код в юнити однопоточный и будет таким еще лет 30, потому что многопоточным кодом 99% разработчиков отстрелят себе ноги. На другие ядра юнити кладет физику, скиннинг, партиклы и прочую парашу, которую кодишь не ты.
>многопоточным кодом 99% разработчиков отстрелят себе ноги
А ты у нас такой особенный из 1%? Ну-ка покажи свою многопоточную логику на правильном движке твоего выбора.
Я нет, я ж не гений-долбоеб. Но предполагаю, что кому-то из 1% может быть нужно что-то очень тяжелое посчитать на нескольких ядрах в юнити.
>Твой код в юнити однопоточный и будет таким еще лет 30, потому что многопоточным кодом 99% разработчиков отстрелят себе ноги. На другие ядра юнити кладет физику, скиннинг, партиклы и прочую парашу, которую кодишь не ты.
Юнитиговно и юнитинеосиляторы во всей красе. Концепция "ядро на систему" - это 2005-2006 год и тормозящий движок первого суприм командера. С тех пор прошло стопицот GDC, грегори уже две книги своей воды написал, охуенно-сложные системы уже для даунов разложены по полкам.
Но юнитидебилам СЛОЖНА и у них сингл-треад-луп. Теперь понятно, чего у них такое тормозное говно и почему все жалуются.
P.S. почитал, у них джобсистем только в этом году появился, а про DOD они до сих пор загадочно перешептываются как про какую-то магию. Это пиздец, они даже не понимают какое они дно.
Тебе всё равно нужен как минимум Composition Root. Алсо, без главного цикла определять более-менее точно порядок исполнения намного гемморойнее.
Джобсистем у них давно, её только в этом году пользователям дали.
Вангую - максимум что он покажет - это кластеризацию по пространству в том самом геймлупе, которого у него якобы нет и заем таски по кластерам и закономерный просос с распараллеливанием в большинстве случаев - потому что ирл кластеров будет всего два - то что и так куллится и нахуй не нужно - и то что на экране и взаимодействует практически по схеме "каждый к каждому".
>многопоточным кодом 99% разработчиков отстрелят себе ноги
Parallel.For(0, 10, () => Debug.Log("Ты - хуй"))
Очень сложна
>
>Вангую - максимум что он покажет - это кластеризацию по пространству в том самом геймлупе, которого у него якобы нет и заем таски по кластерам и закономерный просос с распараллеливанием в большинстве случаев - потому что ирл кластеров будет всего два - то что и так куллится и нахуй не нужно - и то что на экране и взаимодействует практически по схеме "каждый к каждому".
Или копипасту отсюда:
http://www.gdcvault.com/play/1020886/Killzone-Shadow-Fall-Threading-the
https://d1z4o56rleaq4j.cloudfront.net/downloads/assets/Rouwe_Jorrit_Threading_Entity_Update.pdf?mtime=20160414075714
Вот сама презенташка. Вангую >>85483
крутышка если бы не видел её так бы не петушился, потому что сам бы не допер.
DOD, хуёвый, на самом деле, паттерн, зато быстрый. Вместа множества объектов - один синглетон с полями в виде массивов примитивных типов.
Да, ecs
Покажешь - украдут!
Можно выкладывать свои тетрисы чтоб их лойсали. Охуенно, всегда мечтал.
Пока выглядит как хуйня
> connect.unity.com
Просто охуенно, пойду социоблядствовать туда со своей кириллицей может кто на работу возьмет
Например, если я в скрипте игрока дрочу его риджидбади - надо ли мне в скрипте перед дрочкой проверять есть ли на нём этот самый риджидбади? Я ж точно знаю что есть, иначе играть вообще не получится, ясен хуй что я на него этот компонент нацепил.
Как оно с точки зрения хорошего тона? Чтоб сразу привыкать.
> Сначала ты GetComponent a потом чек нулль
Да, я об этом и говорю.
То есть таки надо проверять даже если я на библии готов поклясться что этот компонент там будет всегда?
>Какой незаметный пиздец может быть, если при первом обращении дотнет выкинет тебе null reference exception красной строкой в логе?
К тому что заебешься вылавливать где этот null если nullcheck'ов НИГДЕ не будет.
Ок, тебе похуй что там в Editor'е творится и тв проглотишь nullref
А что клиенты будут в релиз-билде делать? Дрочить на exception message?
Ебаные макаки наберут по объявлениям
> заебешься вылавливать где этот null
> ЗДЕЛОЛ GETCOMPONENT
> @
> НЕ ОБРАТИЛСЯ К НЕМУ СРАЗУ ЖЕ
Хороший код, че сказать.
> тебе похуй что там в Editor'е творится
Тебе похуй что там у тебя в игре, тестировать нинужно, я понял.
> клиенты будут в релиз-билде делать
Действительно, что клиенты будут делать если у объекта игрока нету ригидбади, который 100% должен быть. Играть дальше, наверное.
Какие же тут дауны, пиздец.
> А что клиенты будут в релиз-билде делать?
Наблюдать красиво нарисованное кастомное окошечко "ой, извините, тут у плеера внезапно компонента пропала" которое ты делаешь для каждой абсолютно невозможной ситуации в коде, так? Зачем вообще в языках делают эксепшны, м? А про ассерты ты даже не слышал?
SendMessage даун проснулся, давно тебя не было. Соскучился по урине?
>которое ты делаешь для каждой абсолютно невозможной ситуации в коде, так?
Да.
Для КАЖДОЙ, где клиенту или пользователю не нужно сообщать об этом эксепшоне. Например, ты пишешь либу или фреймворк и клиент использует данную либу для запроса данных, которые он знает несовместимы с тем, для чего либо предназначена. Проиходит парсингш еррор и либа возвращает клиенту эксепшон, что бы он знал, какой он хуй.
А когда твое ебаное унылое говноподелие на Хуюнит валиться с nullref или другим экспешненгом потому как ты (а точнее -твой код), даун тупорылый, пытаешься двигать GO с Rigidbody на котором этого Rigidbody нет - ты тупой хуй.
> ты пишешь либу или фреймворк
Иди пиши либу или фреймворк по работе с данными, хули ты тут вообще забыл?
Откуда лезет столько даунов с максимализмом головного мозга, которые не написали ни одной игры, но готовы часами вещать об анти-паттернах и как их не заебывает делать нуллчеки и превращать коллекции в readonly в каждой второй строчке.
Почему в реальных конторах нигде нет такого охуительного нет паттернового кода?
Ты кроме своих постов нихуя не читаешь, дегенератина? Антипаттерн от другого дауна, такого же тупорылого как ты.
Сказали же блять что на объекте всегда есть ригидбади, всегда. Сука, как его может не быть? Очень хочу посмотреть на твой охуительный код, который проверяет что x == 4 после int x = 4; Только вот нет у тебя кода нихуя, только фантазии, уебок.
> То, что ты присобачил Rigidbody не дает гарантии, что он будет runtime
Пример, когда юнити само убьет у меня ригидбади, который я добавил в студию.
Я же не виноват, что ты настолько тупой, что сам не помнишь как ты что-то удаляешь и вынужден как даун проверять, "ой бля не удалился ли ригидбади? а может я плиту не выключил? или дверь не закрыл?". Нахуй ты вообще живешь?
> Ебись потом
Алсо, увидеть и отдебажить практически невозможный нуллреференс эксепшн - это же так сложно! Ты слепой и настолько тупой, что не умеешь этого? Нахуй ты живешь x2?
Что, если ты захочешь повторно использовать этот код с объектом без rigidbody?
Будешь копипастить?
SendMessage() обеспечивает декомпозицию компонентов.
Я ведь не просто так сказал, что GetComponent() это анти-паттерн.
SendMessage даун, иди нахуй, я уже заебался тебе ссылки накидывать какой ты дегенерат. Просто уйди уже. Если ты и нуллчек дегенерат - один и тот же даун, то мне просто всё ясно.
> повторно использовать этот код
Повторно использовать код, который работает с RigidBody БЕЗ RigidBody? Ты совсем ебанулся там?
> Будешь копипастить?
Только в манямирке дегенератов, не писавших никогда ничего сложнее змейки строить неюзабельный лес абстракций всегда лучше чем копипастить.
да можно и в бесконечной корутине вызываемой на старте.
на самом деле даже лучше, но не стоит забивать этим голову
>>85468
юнити ещё подгружает префаб при первом обращении по ссылке к нему. можно засрать производительность таким образом забавно
>>85480
лол "99% разработчиков отстрелят себе ноги". и это с тем что предлагает шарп где столько уже сделано для тебя?
>>85570
>К тому что заебешься вылавливать где этот null если nullcheck'ов НИГДЕ не будет.
можно писать RequireComponent и юнити само убедится что всё на месте. проверки на null нужны, но не тут
>>85573
> НЕ ОБРАТИЛСЯ К НЕМУ СРАЗУ ЖЕ
но обычно GetComponent делается на старте же только. и не всегда надо обращаться к нему там
допустим мне надо сделать взрыв гранаты, который разбрасывает предметы
пока ты там будешь извлекать ригидбоди я просто сделаю sphere cast и отправлю всем коллайдерам сообщение, а на толкаемые объекты добавлю компонент добавляющий force rigidbody
Смотря какой уровень скила тебе нужен.
Я-то могу, но вдруг не потяну, только время оба потеряем.
Готов отправлять SendMessage вашей хуйне.
> и это с тем что предлагает шарп где столько уже сделано для тебя?
Шарп не предлагает ничего для корректной concurrency. Concurrency - это просто только в фантазиях максималистов-первокурсников. По факту разработчики языков только недавно начали понимать, что на локах далеко не уедешь не отстрелив себе ногу - http://jordi.inversethought.com/blog/advent-of-d/#day18
>SendMessage
Ага-ага. Компилятор не может проверить что метод с таким именем вообще существует.
>Шарп не предлагает ничего для корректной concurrency. Concurrency - это просто только в фантазиях
Да так-то у Шарпа дохуя всего для минимизации проблем. Anynca/wait экосистема, семафорслим и аналоги, Read/Write Slim lock'и и абстракции в виде concurrent-коллекций.
> concurrent-коллекций
Ну это единственное, что поможет тебе не отстрелить ноги. Еще immutable collections и ФП стиль туда же. Семафоры не помогут тебе не написать скрытый пиздец, который будет дедлочиться через полгода в релизе из-за недетерминизма.
>>85637
Не имеет отношения к твоему дегенератскому подходу к однопоточному программированию в юнити.
>Не имеет отношения
да это обычный враппер над тредами с producer consumer коллекцией для сообщений. в с# такое за 10 минут делается.
никто в 2018 не будет ебаться с тредами. вам асинхронное программирование дали
> ФП стиль туда же.
Как это тебе поможет, если игра неотделима от понятия изменяющегося состояния?
Тогда уж fsm или петри.
>Ну это единственное, что поможет тебе не отстрелить ноги.
Дык Concurrent Collection как бы все-равно банальная абстракция над Rуad/Write lock'ами. Без них все-равно никуда, хуле.
> игра неотделима от понятия изменяющегося состояния
И что мешает тебе сделать это в ФП? Все делаешь через потоки данных, новый стейт времени t+1 никак не меняет стейт времени t.
> Без них все-равно никуда, хуле
Лучше писать на проверенном и оттестированном кучей юзеров фундаменте от M$ или Александреску, чем самому. А не быть самоуверенным первокурсником, у которого
> в с# такое за 10 минут делается
Да ладно, делать-то делается, проблему с конкуррент-процессингом у всех есть. Immutable collection не панацея, о их дерьме достаточно написано
Не разрушай его манямирок
>Все делаешь через потоки данных, новый стейт времени t+1 никак не меняет стейт времени t.
Когда ты думал несколько лет над формализациями игр в фп, а юный первокур решил все за 5 минут.
> Когда ты думал несколько лет над формализациями игр в фп, а юный первокур набыдлокодил флаппибёрд на юнити за два часа, выложил в аппстор и ебёт шлюх на бали
Починил, не благодари. Развелось диванных в моем гд, пиздуйте в пр нахуй, здесь игры делают.
Когда я тебя пидарну из онального рабства, и стану сам в одиночестве грабить корованы грести бабло на твоём поделии, мне же его и дебажить придётся.
Поэтому только скрепный сисярп. Соглашуть на playmaker
Звучит зоманчиво, но у тебя нет пейпела
>Это говно
Сделай лучше
Monogame живее живых, Celeste вон нан ем срубила тонны sales
А ты там и сидишь в Мухосранске и ползарплаты только за коммуналку отдаешь
[RequireComponent]
Вчера пол дня ебался, результата ноль. Мне надо код кодить, дизайн дизайнить, а я дни трачу на неведомые баги.
В гугле нашёл только безответные вопросы.
Кто-нибудь сталкивался с подобным, куда хоть смотреть? Ошибок нет никаких, во встроенном плеере всё заебись, почему на телефоне и в эмуляторе не отображается ни хуя?
Добавь Debug.Log да смотри где стопорится или выводи значения элементов канваса через ongui для сверки
Мб отрисовываешь чем-то что ведроид никак не может?
Я пробовал юзать рб но когда проверил интервал времени между касаниями к платформам всегда была небольшая погрешность (1,6-1,75)
Что с этим делать? (просто если идёт ~50 платформа, кубик не попадает на платформу)
Это должно помочь
https://academy.zenva.com/product/unity-game-development-mini-degree/
Так вот, есть у меня тестовое задание и нужно мне из списка удалить элементы по определённому условию.
Как сделать чтоб мне не поводили вялым по губам? Через RemoveAll, через foreach или через цикл?
Сорян, учил юнити по докам и их собственным туторам. Из курсов знаю только трекер cgpeers, слушаю оттуда Lynda и Pluralsight по всякому 3д моделингу.
Я бы бахнул функцию, которая принимает два List, делает второму Clear и написал бы обычный фор, который добавляет во второй список элементы по отрицанию условия.
Потому что блять пошли они нахуй ебаные оптимизаторы, у меня в конторе дошли до того, что ебали за любое выделение памяти. Если что говоришь, что на мабилках так и надо, а то GC гроб гроб кладбище пиздец.
>Посоны, пару тредов назад кто-то рассказывал что на каком-то собеседовании ананаса захуесосили за foreach вместо цикла со счётчиком.
Ты больше мемы слушай, так вообще молодцом вырастешь, дебилойд.
Тупые пидары, которые собеседовали того идиота, похоже настолько отстали от жизни, что не знают, что баг с foreach давно пофиксен в Unity.
Более того, тупые пидары вообще не знают, что IL разлагает foreach на IEnumenator. Это же блять каким дебилом надо бытб, что бы ВООБЩЕ в коде enumenator-функционал не юзать. У них и корутины подти - злоУВОЛЮНАХУЙ.
Сука терпеть ненавижу таких тупых местечковых крестяьн
Единственный вариант модифицировать коллекцию в цикле - это обратный (отрицательный) for() либо же там еще есть аналог итеративныого генератора который простые смертные нахуй не юзают.
Либо так, либо через две коллекции. Но нужно понимать, что если эту коллекцию что-то должно или может читать во время удаления (другой тред), но будет пиздец.
Пример: есть одна коллекция, read-access всегда thread-safe, если коллекция не меняется.
Thread 1: читает коллекцию
Thread 2: итератит через коллекцию (читает) и собирает лист того, что удалить
Thread 2 ждет сигнала что можно удалять (ил ждет освобождения лока\семафора)
Thread 1 завершила чтение и сигналит, что можно хуячить, брат
Thread 2 хуячит быстро
Тут с простым for() - говно вариант
>foreach выделял память до 5.5
Не 5.5 а до 5.4.3f ВКЛЮЧИТЕЛЬНО
>корутины выделяют память и сейчас
А ты у async/await state machine overhead посчитал? А у обычных тасков? И к чему твое заявление, если нет противного - что лучше? Хуй.
>> l.RemoveAll (n => !n.isMarked);
А теперь посмотри что там LINQ творит с этим и будешь удивлен.
Зависит от List и условия. Если сортирован - то мб
Вы уверены?
Но нахуя в юнити async/await, норкоман?
А что он творит? Срёт где-то?
Это не LINQ. И накодено там нормально, почитай.
https://referencesource.microsoft.com/#mscorlib/system/collections/generic/list.cs
Ладно, про 2 списка хуевое решение, у M$ заебатый код, который это делает inplace не выделяя ничего.
Будут тормоза - открываете профайлер, смотрите, где конкретно проблема, разбираетесь, фиксите.
Аллоцировал тебе темпорала в пукан.
>А не быть самоуверенным первокурсником, у которого
>> в с# такое за 10 минут делается
Но это и правда делается за 10 минут.
Алсо, в C# есть Barrier, который предназначен именно для этого, и это намного лучше сообщений.
>Слово "стек" тебе говорит о чем-нибудь?
Какой блять стэк даун тупой, ты если List с 4mil пропустишь через REmovaAll он, думаешь, тебе тоже на стеке зааллочит (куда нихуя это не влезет)? Валенок тупой
Обаллокатился с этого темпорала
> намного лучше
> аргументов нет
СендМесседж даун плз
Твоя намного лучше хуйня это семафор. С теми же проблемами. Даун.
@
Качаешь какой-нибудь стратегический тулкит чтобы разобраться
@
Пару месяцев разбираешься, охуевая с имён классов навроде GameState, GameStateOnStart, GameStateOnStartExpanded и т.п., которые делаются простой финитстейтмашин, но при этом за эти тулкиты платят огроменные бабосы и на этих тулкитах делают десятки игр
Держи.
https://assetstore.unity.com/packages/templates/systems/turn-based-strategy-framework-50282
Год назад он был бесплатный, поэтому я его и качал.
Молодец, а строчка с аллоком-то где?
Всё, что нужно знать о юнити. Дельфи-мокрописечки-ильхам 21 века.
Прочитал я наконец твою поебень и:
>D absolutely shines here!
>proceeds posting the same architecture as ReactiveRx on C# with events
Wow, КАКОЕ НОВОВВЕДЕНИЕ ПРФМО ТАКИ УБИЦАВСЕХ ЯЗЫКОФФ
Also
>goto
dropped
Ты давай, там, десткий сад заканчивай и школу, анон.
> ReactiveRx
> with events
> events
> actor model of concurrency
> events
Читать не умеешь. Rx не видел.
> goto
> dropped
Goto используется в диезе, но тебе на первом курсе препод, видимо, сказал нельзя, а до второго курса еще полгода. Classic.
https://stackoverflow.com/questions/6545720/does-anyone-still-use-goto-in-c-sharp-and-if-so-why
>Rx не видел.
Ну ото и видно.
>>85964
>Goto используется в диезе, но тебе на первом курсе препод, видимо, сказал нельзя, а до второго курса еще полгода. Classic.
Да, преподом был мужик с именем "читабельный, со смыслом, код". Всю жизнь меня учит. Тебе, вестимо, не повезло. Ты, поди, тот самый хуй, у которого "var Peremennaya" kek
И опять ни одной ссылки, ожидаемо. Пошел нахуй.
>var Peremennaya
Может кто-нибудь по-быстрому пояснить разницу между задачей List<string> s = new List<string>() и var s = new List<string>()?
Разница в количестве букв.
Здесь var лучше, потому что меньше букв, легче читать. А вот здесь var current = ProcessPoeben(); хуже чем Huita current = ProcessPoeben(); потому что в первом случае глядя на это ты не знаешь типа переменной, и приходится либо убирать var, что неконсистентно - где-то var, а где-то тип, либо вносить тип в название переменной или функции, что тупо.
Могут обоссать. Когда у тебя сильно-типизированном языке названия переменных вида currentHuita, nextHuita, aHuita, bHuita, рука сама к ширинке тянется.
Ну и опять же, есть смысл почитать мнение белых людей, а не всяких сендмесседж даунов.
https://stackoverflow.com/a/545647
Я нацепил на блок Animator нацепил на него контроллер, сделал две анимации для него(покой и прыжок при ударе головой). Анимация прыжка блока сделана через изменение Transform объекта, потом я понял, что придется менять для каждого кирпичика свойства анимации и это, по-моему, не очень.
> придется менять для каждого кирпичика свойства анимации
Не очень понимаю о чём ты. Из кирпичика с компонентом Animator ты делаешь префаб, потом у тебя все кирпичи такие, с одинаковой анимацией и одинаковыми триггерами/параметрами.
Несколько тредов назад один сумрачный гений вообще не парился и переменные на русском обзывал.
> Анимация прыжка блока сделана через изменение Transform объекта
В https://docs.unity3d.com/ScriptReference/StateMachineBehaviour.html засунул? Если нет, то там этому самое место.
А, я проебался, у тебя не кодом сделано, а через Animation, сорян.
Диез поддерживает, чому бы нет.
Видимо у меня руки из жопы и я что-то сделал не так. Кирпичи, в таком случае, работают из одной анимации BrickUp, которую я сделал для первого кирпича.
Попробуй убрать курвы для ненужных тебе Position.x и Position.z, оставив только анимацию Position.y, конечно у тебя все кубики в одно место ими анимируются. Ща сам попробую
Блять, у тебя ведь на них коллайдер и так висит, добавь простое условие обработки события, когда марио-хуярио бампится головой снизу - и не нужа никакая анимация.
Это не работает, юнити говно. Короче, суешь каждый куб в парента, внутри парента у куба координаты (0,0,0), анимируешь y, анимация анимирует все 3 компоненты, но и похуй, т.к. ты берешь и расставляешь паренты по x и z.
Вот так короч.
Но нахуя?
OnCollissionEnter/OnTriggerEnter банально делаешь чек на то, какой частью хуя Марио въебался и либо нихуя не делаешь, либо через трансформ делаешь возвратное смещение. Вешаешь скрипт, хуячишь префаб - и все.
Накой хрен тут тебе анимация вообщзе.
Очевидно, что у тебя все кирпичи на одну точку бампаются. Делай бамп релативненько к кирпичу. ХЗ, какой у тебя там код, но должно быть просто.
Анимировать кодом то, что можно и нужно анимировать подвигав кривые в редакторе - это не декларативно. Даже ООП даун не одобряет такое.
Вот это подрыв. Нахуй я вообще тут распинаюсь, помогаю кому-то сделать правильно, даю ссылки, скриншоты, если всякие дегенераты засрут всё своими
> делай бамп релативненько
вместо
http://answers.unity.com/answers/302428/view.html
Нахуя вот это вот все? Просто пиздец.
> Нахуй я вообще тут распинаюсь, помогаю кому-то сделать правильно, даю ссылки, скриншоты, если всякие дегенераты засрут всё своими
Это нормально. Хоть и заёбывает, да.
Можешь по локальным координатам вверх подбрасывать?
Так-то использовать animator для этого - это overkill. Нужно использовать новую фичу playable https://github.com/Unity-Technologies/SimpleAnimation
Буду делать через парентов, довольно просто, только Иерархию немножечко захламляет. Спасибо.
>>82713
>>82898
Может кто-нибудь детально расписать, как мне моё горе исправить? Очень продуктивненько делал разную другую чушь, отложив на потом эту проблему, но теперь пора бы и её уже решить. А то невидимые текста как-то сложновато править и нажимать, ага.
Смена рендермоде в канвасе ничего не даёт. Ядаже перелопатил код на локальные координаты везде, чтобы нормально отображалось, но бестолку.
>Продолжаю делать кликабельный текст. Вроде бы текст должен быть правильный и всё такое, но его не видно. Я создаю меш с помощью текстгенератора и несложной конвертации в треугольники заливаю в CanvasRenderer.SetMesh.
1912x712, 0:06
На префабе кубика в аниматоре поставь галочку "apply root motion", обойдёшься без родительского объекта.
В процедурной анимации есть свои преимущества. Easing. Ее легко параметризировать, менять скорость, высоту бампа.
Заебешься там свои кривые двигать.
Короче палю годноту. Сделай родительский объект cubik, а ему чайлд объект sprite, где будет твой спрайт. И анимируй чайлд объект.
Хз. Просто потестировал и ничего не происходит. Визуально ничего не поменялось.
Mesh - это обычный mesh, который ренедрится MeshRenderer компонентом.
Непонятно что тебе надо.
Ты можешь вообще не использовать канвас и изменять координаты меша через camera.WorldToScreenPoint() и наоборот.
2 камеры нужны просто затем, чтобы рендерить ui-меши одной камерой, а игру другой - чтобы не двигать ui-меши каждый раз.
Если ты добавишь меш дочерним элементом на канвас, который рендерится камерой, то ты получишь то же самое, только сможешь двигать меш сразу экранными координатами.
Ну хуй знает. Я вот сценку набросал, без этой галочки кубики пытаются прыгать только в той точке, где была сделана анимация.
А с галочкой - сам видишь как на видео.
Я хочу отобразить сгенерированный меш в УИ через загрузку в КанвасРендерер. Это просто текст, он мне нужен 2д. Пишут, что можно делать через канвасрендерер, но у меня не выходит.
1912x712, 0:05
>>86068
Вот, короче. Левый кубик прыгает там, где записывалась анимация, правый - вынесен в сторону.
Снимаю галочку и его сносит на позицию левого кубика, то есть туда, где писалась анимация.
Так что посмотри внимательнее, может ты где-то что-то упустил. Потому как лично у меня эта хуйня работает.
Ну или делай через пэрэнта, в принципе это не страшно.
Кек. Почти.
В курвах все нормально, по Y они возвращаются обратно, но почему-то продолжают висеть в воздухе.
> easing
Типы кривых, полностью настраиваемые тангенты.
> легко параметризировать, менять скорость, высоту бампа
Нинужно/делаешь 2-3 кривые/делаешь маленькую часть в скрипте, где меняешь амплитуду/скорость кривых.
> Заебешься там свои кривые двигать.
Заебешься менять циферку и ждать перекомпиляции.
Почему по-твоему все анимации в серьезных пакетах вроде Maya делают через редактор кривых и даже процедурные вещи через нодовые визуальные редакторы вроде MASH? Потому что это гораздо удобнее чем печатать 2, ой быстро, 3, ой медленно, как же заебало колесико компиляции, ааааа.
>Пишут, что можно делать через канвасрендерер
Но зачем?
Чем тебя не устраивает обычный text или йоба текст рендерер который они там купили
можешь спиздить исходники текста
https://bitbucket.org/Unity-Technologies/ui/src/a3f89d5f7d145e4b6fa11cf9f2de768fea2c500f/UnityEngine.UI/UI/Core/Text.cs?at=2017.3&fileviewer=file-view-default
>делаешь 2-3 кривые/делаешь маленькую часть в скрипте, где меняешь амплитуду/скорость кривых.
Ты сейчас про какой движок?
>Заебешься менять циферку и ждать перекомпиляции.
public float CIFERKA?
>Но зачем?
Потому что хочу знать позицию слова в тексте, иметь возможность менять коды на нужные мне картинки и т.п. и т.д. У меня большая часть кода готова, позицию знаю, вертексы все имею, но загвоздка в самом отображении.
1912x712, 0:07
Подумал, может это от того, что у тебя анимация срабатывает по событию, а у меня сразу и зациклена.
Сделал срабатывание по событию (по ЛКМ) - всё работает.
Так что ищи где чего нахуевертил.
Ну, блядь, canvasRenderer.SetMesh(workerMesh). Выше какой-то VertexHelper сидит ещё. Я не понимаю, что юнити не нравится в моём коде, ей богу.
Надо найти какой-нибудь рабочий пример и попытаться от него плясать. Мда.
Я так понял этот canvas renderer что-то вроде immediate mode'а. Там нужно еще материалы, текстуры устанавливать самому
CanvasRenderer.SetMaterial(), куда заливаем фонт, затем SetMesh(), куда суем вертексы.
На freesoundeffects.com можно тащить без регстрации
Есть ещё бесплатные, но там с регистрацией.
И еще для бесплатной озвучки - google translate.
Если бы я понимал что-нибудь из тех текстовых файлов на гитхабе и как в них ориентироваться, я бы наверное не задавал таких вопросов в треде :)
Ну и забей, эта новомодная PlayableGraphs параша все равно не нужна, тем более новичку. Любители советовать bleeding edge херню или дегенеративно-альтернативные подходы к программированию, или вопящие про оверхед в марио, лол, по которой нет ни уроков, нихуя могут просто нахуй пойти.
За 2 минуты и не написав ни одной строчки кода, пока ты не сделал нихуя, кроме визга на весь тред про оверхед как же сделать чтобы было намного лучше.
>"Вот сейчас ты забиваешь гвозди молотком. Ладно, хуй с ним, а что если это будут не гвозди, а сваи? Тот-то же (поднимает указательный палец вверх с важным видом)! А вот если бы у тебя был копёр с самого начала..."
Долбоебский подход, что в одной крайности - нет расширяемости, что в другой - сверхинжиниринг.
https://habrahabr.ru/post/153225/
И чего ты тут линканул? Типа какой-то весомый аргумент? Своих нет?
Что самое смешное, автора говнопоста сразу-же обоссали и он даже линканул это: http://stdray.livejournal.com/74041.html
Вот ведь тупой упырок, прям как ты
Хммм, наверное (если по-простому) только офф-сетить его относительно GO к которому он привязан, т.е.
- уменьшаешь на нужную величину
- смешаешь центр (в local space GO) вниз по локальной (!) оси Y. То есть даже если твоя капсула жопописькой к верху - коллайдер должен все-равно правильно смешаться
слушай, ты тупой что-ли, или школьник? на. http://rgho.st/6kcMNn66w это делается так. я тебя уже и носом ткнул и так и этак, а ты все равно не понимаешь.
Спасибо.
>слушай, ты тупой что-ли, или школьник?
Там была просто функция, я не настолько продвинутый юзер, чтобы на основе одной функции выстроить остальную логику.
тогда начни с вещей попроще чем задумал.
или если тебя ткнули носом в ответ а ты не понял что видишь то спроси "как пользоваться этой хуйнёй?". тут целый тред желающих отвечать на тупые вопросы.
твой вопрос был связан с геометрией которую в школе изучают, а ты зачем-то достал микроскоп и принялся гвозди им забивать. ладно бы хорошо забивал, так хуйню же творишь.
> Там была просто функция
Ох нихуя себе, надо же как оказалось, тут ещё и функции какие-то есть.
Больно читать такие статьи, сразу понимаешь что ты нихуя не шаришь в паттернах и вообще ты дно, а взрослые дяди делают всё совсем не так, как ты.
Паттерны - это костыли к уебищной реализации ООП в современных языках. Если ты не пишешь в каноничном ООП стиле как конченый уебан а в юнити, тащемта, ECS, например, то тебе нахуй паттерны нинужны. Вот, например, в ответе на статью http://stdray.livejournal.com/74041.html нормальный рабоче-крестьянский код без всяких ебаных паттернов.
Оба уволены и ты, и писун.
И вообще, мы сообщим коллегам в индустрии, вам больше не перезвонят.
А стране дворники нужны, между прочим!
> в юнити, тащемта, ECS, например
Ну вот в том и дело, что я в каноничном ООП не писал уже столько с универа, что половину нахрен забыл, как и все паттерны. А в юньке это всё почти не нужно, даже в официальных туториалах любой сложности никто так не пишет.
>нормальный рабоче-крестьянский код без всяких ебаных паттернов
Это и есть паттерн. Суть возражений петросяна по ссылке в том, что он умеет находить золотую середину между проектированием и живым кодингом. Перфекционистов собственно, никогда не любили. Это тех, которые детально продумывают, как будут делать свою работу, годами, веками, палец о палец не ударив. И здесь ни программирование в целом, ни какие-то из парадигм - не при чём. Перфекционист так же и топя за ECS будет прокрастинировать, рисуя красивые схемки, как у него всё шикарно получится одной строчкой, но ни единой строчки так и не напишет.
Короче. Мораль в том, что надо меньше пиздеть, а садиться и делать игоры.
>А в юньке это всё почти не нужно
Декомпильни код Cuphead и сиди охуевай, как оно не нужно.
Для сравнения:
Hollow Knight использует весьма криво имплементированный singleton
Cuphead использует наследие (абстрактные классы используются в качестве интерфейсов), подобие изоляции как в IoC .
Результат: у HK были сотни патчей (за это же время с момента релиза), Cuphead разгрузил только 2.
Не, ну наследие то понятно, сам его юзаю есть абстрактный класс юнита с базовым функционалом, общим для всех, от которого наследуются юниты разного типа уже со своими уникальным мелочами, я больше про многоэтажные схемы нахуеверченного всего остального.
Ну там так и есть, короче, ILSpy/DNspy в руки и смотри, если нужно.
К слову. у Cuphead были свои dedicated-кодеры, известные уху "разработчики" только арт да анимацию делали (ну и кириллами Чадами были)
А если бы писали на сообщениях, то патчи не понадобились вообще.
>Classic GameObject/Update approach (no calls inside) 105ms 45ms
>Classic GameObject/Update approach (no calls inside) UWP n/a 22ms
А где Classic GameObject/Update approach (no calls inside) Multithreaded? Чот попахивает рекламой и ангажементом.
Господи, такая хуйня.
Когда эти ебаные кириллы наконец поймут, что дизайн кода > +10 мс производительности, которая будет стоить в 100 раз дороже чем простой и понятный код на сообщениях.
>Когда эти ебаные кириллы наконец поймут, что дизайн кода > +10 мс производительности, которая будет стоить в 100 раз дороже чем простой и понятный код на сообщениях.
+10мс - это очень дохуя. Это минимально играбельные 30фпс вместо 20фпс. Это значит не придется кроить их на кастрации ассетов/дизайне уровня/мыльце вместо грофона.
> +10мс - это очень дохуя. Это минимально играбельные 30фпс вместо 20фпс
Щито? 10мс это 1/100 секунды. Это 59 фпс вместо 60.
Математик хуев.
геймцикл в 33мс (включая рендер) - это 30 фпс.
геймцикл в 43мс - это уже 23 фпс и неиграбельный пиздец.
И похерив производительность в пользу кококо все по архитектуре хуяк хуяк и в продакшн мне придется где то эти 10мс вырезать. Это либо придется переделывать уровень, переделывать количество объектов, урезать графоний, и прочая хуета которая в и тоге выиливается в гораздо большее время.
Только многие начинают волноваться и лепят оптимизацию 0.01мс, а большая часть копируемых из бложика в бложик советов по оптимизации в юнити направлены на оптимизацию 10 аттосекунд.
Когда начинаются проблемы, ты открываешь профайлер и переписываешь медленные скрипты.
Но не наоборот, оптимизируешь все с начала разработки делая нечитаемый пиздец.
10 мс взяты с потолка. bottleneck у 99% игр в шейдорах, а не в коде.
Очевидно, что для игор с миллионами объектами нужно оптимизировать архитектуру.
Очевидно, что этого не нужно делать для игр, в которых число объектов редко бывает больше сотни.
Оптимизация тут ровно одна - избавление от жирных объектов и несеквентального доступа, чтобы кеш дышал. Но тырпрайз-макакам похуй - они сначала запердолят архитектуру в которой пиздец и кешмисы на каждом шагу, потом пытаются свой фрактал спасать микроаптимизациями, наиболее тупые начинают думать что сисярп-тормозное говно и переносят проект на уеч, где уних сллучается ровно такой же фрактал отсоса, только еще и с сегфолтами и даже выученные simd-интринсики их не спасают.
> надо меньше пиздеть, а садиться и делать игоры
> дизайн кода > +10 мс производительности, которая будет стоить
Вот-вот. Пока мы делаем игры, сендмесседж-даун даже не знает, какое время занимает 1 цикл на 60 фпс.
>Когда начинаются проблемы, ты открываешь профайлер
Вот типичный подход тырпрайз макаки - думать после того как случился факап.
Открываешь макак такая профайлер и видит рандомные пососы при доступе к объектам. Потому что ентити-хуентити и твои объекты рандомно разбросаны по памяти рантаймом. И в зависимости от того на каком уровне кеша происходят миссы, просос достигает от незначительных наносекунд до сотен микросекунд.
Точнее, нет, макака этого подъеба не замечает и сразу весь луп меряет - получается астрономическая хуета. Видать надо оптимизировать кококо алгоритм. Макака начинает выкраивать в алгоритмах по микросекунде. Что макаке дает те самые +1-2фпса о которых макака тут же строчит батхертнутые посты про "кококо аптимизация нинужна ничего нидает, байтоебы зазаза".
При том что ебать байты то и не требовалось, не требовалось переходить на плюсы и писать далее там асмовые вставки. Всего-то требовалось подумать над данными и их размещением в памяти.
Все так, только тормоза от объектов бывают в 1 игре из 100, каких-нибудь казаках. Тут сендмеседж даун прав.
> оптимизировать кококо алгоритм
> выкраивать в алгоритмах по микросекунде
Это не так делается, обычно это происходит примерно так "бляяяяя нихуясе тут же O(N^3), пойду дам кому-то пизды"
Да, но для этого код должен быть модульным, иначе переписывание одного скрипта вызовет переписывание ещё десятка, а дальше и всех остальных.
Так что минимальные представления о архитектуре твоего проекта нужны, просто вываливать спагетти в скрипт не стоит.
>Все так, только тормоза от объектов бывают в 1 игре из 100, каких-нибудь казаках. Тут сендмеседж даун прав.
Достаточно и количества объектов с около сотни - двух на весь уровень.
Если каждый объект имеет ебическое количество полей, в которых пол, социальный класс, национальность, номер страховки, имя любимой собаки и прочее.
> около сотни - двух на весь уровень
Если ты возьмешь себя в руки и посчитаешь байтики берем 200 объектов по 50 интов в каждом это 200 50 4 = 40000 байт, а потом посмотришь на скорость современной памяти и размеры кешей, то поймешь, какой ты долбоеб.
>> около сотни - двух на весь уровень
>Если ты возьмешь себя в руки и посчитаешь байтики берем 200 объектов по 50 интов в каждом это 200 50 4 = 40000 байт, а потом посмотришь на скорость современной памяти и размеры кешей, то поймешь, какой ты долбоеб.
Берем мобилки и просос становится явным.
берём и откладываем. ты собрался на всех платформах делать парашу для могилок? нехуй смешивать платформы в кучу.
Ну почитай скорость памяти и размер кешей для мабилок уже, довн. Ты совершенно не понимаешь где и почему в играх прососы, совершенно.
Пробовал как-то, не код а кромешный пиздец просто.
Нормально. Покупай доллары.
Чому люди такi дурнi...
Планирую замутить АИ уличной шлюхи, засунуть ее в префабы и спавнить, когда мне скучно и не с кем поговорить
Потому что люди пишут не платформеры без механик, очевидно же.
Потому что Playmaker, хотя и альтернатива UE Blueprints - дико тормознутое и бажное поделие
Ml-agents: Unity Machine Learning Agents [1658 stars on Github]. Courtesy of Arthur Juliani, Deep Learning at Unity3D
Unity Machine Learning Agents позволяет исследователям и разработчикам создавать игры и имитационные среды для машинного обучения используя Unity Editor с помощью простого в использовании API Python.
https://github.com/Unity-Technologies/ml-agents
>API Python
>identation
Поэтому я и думаю про Playmaker, чтобы не пердолиться. Там чуднач подсветка состояний и переходов. Можно проектить просто на бумажке.
Питон дефакто стандарт в ML. Которое не имеет отношения к состояниям и переходам FSM.
https://pastebin.com/CVttFZ8k
Вёсла купи.
Объясни мне как ребёнку. Я в юнити тыкал полгода назад, так мне до сих пор приходят всякие туторы, но это письмо я прочитал. Сам сейчас пилю игру на рпгмейкере, как клинический художник и графоман, но т.к. логикой проблем нет, то думаю, что мог бы в графики типа блупринтов. Вот мне и интересно, это действиетльно настолько сильный инструмент, что позволит мне всю игру (платформер с элементами внки) описать без кодинга?
Да для платформеров и так полно тулкитов, только свой графон вставляй и всё.
>но это письмо я прочитал
Какое письмо, блять.
>то позволит мне всю игру (платформер с элементами внки) описать без кодинга?
Hollow Knight на 80% был сделан на PlayMaker FSM.
Правда, почти год спустя я слышал они переписывают все это дело без использования PlayMaker - слишком глючен был.
Но в целом - ответ да.
Почему Юнити такая параша, а?
> нет даже порядка уровня "вызвать везде OnDisable, потом OnDestroy"
yield return new WaitForEndOfFrame ();
>Почему Юнити такая параша, а?
Кто тебя заставляет пользоваться юнитипарашей? Бери годот и не кукарекай.
Это первое что вызвало отвращение к Юнити. Скачал. Установил. Хочу сделать проект. Мне пишут "зарегистрируйте учётную запись". Ну ебаный в рот! Закрываю нахуй это говно. Немного остыв иду на сайт Юнити. Долго регистрируюсь, подтверждаюсь. Наконец запускаю Юнити ещё раз. Создаю новый проект. Ввожу логин и пароль. Смотрю там статистика какая-то для проекта. Выключаю нахер. И в этот момент логин и пароль исчезают!!! Чувствую себя кретином. Замечательное знакомство с Юнити.
Делаю игорь для мобильных, и щас задался вопросом на какой версии "билд" делать. Большая часть была сделана на версии 5.5.5 (Про пиратка) но я проверил на 2017 и 2018 (Бесплатная лиц.) всё работает так-же.
Использую 2 ассета ценой в 30 и 60 вечнозелёных, заплатить за них мне не жалко ибо они того стоят. Меня смущают постоянные обновления ассетов и самого Unity, в которых много лишнего (для меня), и ещё их зонды со сбором статистики.
Получается есть 2 стула:
Выложить билд сделанный на пиратке со спизженными ассетами и положить хуй на всех.
Или же как порядочный лох человек заплатить за всё.
И вообще как они узнают и узнают ли пока каких-то больших денег не начнёшь рубить?
Вообщем дискач на эту тему
Так зарегал бы на левую почту. Как будто тебя анализы сдавать просят.
Я у них облако засираю своими поделками, например, а все свистелки и переделки лучше смотреть на YouTube на их же канале.
Пока бабло не начнешь грести лопатой - не узнают. А потом - поздно будет. Вот и думай.
На ассеты забей. Проверить их никак не смогут. Билди на бесплатной юнити и не еби мозг.
Coroutine выполняется асинхронно
Если хочешь, можешь юзать async/await
Или создавать отдельный тред, как foreground/background. Это реально
Корутины - это второй поток. Они не выполняются асинхронно. И они являются единственным нормальным способом написания кода с continuations в отличие от велосипедов всяких довничей с потоками и асинками.
>Они не выполняются асинхронно.
Ты можешь yield как тебе душа пожелает. Не обязательно каждый фрейм процессить.
Есть поебень типа апподила которая дёргает свои вызовы в фоновом потоке и ничерта не говорит про это в инструкциях. Счастливой отладки.
>Корутины - это второй поток.
Ты - самоуверенный и некомпетентный даун. Уйди нахуй из треда.
>Coroutines have nothing to do with Threads. Coroutine methods can be executed piece by piece over time, but all processes are still done by a single main Thread.
https://support.unity3d.com/hc/en-us/articles/208707516-Why-should-I-use-Threads-instead-of-Coroutines-
https://msdn.microsoft.com/ru-ru/library/system.threading.threadpool(v=vs.110).aspx
Главное не забывай лочить всякие массивы и списки и менять значения общих переменных через Interlocked, иначе заебешься баги ловить.
>Иначе бы у меня видеопамять потекла.
Орнул. Погугли про garbage collector в .Net, программист мамкин.
https://msdn.microsoft.com/en-us/library/dd270696(v=vs.110).aspx
Открывый хотя бы иногда документацию по классам стандартной библиоотеки, погромист мамкин.
А лучше вообще возьми за привычку по полчаса в день читать по вечерам доки, пока не выучишь все неймспесы наизусть.
>эбсолютли бегиннер левел
Подскажите, где вкладка Tools? Хули её нет и как её сделать?
>Я хуй знает, ждать овтета от ассинхронной функции в основном потоке не могу, так как фризит игру.
Зачем тебе ждать в основном потоке?
Жди в async методе.
Фича async методов в том, что они захватывают syncronization context и продолжаются в том треде, в котором были вызваны. Это сделано чтобы было удобно обновлять UI на формочках.
В принципе в юнити можно сделать точно так-же, если это уже не сделано по дефолту.
Нужно просто указать сделать и указать syncronization context треду.
Хуюк. Дебил ебучий, откуда мы знаем что там нахуевертил тот мудила, который писал этот урок? Или давай в студию тот ассет, что у него прикручен, или иди нахуй с такими тупорылыми вопросами.
Ну значит как-то хуёво импортировал, у меня вкладка появилась ещё до того как ассет полностью импортировался.
>Нужно просто указать сделать и указать syncronization context треду.
Да и не нужно, по-умолчанию возобноляет на том же потку в том же Synchronization Context UNLESS ты указал ConfigureAwait(false)
Это потому что в unity он уже установлен. Я имел ввиду установить свой, если в юнити его нет.
Только у меня после этого юнити завис. Нирикамендую async короче.
Криворукий
>Пацаны короч как вызывать функции в основном потоке из вторичного? Я хуй знает, ждать овтета от ассинхронной функции в основном потоке не могу, так как фризит игру.
Есть два стула две очереди. В одну ты пишешь команды для working thread, из второй читаешь отчеты о проделанной работе. Пиздухаешь команду в очередь, далее твой тред заннимается своими делами изредка поглядывая в ответную очередь на предмет "не сделалось ли чего".
Вот как пример, у тебя дохуища летающих мух (деревьев) и прочей параши, надо бы их откуллить шоб движок не охуел, твой основной поток (геймлуп) оценивает - "да, чет дохуя, дай-ка я напрягу другие ядрышки и дает им задачу - "вот вам каждому такой-то срез коллекции поеботы, прокатайте его через фрустум, SetVisible(false) всем неудачникам, а альфасамцам - всем выстваить по халявной анимации, о результатах доложить в очередь номер 2". Дальше геймлуп занимается своими делами - расчитывает AI там, префабы спавнит и изредка поглядывает в очередь с результатами.
Никаких проблем с синхронизацией, дедлоками и прочей парашей. Так делается у всех нормальных людей.
Ну да, действительно, я при импорте не выбрал кнопку с бекапом. Теперь есть.
>Никаких проблем с синхронизацией, дедлоками и прочей парашей.
Если главному потоку больше нечего делать кроме как ждать ответа от воркеров, а воркеры еще не выполнили свои таски - то не дедлок ли происходит, а, петушок?
Главный поток проверяет очередь сообщений неблокирующим вызовом. И вообще иди почитай что такое дедлок в вики.
В принципе, он прав, можно нахуевертить оффлоад бакграунд задач в поток и связь на сообщениях, но это стоит делать только в самом крайнем случае, когда вообще нет никаких способов снять нагрузку с цпу. Что бывает редко юнити сама куллит дохуя, без твоего участия, например. Потому что если ошибиться или сделать систему чуть сложнее, чем нужно - можно хлебнуть боли с плавающими багами, от которых ты просто охуеешь. Люди не зря пишут - что concurrency - это не просто.
>юнити сама куллит дохуя, без твоего участия, например
Тут я так понял речь об "откуллить объекты" для логики. - чтобы логика считалась только на видимых объектах, а остальные скипались.
Ради интереса замеряй сколько миллисекунд занимает цикл проверки нахождения 1к объектов во фрустуме камеры.
>Ради интереса замеряй сколько миллисекунд занимает цикл проверки нахождения 1к объектов во фрустуме камеры.
Насколько я понимаю, особо нихуя, раз все уже давно от древовидных организаций сцены отказались и теперь делается тупо брутфорс-куллингом коробок по фрустуму и дальше уже всякие рендер-бейсед техники микрокулинга типа софтварного рендера в малом разрешении (как у фростбайтов) или хардварных occlusion query.
> Monobehaviour
это когда ты скрипт пишеш там ввреху двоеточие стоит и написано Monobehaviour без этого работоть не будет
> GameObject
а это уже когда в крипте ты там пишеш допустим GameObject бла бла бла то есть уже как обьект типа там камера например
Охуительный ответ
Я так понял, GameObject содержит информацию об объекте в сцене, а Mono - информацию о поведении объекта. Хз, что это значит
Алсо, я тут навелосипедил - зря или в Юните есть искоробки такой метод?
static public IEnumerable<GameObject> AllParents(this GameObject that)
{
GameObject nextParent;
if (that.transform.parent == null)
nextParent = null;
else
nextParent = that.transform.parent.gameObject;
while (nextParent != null)
{
yield return nextParent;
if (nextParent.transform.parent == null)
nextParent = null;
else
nextParent = nextParent.transform.parent.gameObject;
}
}
Да не в том речь, я не ананимас-фелосаф, почту от Юнити скрывать не собирался. Речь о том, что там было неочевидно, что регистрация не обязательна. Если бы я щёлкнул чекбокс раньше, я бы сразу начал изучать редактор, а не тратил время на регистрацию, копя раздражение к разрабам, чтобы в конце почувствовать себя кретином, который зря регистрировался.
А почему не:
if (that.transform.parent == null) return null;
else
{
var nextParent = that.transform.parent;
while (nextParent != null)
yield return nextParent.gameObject;
nextParent = nextParent.transform.parent;
}
Хотя я все-равно не понял зачем Enumerable
Перебирать всех не обязательно в Enumerable
Чёто ты намудрил.
public static GameObject GetRootParent (this GameObject that) {
Transform nextParrent = that.transform.parent;
if (!nextParrent)
return null;
else {
while (nextParrent.transform.parent)
nextParrent = nextParrent.transform.parent;
}
return nextParrent.gameObject;
}
zis is okey, bro
Создал пустой геймобджект на сцене - это стартовая позиция. В его координатах я инициализирую игрока. Но никак не получается передать объекту rotation этой стартовой позиции. Игрок всегда появляется с rotation (0,0,0). Как же правильно передать угол одного объекта другому?
transform.rotation = point.transform.rotation;
или
transform.rotation = Quaternion.Euler(new Vector3(0, point.rotation.y, 0));
void Start ()
{
point = GameObject.Find(GameData.initPointName).transform;
transform.position = point.position;
//transform.rotation = Quaternion.Euler(new Vector3(0, point.rotation.y, 0));
//transform.forward = point.forward;
transform.Rotate(0,point.rotation.y,0);
}
Ищи где наговнокодил. Всё работает.
Двачану этого мудреца, делай по рабоче-крестьянски и не выёбывайся, юнити-тян таких не любит.
Конечно, плюсы те же, что и везде.
Благодарю, но чем плох invokerepeating?
Алсо у меня игрок стоит всегда на 0,0,0 а платформы двигаются в мою сторону
>Благодарю, но чем плох invokerepeating?
Не знаю хуже такой способ или нет. Я сам делал через invokerepeating, и получилось, что впереди появлялось дохуя объектов, которые слишком быстро удалялись(удаление обгоняло персонажа и камеру). Высчитывать точное время я не стал, и просто взял код из туториала.
Компилятор не может проверить корректность вызова.
У меня сейчас уже пофиксил была проблема когда первый вызов опаздывал на 0,333-0,5 секунды решил способом: создал переменную lastPrefab, в ней хранится позиция последнего созданного префаба, и просто + z дистации последнего префаба и рандомил x
Если делать способом как в видео хранить колво существующих префабов я обычно создавал empty в которой и создавал платформы т.е у платформ, родителем становилась empty , весил на empty скрипт и считал сколько внутри чайлдов .Lenght
Добавил AdMon в свое приложение.
Блок рекламы в футере отображается - все норм.
Блок рекламы межстраничной я запускаю в меню проигрыша.
И вот тут вопрос: иногда оно всплывает когда и требуется - в момент проигрыша поверх кнопок рестарта игры. А иногда после смерти не появляется. Оданко подгружается в момент игры.
Обосрался
А мы и не используем. Что ты такой буйный?
Полез пилить свой прожект сразу после прохождения туторов noobtuts и за это пиздец как стыдно, пользуясь гуглом и официальной документацией.
Так вот, есть какие-нибудь рекомендации по улучшению навыка кодинга?
Извиняюсь, сажу снять забыл
С дженкинсом ты опоздал лет на 10
>есть какие-нибудь рекомендации по улучшению навыка кодинга?
Опыт + чужой код + книга Совершенный код.
Иногда смотрю стримы, как другие пилят свои игры, и вижу что у них код сложнее, чем у меня, применяют всякие кодо-фишки. Я вот так не умею, то есть знаю как это делается, но применить на практике не могу, делаю какие-то глупые решения.
Тут наверное опыт решает, но как мне набраться хорошего опыта, если я пишу говно-говно код..
Вон там анон выше предложил книгу Совершенный код, много о ней слышал, наверное настало время еще раз прочитать.
Как и ты.
https://pastebin.com/RP58Zrum
Ну вот скрипт, который отвечает за движение персонажа и проверку землей под ногами.
Норм
Да лол, мне самому кажется, что делаю херню. Но как по-другому это реализовать понятия не имею
Нет, поясни
936x564, 0:05
Ладно, в этот раз - я даун. Но я найду за что еще выебать юнити, держись, сучка.
сделать 2 GameObject: один для маленького марио, другой для большого. переключаться между объектами при получении сообщения, например
Ок, попробую так сделать. Тогда придется подумать как сделать анимацию перехода от мелкого Марио к большому.
Спасибо.
> сделать 2 GameObject: один для маленького марио, другой для большого
Решение уровня сендмесседж-дауна. Просто пиздец.
У меня есть куча событий, ScriptableObject'ы, которые, на бумаге, должны хотя бы вызывать окошко посреди игры и извещать игрока о том, что он обосрался/молодец при соответствующих условиях. максимум: вызывать окошко с вариантами действия.
Вроде как всем этим событиям нахуй не надо знать, что есть какой-то там UI, потому что они просто передают туда List с описаниями для окошек, может быть на выходе принимают информацию о нажатых кнопках (и то можно с кнопки передавать это говно(?)).
Следовательно, как это реализовать? Создавать отдельный менеджер ивентов? Или где-то сделать статичный UnityEvent, на который подписан UI, и через который каждое событие будет делать Invoke(eventStuff)?
Делаешь все через MVVW идеологию. Используешь юнитиивенты как ивенты + биндинги. Например, у view model делаешь ивент "ебануть окно", подписываешь на него view (UI).
На самом деле в твоем клоне крестиков-ноликов нахуй не нужна изоляция данных, это просто отговорка что б не делать игоры а пилть супер-архитектуру.
Мне для платформера. Я себе за пару минут придумал только сделать стринговый массив с названиями сцен, а в краях экранадобавить триггеры, заходя в которые вызывается нужный элемент массива и передается в SceneManager.LoadScene
что не так? 100 лишних байт?
зато нормальное декларативное решение. я просто на объектах указываю состояние, которое ты изменяешь в коде. на каждый объект можно навесить свои компоненты (разбивани блоков, стрельба) без возни с хардкодом и проверками.
для марио это идеальное решение
А можно просто в отдельном классе держать состояние модели марио со спрайтами и коллайдерами и запиливать в стек новый экземпляр класса при поверапе. Нахуй делать ещё один гейобъект то, мм?
> что не так?
Все не так. Во-первых, ты, оопшная дегенератина, даже не подумал об аниматоре, просто потому что ты никогда на юнити нихуя и не делал. А самое главное, ты даже не пытаешься разделить представление от данных.
Любому, кто кодил хоть что-то сложнее змейки понятно, что логика паверапы, хуяпы и геймобжекты, которые находятся на уровне представления, должны быть разделены.
>>88208
> в отдельном классе держать состояние модели
Это верное решение.
Можно ли добавить на пикчу какую-нибудь маску, чтобы менять альфа-канал только по ней и делать изображение прозрачным в отдельных его частях?
С ходу могу придумать только такое решение - ты делаешь финальную маску в альфа-канале, а потом пишешь кастомный шейдер для рендера спрайтов он простой, исходные коды щейредов можно скачать в архиве загрузок Unity с параметром, который скалирует альфу от 1 до значения маски.
> аниматор на объекте, не понял тебя
У тебя два объекта, даунище. Как делать переход - хуй его знает, не проблемы оопущенца.
> декларативно
Что несет вообще? Анус себе дерни декларативно.
Покаж, интересно.
Пошли виляния жопой. Сначала кубы кодом анимировали, теперь анимацию паверапа из марио уберем или будем костылями навешивать, потому что за каким-то хуем оопущенцу понадобилось джва геймобжекта, чтобы они еблись сендмесседжами, обязательно, без этого никак. Какой же ты дегенератина, просто пиздец.
что такое анимация поверапа по твоему и почему ее нельзя сделать используя разными объекты
насколько я помню в марио просто переключается спрайт маленького-большого марио
Плохо помнишь
> почему ее нельзя сделать
Можно. И сендмесседжами можно пердолиться. И текстурки в пеинте можно нарисовать. И шуруп молотком забить.
Только вот нормальные люди, не ебанутые, делают все соответствующими инструментами. Анимации - стейт машиной аниматора. Клипы - кривыми. Паверапы - стеком эффектов в коде.
И только конченые ебанаты-сектанты везде видят повод сунуть побольше своего говна.
ты какой-то шизик.
давай проблему, я скажу как ее можно решить.
для марио 2 гейм обжекта - это лучшее иешение. факт.
алсо, в марио не поверапы, а именно разные аватары с разными поведениями. заменять аватары наиболее логичное решение
> аватары
Такого понятия нет в юнити. Всех уже заебали твои оопущенские велосипеды, сил их слушать уже нет. Иди нахуй x2.
> Такого понятия нет в юнити
Тащемта есть, но он, конечно, проебался.
https://docs.unity3d.com/560/Documentation/Manual/class-Avatar.html
В 3д есть, да, забыл.
Бамп вопросу
>Тащемта есть, но он, конечно, проебался.
>https://docs.unity3d.com/560/Documentation/Manual/class-Avatar.html
Оно устарело как уж 2 года
Всё правильно делаешь. Чтобы не снашаться с массивом, вешай логику триггера + загрузку сцены прямо на него, то есть на объект.Дай объекту название сцены. Сможешь передвигать их и между сценами
Отстёгиваешь эпплу стольник в год и ставишь ipa через itunes.
хм, наверно лучше использовать collision enter/exit, чтобы узнать, на земле ли персонаж, или в прыжке, чем рейкастить каждые 20 мс.
Если сработал exit - значит персонаж прыгнул или вылетел, если enter - земля снова под ногами.
Хотя хз, тоже новичок, надо самому попробовать
В 21 веке на ассемблере 6502 как-то не пишут, да и юнити не позволяет это. Речь про современные подходы.
Я пробовал так, но тогда получалось, что если Марио при прижке боком касается объекта с тэгом ground, то он считает, что он на земле и позволяет прыгать. А как проверять какая сторона коллайдера касается я не понял..
> юнити не позволяет
Что юнити не позволяет? Вручную спрайты анимировать собственным менеджером анимации? Написать собственный астар? Просто пиздец.
Нет будем ебать байты текстурированными квадами на голом SDL чтобы память малафьёй текла, вот так:
https://github.com/JIghtuse/cavestory-sdl2/blob/master/src/graphics.cpp
Вот ты сейчас сам не понимаешь как юнитиблядей подставил своей ссылкой на гитхаб.
https://github.com/JIghtuse/cavestory-sdl2/blob/master/src/map.cpp
Сам считай сколько строчек, сука(с)
>смотрите тут у меня 100 строчек кода, в которых массив спрайтов батчем рисуется на экране
что сказать-то хотел?
Что в спрайтовой игре без навмеша и аватара с костями никак. Иначе процедурный код. Переписывай. Также, чем больше объектов и сообщений между ними, тем намного лучше. Факт.
unity это такой toolbox. я беру инструменты из него, чтобы наиболее просто и эффективно решить задачу.
ты какой-то поехавший велосипедщик.
ничего, с возрастом и опытом это пройдет, я надеюсь.
Это не движок пещерной истории это акая-то ваннаби хуета, причем на начальной стадии.
Движок пещерной истории вот :
https://github.com/EXL/NXEngine
И так действительно в 21 веке писать не нужно.
>и аватара с костями никак
вы заебали, дауны. причем тут аватар из аниматора?
>Avatars in video games are the player's representation in the game world.
Ты код в папке ai зацени, автор даже в процедурный код не смог - у него АИ - это такая огромная простыня на каждый уровень со всеми врагами итемами, евентами и прочим .
Откуда нам знать, что этот даун >>88318
в своих ооп маняфантазиях имеет ввиду? У него любые термины могут значить что угодно, и менять значения между постами когда его в говно макнули ебалом. При этом, ему ваще похуй, что в 2д нет никакого навмеша и он там нинужен, например. Главное ебануть какие-то общие слова, декларативность там, ооп, сообщения, процедурный код плохо. В любой тред заходит, кстати, юнити, уеч, годо, даже ГЕЙМПЛЕЙ.
>меня от обилия процедурного кода затошнило.
>такие ссылки нужно под NSFW прятать
Зато игра, как ей и положено с таким графином, работает на псп, дигнуксе и прочем железе из середины 2000х.
Есть порт на сежку 16 бит (которая как ей это и положено должна тащить игру с подобным графоном):
https://github.com/andwn/cave-story-md/tree/master/src
А твои фабрики абстракций очередей сообщений будут тормозить на лоулевел-мобилках и иметь системные требования как у первого кукурузиса.
Он походу из мира интырпрайза пришел - где оверхеднутый код из фабрик абстракций - абсолютная норма, ведь можно еще и за откат с дружественной фирмой клиенту к этому говнокоду еще и топовых серваков на 4 зиона продать.
В мире геймдева, впрочем, всеп что он получит - это единицы в апсторе/плеймаркете по причине "какого хуя марево с грофоном денди тормозит на моём хуавее/айфоне4g?????"
так это по сути один огромный игровой скрипт, в котором шаг за шагом написано как должна вести себя игра.
может это и эффективно в плане производительности. вот только чтобы сделать другую игру, тебе придется писать весь этот скрипт заново.
опытный дизайнер же собирает свою игру как лего из готовых и независящих друг от друга компонентов.
о производительности должны заботиться парни из юнити. если я выбрал юнити, значит меня устраивает список платформ и я не собираюсь делать игру на сегу лол.
>может это и эффективно в плане производительности. вот только чтобы сделать другую игру, тебе придется писать весь этот скрипт заново.
И с таким подходом написано дохуища хитов.
> опытный дизайнер же собирает свою игру как лего из готовых и независящих друг от друга компонентов.
И на выходе получает 2д парашу с требованиями кукурузиса.
> о производительности должны заботиться парни из юнити. если я выбрал юнити, значит меня устраивает список платформ и я не собираюсь делать игру на сегу лол.
Единицы от разгневанных пользователей энтрилевел -смартфонов (коих большинство, тащемта) ждут тебя.
Они ведь на скриншотах увидели 2д графоний, а после установки - увидели 5 фпс и почувствовали как мобила превращается в бензиновую грелку для рук.
> чтобы сделать другую игру
Ты сначала хотя бы одну игру зделой, оопущ. Все, что видим, только пустой пиздеж.
Скорее он пришёл из мира 7б, потому что говорит двумя общими предложениями, которые увидел где-нибудь на хабре, додумывая остальное своей развитой молодой фантазией.
Я помню ещё в древние времена подобных ентерпрайзеров видел на XNA форуме.
Навмеш в 2D так-то есть. Если мне не изменяет память, лежит он какого-то хуя на гитхабе вместе с остальными плюшками.
Решение со стеком состояний было там же. Это ты полтреда меняешь у марио аватары, кидая ссылки на костные структуры.
Так тебе уже всё сказали, лол.
Почитал ваш срач и так и не понял, нахуя тебе два разных ГО для Марио. Да, это работает, да, это быстро для пользователя. Но какой в этом смысл, если стула у тебя два:
1. Дублировать код для каждого ГО. Как минимум скорости-то у них разные, всякие фаерболы ещё есть.
2. Держать свойства для ГО в контроллере. Тогда почему бы не держать там же размер коллайдера, спрайты?
Информатика только в 8-ом классе будет.
Баффы/дебаффы нормальные люди делают через стек или несколько стеков эффектов. Получил баф - положил в стек со временем. На каждом кадре обновляешь бафы/дебафы в стеке, время вышло у кого-то? Вытащил.
При любом изменении этого стека финальные параметры - по сути кеш состояния чара - посчитанные полные резисты, дамаг etc. пересчитываются из этого стека полностью - вычисляясь сверху вниз. Можно при каждом обращении к параметрам пересчитывать из стека, тогда кеш ненужен, но это медленее. Можно навешивать ивенты на изменение стека/финальных параметров, чтобы запускать соответсвующие анимации.
Таким способом можно реализовывать систему эффектов любой сложности, хоть вов, хоть пое, из-за правильного пересчета состояния перса не будет никаких проблем, например, с отменой-накладыванием процентного баффа, когда характеристики "уезжают". Делить код стоит по классам эффектов данные эффекта каждые в своем классе эффектов, по группам финальных параметров чара резы, доты, дамаг-модифаеры - выполняя пересчет стека несколькими отдельными методами, пропуская в каждом нерелевантные элементы, или деля стек на несколько если их элементы не влияют друг на друга.
Ссылки:
https://gamedev.stackexchange.com/questions/29982/whats-a-way-to-implement-a-flexible-buff-debuff-system
https://www.reddit.com/r/gamedev/comments/28oqft/a_question_or_two_about_code_and_a_buffdebuff/cid0jgt/
Ну и да, "стек" эффектов он немного не в смысле информатики 8 класса, а в смысле - "упорядоченный список". Элементы в разных случаях могут и в середину вставляться, главное чтобы был всегда одинаковый порядок вычисления статов - например, базовые статы -> скиллы + число дамаги -> скиллы +% дамаги -> шмот +число дамаги
1) Если я хочу реализовать разные заскриптованные моменты, уровня падающих с потолка ящиков когда ГГ рядом проходит или чего-то такого, мне надо для каждого такого действия свой скрипт писать?
Мне просто кажется, если таких действий наберется много, получится соответственно много скриптов разных, и это в итоге повлияет на производительность игры сильно.
2) Насчет производительности- юнити сильно страдает от разных ошибок новичка при создании 2Д игрушек? А то боюсь что так вот натворю хуйни через годик, и окажется, что оно все лагать будет как крайзис на пентиуме 4.
Пока что все, спасибо за внимание, кто ответит- лучи добра Вам.
> много скриптов разных, и это в итоге повлияет на производительность игры сильно
Число скриптов почти не влияет на производительность. Влияет что ты делаешь в Update() каждого из них. Если у тебя там просто if(IsInsideBBox(player.localPosition)), то хоть 10000 хуярь, похуй.
> юнити сильно страдает от разных ошибок новичка
Зависит от ошибок. Сишарп сам по себе компилится в очень быстрый код. Пока у тебя везде все O(N) - ваще похуй. Если у тебя начинаются вещи O(N^2) типа "посчитать каждый с каждым, на 1000 объектов", то соснешь. Или если выделять много памяти в куче, например, создавать на каждом кадре new Something[1000];
так а причем тут баффы и аватары/разные состояния марио?
баффы я сам приблизительно так и сделал бы (только добавляя GameObject).
И еще сразу добавлю- а что насчет заскриптованных сценок? Я как представлю, что надо, чтоб их сделать, так волосы на голове дыбом становятся. Как все эти штуки в правильные моменты включать, камеру двигать и все такое. Это ж какие скрипты должны быть большие походу...
Кто сталкивался с таким, как это вообще реализуется, сильно тяжко?
Понял, точно, С# же быстрый, совсем забыл за это. А насчет тысяч обьектов это точно не про меня, вроде по мелочи всего накидал.
Спасибо большое за ответ.
>"стек" эффектов он немного не в смысле информатики 8 класса
Но для марио конкретно лучше стек. Получаешь поверап, в стек закидывается новое состояние марио, к которому можно обращаться. Время действия поверапа закончилось - стейт поверапа убирается сверху и марио возвращается в стейт, в котором был до этого.
Задекларированно.
> Время действия поверапа
Тащемта поверап там не по времени, а до первого дамага. Что можно триггером этого самого дамага и отследить.
> О ГОСПОДИ ОН СОЖРАЛ ЛОЖКУ ГОВНА, БОЖЕ Я СЕЙЧАС ПРОБЛЮЮСЬ
> почему вы не понимаете, что для меня это ничего не стоит? я и кастрюлю говна съем!
ты заебал. ты не понимаешь, что это такой дизайн юнити: все есть объекты и обмен сообщениями. сами авторы движка сделали такой фреймворк и нужно ему следовать.
нахуя ты свою процедурную ссанину тащишь в юнити? иди пиши на своем SDL супер-быстрые программы.
Ты ебанат, тебе сказали уже 25 раз, что в юнити ECS, сука. И компоненты - это не геймобжекты, пидор ты шелудивый. И сендмесседж - ебанутое наследие десятилетней давности, когда в юнити еще была параша вроде unity script и boo. Конченый ты дегенерат.
> обмен сообщениями
Никаких сообщений в юнити из коробки нет. Есть только вызовы функций, которые идут в стек, и юнитиивенты, которые идут в стек. Насчет SendMESSAGE:
SendMessage() is at least 100 times slower than calling a function directly, and this number increases as more scripts and functions are available on the object. If you can find the script you need ahead of time, do so and then call the function directly.
>>88456
Да вы дауны тупые, слушайте больше рендомных говноедов на анонимной имидж-борде для имбецилов-девственников.
Вон, разраб Celeste недавно код PlayerCOntroller зарелизил, там вообще пиздец творится. А чувак ведь игры 20 лет делает и вообще, живет этим так нехуево (не Нотч, но сотни тысяч продаж имеет)
А теперь ложите 2+2 и поймите, что похуй, как написано, главное что работает и приемлимо. Так всегда в гейдеве. А стремиться к идельаному коду можно всю жузнь
>разраб Celeste недавно код PlayerCOntroller зарелизил, там вообще пиздец творится
ну это понятно. единственное в чем автор этого говна хорош - это в пиаре.
я честно говоря прихуел от того, что у дженерик платформера с пикселями на пол-экрана в 2018 году столько внимания. да даже геймплей митбоя был интереснее.
кому автор чемоданы заносил, не понимаю.
или герой его игры - трансгедер-гей?
>похуй, как написано, главное что работает и приемлимо
программирование - это ремесло. и как человеку, посвятвишиму свою жизнь этому - мне не похуй, как написано.
речь о профессиональном искусстве. я тут говорю о профессионализме, а не о зарабатывании денег.
качество кода не измеряется заработанными деньгами, это вообще 2 разные плоскости.
но ведь даун это ты.
какой-то дурачок привел привел с хуевым кодом, которая заработала много денег как образец для подражания.
1. это не аргумент, потому что такие - это единичные исключения из правил. и если анон наговнокодит хоть 10 таких celeste, он не заработает и 10% ее прибыли.
2. умение писать хороший код всегда лучше умение писать хуевый код. это: быстрее, дешевле, надежнее (меньше багов)
нужно стремиться писать хороший код, а не тешить себя манямирком о миллионах долларов, написав и продав кусок говнокода.
что не так?
Ну так пиздуй в /пр/, даунито.
>нужно стремиться писать хороший код
>сделаю по копии геймобжекта для каждого случая и буду их менять)))))))))))
Поинт Celeste в том что геймплей > код. Достижение хорошего геймплея плохим кодом (неизбежно при итерациях) лучше чем хороший код без геймплея. Плохой код без геймплея это червь-пидар конечно.
Так игры не про это.
У тебя код — это работа, манифестация труда. А у геймдева это инструмент, ничего больше.
Можно сказать, что тут движок обсуждают и что чувак с клоном Марио тот ещё долбоеб, но какая разница, если пользователь не заметит, а Марио-кун продолжит лепить говно.
Кстати да, мудрая мысль.
Код- прежде всего инструмент для геймдизайнера.
Конечно, если ты кодер в геймдев компании большой и работаешь над ммо нового поколения, то да, код грамотный там будет очень важен.
А так, если ты делаешь платформеры, то примитивного кода вполне достаточно, работает- и то хорошо.
А уже со временем стоит развивать свое мастерство.
И решать, что для тебя важно качать, кодерство или рисование, или может быть, ты просто генератор гениальных идей, и тебе все это не надо.
> работает- и то хорошо
Нет. На 2 kloc макарон ты уже плаваешь в багах и не можешь добавлять новые фичи, охуеваешь и бросаешь гейдев к хуям. Кодинг - самая неблагодарная и выматывающая часть, минимизировать проблемы в ней необходимо, иначе перегоришь.
У меня в одной игре 900 классов было написано. А мог бы с пользой потратить это время.
Хоспале, это что за игра такая? РПГ небось?
У меня вот другая проблема- я начинаю только с юнити разбираться, и меня мучает чувство, что я делаю что-то не так.
В основном касательно кода, так вот сижу, мудрю скрипт какой, и все время мысля летает вокруг, типа я все не так делаю и неправильно, и потом оно рано или поздно перестанет работать и запускаться.
Уот. Все наоборот в общем.
хороший код = простой код.
пример с кодом марио https://pastebin.com/RP58Zrum сложный и чем больше поверапов, стейтом будет, тем более код будет походить на лапшу с сотнями строк.
пример с двумя объектами простой. проще нельзя придумать.
Да мне так вообще пох, я буз понятия что там такое ООП, ECS, хуялы-муялы, DI и прочая чепуха. Я выучил синтакс сисярпа и хуячу как знаю.
Я и до этого не заморачивался особо, а теперь каждая строчка быдлокода удовольствие доставляет - так и вижу как на другом конце земли свинорылый упырок с жиру бесится.
Лол, я так три дня думал, как мне хоть как-то запилить взаимодействие между двумя компонентами. Набросал что-то от балды, потом код особо не открывал, но все в уме перебирал, какие вообще варианты есть. Только потом понял, что все уже написано, обдумывать нечего.
манифестация труда программиста - это программа.
ты собрался делать программу не умея программировать и не желая учиться. ты или очень самоуверенный или очень глупый.
ты не понимаешь что-ли, что это как собраться нарисовать картину не умея рисовать? твои навыки - это твои инструменты. без навыков рисования ты в лучшем случае нарисуешь палочного человечка. без навыков программирования все твои ИГРЫ МЕЧТЫ будут оказываться клонами марио и примитивным платформерами.
"Игра мечты" — это бред. Когда геймдев думает про игру мечты, у него там явно не простенький платформер всплывает в голове.
Я вот хочу РПГ с открытым миром, чтобы была генерация мира как в Dwarf Fortress и пачка свойств для культур, которые будут собираться в страны. И все это с хардкорной боевкой. И магией. И стволами.
Охуенно ли это? Наверное. Сделаю ли я это один? Да ни за что в жизни.
Я это к тому, что геймдизайнер должен понимать лимиты кода и среды разработки, но ему важен результат, а что там под капотом — не настолько важно. Важны иммерсивность, играбельность, геймплей.
С таким же успехом можно перекатится в /pa/ всем тредом и обсуждать разные стили графона.
если твои лимиты - это рисовать палочных человечков, то твои геймдизайнерские проекты будут однообразными, мягко говоря.
это прямо влияет на результат
Ты не сравнивай дома с апельсинами.
На примере других игр как минимум я знаю, что можно сделать платформер с ролевой системой и процедурной генерацией. Типа Dead Cells, например.
Я не придумываю в голове систему и думаю: "Надо посмотреть, можно ли написать это кодом". Я прекрасно знаю, что код умеет делать все эти вещи, мне просто нужно нагуглить какой-нибудь паттерн и с чем его едят, сесть и сколотить игру.
Поэтому есть тенденция на накликивания вещей мышкой, поэтому вообще есть удобный GUI: потому что Unity — это инструмент геймдизайнера, а никак не программиста. Программированием гемдиайнер помогает себе создать тот user experience, который он хочет. Безусловно, если делать кучу процедурщины и сложные ролевые системы, потребуются дополнительные знания, но они опять же гуглятся. Или, в конце-концов, можно просто найти человека, который все это сделает, потому что он шарит в коде, а не в играх.
И я понимаю, что чувак с Марио моет загнать себя в проект из дошираков, но при масштабах его поделки это не имеет значения. Марио прыгает и хорошо бегает, гумбы приятно давятся — вот это важно.
Когда он возьмется за более серьёзный проект, он и так поймёт, какой он был идиот и как надо было сделать изначально.
Да, очень просто делать два объекта, копируя всю логику, а в случае добавления стейтов добавлять ещё гейобъекты, копируя всю логику снова.
Простата как есть.
Отбой, нашел статью.
В юнити то ассетов побольше будет. А игру ты с пижжеными модельками все равно не зарелизишь, че радуешься то.
Как угодно, можешь сохранять прогресс с настройками в json файл какой-нибудь.
> Где посмотреть или может кто расскажет, как делаются сохранения, ну что бы к примеру разные профили были игроков.
https://docs.unity3d.com/ScriptReference/PlayerPrefs.html
> теперь у уече-даунов вместо одного и того же пластмассового мужика одни и те же пластмассовые тянки и одни и те же локации
А я люблю обмазываться не свежими ассетами и дрочить. Каждый день я хожу по market place с жестким диском для ассетов и собераю в него все ассеты которые вижу. На два полных диска целый день уходит. Зато, когда после тяжёлого дня я прихожу домой, включаю компьютер, включаю UE4…ммм и загружаю в него свое сокровище. И дрочу, представляя, что меня поглотил единый организм ассет. Мне вообще кажется, что ассеты, умеют думать, у них есть свои семьи, города, чувства, не оставляйтеся их в market place, лучше приютите у себя, говорите с ними, ласкайте их…. А вчера сидя за UE4, мне преснился чудный сон, как будто я запустил игру, и она прератилось в ассеты, персонажи, уровни, музыка, все из ассетов, даже небо, даже Аллах!.
Я только Vectrosity для рисования линий купил, мне норм.
Геймплей все равно в ассетсторе не скачаешь.
Дальше рихтер скачет по сайфай платформам и ест пиксельные грибы для паверапов.
Нужно прототипировать, а потом по ходу дела удалять/менять, что нужно. Так меньше времени на обдумывание тратишь.
Он должен:
1. перемещаться
2. атаковать в направлении движения
3. возможность менять оружие.
Непонятно как связать смену оружия с анимацией.
>1. перемещаться
Векторная переменная "Скорость" уменьшается с каждым фреймом на дельту времени умноженную на константу затухания скорости. Кнопки управления задают (заново в каждом фрейме) вектор направления, затем вектор нормализуется, умножается на скалярную константу увеличения скорости и результат прибавляется к скорости.
>2. атаковать в направлении движения
угол поворота спрайта персонажа вычисляется из вектора направления, полученного выше.
>3. возможность менять оружие.
Миллионы вариантов. Самый простой - держать массив с оружием в памяти и по нажатию на кнопку перебора оружия шифтить массив, а по нажатию, например, на цифровые клавиши, выбирать элемент из массива. После чего поверх спрайта персонажа рисуется спрайт оружия с индексом из этого массива.
>
>Непонятно как связать смену оружия с анимацией.
Что тут непонятного? Заводишь анимации смены оружия и добавляешь через конечный автомат.
У этой модели есть модель очков, которую легко удалить.
Я хочу вместо этих очков сделать, например, шляпу и перетащить ее на макушку персонажа. Но что бы я не менял в параметрах Transform этих очков или Skinned Mesh Renderer, ничего не меняется. Ни размер очков, ни координаты. Сами цифры изменяются, двигаются координатные вектора, но сами очки намертво прилеплены к одному и тому же месту.
Как же мне изменить модель?
Господа, может подскажете, какой функцией реализовать замедленное скольжение по стенам для 2д платформера?
Стену нахожу, попробовал через .AddForce и типа добавлять силу направленную вверх. Но получается дичь какая-то.
По идее это что-то простое, но не могу никак в этих transform.position и Vector функциях разобраться, движение пока что сложно понимаю.
В какую сторону копать то, что именно изучить, какую функцию?
>игру ты с пижжеными модельками все равно не зарелизишь
школие не может в EULA спойлерзаноси 5% и делаешь что хочешь внутри единственного игрового движка
>юнити то кусков говна без графона, шейдер три, блюпринтов, побольше будет
фиксанул
>>88585
>А дальше
ванила резурекшон — baragou
>>88593
>куча SFM прона
а господин шарит ^_^
>>88632
>не свежими ассетами
дизайн героев самая эпичная вещь, это бесмысленно отрицать, все это знают
> дизайн героев
> от всем известной игры
> одинаковый у тебя и десятков тысяч школьников
Хуита без задач. Любой, кто будет использовать эту парашу в своих кириллоподелиях автоматически признается обоссанным.
Нормальные, уважаемые люди берут зебру, маю и пеинтер и делают своих персов сами.
Можешь при соприкосновении боком со стеной уменьшать gravityscale, а при нажатии прыжка, пинать его по нужному вектору в бок. Алсо, если используешь родную физику, тогда к объектам с динамическим ригидбади лучше не применять трансформ для перемещения
В твои игры даже частицы не играют!
дебич никто не собирается воровать чара для левых игр хотя индусы чето такое питались спросить лол
тут полностью заряженные герои, есть даже мешы под фх, т.е добавь пару лапшичек логики и у тебя рабочий ААА чар, которого можно изучать и реверсить тупой ты блять школьник
иногда надо высовывать голову из своего говнокода с ублюдским синтаксисом для нелюдей и думать о чем то более важном для создания игры
>теперь художникам не нужны кодеры.
Сомневаюсь, полноценную архитектуру на блюпринтах не напишешь.
>которого можно изучать и реверсить
Я тебя реверсил на хуях 12млн стоковых чаров, сбилденных каким-нибудь индусомтна аутсосрсе у UEC.
Когда уечедаун называет кого-то школьниками это само по себе смешно, но ИЗУЧЕНИЕ АССЕТА ЧАРА - новое слово уеченауки. Можно скачать и изучать ассет, такое юнитипетухам и не снилось! Ору блядь.
>надо высовывать голову из своего говнокода с ублюдским синтаксисом для нелюдей
Всё ждал когда ты упомянешь блюпринты как причину превосходства уеча над унити, впрочем уечедебсы предельно предсказуемы и несут один и тот же бред.
>Ну заебись, теперь художникам не нужны кодеры. Лучше бы сделали такой инструмент, чтобы кодерам не нужны были художники. Например нейрочеть, которая генерирует модели и арты на основе текстового описания.
А вот и первый программистишка начал что-то прозревать. Все верно, игру на 90% делают артисты, которые пишут сюжет, рисуют арты, моделят модельки, рисуют текстурки. Программистишка в геймдеве - это такой чернорабочий, для грязной работы об которую белым людям зашкварно руки марать. Всего то наступил такой момент, когда появилась возможность частично программистишек заменить - и тут же такой баттхерт.
>>88865
иди шарпик подрочи, делай свою хуйню целый день, что я сделаю за 15 минут, а на релизе будешь удивляться чому ты в говне и всем похуй, да потому что ты жалкое ущербное чмо без технологий, без графона, без юзабилити, с компанией-маркетологом, ссущей в уши кококо бест чойз фор мобалй двеловпмент пфф, подотри слюни уебок еще полгода назад у вас тут пластинка была помню как раз за мобайл, минвайл фортнайт уже летает на гейфончиках и скоро будет на роботе воевал с шарпой, вместо геймдизайна
просто признай что ты тратишь время на хуйню, твой скилз уперся только "разработчикам" старкова, переводить "игру" на МИНОРНУЮ упи-версию ЦЕЛЫЙ ГОД ахахах блять дебилы сука, и им за это еще и платят, сука такие же мытые малолетние дегроды как ты
>кодерам не нужны были художники
кек, ты же гадкое патлатое существо без вкуса и чувства прекрасного, что ты можешь создать?
640x360, 1:37
>кек, ты же гадкое патлатое существо без вкуса и чувства прекрасного, что ты можешь создать?
Я скриптер на юнити - значит, я уважаемый актуальный программист!
занимаюсь архвизом, и мне блять страшно подумать что для ссаного ивента открывания двери или выключения света с кнопки, перемещения объектов, рантайм смены текстур обоев, цвета смарт материала, мне бы пришлось пердолиться с шарпиком пишу скриптики на питоне если что и шарпик реально самый убогий из всех языков
>ссаного ивента открывания двери или выключения света с кнопки, перемещения объектов, рантайм смены текстур обоев, цвета смарт материала
А потом появляется проблема не связанная со стандартным блюпринтом и ты пердолишься с плюсамину то есть не ты, а погромизд
>сэкономленное время потратишь на
переубеждение заблудших школьников, только посмотрите на жидис18, эти маркетутки завозят графон, ноды, шейдеры и лапшу, вот это поворот
я хочу что бы все поняли — пользоваться продуктами компании которая сама нихуя не делает — лютый зашквар
блендер делает мульты шмая и мертвый макс нет, они могут только купленный игровой движок ебнуть, я про спинграйд или как его
эпики делают эпичные шутаны, теперь и на мобильных устройствах и да для всех сука конченных и немеющих читать ненарусском поясню что уеч так же может в аркадки 2д хуиде, и производительность будет зависеть от кашицы в ваших тупых головах
а что делает упитя? демку рендеханную на суперкомпьютере?
а за ее плечами куча забагованого безвкусного говнища на маркете и гринлайте из дефольтных ассетов просто потому что школьники как то там заговнокодили чето там купили и распустили хвосты, но нет, это путь нездорового человека
Анон — выбирай светлую сторону! Думай о конченом продукте и количестве ресурсов. Ни в коем случае не думай что строчки текста заменят художественные скилзы.
>проблема не связанная со стандартным блюпринтом
проблема эпиков, они фиксят баги
но фишка в том что в моем пайплайне нет таких проблем и не может быть я не пытаюсь создать неевклидовое пространство или еще какую нибудь ебливую говнокодерскую безсполезно аутичную хуиту , не считая фундаментальных типа всратого ворлд маппинга, понятно что есть позишн мапа, но мне бы хотелось прорыва в этом месте
но нет и похуй, я всегда смогу найти ТВОРЧЕСКОЕ решение проблемы, закрыть кустиками или не использовать тайлы или использовать но в другом меше, с ручной разверткой
вопрос комфорта и скорости
в глаза не ибись, еще раз перечитай каждую строчку
мне было нужно и я изучил питон ровно на том уровне что бы редактировать чужие аддоны и писать свои скрипты для блендаря
сшарп же просто не имеет задач, кроме дрочки в отличии от роскошного С и более замороченного С++, языки внушающие уважение, а С синтаксис так и просто радует глаз
если ты хочешь сделать быстро игрушку бери качай нормальный движок и ДЕЛАЙ ИГРУ сука, не дрочи
>>88901
лолирую с твоей школьной причинно-следственной связи
Ну-ка проясни мне за O(n) и про отличие сборщика мусора в УНИТИ от .NET, актуальненький ты наш. Типичный УНИТИ-кодерок нихуя не знает и воротит такую хуйню что волосы на яйцах шевелятся.
Сам по себе язык, разработчики которого уже забыли какой парадигме следуют и с каждым новым релизом ебут разработчиков компиляторов и комунити в рот, это страшно.
Но когда кто то берёт и лепит сверху невнятну ебанину с запредельным уровнем связанности - это за грунью разумности.
Это не страшно, это пиздец
Не, ну ты прололируй и скажи как делать что то не про открывание дверей и зажигание света по нажатию кнопки на уече? Что, если я хочу сделать свою рпг мечты вроде пилларов? Ждать пока эпики пофиксят и возвращаться потом?
Нахуя мне нужен движок для создания ААА шутанов и говна под мобилки, если я не хочу делать ААА шутаны или говно под мобилки?
>и ДЕЛАЙ ИГРУ сука
Сам сперва игру сделай, а потом кукарекай, чепушила. Вот прям возьми, быстро сделай и утри тут всем нос. А то пока что движок просто чудо и мечта, но адепты пишут скрипты для блендера и занимаются изучением ассетов.
>Ждать пока эпики пофиксят и возвращаться потом?
Сурпрайз: ты в принципе можешь пофиксить сам, не дожидаясь когда Господа Разработчики соизволят дойти до твоего бага. Был у меня баг с Юнити, когда лайтмапы скомпилированные на Windows, если собирать игру на Маке, просто пропадали. Багрепорт, все дела - ответ через полгода "А у вас баг ещё есть?". Нет блядь нету - потому что УНИТИ тоже уже нету.
Вообще главное отличие уеча от унити - с уечем не надо воевать, он работает так как ты ожидаешь. Любая игра на УНИТИ - абстрактная фабрика костылей.
>Unity — это инструмент геймдизайнера
Взольнул. Юнити - суть кроссплатформенный DirectX с редактором.
>он работает так как ты ожидаешь
Да, сделал кнопочку открытия двери - она открывает дверь, нет нужной фичи - прикрыл кустиком.
Что ожидал, то и получил.
>если я хочу сделать свою рпг мечты вроде пилларов
блять ты конченый, разуй глаза и посмотри на скрин сука
а если хочетшь ртс(которой нету в присетах) на тубике есть челик который подробно в одно рыло все расписывает
ебанный ты ишак прекратить вырывать мои ответы из контекста
я занимаюсь архивизом, снизь поликаунт(/локни лод1 в один клик), пожми текстуры(локни мипы), добавь ай противников(в удобном графе) и игра готова ее техническая часть
>лайтмапы скомпилированные на Windows, если собирать игру на Маке, просто пропадали
энджой йор говно для школьников
не говоря о том что ты каким то адовым пиздецом занимаешься лол
эпики ДЕЛАЮТ СВОИ ИГРЫ внезапно на СВОЕМ движке, и весь пайплайн там дрочен и ультра стабилен
А я о чём? Это в УНИТИ проблема была, не в уече.
>нет нужной фичи
открыл бепехи и дописал, разрабы топят за лапшу сильнее чем за кресты и в своем же пайплайне их активно используют, тем самым покрывая с головой любую мою задачу как геймдизайнера
на лапше даже калькулятор написали лол и код при этом довольно аккуратно выглядел
>и игра готова
Ну так сделай давай. Можешь ещё взять ассеты с моделями на 12кк для изучения.
>на тубике есть челик который подробно в одно рыло все расписывает
А как же нажал кнопку и в один клик сделал? Это ж что пердолиться надо будет?! И если всё так просто, то где все РТС на уече?
> изучать и реверсить
> ригованного и анимированного под ААА чара
> реверсить
Просто пиздец, что этот даун несет? Хинт: если хочешь научиться моделить, текстурить, риггить и анимировать - смотри курсы по тому, как это делаешься, на cgpeers можно скачать бисплатно.
> воевал с шарпой, вместо геймдизайна
> воевал
> не осилил один из самых простых и удобных языков современности
> осилил питон хммм что же не так?
> рантайм смены текстур обоев
> пердолиться
> 1 строчка
> пердолиться
> блюпринты лучше шарпа
Яяяясно. Бесноватый я-не-программист.
> занимаюсь архвизом
> архвизом
> нихуя не знаю в погромировании, нихуя не знаю в пайплайне игор
> визги на весь тред
> не тот тред
А, ну всё понятно. Пошел нахуй отсюда.
> я занимаюсь архивизом
> добавь ай противников
> в удобном графе
> ай
> графе
> игра готова
Архвизард, плз, прекрати. Ты еще хуже оопущенца.
>открыл бепехи и дописал
То есть сперва мы против копания в скриптах - взял и в один клик сделал, а теперь мы берём и дописываем, маня? И всё отличие в том, что в одном случае уже есть открывание двери, а во втором нет?
>на лапше даже калькулятор написали
Охуеть! Когда GOTY?
Шо то, шо это, везде свой дроч.
Мимокрок
1280x720, 0:16
>Ну так сделай давай.
иди спроси у мамки что такое бюджет, его планирование и на сколько рублей ты сжираешь борщика
дегрод плз, научись отличать логику геймдизайна, от кор гемплея, и то и другое лапшуется, просто требует разного количества ресурсов
>где все РТС на уече?
там же где все остальные, нахуй никому неупершиеся гниют в яме забвения
>>88930
>мы против
дрочьки гадкой сишарпы, лапша же няшная и хорошая, недавно вот запилил часики или вот десскрин, просто в качестве отдыха от основной ремесленной работы, там буквально на один экран лапшы получилось, ну и самый кайф это наглядно смотреть как скрипт бежит по нодам в дебаг режиме ^_^
>Я игры не делаю, но вот часы сделол
>Слышал кто то даже калькулятор сделол!
>А на другое денег не хватит
>уеч лудший
> буквально на один экран лапшы
> целый экран лапши
> 1.5 ифа
Вся суть просто. Блюпринт-дегенераты, неспособные открыть книжку по погромированию, официально объявляются обосанными.
640x460, 0:04
1920x1080, 0:52
Разработка игры может быть веселым и увлекательным занятием, по настоящему приносящим удольствие, анон, не жри говно!
не ебись с гадкой сишарпой! учись кодить на С/питоне/котлине и переходи в лапшу ДЕЛАТЬ ИГРЫ без багов !
Переебите этому кто-нибудь уже. Хули он вылез из своего загона? Мы тут игры делаем.
>сделать анимацию атаки в 4-х направлениях так, чтобы можно было заменить спрайт оружия
гет.чар.вектор - сет спрайт
элементарная хуита, в уече делается за 3 секунды, плюс еще блендится между анимациями
Просто не отвечай, самому надоест.
даун тупоц
Тебе надо набрать неофитов, чтобы дальше по пирамиде подняться, лол?
Заценю уеч как-нибудь потом. Методом тыка выбрал Унити и уже наполовину сделал что-то нормальное. Сейчас переносить это все на другой движок — гарантированно забить хуй в процессе и опять пинать хуи пару месяцев.
Хуй знает, что у тебя за нелюбовь к шарпу и юньке. Вопросы характера "как мне анимацию для 4-ех направлений сделать" возникают только у тех, кому лень полистать документацию.
Потому что когда двигло нужно допиливать за эпиков, это вызывает хронический бугурт:
https://pzurita.wordpress.com/2014/06/25/optimizing-aabb-transform-in-unreal-engine-4/
годное предположение лол, но нет, просто привычка фосс юзера, платить за софт светом или советом
ну а тут откровенный обман и ввод в заблуждение, представь насколько бы мир стал лучше без унити?
ну и писать игры на шарпе это так же как писать на питоне, просто глупое занятие
>переносить это все на другой движок — гарантированно забить хуй в процессе
абсолютно точно, но уже сейчас советую начать поглядывать гайды с офф канала тубика, они лучшие, потом уже можно смотреть всяких мимохуев
>>88969
>June 25, 2014
найс трай дрочила, еще можешь поплакать что порталы для лайтмаса завезли только в 11 версии, а мальтибаунс скайлайт и вовсе сделал в одно лицо какой то малазийский чурка и его нереально крутую разработку добавили вот буквально в 17 версии(актуальная 19)
>Вопросы характера "как мне анимацию для 4-ех направлений сделать" возникают только у тех, кому лень полистать документацию.
Ну сделай, блджад, кукарека.
Ты даже не в осознании понять что это нихуя не просто.
Ты не умеешь практически/алгоритмически мыслить над решением проблемы. Вскукареки "возьми вектор, добавь спрайт" это не решения.
Давай конкретное решение мне!
>представь насколько бы мир стал лучше без унити?
Но где бы ты тогда срал вместо того, чтобы делать игры на лучшем движке современности?
А представь как мир был бы лучше без тебя и твоего говна везде
Пошёл нахуй со своей глубиной алгоритмического мышления, маня. Какие тебе детали нужны для того, чтобы сделать FSM, блядь?
В документации ничего про это нет и не будет. Умение сделать "анимацию в 4 направлениях" от движка вообще никак не зависит. И это главная проблема всех юнити-погромистов - они нихуя не умеют кроме копипасты туториалов.
>Давай конкретное решение мне!
Моя работа стоит $20 в час например. Готов сделать систему перемещения персонажа с сменой оружия и всем этим за неделю.
> И это главная проблема всех юнити-погромистов
Причем тут Юнити упырок тупой.
Или ты намекаешь что UE4 настолько примитивен, что они там сию задачу в два клика мышкой решат?
Ну, это говорит о многом об UE кек
> от движка вообще никак не зависит
Еще один охуенный теоретик, уровня архивизарда. Им завезли меканим, но им сложно даже открыть туториал по нему.
>160$ в день
За 20$ в час мне нужен ветеран гейдева, который над крузисом работал и знает DX и Vulkan как свои 5.
ты же хуй мамкин с горы
Да при чем тут документация? Документацию не ебет, какой там у тебя случай, она описывает базовый функционал. Если человек вообще не понимает, что может делать язык вместе с приблудой от Юнити сверху, какая нахуй разница, что ему говорить? Он же просит за него написать игру, и дело не в движке, в ленивом долбоебе.
Бля, читаю жопой, но надеюсь ты понял, что я имел ввиду а итоге. Никакие топовые движки, в которых все есть искаропки, не помогут подобным людям.
FSM - finite state machine
СУКА да пройди уже туторы на ебаном сайте юнити!
https://unity3d.com/ru/learn/tutorials/topics/animation/animate-anything-mecanim
Fixed State Machine. Можешь погуглить конструкцию switch-case, можешь банально через if'ы прописать. Нажал "вверх" — поворачиваешь GameObject наверх. Надо атаковать — прицепи триггер-квадрат перед Линком, когда он мечом тыкает. Ну или потом изъебнись так, чтобы триггер следовал за мечом.
Спрайты, скорее всего, через аниматор настраиваются, т.к. мне нечего анимировать, ничего не подскажу.
MECANIM
E
C
A
N
I
M
Еще раз увижу слово switch, буду пиздить. Больно.
640x457, 0:05
Ты имеешь ввиду Animator? У меня без аниматора сделано.
Вообще сначала я хотел сделать так https://blog.redbluegames.com/animating-top-down-2d-games-in-unity-5e966b81790e (первая и единственная ссылка в гугле по теме).
Мне нужно чтобы последний спрайт оставался при остановке движения, так нельзя сделать в аниматоре.
Короче, оружие я сделал просто вращая GameObject на угол в зависимости от направления.
Я про то что "юнити-погромизды" программировать не умеют вообще. Персонаж не знающий что такое ёбаная FSM тому пример.
Меканим для анимаций, ты не должен использовать его как замену FSM. Потому что анимация и состояние персонажа - два разных слоя, анимация представляет состояние персонажа но не является им. Пример атака оружием. У тебя очевидно должен быть коллайдер для определения попаданий, который тебе надо включать/выключать в процессе атаки. Триггеры для включения/выключения могут быть событиями приходящими из анимации. Потому что это открывает тебе возможность не знать какое именно оружие у персонажа и какую именно анимацию атаки он играет.
Пусть сначала хотя бы каноничную реализацию FSM в меканиме освоит. Если он начнет сейчас еще делить на две машины, одна для анимаций, вторая для состояний - то вообще охуеет. Хотя, такое деление, конечно, правильное.
Но для начала
> Триггеры для включения/выключения могут быть событиями приходящими из анимации.
вот так вполне сойдет. А состоянием можно управлять и без FSM, там 1.5 чиселки у него, угол, координаты.
Зделоть параметр в аниматоре и добавить OnStateExit, который его устанавливает, это же так СЛОЖНА.
У меня 2 спрайта, которые я меняю в зависимости от пройденного расстояния.
Например прошел 1 метр и остановился на спрайте 1, прошел 1.2 метра и остановился на спрайте 2.
Как ты это сделаешь в аниматоре?
Мы про Юнити или вы два дебилойда все еще про УЕ4 в Юнити треде пиздите?
Если первое, то в самом аниматоре, обособленно -
никак, нужен скрипт, который будет считать пройденный путь и указывать аниматору стейт.
И это ПРАВИЛЬНО, нехуй аниматору быть еще одним скриптовым бэкендом.
ВЫ ТАМ СУКИ ТУПЫЕ СОВСЕМ ОХУЕЛИ СО СВОИМИ МОДЕЛЯМИ И ПАРАДИГМАМИ НУКА СЪЕБИТЕ НАХУЙ ДАУНЫ
animator.speed
Input.GetAxisRaw
Returns the value of the virtual axis identified by axisName with no smoothing filtering applied.
>указывать аниматору стейт
Как аниматоу указать стейт. В аниматоре время, а мне нужны фреймы.
На бумажке предлагаешь записывать отметки времени?
Ты норкоман штоле сука.
Ну смотри, у тебя еба-куб, он белый. Нажал ЕДТИ, прошел 1ед - он стал черный, спрайт поменялся на черный, да, братиш?
Ну вот бля, делаешь в аниматоре 2 стейта, один с таким-то спрайтом/набором спрайтов, жругой с другим. Настраиваешь блендинг их при смене.
Затем, такой, хуяк, из скрипта, по условию, банально выставлешь любой стет, который нужно и он меняет его на нужный. А если бледндинг сделал - крисиво меняет
клево, да?
Вот это https://assetstore.unity.com/packages/templates/packs/space-shooter-free-107260 - хороший пример для обучения?
>Мне нужно чтобы последний спрайт оставался при остановке движения, так нельзя сделать в аниматоре.
Почему? Что тебе мешает?
Ну и чтоб через несколько недель-месяц вкатывания в эту программу можно было запилить небольшую локацию для 3D платформера, а может даже и персонажа смоделировать до этого пока еще не думал.
У меня опыта с 3D совсем мало, было дело пару лет назад двигал кубы в Cinema 4D, до моделинга дело не дошло.
Скажи как. Может и сделаю.
Пока что с Animator'ом слишком много boilerplate'а получается чтобы убрать все ненужное из него и заставить работать со спрайтовой анимацией.
Я лучше на своих костылях как нибудь пока.
В Maya экспорт в юнити 1 кнопкой. Очень простая в освоении, и перса там можно намоделить, зариговать и анимировать хотя, лучше, конечно еще зебру освоить. Насчет блендера не знаю, на мой вкус он какой-то пиздецовый, но экспорт в юнити тоже на изи.
Я вот и смотрел в сторону Maya. Интерфейс, мне кажется, там очень легкий для новичка.
С чего начинал в Maya, можешь что-нибудь порекомендовать типа гайдов?
Для вас же, ёпвашумать, сделали туториалы, ну посмотрите их, почитайте. Нет, блять, буду сразу как купил рояль пытаться заебашить Шостаковича и охуевать почему не получается.
cgpeers.com
там искать в торрентах: Pluralsight/Digital Tutors, Lynda
что надо: modeling, uv unwrapping, rigging, animation
если учить зебру, то гайды по zbrush, там же. еще понадобится уметь retopology (из high в low poly), делается в Maya.
текстуринг/покраска: я использую allegorithmic substance painter. Для текстур земли и пр. substance designer, у него есть хорошие гайды на сайте юнити.
cgpeers видимо какая-то годнота, если там можно создать аккаунт всего лишь 1 и 15 числа. Пока буду на рутрекере туторы вытягивать.
Спасибо
Чё-то не робит оно у меня в 2017 юнити, раньше работало.
Да можно и проще. Анимация сама же останавливается в последнем кадре, если она не зациклена.
Или можно просто сделать стейт с клипом из одного необходимого кадра.
На рутрекере тоже есть, но поменьше. Поставь себе напоминание на 1 число, реально годный сайт.
Global Illumination Proxy
> цветастого омни
> омни
Что это? Сам не ебу как настраивать realtime GI, если что, но думаю надо копать в эту сторону если ты не про обычный источник света
>Для вас же, ёпвашумать, сделали туториалы
Покажи хоть один(!) туториал с 2d top-down анимированными персонажами.
А они должны быть салатового цвета обязательно? Иначе туториал не подходит?
Ой блять, ну даже хуй знает. Может быть вот это?
https://www.youtube.com/watch?v=jNiCEUisrRM
Давай ещё кукарекни что это под старую версию. Всё то же самое работает и в последней версии.
Вам дали машину состояний, дали скрипты, дали меканим. Нет, буду тупить и даже не пытаться разобраться.
Можно и поменьше стейтов запилить, если в коде немного поиграться со spriterender.flip(x/y)
мимо нуб
Лучше использовать blend tree https://blog.redbluegames.com/animating-top-down-2d-games-in-unity-5e966b81790e
> Какую программу выбрать для 3D моделирования и максимального удобного экспорта в Unity?
Блендер.
Скопипастил скрипт но он боком ориентируется (надо на 90 градусов еще повернуть). И он как то 2 сторонами ориентируется, а надо одной
screenPos = mainCamera.ScreenToWorldPoint(new Vector3(mousePos.x, mousePos.y, transform.position.z - mainCamera.transform.position.z));
var mouseVector = new Vector3(Input.mousePosition.x, Input.mousePosition.y, transform.position.z - mainCamera.transform.position.z);
var mPos = Camera.main.ScreenToWorldPoint(mouseVector);
var targetRotation = Quaternion.LookRotation(mPos - transform.position);
targetRotation.x = 0.0f;
targetRotation.y = 0.0f;
var strength = 20f;
var str = Mathf.Min(strength * Time.deltaTime, 1);
transform.rotation = Quaternion.Lerp(transform.rotation, targetRotation, str);
>transform.position.z - mainCamera.transform.position.z
Это чего вообще? У тебя top down, так? Значит X/Y навигация, Z залочена на трансформ и по ней ротация вокруг своей оси.
Это
>targetRotation.x = 0.0f;
>targetRotation.y = 0.0f;
убери, а просто залочь(freeze) ротацию GO по X/Y в его свойствах.
Координату Z надо оставить родную, ее, по-моему, вообще трогать не надо.
Залочил в ригид боди, но без обнуления его по всем осям колбасит.. Но вопрос не в этом как мне сместить попорот на 90? А то мой кораблик не носом а бортом на врагов наводится
>Но вопрос не в этом как мне сместить попорот на 90?
В смысле? Ты хочешь ВСЕГДА разворачивать его на 90 градусов? А если угол между проекциями его текущей ориентации и кликом мыши будет меньше 90, будет переповорот тогда?
Нит жи. Проблема в том что корабль СЕЙЧас разворачивается бортом к цели, а надо носом. Там какой то косяк в коде..
не выебывайся тогда, если он стабильно боком поворачивается - просто поверни спрайт что бы совпадало со стороной нужно
вообще, довольно трудно будет объяснить тебе все трюки с которыми это было бы сделать просто. проще показать. http://rgho.st/8SRygLXgm на
красная линия будет поворачиваться за синей с фиксированной скоростью.
Вот спасибо, просто здорово. Я еще пытался с помощью AddTorque делать, но там ваще пиздец не моего ума, PIDы какие то.
Спасибо.
> с пределом скорости поворота
https://docs.unity3d.com/ScriptReference/Mathf.SmoothDampAngle.html
SmoothDamp охуенные функции - использую у себя повсеместно
> просто поверни спрайт
Проиграл с этого разработчика. Прибавить 90 к чиселке / умножить на Quaternion.AngleAxis(90, axis) - это так сложно!
хотя наверно стоило ещё скриншот кода приложить. а то ведь в треде ленивые есть, не скачают не посмотрят.
все что тебе реально надо знать для движения в нужную сторону это собственно сторона в которую надо двигаться, а её можно получить если взять знак от Z оси кросс-продукта.
а дальше всякие клевые трюки. если множить кватернион на вектор то это равносильно тому что повернуть этот вектор на этот кватернион.
можно ещё кватернионы кстати складывать, если перемножать их. таким образом можно например ротацию не только складывать но и вычитать.
русская борда, хули. тут хватает валенков не знающих английский.
Хотя у тебя работает и вне нуля.. Возможно проблема в том что я вешаю скрипт не на камеру а на корабль, и там как то неправильно пересчитывается проекция координат мыши в пространстве..
Каргокультист, пожалуйста.
Жги.
{
cRend.Clear();
Mesh mesh = new Mesh();
Vector3[] vertices = new Vector3[tg.verts.Count];
Color32[] colors32 = new Color32[tg.verts.Count];
Vector2[] uv = new Vector2[tg.verts.Count];
for (int i = 0; i < tg.verts.Count; i++)
{
vertices = tg.verts.position;
colors32 = tg.verts.color;
uv = tg.verts.uv0;
}
mesh.vertices = vertices;
mesh.colors32 = colors32;
mesh.uv = uv;
mesh.triangles = new int[tg.verts.Count/4 x 6];
for (int i = 0; i < tg.verts.Count/4; i++)
{ //converting one quad into two triangles
mesh.triangles[i x 6] = i x 4;
mesh.triangles[i x 6 + 1] = i x 4 + 1;
mesh.triangles[i x 6 + 2] = i x 4 + 2;
mesh.triangles[i x 6 + 3] = i x 4;
mesh.triangles[i x 6 + 4] = i x 4 + 2;
mesh.triangles[i x 6 + 5] = i x 4 + 3;
}
cRend.SetMaterial(tgset.font.material, null);
cRend.SetMesh(mesh);
}
Может кто пояснить, почему канвасрендерер не отображает ничего? У фонта точно есть материал, вертексы точно генерятся, треугольники тоже точно генерятся. Если задавать всё ручками, то работает, но если брать из текстгенератора, то вдруг нет.
{
cRend.Clear();
Mesh mesh = new Mesh();
Vector3[] vertices = new Vector3[tg.verts.Count];
Color32[] colors32 = new Color32[tg.verts.Count];
Vector2[] uv = new Vector2[tg.verts.Count];
for (int i = 0; i < tg.verts.Count; i++)
{
vertices = tg.verts.position;
colors32 = tg.verts.color;
uv = tg.verts.uv0;
}
mesh.vertices = vertices;
mesh.colors32 = colors32;
mesh.uv = uv;
mesh.triangles = new int[tg.verts.Count/4 x 6];
for (int i = 0; i < tg.verts.Count/4; i++)
{ //converting one quad into two triangles
mesh.triangles[i x 6] = i x 4;
mesh.triangles[i x 6 + 1] = i x 4 + 1;
mesh.triangles[i x 6 + 2] = i x 4 + 2;
mesh.triangles[i x 6 + 3] = i x 4;
mesh.triangles[i x 6 + 4] = i x 4 + 2;
mesh.triangles[i x 6 + 5] = i x 4 + 3;
}
cRend.SetMaterial(tgset.font.material, null);
cRend.SetMesh(mesh);
}
Может кто пояснить, почему канвасрендерер не отображает ничего? У фонта точно есть материал, вертексы точно генерятся, треугольники тоже точно генерятся. Если задавать всё ручками, то работает, но если брать из текстгенератора, то вдруг нет.
О, поправил, теперь норм работает в любой точке:
https://gist.github.com/Nashet/c8a3c0eda4fb9b4781a4f2aa68880b97
Дочитай тред, я улучшил уже )
244x468, 0:13
Производительность меня мало волнует в этом учебном проекте. Но, как профи сделал бы итерацию over rigidbody?
void FixedUpdate()
{
Rigidbody2D[] rigidbodies = FindObjectsOfType(typeof(Rigidbody2D)) as Rigidbody2D[];
foreach (var item in rigidbodies)
{
var gravityForce = this.transform.position - item.transform.position;
gravityForce.Normalize();
item.AddForce(gravityForce * gPower);
}
}
Так, проверил кой-чего, оказалось, что все uv меша это (0.0, 0.0). Это какой-то баг текстгенератора или что?
https://docs.unity3d.com/ScriptReference/Font.RequestCharactersInTexture.html
Сделал эту хуйню, ювишки стали нормальные показываться, но текста всё равно не видно. Да ёб вашу мать.
Можешь создавать ригидбади из кода и сразу заносить в массив.
Можешь в Start() ригидбодей вносить их в массив.
Можешь ещё что-нибудь придумать.
Чет стремненько. Объекты то могут уничтожаться, теоретически. Лист протухнет.. Может сообщения слать? Если объект уничтожается он жи отписывается от источника сообщений? Или нет, интересно кстати.
Запоминай объекту айди в массиве ригидбадей и в OnDestroy() удаляй объект из массива.
>сообщения
Зачем, когда всё делается очень банальным образом?
>Maya
Привыкают жрать говно что бы работать в корпорациях, если инди для себя, то все всегда и везде выбирают блендар, потому что не надо ловить стрелочку гизмо, потому что уже все включено, и даже динотоп(динамический скальпт) лучше в блендаре, потому что не надо как уебку кликать по пустому канвасу, не говоря о том что сама по себе зебра тот еще космический корабль, который тебе придется изучать
кароче у блендаря тотальный кастомайз и хоткеи, плюс можешь накатить пайменю и настроить их под себя, дописать скрипты или спиздить, все бесплатно или стоит копейки
> за неделю
Пиздец, я за неделю таких систем по 7 штук делаю. потому что каждый день приходит идя нового проекта
>>89259
Я сейчас ебанусь нахуй
Изъёбами сохранил копию текстуры фонта, подставил вместо самого фонта для отрисовки, в меше все комбинации увишек перепробовал - НИХУЯ. Не хочет рисовать, и всё тут! Простой пример с задачей вертексов ручками работает, а как пытаюсь большой массив запихнуть - так пустой экран.
Я понятия не имею, чего CanvasRenderer'у не нравится. SetMaterial, SetMesh. Квадраты в треугольники, перенести вертексы, перенести увишки. Дело не в текстуре, потому что у меня и так уже проверенная копия текстуры фонта, не в шейдере, тоже проверено, так в чём блядь дело? Что там вообще сбоить может?
>for (int i = 0; i < tg.verts.Count; i++)
>{
>vertices = tg.verts.position;
>colors32 = tg.verts.color;
>uv = tg.verts.uv0;
>}
Вот это что за неведомая хуета? Что тут в цикле происходит?
>>90084
Я заплакал.
Я mesh.triangles менял каждый по отдельности вместо того, чтобы залить новый массив. Нужно mesh.triangles = newTriangles было, суканахуй. И ни один не заметил за неделю (или две?). Я тут чуть с ума не сошёл.
>>90084
У текстгенератора в каждом вертексе verts содержатся позиция, цвет и т.п. В меше используются параллельные массивы с позициями, цветами и т.п. Это просто конвертация из одного формата в другой.
>Это просто конвертация из одного формата в другой.
По мне так цикл в течении N раз делает одну и ту же операцию, бессмысленно. But ok
Допустим, у меня есть объекты, которые могут менять своё поведение и свойства (под свойствами я подразумеваю значения переменных). Поведение и свойства независимы. Т.е допустим 8 вариантов поведения и 8 вариантов свойств = 64 варианта объекта.
С изменением поведения все понятно, делаю классы состояний и когда нужно меняю ссылку на какое-то состояние. Объект делает что-то типа Update(currentState(this)). Т.е поведение определяется кодом и хранится в нем же. Но что делать со свойствами, которые по сути есть данные? Определять сериализуемую структуру с необходимыми полями, создавать массив и в эдиторе заполнять поля? Звучит довольно удобно, задаешь сколько хочешь разных вариантов свойств, на изичах меняешь нужные значения в любой момент и все такое, но как передавать объектам эти свойства? По хардкодному индексу в массиве? А если индексы проебутся/поменяются? Каждый раз лезть руками править 3 на 7? Вводить какой-нибудь тупой enum, с числом значений по числу вариантов свойств? Но это значит, 10000 видов свойств - 10000 значений enum. Также это значит каждая смена свойства - поиск по массиву. Что делать, посоны?
Я понял твою боль, но не сильно понял что ты хочешь.
Ебани пример на пальцах, чтоб яснее стало.
Нихуя не понял, но передавай твой объект со свойствами как базовый тип обжект, а в классе с поведением просто касти его в нужный тип и пользуйся свойствами.
https://2ch.hk/gd/res/489738.html (М)
https://2ch.hk/gd/res/489738.html (М)
https://2ch.hk/gd/res/489738.html (М)
Это копия, сохраненная 26 января 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.