Gamedev


Ответить в тред Ответить в тред

<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
1393 221 313

Unity thread # 10 Аноним 20/04/20 Пнд 07:59:47 6594861
image.png (210Кб, 512x225)
512x225
image.png (310Кб, 485x255)
485x255
image.png (2962Кб, 1920x1080)
1920x1080
image.png (981Кб, 1200x630)
1200x630
Добро пожаловать в тред Unity - лучшего 3D и 2D игрового движка современности!

Прошлый тред: https://2ch.hk/gd/res/647163.html

Официальный сайт: https://unity3d.com/ru
Документация: https://docs.unity3d.com/ru/current/Manual/index.html
Уроки: https://unity3d.com/ru/learn/tutorials
Форум: https://forum.unity3d.com/
Магазин ассетов: https://unity3d.com/ru/asset-store
UnityWiki: http://wiki.unity3d.com/index.php/Main_Page

На Unity сделано много замечательных игр - Rust, Блицкриг 3, Pillars of Eternity, Tyranny, Kerbal Space Program и многие другие. Главным преимуществом Unity перед другими движками является его простота для одиночной разработки. Не нужно иметь целую компанию девелоперов, чтобы сделать хорошую игру. Если ты один или имеешь небольшую команду и хочешь сделать хорошую игру без претензий на ААА, то Unity станет лучшим выбором. Тем не менее, даже крупные корпорации зачастую выбирают для своих игр именно Unity.

FAQ

- Какие у Unity сильные стороны?
- Простота разработки, удобный инструментарий, кроссплатформенность, богатая документация, огромное сообщество.

- Какие у Unity слабые стороны?
- Сложность в создании фотореалистичной графики. Для графики "как в Crysis" рекомендуется взять другой движок. Хотя Unity вполне способен выдавать не уступающую любым другим движкам картинку, это требует определённого навыка от разработчика.

- На каких языках я могу писать скрипты для Unity?
- На выбор два языка - C# и UnityScript. UnityScript - это что-то среднее между JavaScript и ActionScript. Выбирай язык по своему вкусу, они оба вполне удобны, но помни, что большинство примеров написано на C#.

- Для каких жанров подходит Unity?
- Для абсолютно любых! Жанр ограничивается лишь фантазией разработчика (и его умением писать скрипты, разумеется). Можно создавать и РПГ, и стратегии, и слэшеры. Можно делать VR-проекты или Minecraft-подобные песочницы.

- На каких платформах работают созданные с помощью Unity игры?
- Windows, Linux, MacOS, SteamOS, Android, iOS, Windows Phone, PlayStation4, Xbox One, WebGL, Oculus Rift и многие другие. Полный список можно найти на официальном сайте. Таким образом, игры Unity работают на десктопах, на смартфонах, планшетах, приставках, в браузерах, VR-очках и некоторых других системах.

- Часто вижу скриншоты с красивой природой на Unity. Как такое создать?
- Очень просто! В Unity встроены удобные инструменты для создания террейна и SpeedTree для создания деревьев и готовая реализация ветра - не нужно ничего писать или скачивать и подключать плагины - ландшафт в Unity создаётся в пару кликов.

- Что такое стартер киты?
- Starter Kit - это набор скриптов и префабов, а зачастую и графических элементов для игры. Они призваны облегчить разработку игры определённого жанра и как правило разбиты по жанрам (Action-RPG Starter Kit, RTS Starter Kit, 3D Shooter Starter Kit, Space Game Starter Kit, VR Starter Kit и так далее). Также бывают стартер киты различных игровых элементов, не связанных с геймплеем (Nature Starter Kit с дополнительными природными объектами, Medieval Starter Kit со средневековыми объектами и так далее). По сути, стартер киты выполняют в разработке игры ту же роль, что и фреймворки в программировании. Однако стоит отметить, что использование геймплейного стартер кита принуждает разработчика изучать большое количество чужого кода и чужой структуры для внесения своих изменений и полноценного использования. В связи с этим большинство разработчиков предпочитает писать почти всё с нуля, получая полное понимание работы своей игры. Новичкам крайне не рекомендуется начинать знакомство с Unity со стартер китов.

- Что нужно уметь делать для создания полноценной игры, кроме Unity-разработки?
- Кроме непосредственной разработки игры на Unity, требуется также уметь создавать 3D модели (3ds Max, Blender, ZBrush), 2D рисунки (GraphicsGale, Aseprite, Piskel), текстуры (Substance Designer, NeoTextureEdit), музыку (FruityLoops, Ableton). Не обязательно учить это всё - например, в 2D играх не нужны 3D модели, а музыка необходима далеко не всегда. Также вы можете скачивать элементы для ваших игр на бесплатных сайтах. Если у вас есть деньги, то все необходимые элементы можно заказать у фрилансеров на https://www.fl.ru/ (русскоязычный) или https://www.upwork.com/ (англоязычный).

- Бесплатен ли Unity?
- Можно свободно скачивать, использовать и продавать готовые игры на Unity с лицензией Personal - это абсолютно бесплатно! Но на бесплатной версии при запуске игры будет появляться короткий стартовый ролик "Made with Unity", а также ваши доходы ограничены 100 000 долларов в год. Для снятия этих ограничений нужно приобретать платные версии лицензий Unity. В конечном итоге, платные варианты используются лишь крупными компаниями с огромными доходами, тогда как обычные разработчики в большинстве своём используют бесплатную Personal лицензию.

Обучение

- Язык
Итак, с чего же начать изучение этого замечательного движка? Прежде всего, с изучения языка. Самые основы C# можно узнать на интерактивных курсах здесь:
https://dotnetcademy.net/CSharp/Beginner
или в текстовом туториале здесь:
https://www.tutorialspoint.com/csharp/csharp_quick_guide.htm
Для изучения основ UnityScript выучи вначале основы JavaScript:
https://learn.javascript.ru/
Помни, что далеко не все элементы JS есть в US. Чтобы понять, в чём разница между этими двумя языками, прочти эту статью:
http://wiki.unity3d.com/index.php/UnityScript_versus_JavaScript
Помни, что тебе достаточно одного языка из двух и учить их оба одновременно не нужно.

- Движок
Если ты уже умеешь использовать язык, то можно приступать непосредственно к изучению движка. Крайне рекомендется купить/скачать книгу Unity in action (Unity в действии). В ней подробно описываются множество возможностей движка.
http://www.ozon.ru/context/detail/id/34792570/
Также посмотри на видеотуториалы с официального сайта:
https://unity3d.com/learn/tutorials
Если же ты не любишь видеотуториалы (или не понимаешь разговорный английский) и предпочитаешь текст, то посмотри здесь:
http://catlikecoding.com/unity/tutorials/
Тут крайне подробно описан процесс разработки и приведены примеры кода. Эти туториалы универсальны и описывают множество различных частей игры, от работы с текстурами до генерации карты мира. А вот в этом туториале описыватся разработка двухмерной игры с видом сверху:
https://www.raywenderlich.com/61532/unity-2d-tutorial-getting-started
Это будет полезно, даже если ты планируешь разрабатывать трёхмерную игру. Ни в коем случае нельзя обойти вниманием этот сборник туториалов:
https://noobtuts.com/unity
В нём подробно описывается процесс пошагового создания разных игр - двухмерных и трёхмерных.

Разумеется, все эти туториалы охватывают лишь часть возможностей Unity. Самый надёжный способ выучить Unity - это начать делать игру и по мере разработки гуглить непонятные моменты.

Шапка: http://www.writeurl.com/publish/zukmrogwv45ptyuseyol
Аноним 20/04/20 Пнд 08:02:12 6594892
77f9a4a469bd.png (61Кб, 652x491)
652x491
>>659486 (OP)
Где включается ZTest For After PostProcess? Вообще никто не знает, его там нет этого чекбокса.
Аноним 20/04/20 Пнд 09:20:08 6594953
>>659489
Во Frame settings. Ты читать не умеешь?
Аноним 20/04/20 Пнд 09:24:56 6594974
>>659495
Ты читать не умеешь что ли, нет там этого чекбокса.
Аноним 20/04/20 Пнд 09:33:52 6594995
FoknShaders.png (67Кб, 1355x780)
1355x780
Добрый день!
Такая проблема - создал PostEffect, пытаюсь юзать PostStackProcessor (или как там)

Навязывают использовать context.command.BlitFullscreenTriangle, но этот метод просто создает черный треугольник в центре сцены, который видно сквозь все стены и при этом отключает все эффекты в стеке.

context.command.BuiltinBlit - работает, НО, если добавить еще какой-нибудь эффект через этот метод, то предыдущий эффект полностью игнорируется и вообще в старой версии юнете BuiltinBlit оч сильно резал производительность.

Кто-нибудь знает как правильно использовать BlitFullscreenTriangle?
Аноним 20/04/20 Пнд 11:42:42 6595206
>Итак, с чего же начать изучение этого замечательного движка? Прежде всего, с изучения языка. Самые основы C# можно узнать на интерактивных курсах здесь:
https://dotnetcademy.net/CSharp/Beginner

При нажатии на кнопку "Проверить" появляется ошибка:
Run-time error during test.
System.Security.SecurityException : Request failed.
В чем проблема?
Аноним 21/04/20 Втр 06:39:46 6599187
>>659497
Скрин окна фреймсеттингз в студию, а пока твоя масть - сучий пиздабол.
Аноним 21/04/20 Втр 07:11:07 6599208
В какой игре (готовой или в разработке) сейчас самый топовый графон на юнити?
Аноним 21/04/20 Втр 07:13:25 6599219
image.png (104Кб, 819x960)
819x960
>>659918
>Скрин окна фреймсеттингз в студию
Оно длинное, какое тебе место заскринить? Ну вот нашел только это
Аноним 21/04/20 Втр 12:01:45 65996910
>>659920
Тарков неплохо выглядит
Аноним 21/04/20 Втр 12:59:07 65998311
>>659920
Если тебя интересуют максимальные возможности графона в юнити то чекай демки самих юнитеков типа https://www.youtube.com/watch?v=iQZobAhgayA
А графон в играх больше зависит от бюджетов которые циркулируют в студии разработчиков, если у разрабов бабла очень много то они пилят игру уже на своем движке а не на юнити или уече, потому что могут себе позволить.
Аноним 21/04/20 Втр 13:12:55 65998812
ybPRjzFC2fc.jpg (303Кб, 1080x829)
1080x829
>>659969
HRPL (или как там) и модельки с текстурками хорошего качества.
(скрин из таркова)
Аноним 21/04/20 Втр 13:43:50 65999713
>>659988
Ну хуйня же, нахуй ты это запостил
Аноним 21/04/20 Втр 22:59:14 66023814
Почему шейдер так долго компилируется, если в нём много shader_feature. Он что, для всех комбинаций дефайнов свой шейдер делает. То есть, если у меня shader_feature 8 штук, то будет поочереди компилироваться 256 исходников?
Аноним 21/04/20 Втр 23:24:45 66028115
Аноним 21/04/20 Втр 23:45:23 66031416
04m8NaX2FC.mp4 (898Кб, 1252x536, 00:00:09)
1252x536
Пытаюсь реализовать следующее. Чтобы игрок знал, с какими объектами можно взаимодействовать, их надо как-то обозначить. Сделал это так - когда игрок проходит мимо объекта, вылазит какая-нибудь иконка, пока пусть лупа. Сразу может быть несколько иконок, если, например, на столе лежит куча объектов, так что сделал это через динамическое создание/удаление ui компонента.
Аноним 21/04/20 Втр 23:59:49 66033017
>>660314
Можешь заморочиться и сделать прозрачность иконок зависимой от расстояния до объекта
Аноним 22/04/20 Срд 00:58:59 66043718
Как понять, какие свойства надо кешировать? Вот например я в update обращаюсь к Screen.width. Может лучше это в переменную записать в Start()?
Аноним 22/04/20 Срд 00:59:31 66043919
84951-outline.png (38Кб, 261x200)
261x200
>>660314
хуй знает, вроде выгядит нормально, но будет пиздец если много объектов будет или если они маленькие
почему просто не подсветит при наведении?
Аноним 22/04/20 Срд 01:01:20 66044520
>>660437
ps в документация юнити часто кешируют gameobject.transform. Как я понял, это потому, что transform - это геттер вроде как? Как понять, а не геттер ли Screen.width
Аноним 22/04/20 Срд 01:04:06 66044621
>>660445
ты в программировании не силен?
transform - класс, кешируется референс
width - простой тип, кешируется значение
Аноним 22/04/20 Срд 01:19:23 66046622
sCXHMIAWIh.mp4 (687Кб, 772x626, 00:00:10)
772x626
>>660439
Я идею с резидент evil стащил, хочу сделать как там. Когда на расстоянии - иконка №1. Когда подошел близко - иконка меняется на другую, типа, теперь можешь нажать Е или Еnter или что там. Если на столе например несколько объектов, то активной для взаимодействия будет та, на которую смотришь, там придется ray бросить
Аноним 22/04/20 Срд 06:22:00 66056723
>>660238
Да, потом при релизе проекта часть шейдеров удаляется из проекта за ненадобностью.

>>660281
Всё правильно нашел, из минусов будет работать только на винде.
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetWindowRect(HandleRef hWnd, out RECT lpRect);
и user32.dll наверное нужно в проекте держать

>>660445
Раньше transform как геттер каждый раз создавал новый инстанс через c++ pinvoke, уже как год они закрыли эту дыру и можно спокойно юзать все свойства без кеширования.
Стоит кешировать только GetComponent т.к. он идет по дереву компонентов и go каждый раз при обращении.
Еще при создании и изменении свойств в Canvas->UI там тоже начинает все дерево трястись, заметил когда у картинки менял opacity через цвет и в профайлере огромное дерево вызовов UpdateUiRenderElement (или как-то так)

>>660466
Классная идея, украл в свой проект
А по делу, у тебя же есть Vector3.Distance, проверяй какой достаточно близко и все
Аноним 22/04/20 Срд 07:11:15 66056924
>>659918
>Скрин окна фреймсеттингз в студию, а пока твоя масть - сучий пиздабол
Показывай где галка, а пока твоя масть - сучий пиздабол.
Аноним 22/04/20 Срд 08:48:33 66057525
>>660567
>Еще при создании и изменении свойств в Canvas->UI
Да там по сути на малейший чих весь канвас перерисовывается. Рекомендую пилить на каждую группу элементов отдельный канвас, сам так делаю, брат жив, зависимость есть. Олсо маска типа скрывает элементы, но они рендерятся, потому скроллпаны большие будут тормозить.

>Vector3.Distance
Коллайдер в режиме триггера тоже есть.
Аноним 22/04/20 Срд 09:41:30 66059126
Хочу начать изучать геймдейв на юнити, такой туповатый вопрос возник.. Стоит ли выебываться и ставить интерфейс юнити на английский или оставить на русском?
Аноним 22/04/20 Срд 09:42:23 66059227
Насколько точнее перестановка интерфейса на английский продуктивна для обозримого(не обозримого) будущего?
Аноним 22/04/20 Срд 10:15:21 66059628
>>660591
>>660592
Разве русский есть?
Англ удобен тем, что когда ты начнешь смотреть какие-нибудь туториалы, то из-за разных названий могут возникать неудобства, тем более, что менюшки могут в разных версиях находиться в разных местах.
Аноним 22/04/20 Срд 13:16:49 66078029
>>659486 (OP)
Здравсвтуйте, я нюьфаг в юнити, изучаю его несколько недель.
Шарп знаю давно.

Не могу понять, как нормально научить спрайт бегать в 2д игре в точку клика. видеогайды как-то мутно приподносят тему, потому решил спросить тут - может кто или помочь с поиском нормального гайда - или поделиться куском кода.
Аноним 22/04/20 Срд 13:18:18 66078130
>>660314
лучше добавляй эти иконки на Start и храни референс на них. когда подходишь близко iconRef.SetActive(true). любой Instantiate в рантайме это плохо, а дурной тон и в маленьких проектах тоже дурной тон
Аноним 22/04/20 Срд 14:35:42 66083631
Есть какие-то гайды по созданию Top-Down RPG или что-нибудь, что можно почитать, чтобы примерно понимать как это осуществить?
в задумке что-то вроде DOS, но куда проще, на уровне "слепил в гараже"
Аноним 22/04/20 Срд 15:04:19 66085632
unnamed.jpg (9Кб, 355x238)
355x238
>>660836
у юнити есть creator kit: rpg. там практически всё drag and drop и есть встроенный туториал и вот ссылка на курс:
https://learn.unity.com/project/creator-kit-rpg

ты только начинаешь? если да, то рекомендую планку занизить. долбиться в rpg это тебе на много месяцев работа. запал пропадёт, в лучшем случае, через неделю когда заебёшься от собственных компромиссов из-за того что не может реализовать большинство идей. вот missle command на скриншоте тебе довольно простая игра.
когда сможешь прикрутить к этому делу ui, использовать делегаты, избавиться от лишних синглтонов (они все лишние), не городить везде публичные поля и когда сможешь хоть один проект закончить, тогда ты готов к rpg или ещё чему.

>в задумке что-то вроде DOS
в смысле DOS как MSDOS или это аббревиатура от названия игры?
Аноним 22/04/20 Срд 15:14:32 66085933
>>660781
Мне это тоже не нравится. Но иконок может быть неизвестное число. Тогда получается надо сразу примерный максимум иконок добавить на сцену.
Аноним 22/04/20 Срд 15:16:37 66086634
>>660856
Абривеатура от Divinity: Original Sin.
Хочу полноценно вкатиться в юнити, но и сам понимаю, что сразу пытаться в создание чего-то подобного - глупо. Просто хотел узнать как это всё делается, чтобы понять с чего мне стоит начать и на чём акцентировать внимание, если хочу в итоге реализовать задуманное.
Спасибо за совет.
Аноним 22/04/20 Срд 15:31:51 66087435
>>660859
надо добавлять на сцену столько иконок сколько на сцене есть объектов которые можно использовать (это простой метод) или прикинуть сколько их может быть максимум в кадре (например 10) и использовать повторно просто перекидывая из другого места. гугли object pooling. удалять и создавать новые это очень плохо.

>>660866
я начинал с повторов понга, змейки, сокобана, потом перешёл на nes'вские игры, потом в 3д
Аноним 22/04/20 Срд 15:40:58 66087736
Как делать изогнутые интерфейсы для виара? Есть какие-то отработанные техники уже? Для диплома надо ебануть виарную приложуху с удобным UI
Аноним 22/04/20 Срд 16:34:07 66089837
444444444444444[...].png (215Кб, 1920x1080)
1920x1080
Сап. Столкнулся с банальной и как потом узнал популярной проблей в движке.

При запуске движка выдает две ошибки. Сами ошибки пустые без описания. В инете нашел способ это пофиксить. В секции Configuration изменить Scripting Runtime Version. Проблема в том, что в моей версии нету Scripting Runtime Version в Configuration. Нигде нету. Как это проблема исправляется на новых версиях?
Аноним 22/04/20 Срд 16:50:25 66090438
Screenshot 2020[...].png (73Кб, 1418x466)
1418x466
>>660898
мой конфиг, косяков нет
Аноним 22/04/20 Срд 17:14:29 66092639
>>660904
А те, что есть пробовал менять? То же самое?
Аноним 22/04/20 Срд 17:20:32 66093040
>>660926
ставил в бекенд IL2CPP и в апи .net 4.x и получал крэши во время разработки. ошибок не помню. на сколько мне известно на данный момент моно и 2.0 это то что нужно юзать, а il2cpp это то на чём нужно билдить в продакшн
Аноним 22/04/20 Срд 18:27:30 66094641
>>660930
Попробуй переустановить Windows.
Аноним 22/04/20 Срд 18:38:05 66095142
15872321831151.mp4 (6785Кб, 400x224, 00:01:24)
400x224
>>660946
зачем? мне на mono и 2.0 хорошо. к тому же у меня мак
Аноним 22/04/20 Срд 18:54:23 66095743
images.jpg (6Кб, 222x227)
222x227
Ребят,юнити изучаю недавно,в основном 3д. Программировать также только учусь,но основы понимаю. У меня есть крутая идея для 2D пиксельного сюжетного выживания на мобилки,но у меня нет товарищей с которыми могу этим заниматься только пару ребят что могут что то запилить в фш или нарисовать пиксели,также есть один друг 3дшник
Все что надо могу рассказать,если вы заинтересованы
Также прошу вас кинуть ролики/статьи на изучение юнити 2д простым языком
Заранее обнял
Аноним 22/04/20 Срд 19:19:01 66096244
Где прочитать про генерацию?

Хочу сделать вагон поезда, где за окном будут генерироваться ландшафт из готового набора деревьев кустов и тд.

Любая дока сойдет, сам иосник разраб.
Аноним 22/04/20 Срд 19:46:54 66097145
>>660962
https://www.youtube.com/watch?v=sRn8TL3EKDU
можешь из лоуполи докрутить до хайполи и повесить карту шума на высокоплигональную плоскость. деревья делаешь слева, передвигаешь их вправо и по Y поднимаешь при помощи этой же карты. собственно прямо генерировать ничего не надо ибо это дорого, нужно управлять вершинами
Аноним 22/04/20 Срд 20:16:29 66098646
>>660971
Спасибо, ну слушай, генерировать придется, представь 10 часов реального аутизма геймплея. Генерировать по сути плоскость с объектами надо будет, прямроугольничек в лоуполи
Аноним 22/04/20 Срд 20:29:23 66099147
>>660986
да нет же. размещаешь плоскость с полигонами, её генерировать не надо. открываешь шейдер граф, берёшь шум, накидываешь его на дисплейсмент. белый это высоко, чёрный это низко. сдвигаешь шум в каждом кадре и создаётся ощущение что ландшафт двигается, а на самом деле смещается только карта шума. никакой генерации

вот этот дурачок условно делает то что тебе нужно
https://www.youtube.com/watch?v=4qLJlMpPdK0

всё зависит от того какой сложности шум ты решишь замутить. там вон у девчёнки что я выше кидал сложнее и выгляит лучше, но она решила это делать кодом потому как разукрашивает треугольники и плюс сам мэш генерирует, а тебе можно всё это сделать просто кликая мышью в шейдерграфе с минимальной нагрузкой на видеокарту и процессор
Аноним 22/04/20 Срд 21:56:03 66101348
Анончики, подскажите пожалуйста: есть 2д игра, делаю в ней анимации монстрам. У монстров идентичные состояния- бегай, стой, атакуй. НО разные спрайты.
Скажи, я же могу сделать один анимационный контролер (который со стрелочками) и много разных анимаций (в которых разный спрайт соответственно для разных монстров) и использовать в разных мобах один контролер, а не делать и настраивать каждый раз новый?
Аноним 22/04/20 Срд 22:01:25 66101549
Screenshot 2020[...].png (524Кб, 994x484)
994x484
>>661013
могёшь. называется animator override controller. вставляешь туда контроллер в котором хочешь подменить анимации, выбираешь какие анимации подменить и своему монстру выбираешь в аниматоре этот самый оверрайд
Аноним 22/04/20 Срд 22:12:33 66102250
>>661015
Охуеть, никогда бы сам не нашел, спасибо тебе огромное анончик :3
Аноним 22/04/20 Срд 22:30:20 66102451
>>660991
Ух блять. это не кнопки красить
Анон у меня вопрос Аноним 23/04/20 Чтв 01:18:33 66107752
image.png (1161Кб, 853x480)
853x480
Скоро буду выкладывать игру в плей маркет. Думаю стоит ли подключать рекламу или нет, потому что вряд ли будут играть сотни или хотя бы десятки тысяч игроков. Или все таки сделать игру без всякой рекламы? Прибыльно ли подключать рекламу если нет пиара и рекламы игры? Делитесь своим опытом.
Аноним 23/04/20 Чтв 01:35:49 66108853
>>661077
если игра говно вроде той что в соседнем треде со сложением чисел, то выкладывай просто так. добавить туда рекламу можно и позже. сколько на неё потратил?
Аноним 23/04/20 Чтв 02:05:30 66109754
>>661088
В рублях 0. Рисовал, анимировал и программировал сам.
Аноним 23/04/20 Чтв 02:12:04 66109955
>>661097
я про время, рубли ничто хех. покажи чтоль что-нибудь
Аноним 23/04/20 Чтв 12:35:09 66116356
анон подскажи советом. не могу определиться. делаю 3д рпг игру под андроид

и вот надо делать локации. простые данжи из тайлов-моделей. Но блин, как же убого сидеть и мышкой расставлять стены, пол, потолок в редакторе юнити, а потом еще подгонять координаты чтобы дырок не было.

Набросал одну комнату и просто заебался, редактор неудобный (да еще progrids не хочет ставиться - выкидывает с ошибкой при закачке )... Ааааа

И конечно же я подумал - почему бы не сделать тайлы префабами, и не генерировать карту из скрипта.

но тут возник вопрос - я смотрел простые ассеты по генерации данжей при старте игры- почему млять оно так долго создают локации? Что тогда будет на андроиде?

И вот теперь думаю, дальше ебаться с говноредактором юнити расставляя эти дурацкие стены, или все таки попробовать из кода.. просто проверить не смогу - у меня нет реального андроида.


А может есть какие-то годные решения для быстрого создания префабов из кода?
Аноним 23/04/20 Чтв 13:00:12 66116457
>>661163
есть одна штука которую ты можешь попробовать. из package manager установи 2d tilemap. надеюсь с ним работал. он позволяет рисовать спрайтами на сетке и дыр никаких нет. к этому делу есть официальный экстеншн
https://github.com/Unity-Technologies/2d-extras
тут добавляются кисти которые разрешают рисовать префабами(!) рандомизировать тайлы и делать для них правила. то есть ты рисуешь прямоугольник, а тебе углы заменяются автоматом на угловые тайлы. я только не уверен что можно использовать и префабы и правила одновременно. вот тебе официальный видос с овервью
https://www.youtube.com/watch?v=UqhK6GpCgrM

олсо процедурная генерация это всегда полная хуйня, кроме тех случаев когда этим заняты люди которые знают что делают и планируют на разработку алгоритма генерации проебать очень много времени (не пару выходных). делай руками и способ выше должен тебе жизнь облегчить
Аноним 23/04/20 Чтв 13:12:40 66116758
>>661164
>есть одна штука которую ты можешь попробовать. из package manager установи 2d tilemap.
а там можно 3д? у меня модели (просто кусками порезано и это тоже называется тайлами)
Аноним 23/04/20 Чтв 13:14:27 66116859
>>661167
я же тебе видео скинул, там чувак в конце рисует 3д деревьями по сетке и деревья рандомизируются
Аноним 23/04/20 Чтв 13:16:14 66117160
>>661164
>планируют на разработку алгоритма генерации
не, я и не собирался случайногенерируемые данжи.
просто в коде сделать массив, в этом массиве указать где стены, пол и т.д. Просто заполнить массив немного быстрее чем в редакторе щелкать.

и с него создавать карту через какой-нибудь prefab Instantiate... но вот не уверен будет ли у этого метода приемлемая скорость, потому что по примерам - оно капец как долго создает префабы при выполнении, и это на пк
Аноним 23/04/20 Чтв 13:17:30 66117361
>>661168
>я же тебе видео скинул, там чувак в конце рисует 3д деревьями по сетке и деревья рандомизируются
хм, ну попробую
Аноним 23/04/20 Чтв 13:18:24 66117462
>>661171
тогда я тебе подкинул идеальный способ. просто разберись с тайлам, почитай/посмотри как юзать экстеншн и браши для него и проблема будет решена. если застрянешь совсем, то пиши и придумаем как решить
Аноним 23/04/20 Чтв 19:28:58 66136363
Блять, можете кинуть пример того как импортировать анимацию из Unity в Blender? Имею ввиду файлик с расширением .anim. Чето гугл молчит.
Аноним 23/04/20 Чтв 19:39:13 66136664
Аноним 23/04/20 Чтв 20:02:36 66139265
>>661366
Типо в самой юньке создавать анимации? Я не въезжаю как их тут делать, да и в гугле вроде пишут что хуйня и лучше в блендере.
Аноним 23/04/20 Чтв 20:44:52 66141166
>>661392
обе статьи об импорте анимаций
Аноним 23/04/20 Чтв 20:50:21 66141467
>>661411
Первая об импорте и создании именно в юньке, вторая об импорте в юньку. Я подумал что ты намекаешь на то что надо делать их в юньке.

Мне бы наоборот из юньки достать и запихнуть в Blender
Аноним 23/04/20 Чтв 21:34:37 66142068
>>661414
оу нет, о таком я не слышал. в хамбл бандл был редактор анимаций для юнити, он умел экспортировать. в другом случае нужно или самому писать или на гитхабе искать
Аноним 23/04/20 Чтв 22:19:01 66144069
Аноним 24/04/20 Птн 00:22:38 66149670
SLu1y6b4Ce.mp4 (338Кб, 1020x756, 00:00:03)
1020x756
Запилил анимацию для одной дверци + ее ручки. Это мне получается с каждой дверцой такое сделать? было бы неплохо, если бы как-то одну анимацию на всех набросить
Аноним 24/04/20 Птн 00:24:59 66149971
>>661496
ps думаю лучше открывание через скрипт сделать. тогда один скрипт можно будет навесить на нужные мне дверцы
Аноним 24/04/20 Птн 00:31:17 66150772
Screenshot 2020[...].png (27Кб, 578x208)
578x208
>>661496
какая у тебя иерархия? если сделать что то типа того что на скрине, то тебе нужно модели хранить в "Model", а анимировать "Window" и "Handle". таким образом анимация будет одна и та же, а модели туда можешь подставлять какие угодно
Аноним 24/04/20 Птн 00:33:44 66151373
okna-steklopake[...].jpg (73Кб, 629x661)
629x661
>>661496
кстати кто делает две ручки на, хоть и высоком, одинарном окне? я последний раз видел такое на совковых деревянных окнах в 90х чтоб они зимой лучше запирались
Аноним 24/04/20 Птн 00:45:21 66152574
image.png (196Кб, 766x803)
766x803
EJUyNzOXkAAPLSo.jpg (58Кб, 1024x684)
1024x684
starye-derevian[...].jpg (85Кб, 800x600)
800x600
старое-окно.jpg (56Кб, 500x450)
500x450
>>661507
Иерархия вот.
>>а модели туда можешь подставлять какие угодно
В смысле, это через скрипт сделать? Не совсем понял, можна чутка поподробнее? В смысле я могу запилить анимацию только для одной дверцы+ручки, и использовать этот .anim для других?
>>661513
Мне вот такие окна нужны, действия будут проходить в старом советском доме, да.
Аноним 24/04/20 Птн 00:59:50 66153375
window.mp4 (1098Кб, 824x720, 00:01:44)
824x720
>>661525
я отделил объекты для анимации, от объектов отображения. то что я вращаю не имеет никакого рендера, а уже вложенные объекты имеют и потому их можно заменять
Аноним 24/04/20 Птн 01:02:05 66153576
>>661525
>>661533
собственно я цилиндр в конце видео добавил чтоб ты видел что анимация отделена от моделей
Аноним 24/04/20 Птн 01:05:19 66153677
>>661535
Спасибо братишь, попробую
Аноним 24/04/20 Птн 04:34:35 66158978
Какой подход более правильный в юнити?
Допустим у меня есть 10 видов оружия, то как правильнее сделать? :
- Создать интерфейс оружки, 10 классов оружек, наследующие этот интерфейс и работать через интрфейс
или
- Создать 1 класс оружек с паблик полями, накидать на 10 префабов этот класс, везде просто сменить поля, чтобы оружки вели себя по разному и работать непосредственно с одним лишь классом?
Аноним 24/04/20 Птн 05:03:00 66159679
>>661589
если всё что твоё оружие делает это выплёвывает префабы, то твой второй способ это то что нужно. только публичных полей там не должно быть. смотри [SerializeField]. интерфесы и что-то подобное стоит навешивать только тогда когда без них получается через жопу или не работает. овериндженириг это большой рак начинающих разрабов. везде пихают интерфейсы

> накидать на 10 префабов этот класс
тебе нужен один префаб с оружием и 9 его вариантов Prefab Variant
Аноним 24/04/20 Птн 05:17:00 66159780
Аноним 24/04/20 Птн 06:11:59 66160281
>>660569
> скринит общие настройки, просит показать галку блока фрейм сеттингз
Ты совсем тупорылый пидоран?
Аноним 24/04/20 Птн 07:56:15 66160582
image.png (52Кб, 907x397)
907x397
>>661602
>скринит общие настройки
Это настройки блока фрейм сетингз
Вся суть юнити треда, только троллить и обзывать.
Аноним 24/04/20 Птн 09:20:55 66161883
>>661440
Спасибо, посмотрю, отпишусь.
Аноним 24/04/20 Птн 18:21:52 66201484
>>661163
Тебе ведь нужно только один раз префабы расставить. Почему бы не сгенерировать данж один раз и сохранить? Но важнее того, ты собираешься делать игру на андроид, не проверяя, как она на нём работает? У меня вот есть эмулятор Genymotion
Аноним 24/04/20 Птн 21:20:32 66220785
>>659486 (OP)
Юнитианон, есть два вопроса.

1) На пике сетка в редакторе, квадраты 10х10 ячеек, можно их как-нибдуь в 8х8 или в 16х16 переделать? А то пиздец как режет глаза и неудобно объекты расставлять. (PPU = 1)

2) Можно ли как-нибудь перевернуть систему координат в 2Д проекте, так чтобы ось Y отсчитывалась сверху-вниз (чтобы X=0, Y=0 было в левом верхнем углу, как у людей) ?

Если что, юнити 2019.3.2f1
Аноним 24/04/20 Птн 21:33:04 66222086
cartcoord1.jpg (10Кб, 250x250)
250x250
>>662207
1. пик забыл

2. на сколько я знаю нельзя. а зачем тебе? кстати на моём пике классическая декартова система координат. обрати внимание в каком углу нули
Аноним 24/04/20 Птн 21:42:35 66222287
unity-grid.png (21Кб, 985x530)
985x530
>>662220
>1. пик забыл
Сорян, вот он.
Аноним 24/04/20 Птн 21:47:51 66222488
>>662220
>на сколько я знаю нельзя.
Хреново.
>а зачем тебе? кстати на моём пике классическая декартова система координат. обрати внимание в каком углу нули
В жопу классическую систему. В любом графическом редакторе используется система с началом отсчета в верхнем левом углу. Плюс все 2Д движки, с которыми я раньше работал тоже по тому же принципу были построены. Теперь же придется постоянно переключать мозги туда сюда, плюс пердолиться с переделкой всех своих наработок по физике.
Аноним 24/04/20 Птн 22:09:00 66223089
>>662224
это типа чтобы в 2д пространстве сделать прыжок тебе приходилось отнимать от Y и падать "вверх"? хорошо что юнити это не графический редактор
Аноним 25/04/20 Суб 09:44:50 66231090
>>662230
Хуй знает тоже это очень напрягает. Везде где везло работать - x\y плоскость, z высота.

Когда всякие сайдвью делаешь наверно удобно, а вот топдаун - пиздец начинается дрочево.
Аноним 25/04/20 Суб 12:16:19 66234291
TApbx.png (13Кб, 1200x672)
1200x672
>>662310
ну z в игровых движках глубина как минимум из-за z буфера. привыкайте, тут ничего не поделать
Аноним 25/04/20 Суб 12:30:11 66234692

Сап, есть массив Point, который я загружаю из файла в редакторе

При этом Point имеет дочерние классы, например FunctionPoint у которого есть дополнительные поля.

В редакторе я редактирую этот массив и некоторые точки привожу к FunctionPoint. Но после запуска/перезагрузки скриптов все классы в массиве сводятся к Point. Как можно сделать чтобы юнити все таки этого не делала и оставляла классы как есть?
Аноним 25/04/20 Суб 12:52:33 66235193
>>662346
ты же где-то там итерацию делаешь по массиву, верно?
что-то типа
for (int i = 0; i < points.Length; i ++) {
и тут какие-то действия с points.
}

вот points будет всегда Point из-за того что массив у тебя Point. если ты знаешь какие именно из них FunctionPoint, то можешь кастовать так:

((FunctionPoint)points[3]).поле

но если сделаешь это на точке которая FunctionPoint не является, то получишь эксепшн. самое простое что ты можешь сделать это делать массив того класса что тебе нужен
Аноним 25/04/20 Суб 12:56:40 66235394
>>662351

Ты походу неправильно понял вопрос. Я выводил в дебаг GetType, все правильно там кастится. Суть проблемы в другом
Аноним 25/04/20 Суб 13:19:51 66235895
Вот примерно то что я хочу сделать.
Добавьте скрипт Beda на обьект, потом инициализируйте, запустите игру

https://pastebin.com/bCHFE3RE
Аноним 25/04/20 Суб 13:22:21 66236096
Аноним 25/04/20 Суб 13:39:49 66236697
>>662358
И не работает?
Я делал эти штуки через
public abstract IDataClass : MonoBehaviour {}
И в
public class Beda : MonoBehaviour
{
public List<IDataClass> myValues = new List<IDataClass>();
}
Тогда можно в самом инспекторе драгать эти элементы и всё норм
Аноним 25/04/20 Суб 13:47:16 66236998
Аноним 25/04/20 Суб 13:55:41 66237999
>>662366
это при условии что BaseClass и ChildClass наследуют от него. и то я не уверен что не будет вызываться метод самого абстрактного класса. если не заработает, то сделай для них общий интерфейс и тогда имплементация будет только у тех кто этот интерфейс реализует
Аноним 25/04/20 Суб 20:38:02 662569100
>>662207
>>662222
>1) На пике сетка в редакторе, квадраты 10х10 ячеек, можно их как-нибдуь в 8х8 или в 16х16 переделать? А то пиздец как режет глаза и неудобно объекты расставлять. (PPU = 1)
Если вдруг кому понадобиться, то решил эту проблему так:
1) в Package Manager установил компонент ProGrids
2) В файле \Library\PackageCache\com.unity.progrids@3.0.3-preview.6\Editor\GridRenderer.cs нашел строку:
const int k_PrimaryColorIncrement = 10; и исправил на 8.
Аноним 25/04/20 Суб 20:39:46 662570101
unity-grid1.png (40Кб, 803x425)
803x425
>>662569
Опять пик забыл. Вот что получилось:
Аноним 25/04/20 Суб 20:47:07 662571102
Screenshot 2020[...].png (152Кб, 846x350)
846x350
Screenshot 2020[...].png (123Кб, 728x504)
728x504
>>662569
погоди. в юнити же есть встроенная сетка без прогридса. кажись они от прогридса вообще отказываться собираются
Аноним 25/04/20 Суб 20:52:24 662573103
>>662571
Во встроенной сетке нельзя настроить так чтобы было 8х8 ячеек между основными линиями.
В ProGrids тоже нельзя, но там я хотя бы в нашел где в коде можно это исправить.
Аноним 25/04/20 Суб 20:58:23 662576104
>>662573
всё, теперь я догнал чего ты хочешь. хардкодить это рак конечно, но и тратить время на расширение столь незначительного функционала ещё больший рак. не думаю что из коробки это как-то можно сделать иначе
Аноним 25/04/20 Суб 22:41:40 662629105
>>662366
Попробовал. Не выходит. Пишет что MonoBehaviour создаются только через AddComponent.
Аноним 25/04/20 Суб 22:46:41 662634106
>>662629
покажи что ты там накастрюлил
Аноним 25/04/20 Суб 23:01:17 662648107
image.png (2Кб, 638x43)
638x43
image.png (19Кб, 726x313)
726x313
>>662634
1 - сами точки
Они записываются в массив из файла в редакторе и в редакторе та или иная точка приводится к нужному мне подклассу мной же в редакторе.
2-код самого приведения в редакторе.
Аноним 25/04/20 Суб 23:08:14 662653108
>>662648
сейчас тебе всё объясню, надо только определить понял ли ты вообще что тот хрен выше предложил?

> public abstract IDataClass : MonoBehaviour {}
что вот это означает и зачем ясно?
Аноним 25/04/20 Суб 23:15:16 662659109
>>662653
ну как я понял реализовать мой базовый класс как наследника MonoBehaviour
Аноним 25/04/20 Суб 23:42:34 662690110
>>662659
тебе не нужно базовый класс наследовать от MonoBehaviour ибо его не нужно прикручивать к объектам в инспекторе. как я понял ты хочешь чтоб можно было редактировать в инспекторе в списке. не уверен что с полиморфизмом это возможно в твоём случае.

обычно вот такие свичи это сигнал к тому что архитектура не очень. расскажи подробнее что это за система в целом. тебе же не тип их нужно получить, а какие-то действия выполнить в зависимости от типа

Аноним 25/04/20 Суб 23:56:35 662700111
>>662690
Есть массив точек, по которым движется обьект. Некоторые точки могут иметь свои поля, которые передаются обьекту. Например - хранить разрешенную скорость на участке, либо пенять путь в зависимости от переменной
Аноним 26/04/20 Вск 00:06:24 662707112
>>662700
окей. предположим объект который движется это Train.

делаешь у точек интерфейс

public interface IWaypoint {
public virtual Action(Train train);
}

дальше делаешь наследников от них со всякими умениями

public class WaypointSpeedLimit : IWaypoint {
public override Action(Train train) {
train.SetMaxSpeed(10f);
}
}

public class WaypointRotate : IWaypoint {
public override Action(Train train) {
train.Rotate(40f);
}
}

соответственно у поезда должны быть публичные эти методы или поля.

список вейпоинтов у тебя будет List<IWaypoint>. когда твой поезд достигает определённой точки то ты его же передаёшь этой точке. например на точке 3 будет так:

_waypoints[3].Action(train);

таким образом у тебя не поезд отвечает за всякие ебаные действия у вейпоинтов, а вейпоинты отвечают за то что делает поезд.

вопросы есть?
Аноним 26/04/20 Вск 00:08:33 662712113
>>662707
>public virtual Action(Train train);
я тут опечатался virtual не нужен и в интерфейсе все методы public

точно так же и в наследниках не нужен override
Аноним 26/04/20 Вск 00:22:48 662721114
>>662707
Вопрос есть - что тут заставит сериализатор юнити не приводить к общему классу?
Аноним 26/04/20 Вск 00:25:05 662722115
>>662721
возможно я не понял вопроса, но у них нет общего класса
Аноним 26/04/20 Вск 00:42:50 662730116
>>662722
но в целом это вроде можно пересадить и на абстрактный класс и насаживать на GameObject
Аноним 26/04/20 Вск 06:06:26 662752117
image.png (41Кб, 733x417)
733x417
2Ejl9rfCT6.mp4 (1246Кб, 848x496, 00:00:12)
848x496
Запилил два класса для создания простенькой череды анимаций. Можно воспроизводить задом наперед.
Аноним 26/04/20 Вск 07:13:40 662754118
>>662752
красаучег. немного оптимизации не повредит: сделай метод SetupAnimation куда и впердоль создание своей анимации и вызови в Start(), а на инпут вызывай только animate.Go() или animate.Reverse(). иначе у тебя получается что при каждом клике ты создаёшь новую анимацию и сохраняешь её в памяти
Аноним 26/04/20 Вск 11:59:11 662803119
image.png (35Кб, 427x644)
427x644
>>662707
Попробовал. С таким методом оно просто пропадает, а не сводится к общему
Аноним 26/04/20 Вск 12:44:57 662812120
быстро подкиньте видеоурок как сделать столкновение камеры от первого лица со стенкой. некогда разбираться, надо сделать
Аноним 26/04/20 Вск 13:24:43 662826121
>>662803
сейчас попробую тебе прямо видеоурок накидать. будем надеятся не обосрусь заживо
Аноним 26/04/20 Вск 14:04:57 662847122
traintut1.mp4 (7067Кб, 1776x1080, 00:07:13)
1776x1080
>>662803
>>662826
держи первую часть, сейчас вторая доэкодится и закину. я там пару раз оборсрался и в целом можно было сделать абстрактный класс чтоб не делать GetPosition, но по большому счёту похуй ибо работает
Аноним 26/04/20 Вск 14:13:12 662848123
traintut2.mp4 (13726Кб, 1780x1080, 00:13:20)
1780x1080
>>662847
держи вторую половину
Аноним 26/04/20 Вск 15:23:20 662866124
>>662848
>>662847

А теперь попробуй заполнить этот массив в редакторе, а не в старте и запустить.

Короче, походу мне будет проще наследовать от MonoBehaviour и создать GO-пустышки
Аноним 26/04/20 Вск 15:46:29 662889125
traintut3.mp4 (4927Кб, 1788x1080, 00:05:22)
1788x1080
>>662866
там есть куда улучшать, тебе просто общий принцип описал. вот держи видос без интерфейса и с пустышками. тебе остаётся добавить в OnGizmos линии чтоб было видно в каком порядке они идут и, если надо, обучить вейпоинты хранить указатели на следующие и вейпоинты и отдавать их поезду
Аноним 26/04/20 Вск 15:49:26 662896126
>>662889
Это и так понятно, только интересно как пустышки будут нагружать систему, т.к. их около 3 тысяч
Аноним 26/04/20 Вск 15:52:47 662899127
>>662896
а почему бы их тебе не генерировать в коде как я в старте? зачем их на сцене держать?
Аноним 26/04/20 Вск 15:59:31 662908128
>>662899
потому что они изначально не настроены как мне нужно, и поэтому я настраиваю их в редакторе.
Аноним 26/04/20 Вск 16:02:08 662911129
>>662908
откуда у тебя данные приходят? всё же можно отконвертировать или заранее и импортировать нормально в юнити или в рантайме
Аноним 26/04/20 Вск 16:04:52 662915130
>>662911
список точек скриптом из 3д максовского сплайна. Там только позиции
Аноним 26/04/20 Вск 16:06:18 662919131
Единственное что приходит в голову - написать скрипт который делает бинарные файлы с моими классами и потом его уже в рантайме загружать
Аноним 26/04/20 Вск 16:31:46 662952132
>>662919
ты можешь написать экспортёр из макса или заполнить точки в редакторе, сериализовать их с теми данными что тебе нужны и сохранить для использования в коде, но тогда рак будет с изменениями. не знаю как в максе плагины пишутся, но можно попробовать для начала вставить в блендер и оттуда уже высирать пайтоном. 3 тысячи MonoBehaviour на сцене это полная хуйня
Аноним 26/04/20 Вск 16:35:55 662955133
>>662952
Да, я тоже думаю что столько их это многовато. Короче, напишу редактор с сохранением в файл а не в массив
Аноним 26/04/20 Вск 16:50:33 662962134
>>662955
ну удачи тебе. надеюсь увидим тут в ближайшее время результаты
Аноним 26/04/20 Вск 16:52:34 662965135
>>662962
Ну результаты не факт что покажу, но про метод расскажу
Аноним 27/04/20 Пнд 10:22:25 663235136
cameraRaycast.png (97Кб, 869x463)
869x463
Почему я пишу как в доке:
var ray = actor.CurrentCamera.ViewportPointToRay(new Vector3(0.5f, 0.5f, 0f));
Ссылка на доку:https://docs.unity3d.com/ScriptReference/Camera.ViewportPointToRay.html
А получаю спавн под камерой, а не из центра камеры?
Это очередная "фича" которую будут фиксить 2 года?
Аноним 27/04/20 Пнд 11:57:15 663269137
>>663235
покажи что у тебя выдаёт на hit.transform.name и покажи как ты спавнишь и что это за объект
Аноним 27/04/20 Пнд 12:00:08 663271138
Аноним 27/04/20 Пнд 14:36:59 663487139
Помогите, а то я даже не знаю как это гуглить. Вобщем игра будет в жанре квеста, мне надо сделать панельку, на ней будут кнопки сохранения, перехода к карте мира, деньги и т.п. Я не могу придумать ничего лучше кроме как для каждой локации делать свою панель, что не вариант. Вот что мне искать? Если не получится узнать, то тупо сделаю все кнопки в стартовой локе.
Аноним 27/04/20 Пнд 15:57:39 663605140
Аноним 27/04/20 Пнд 16:31:37 663646141
>>663487
я вообще не понял что тебе нужно. локация это сцена? что тебе мешает сделать из панели префаб? ui вообще можно хранить в отдельной сцене так как можно рендерить больше одной сцены

https://www.youtube.com/watch?v=6ztY9-IX3Qg
Аноним 27/04/20 Пнд 21:25:31 663858142
>>662962
Так, все-таки добился результата. Отвязал редактор от самого обьекта-хранителя пути в отдельное окно. Сохранение сделал в папку Resources через JSON + перед ним определение какой тип, по типу:
0|{JSON}\r\n, где 0 - тип

Кстати, юнитевский JSON тут тоже соснул, так как он работает тоже только с монобехами, даже тот который EditorJSONUtility, пришлось использовать добрый Newtonsoft.JSON
Аноним 27/04/20 Пнд 21:30:56 663860143
Аноним 27/04/20 Пнд 21:34:35 663861144
Аноним 27/04/20 Пнд 22:01:33 663879145
>>663861
странно. у меня работает пример из мануала. бывает json очень капризный из-за лишних символов типа пробелов в начале или в конце или как раз \r или \n. но, думаю, это уже не имеет значения
Аноним 27/04/20 Пнд 22:04:24 663884146
>>663879
\r\n у меня как разделитель работает, он удаляется
Аноним 28/04/20 Втр 07:25:04 663992147
raycaststst.png (95Кб, 1968x1069)
1968x1069
>>663271
>>663269
Написал максимально простой скрипт и вообще не понимаю откуда берется разница по Y координате, объекты камеры 100% одинаковые
Аноним 28/04/20 Втр 10:23:07 664010148
>>663992
Разобрался, нахуивертил свою систему и в промежуток когда я пускаю лучи у меня считается физика положения камеры
Аноним 28/04/20 Втр 13:41:27 664096149
>>664010
в смысле у тебя коллайдер на камере чтоль?

>>663992
и уровень кода тебе нужно поднимать. возьмут за жопу если будешь куда-то устраиваться на работу или делиться кодом. затрахаешься потом переучиваться.
много публичных полей
getccomponent в старте
на 26й строке ещё и на null проверяешь не очень ясно зачем
с 18й по 33 строку нужно выделить в отдельный метод
var нужно использовать умеренно или не использовать вообще. чаще всего только там где видно что ты в него запихиваешь. пример:
var list = new List<int>();
в ide сразу идёт хайлайт что там List<int>
var radius = GetRadius();
нихуя не видно, можно предположить что это float или double. и даже если в вызываемом методе есть тип аля GetRadiusFloat(), то ide не подсвечивает

и рекомендую начать использовать новую систему ввода юнити. по началу как-то не очень привычно, но не нужно городить проверки на нажатия кнопок в каждом кадре и в любой момент можно визуально перемепить кнопки или добавить их альтернативу
Аноним 28/04/20 Втр 14:16:06 664112150
>>664096
>var нужно использовать умеренно или не использовать вообще.
Мб он из тырпрайза, ибо я оттуда и тоже привык var при любой возможности юзать, ибо так код короче и понятнее, без длинных и бессмысленных названий типов.

И кстати тип у var можно посмотреть просто наведя мышь на название переменной в любом месте кода, как минимум в вижуалке 2019 так.

мимо другой анон
Аноним 28/04/20 Втр 14:22:49 664113151
>>664112
да я сам из тырпрайза, а водить мышью в ide это рачьё. тут же вопрос не в том что невозможно узнать тип, а в том что тебе об этом вообще думать не надо если он указан чётко. так то понятно что если пишешь код для себя, то можешь делать и поля с дебильными названиями, но в лонгране это плохо
Аноним 28/04/20 Втр 14:51:48 664122152
>>664113
>а водить мышью в ide это рачьё
Лол, пацаны в падике засмеют?

>а в том что тебе об этом вообще думать не надо если он указан чётко
Хз, никогда проблем не возникало с тем что я неправильно понял что за тип у переменной объявленной через var, я понимаю если бы ты в том же JS жаловался, но C# же язык со статической и безопасной типизацией, тебе сама IDE начнет жаловаться если ты тип где-то перепутаешь.
Аноним 28/04/20 Втр 15:22:08 664133153
>>664122
> падике засмеют?
бестолковое действие просто. это как рукой себе рот открывать когда ешь. помогает если ты не умеешь это делать нормально

>тебе сама IDE начнет жаловаться
не надо дожидаться когда у тебя ide начинает жаловаться, просто пиши чистый код. примеры тебе выше привёл где невозможно заранее знать что у тебя в переменной
Аноним 28/04/20 Втр 19:09:31 664195154
>>664096
Нет, у меня 2 скрипта меняли позицию камеры и луч пускал между сменами, примерно так:
[1 - камера.position.y - 5]
[2- пускать луч]
[3- камера.position.y + 5]
>и рекомендую начать использовать новую систему ввода юнити
Завтра посмотрю
А весь код снизу это гавно, чтобы повторить баг, его вообще не стоило бы ревьюить на "читаемость"
Аноним 29/04/20 Срд 03:02:58 664257155
15880204746541.png (489Кб, 970x545)
970x545
Screenshot 2020[...].png (196Кб, 1292x1128)
1292x1128
Screenshot 2020[...].png (35Кб, 792x632)
792x632
читал соседний тред и напоролся там на скриншот прототайпа legend of zelda breath of the wild. стало интересно как они реализовали тени у спрайтов. спрайты и бекграунд под прямым углом от камеры и соответственно спрайты (например кустов) параллельны фону. но тем не менее тень идёт от "основания" спрайта как-будто он перпендикулярен фону. есть идеи как это повторить без костылей с динамическими тенями?

прикладываю свой кривой вариант решения. хотелось бы делать проще ибо это 2 разных материала на один объект и тени чётче
Аноним 29/04/20 Срд 05:01:21 664268156
image.png (55Кб, 303x254)
303x254
>>664257
посмотри внимательно на первый скрин из твоего поста

как сделать? там спрайт рисуется два раза

спрайт тени - просто рисуешь серым, при этом сдвигаешь две вершины в сторону.. вот неакуратно нарисовал
Аноним 29/04/20 Срд 05:21:51 664271157
6660ed7f-4210-4[...].png (587Кб, 1192x671)
1192x671
Юнитаны, если хочу создать 3d платформер, то что мне использовать для реализации движения персонажа? CharacterController или Rigidbody?

На уровне будут динамические физические объекты, вроде летающих платформ, изменяющих высоту блоков. Но персонаж при этом на них воздействовать физически не будет. То есть он не должен толкать какие-то объекты или ещё что-то с ними делать.
Аноним 29/04/20 Срд 05:52:03 664281158
>>664257
Как вариант каждая тень это отдельный спрайт. И все эти тени-спрайты на одном слое
Статические объекты типа деревьев могут быть изначально прорисованы с тенями в Tile Palette + вариант когда одно дерево бросает тень на другое
Аноним 29/04/20 Срд 06:29:41 664285159
>>664271
CharacterController создает gc мусор каждый тик и вместо OnTriggerEnter и OnCollisionEnter там OnCharacterControllerHit (или как-то так)
Rigidbody - если хочешь плавность, то тоже сомнительно т.к. выставляя фичиеский тик меньше (делая его более плавным) весь мир начинает грузить систему сильнее в разы.

Короче это сложный вопрос и дать 100% ответ сложно, просто нужно выбрать какие минусы тебя будут меньше беспокоить.

И всегда есть альтернатива - написать свой простой контроллер, судя по описанию ты будешь только прыгать, можно кастить несколько лучей вниз (для проверки коллизии) и делать SetParent когда встаешь на платформу, короче думай, удачи.
Аноним 29/04/20 Срд 10:09:14 664321160
>>664257
Скорее всего просто шейдер. Берёшь оригинальный спрайт, обсериваешь его и сдвигаешь несколько пикселей в зависимости от направления света.
Аноним 29/04/20 Срд 10:37:22 664326161
>>664271
CharacterController будет лучше. Ну, поверх него тоже свой скрипт нужно подвесить, само собой.

>>664285
Cпециально запустил профайлер, стёр всё, кроме GC, с контроллером около 5 мс пики сборщика мусора, а без него - около 5 мс. Райкаст скорее всего будет медленнее и уж точно гораздо хуёвее.
Помогите с кватирионами мать их Аноним 29/04/20 Срд 11:16:11 664333162
2020-04-29.jpg (174Кб, 1293x544)
1293x544
Хочу сделать турель , чтобы поворачивалась за камерой - башня по горизонтали -ствол по вертикали - нашёл чей то скрипт - всё работает как надо - но стоит турельку наклонить и всё летит к хуям. Подскажите ,что добавить или исправить)
Аноним 29/04/20 Срд 11:40:14 664341163
oof.png (11Кб, 841x193)
841x193
>>664326
Суть не в "сколько мс на пик", а в том, что этот контроллер вообще их создает.
>Райкаст скорее всего будет медленнее и уж точно гораздо хуёвее.
KinematicController с пика этого >>664271 как-раз сделан на коллайдерах ковырялся в сурсах
Держи еще пик перфоманса райкастов на некро-мобилках

Аноним 29/04/20 Срд 11:55:29 664347164
>>664333
>башня по горизонтали -ствол по вертикали
Это как? Башня обычно вертикально стоит.

И что значит поворачиваться за камерой? Камера где стоит относительно турели?
Аноним 29/04/20 Срд 12:03:37 664350165
>>664341
Как ты вообще отследил, что контроллер мусорит? У меня что один, что пять, что вообще ноль по всем параметрам идентичны.
>с пика этого
Когда я нашёл официальный тпс сэмпл с ригидбади персонажем и движением через рутмоушн, сразу понял, что все сэмплы это полная хуйня.
Аноним 29/04/20 Срд 12:10:50 664352166
>>664347
Башня как у танка - крутиться вправо-влево ( по горизонтали)
Ствол вверх-вниз (по вертикали)
Турель поваричивается туда куда смотрит камера
Как то так)
Аноним 29/04/20 Срд 12:18:37 664356167
Мое видео4.mp4 (4172Кб, 1920x1080, 00:00:18)
1920x1080
Аноним 29/04/20 Срд 12:20:54 664359168
characterCon tr[...].png (43Кб, 982x300)
982x300
>KinematicController на коллайдерах
Хотел сказать на райкастах

>>664350
Твоя правда, он создает мусор, только если добавить метод void OnControllerColliderHit(ControllerColliderHit hit), а обычные OnCollision и OnTrigger не будут работать
Аноним 29/04/20 Срд 12:23:20 664362169
>>664356
А с наклоненной моделькой?
Аноним 29/04/20 Срд 12:39:50 664373170
xxx.mp4 (19867Кб, 1920x1080, 00:00:17)
1920x1080
Аноним 29/04/20 Срд 12:48:28 664375171
>>664373
Не охота вникать почему чужой код работает неправильно. Я бы сделал так:
1. Вычисляем координаты цели в базисе основания турели (у трансформа есть такой метод). С помощью atan2 узнаем угол поворота цели относительно локальной оси y, поворачиваем башню на этот угол.
2. Когда башня уже смотрит на цель, вычисляем координаты цели уже в базисе башни, узнаем угол поворота относительно оси x и вращаем на этот угол ствол.

В этом методе недостаток, что сперва поворачивается башня, а потом ствол. Но можно его модифицировать и чтобы они одновременно вращались.
Аноним 29/04/20 Срд 12:51:22 664377172
>>664375
Ну спасибо - буду дальше ковырять)
Аноним 29/04/20 Срд 12:52:03 664378173
>>664377
А что, тебе мой способ не понравился?
Аноним 29/04/20 Срд 12:52:38 664379174
>>664359
>OnControllerColliderHit
Юзаю collisionFlags и не ебу себе мозг. Всё отлично работает.
Аноним 29/04/20 Срд 12:59:45 664381175
>>664378
Ну просто я в кватирионах не понимаю - буду ща изучать)
Аноним 29/04/20 Срд 13:03:55 664384176
>>664381
Мой способ без кватернионов.
Аноним 29/04/20 Срд 17:42:51 664510177
На один Object можно навесить несколько процедурногенерируемых мешей?

Как обходить ограничение в 65к вершин на один меш, если объект имеет больше?
Аноним 29/04/20 Срд 17:46:41 664512178
>>664510
>На один Object можно навесить несколько процедурногенерируемых мешей?
>
>Как обходить ограничение в 65к вершин на один меш, если объект имеет больше?
Ты пробовал повешать два и создать больше вершин на один меш?
Аноним 29/04/20 Срд 17:48:48 664513179
>>664512
Нет, пока играюсь с импортом из Magica Voxel. Проверять долго. От возможности/невозможности зависит архитектура.
Аноним 29/04/20 Срд 17:51:55 664514180
>>664513
Думаешь в юнити нельзя запихать меш с 100к полигонов?
Аноним 29/04/20 Срд 17:55:09 664515181
>>664514
Проверял - не жует больше 65к.
Аноним 29/04/20 Срд 17:57:48 664518182
>>664514
Ты только когда про 32х битные буферы заливать начнёшь, не забудь упомянуть о совместимости.
Аноним 29/04/20 Срд 18:02:01 664520183
>>664518
Не понимаю о чем ты
>>664515
>Проверял - не жует больше 65к.
Что значит не жует, импортируется с ошибкой?
Аноним 29/04/20 Срд 18:03:20 664521184
>>664520
Процедурно генерируемые меши отрисовывает коряво - максимум 65к вершин.
Аноним 29/04/20 Срд 18:05:35 664523185
>>664520
>Не понимаю о чем ты
О переключении мешей из режима "65535 вершин" в режим "4 миллиона вершин".
Аноним 29/04/20 Срд 18:15:48 664527186
>>664521
>Процедурно генерируемые меши отрисовывает коряво - максимум 65к вершин.
Ты же говоришь не проверял. Судя по всему кто-то проверил и тебе уже сказал результат? Ты хочешь чтобы еще я вместо тебя проверил?
Аноним 29/04/20 Срд 18:19:39 664528187
>>664527
Ну я забыл, что проверял. Вот, вспомнил.
Я хочу ответ получить на вопрос
"Как мне отрисовывать воксельную модель полигонами, у которой в итоге получается больше 65к вершин."
Аноним 29/04/20 Срд 19:05:18 664544188
interface A {
void B();
}

class C : MonoBehaviour, A
{
void B() {}
}

Можно так
B x = new B
И оказывается можно и вот так?!
A x = new B;
Странно, не ожидал что можно название интерфейса перед объявлением вписать.
Аноним 29/04/20 Срд 19:06:26 664545189
C x = new C;
A x = new C

fix
Аноним 29/04/20 Срд 19:14:24 664546190
>>664545
А зачем тогда по-твоему интерфейс, если не для этого?
Аноним 29/04/20 Срд 19:16:17 664547191
Имеет ли смысл помещать (т.е. делать атлас) несколько вытянутых текстур для декалей (трещины) в одну текстуру? Чтобы потом использовать decal projector с этой текстурой?
Аноним 29/04/20 Срд 20:22:17 664557192
image.png (50Кб, 1059x184)
1059x184
image.png (55Кб, 1049x205)
1049x205
image.png (4Кб, 303x97)
303x97
image.png (13Кб, 507x116)
507x116
Двач, спасай. Я с проблемами не лезу обычно, а сам их решаю (даже если на это дни уходят).
Но щас блять я с ебаниной какой-то столкнулся, которую вообще никак не могу решить.

Приложение под андроид почти готов. Ставлю ебанину эту для рекламы от Unity. И сразу мне триллиард варнингов и ошибок выходит. Посмотрел на форумах у индусов и у жиробасов из США - нихрена там из решений нет толком, кроме как удалить кеш - что я и сделал, но эта ссанина так у меня и осталась висеть на почти готовом проекте.



Аноним 29/04/20 Срд 20:24:49 664561193
>>664557
Юнити, к слову, 2019.3.4f1
Аноним 29/04/20 Срд 20:48:40 664577194
image.png (10Кб, 468x149)
468x149
Не жестко ли так геймобжекты удалять?
Аноним 29/04/20 Срд 21:50:49 664591195
>>664557
Кинь фул скрин сайдбара сервисов(конкретно вкладки ADS)
Аноним 29/04/20 Срд 22:01:01 664593196
Может кто-то пояснить за штуки вроде Photon или Firebase? Что стоит изучать? Какие вообще мультиплеерные решения стоит потрогать и где про это узнать получше?
Аноним 30/04/20 Чтв 01:01:00 664635197
image.png (25Кб, 306x524)
306x524
Аноним 30/04/20 Чтв 01:55:49 664640198
>>664326
>CharacterController будет лучше
Я тут сразу заметил одну проблему. Если есть динамические физ. объекты, которые могут отталкивать персонажа, то на CharacterController всё это поведение придётся с нуля писать. Условно я стою на месте, сбоку прилетает платформа, которая меня отталкивает.
Аноним 30/04/20 Чтв 03:07:15 664648199
>>664577
Если имеешь ввиду, выполнится ли удаление из списка - то все будет ок, так как будет использован хэш-код объекта, чтобы найти его в списке и удалить. На твоем месте я бы добавил проверку на наличие элемента в списке при добавлении, чтобы избежать дубликатов. А с удалением - добавил бы проверку, что в результате удаления не вернется false и писал бы в лог ошибку, если это случится.
Аноним 30/04/20 Чтв 11:17:52 664696200
Подскажите по архитектуре.
Допустим у меня есть последовательность событий, каждое из которых занимает неизвестное время.
После завершения одного события я стартую следующее и так до конца.

Событием может быть что угодно: перемещение объекта, ожидание ввода пользователя и тд.
Есть ли какой-то удобный способ не скатываться в сорт оф callback hell? Типа я из метода старт вызывают первое событие, отдаю ему коллбек по завершении оно вызывает этот коллбек и запускается следующее.
Таким образом у меня в классе куча методов больших и маленьких.

Можно ли как-то обойстись одним-двумя?

В js я бы каждый эвент обернул в промис и делал бы что-то вроде (условно)

async myMethod() {
await event1();
await event2();
...
await event99();
}
Аноним 30/04/20 Чтв 12:44:31 664716201
>>664557
Выручайте с этой парашей.
Аноним 30/04/20 Чтв 13:14:18 664725202
>>664716
У меня было что-то похожее, я не помню, так подсказал бы.
Вообще помню дрочился с manifest файлом для андроида т.к. он создавал все эти конфликты, возможно туда нужно добавить этот UnityAds как пакет или зависимость нативную.
Еще лучше я бы посоветовал попробовать сделать всё в ручную, а не через менеджер пакетов.
А судя по логам, у тебя там скрытые файлы дублируются.
Аноним 30/04/20 Чтв 14:24:25 664752203
Процедурно генерирую сетку из вокселей. Каждый воксель имеет свой цвет.

Как реализовать раскраску сетки? Стандартные шейдеры не поддерживают vertex colors.

Если буду вместо vertex colors наваливать сплошную текстуру (тупо цветной квадратик, соответствующий цвету вокселя), будет ли это бить по производительности? Нормальное ли решение?
Аноним 30/04/20 Чтв 18:06:18 664786204
>>664696
Оборачиваешь каждое событие в IAlternatable собираешь их в очередь и в каждом событии либо меняешь статус, либо колбеком даешь клиенту команду запускать следующее событие.
Аноним 30/04/20 Чтв 18:58:10 664800205
>>664696
В юнете есть Tasks-ы,тип делаешь
public async Task Blah(){
your logic
await getFromNetForExample();
await Task.Delay(1000); // for example
}

и дергаешь этот метод как в js, ну ты понял, загугли про таски в юнете и всё
Аноним 30/04/20 Чтв 20:08:31 664824206
>>664557
Кароче в очень глубоких недрах интернета наконец-то нашёл решение. Если кому пригодится - папку Packages удалите в вашем проекте, - она вновь появится потом, но всё исправится.
(Я ебал и на это я столько времени потратил).
Аноним 30/04/20 Чтв 23:20:12 664857207
Если я часто выполняю такой код во время игрового процесса:
someList.add(new Obj());
//
someList.removeAt(index)
то это плохо? Вроде тут мусор будет лишний скапливатся? Хоть я я и удалил из листа, сам объект, который я создал, будет висеть в памяти?
Аноним 30/04/20 Чтв 23:32:59 664861208
>>664857
ты ж из листа только референс на объект удаляешь
сам объект не удаляется
Аноним 01/05/20 Птн 09:25:55 664919209
Подскажите, вот есть объект z с спрайтом, в этом объекте ещё кнопка и текст, при запуске объект отключен а когда персонаж столкнется с обьектом x то объект z нужно включить. Вот думал как это сделать, .Find не находит выключенный объект, а сначала найти его->отключить->выключить при действии не работает, мне приходит в голову только вынести объект за сцену и при действии переместить его. Подскажите, должно же быть более разумное решение?
Аноним 01/05/20 Птн 09:47:45 664922210
>>664857
Если на объект больше нигде нет ссылок, то он соберется сборщиком мусора и занимаемая объектом память освободится.
Аноним 01/05/20 Птн 11:34:44 664955211
а есть такой скрипт для редактора, чтобы я взял несколько префабов (например префаб пола, 3 префаба стен, и префаб потолка), выставил их в редакторе, затем запустил этот скрипт, и оно бы из них мне сделало одную сплошную модель?
Аноним 01/05/20 Птн 13:17:11 664987212
15882392558930.png (86Кб, 512x512)
512x512
анон, я ни хуя не понимаю, зачем нужен dependency injection. Зачем-то привязывают классы к интерфейсам, очень сложна, аж башка трещит, ты не мог бы мне разъяснить попроще на Воване и говне, или там на Хоро и яблоках? Я аж слышу как в голове ржавые шестерёнки с выкрошенными зубцами скрипят и заедают.
Аноним 01/05/20 Птн 13:21:41 664989213
>>661525
>В смысле, это через скрипт сделать?
Coroutines
Аноним 01/05/20 Птн 13:37:04 664992214
>>664955
а зачем?

>>664987
тут у одного товарища была задача. у него был поезд и вейпоинты по которым он двигался. каждый раз когда поезд доезжал до вейпоинта, он чекал его тип и делал какие-то действия. возьмём для примера 2 типа вейпоинтов. один меняет цвет поезда, а другой его скорость. первая реализация была приблизительно такая:

if (поезд достиг вейпоинта) {
var waypoint = current_waypoint;
switch(waypoint.type) {
case WaypointColor:
ChangeColor();
break;
case WaypointSpeed:
SpeedChange();
break;
}
}

что-то в этом духе. суть проблемы в том что когда он решил добавить ещё один тип вейпоинта, например тот что издаёт звук, то ему пришлось в switch добавлять ещё одну запись и код поезда разрастается

один из вариантов решения проблемы это dependency injection. для вейпоинта создаётся интерфейс. интерфейс означает что независимо от того что там за код у его наследников, определённые публичные методы там точно будут присутствовать. например

public interface IFartable {
void Fart();
}

public class Square : IFartable и public class Circle : IFartable должны в себе обязательно иметь метод public void Fart(); иначе ты не скомпилируешь. что в этом методе будет всем похуй.

интерфейс позваляет ссылаться на эти классы и использовать эт методы, но не оставшиеся методы класса. пример:

IFartable circle = new Circle();

если в class Circle есть метод Hello(), то сделать circle.Hello() у тебя не получится, ссылка в данном случае только на контракт. зато circle.Fart() получится так как в контракте это прописано.

возвращаемся к поездам. все вейпоинты у нас наследуют от одного интефейса в котором есть метод Action с параметром самого поезда. в интерфейсе:
interface IWaypoint {
void Action(Train);
}

в самом поезде наш ебаный свич мы заменяем на:

if (поезд достиг вейпоинта) {
IWaypoint waypoint = current_waypoint;
waypoint.Action(this);
> обрати внимание как здесь в вейпоинт мы передаём this, то есть сам поезд. это и есть dependency injection
}

после этого в вейпоинте уже делаешь чего хочешь. аля:

public void Action(Train train) {
train.setColor(Color.red);
}

в этом же треде для анона записывал вышеописанную задачу. смотри здесь:
>>662847
>>662848

Аноним 01/05/20 Птн 13:41:29 664993215
48115684-b1c52e[...].png (34Кб, 389x554)
389x554
>>662754
>>662752
>>662803
Пилите велосипеды камрады.
Если у вас задача сделать простенькую анимацию, где вы будете вращать, перемещать, скейлить go - интегрируйте себе в проект dotween, все настройки через инспектор и скрипт. Очереди, функции плавности и др. доступны из коробки.

Если же не хотите готовый функционал, то тогда используйте компонентный подход - пишите компоненты которые будет "управлять" игровым объектом, по средствам карутин. Да так работает dotween

Аноним 01/05/20 Птн 14:08:26 665000216
>>664992
>а зачем?
надо. просто говорю - у меня отдельная моделька для пола, отдельная для стен, отдельная для потолка. таких моделек много.

из этого надо собрать комнаты - префабы. но в инспекторе такой мусор что нихрена не найти (группировать тоже не вариант - вечно все развернуто).

Плюс страдает оптимизиация - так как все эти модельки - их там получается тысячи (оно там конечно батчит, но не очень)... но при этом у меня же все должно быть статическим, почему бы в самом редакторе префаб комнаты не сбилдить в одну модель...
Аноним 01/05/20 Птн 14:20:53 665003217
Аноним 01/05/20 Птн 14:22:59 665004218
>>665003
спс, попробую, посмотрю то, не то
Аноним 01/05/20 Птн 15:19:48 665029219
>>664992
дак получается, что если у него например в классе Train методы ChangeColor() и ChangeSpeed(), то они публичные и вызываются через вэйпойнт? То есть у него будет типа
public void Action(Train train) {
train.ChangeColor(Color.red);
} или как?
Хуй знает, вроде как немного понятнее стало, спасибо анон. А вот когда в зенжекте они в начале биндят интерфейсы к конкретному классу, это зачем вообще? Типа чтобы при вызове интерфейса всегда вызывался именно этот класс. Вот от этого у меня вообще мозги сломались, нахуй тогда вообще интерфейс, можно в классе синглтон сделать и всё.
Аноним 01/05/20 Птн 15:23:27 665032220
>>665029
именно так мужик, посмотри видосы на которые я тебе указал, там эти публичные методы и есть
а зенджект я ни разу в глаза не видел
Аноним 01/05/20 Птн 18:51:02 665078221
>>665032
туториалов по зенджекту посмотрел всяких, вроде что-то начало понимание какое-то появляться медленно, прямо как говяха вылазит. Спасибо ещё раз друг анон.
Аноним 01/05/20 Птн 21:04:49 665127222
>>665078
не, говяха обратно всосалась, всё равно ничего не понимаю. Зенжект это какой-то пиздец, всё тупо усложняется на ровном месте в несколько раз. Вот на примере проекта посмотри, говорят, Zenject-Hero. Охуительные истории, написано куча инсталлеров, сигналов и прочих штук, но при этом сам функционал, например, нанесения дамага лазером по-прежнему реализован обычными вызовами чужих методов через GetComponent. Нахуй вообще это всё? Можно без него? Анон сказал - вот зенжект это приличная архитектура, надо вот так делать. Ну я хуй знает вообще.
Аноним 02/05/20 Суб 00:18:43 665162223
Объясните дураку, почему синглтон плохо?
Аноним 02/05/20 Суб 00:35:33 665169224
>>665162
ничего плохого в синглтоне нет, но поскольку он позволяет глобально ссылаться на разные части кода, нубы всякие начинают пихать их куда попало. типа 500 синлтонов, менеджеров и прочего говна. это создаёт много жестких зависимостей и лишает возможности кодить модульно. по факту это паттерн из-за которого программист ленится и в лонг ране получает код который сложнее заменять. я перестал юзать их как челендж и это "вынудило" меня чаще использовать другие паттерны и изучать декапелинг (decoupling), что в свою очередь подтянуло уровень кода. так что технически отказ от синглтонов это лучшее что со мной случилось за время изучения c# и юнити
Аноним 02/05/20 Суб 03:41:46 665194225
>>665169
где про декаплинг почитать (для тупых)?
Аноним 02/05/20 Суб 04:00:09 665197226
>>665169
>но поскольку он позволяет глобально ссылаться на разные части кода, нубы всякие начинают пихать их куда попало. типа 500 синлтонов, менеджеров и прочего говна. это создаёт много жестких зависимостей и лишает возможности кодить модульно

ну хз. просто если несколько объектов в коде связаны, хоть что делай, они все равно будут связаны. Например есть менеджер звуков - его придется передать и пуле, и травке, и топору, и интерфейсу.

Или данные игрока - их также придется передавать и монстру, и интерфейсу...

Можно конечно абстрагировать эти данные, или передавать через прокси - но все равно связность остается.

Короче не знаю как это можно решить
Аноним 02/05/20 Суб 04:50:10 665198227
>>665194
самый обычный декапелинг это делегаты. в юнити есть очень простая штука называется UnityEvent. по факту тебе создаёт в инспекторе поля которые позволяют связывать между собой объекты
https://www.youtube.com/watch?v=mC_yUEnGQXM
это старт, но тут жопа в том что в коде нельзя связывать (или нельзя было, или можно в коде, но в инспекторе это не отобразится, я не помню). в любом случае там постоянно на форумах жалуются что unityevent это клёво, но не оптимально. хотя, как всегда, для мелких проектов вообще ништяк. я не юзаю unityevents, мне влом в инспекторе мышью кликать. события связываю обычно из кода и выглядит это так:

например есть у нас компонент игрока и есть компонент который отвечает за отображение кол-ва хелсов

public class Player : MonoBehaviour {
public event Action<int> OnDamaged;
> ключевое слово event означает что вызывать (Invoke) OnClick можно только из этого объекта
> Action это обёрта для делегата по факту
> <int> это параметры метода которые будут в этом делегате

private int _health = 100;

public void GetDamage(int amount) {
_health = Mathf.Max(_health - amount, 0);
> это чтоб хелсов не было меньше нуля
OnDamaged?.Invoke(_health);
> это мы вызываем этот самый делегат
> ?. это проверка на null. если на делегат никто не подписан, а мы вызовем его (просто OnDamaged.Invoke(_health)), то получим ошибку
> Invoke это вызов и _health это тот самый параметр <int> в объявлении делегата
}
}

а у отображения класса хелсов будет такая хуйня:
public class UIHealth : MonoBehaviour {
private void Start() {
FindObjectOfType<Player>()?.OnDamaged += Change;
> findobjectoftype это корявый способ, но для примера сойдёт
}
private void Change(int value) {
> тут твой код для замены текста. в value из класса игрока будет переданы его хелсы.
}
}

суть примера в том что если ты удалишь любой из этих компонентов, всё будет в порядке и ничего не обосрётся. декапелинг мать его
Аноним 02/05/20 Суб 05:08:27 665201228
>>665198
это разве декаплинг? это паттерн observer
Аноним 02/05/20 Суб 05:27:53 665202229
>>665201
observer pattern в числе других задач решает и проблему декаплинга. я закинул пример откуда надо начинать смотреть. декаплинг это довольно большой пласт и ссылок на какое-то вменяемое чтиво где собрано много информации у меня нет
Аноним 02/05/20 Суб 05:59:47 665203230
>>665202
ты пользуешься инжектом интерфейсов в конструкторы например?
Аноним 02/05/20 Суб 06:05:17 665204231
>>665203
ну я могу представить себе зачем такая хуйня нужна, но ни разу не использовал. в целом в моих проектах почти всё на monobehaviour и потому там конструктора нет
Аноним 02/05/20 Суб 06:31:08 665205232
>go.GetComponent<RectTransform>();
или
>go.transform as RectTransform;
или это одинаковая хуйня?
Аноним 02/05/20 Суб 06:35:30 665206233
Аноним 02/05/20 Суб 06:37:20 665207234
>>665206
RectTransform наследник transform, не знаешь не пиши
Аноним 02/05/20 Суб 07:14:18 665210235
>>659486 (OP)
Аноны, я немного аутист, вторую неделю оптимизирую. Пилю кубач, пытаюсь ужать кубы максимально шакально. Пока что смог выжать 180 мб на 1 миллион кубов. Остановиться или ебаться дальше? Сейчас главная проблема - дохуя сжирают памяти указатели на дочерние ноды. Вот бы выпилить их, но как мне высчитывать дочерние ноды без прямых указателей?
Аноним 02/05/20 Суб 07:42:27 665212236
>>665210
Надо понять где ты хранишь ноды, как хранишь и уже от этого отталкиваться.
На дотсе можешь выжить перфоменс или через алгоритмы, например вместо хранения от 0 до 1000 хранишь ноду с данными startIndex = 0, endIndex = 1000, data = {какие-то данные}
Аноним 02/05/20 Суб 07:46:08 665213237
1473718699593.png (7Кб, 419x223)
419x223
>>665212
Вот так нода выглядит.
Аноним 02/05/20 Суб 08:01:09 665214238
>>665213
И ты их хранишь как List<Node> ?
У тебя есть метод который обновляет меш? Или сейчас только 1 раз вызываешь метод типа BuildWorld()?

Я бы копал в сторону Range-ов
Аноним 02/05/20 Суб 08:39:11 665215239
>>665205
Почти одно и то же. Трансформ под обёрткой есть список, составленный из геткомпонентов раз в сколько-то фреймов, а геткомпонент заставляет найти в данный момент. Всё, что ты часто используешь из стандартных юнитовских классов, нужно хранить где-нибудь.
Аноним 02/05/20 Суб 09:49:19 665222240
>>665214
> И ты их хранишь как List<Node> ?
Просто динамические массивы. Вложенные друг в друга. Как на пике, с корневой по последнюю ноду так.
> У тебя есть метод который обновляет меш?
Только изменённые ноды, да и похуй на скорость, мне надо ужать память.
> в сторону Range-ов
У меня и так по умолчанию нет дочерней ноды - считается диапазон из текущей. При записи чекаю и тру лишние ноды.
Аноним 02/05/20 Суб 11:17:15 665228241
>>665197
Это не совсем понятие связности, если упростить малая связность означает что изменения в топоре не вызовут изменения в саунд менеджере, и наоборот, если ты возмешь другой менеджер тебе не придется переписывать топоры. А то что у тебя есть вызовы саунд синглтона по коду это естественно. В идеале у тебя есть интерфейс взаимодействия, и кроме как через него ты лазить в разнесенные системы не должен.
Аноним 02/05/20 Суб 11:57:23 665236242
>>665222
Еще как вариант ты можешь выгружить инфу в какой-нибудь кеш файла и ассинхронно выгружать / подгружать необходимую информацию, тогда сразу появится легкая управляемость памятью

> У меня и так по умолчанию нет дочерней ноды - считается диапазон из текущей.
Мне все еще кажется, что мы про разные вещи говорим, лол.
Аноним 02/05/20 Суб 13:35:35 665260243
анон, где можно по быстрому прочитать весь синтаксис C# чтобы серьезно вкатиться в юнити?

Сразу - я уже умею программировать (моим основным рабочим (зарабатывал на нем деньги) языком является С++), так что мне нужна только минимальная выжимка языка

Времени читать тома по 2к страниц особо нет. MSDN конечно клевая - но такая же объемная, так что тоже нет - хочется еще более краткого

Ну и понятно что видосы сжирают еще больше времени (хотя если есть что-то типа Шарп за час, то наверное сойдет)
Аноним 02/05/20 Суб 13:42:08 665262244
>>665260
https://www.w3schools.com/cs/
Без лишней воды, правда тут всё максимально поверхностное (т.е. без многопоточностей и тд)
Аноним 02/05/20 Суб 15:08:58 665273245
>>665260
>где можно по быстрому прочитать весь синтаксис C# чтобы серьезно вкатиться в юнити?
>я уже умею программировать (моим основным рабочим (зарабатывал на нем деньги) языком является С++), так что мне нужна только минимальная выжимка языка
Слабо верится что чел зарабатывающий знанием плюсов может задавать такие вопросы.
Аноним 02/05/20 Суб 15:23:06 665276246
>>665260
Качай Альбахари и пройдись по оглавлению
Аноним 02/05/20 Суб 15:50:15 665284247
>>665273
Верится как раз легко, Луговский не даст соврать.
Аноним 02/05/20 Суб 17:06:47 665293248
>>665236
> ты можешь выгружить инфу в какой-нибудь кеш файла
Я-то могу, на самом деле шикарная идея. Но что если это потом попробовать запустить на HDD? Бывает чтение до 3-5 мб/с может упасть на ноутбучном диске. Даже не представляю как с этим работать в реалтайме. У меня в один поток в ОЗУ ноды пишутся примерно 100 мб/с, читаются 500 мб/с. Есть вообще из игр пример использования дискового кеша? А то это получится эталонный лагодром с говнокодом, который только на топовом железе работает.
Аноним 02/05/20 Суб 17:50:49 665300249
image.png (49Кб, 966x587)
966x587
image.png (43Кб, 919x651)
919x651
image.png (136Кб, 1138x711)
1138x711
Двачик помоги, вообще не понимаю что делать
Пилю мультиплеерную стратегию с Photon, пытаюсь заполнить список доступных игроку строений в начале, а мне выдает все время пустой список. Список заполняю в другом статичном классе, выдает что-то такое. На тебя последняя надежда, совсем не понимаю что с этим делать, перерыл пол интернетов. Игрок создается специальным инстансом фотона, разные игроки в клиентах видны сразу говорю. Просто переменные их не меняются. При запуске сцены независимо, с искусственным добавлением игрока все работает, дело полюбому в каких-то фотоновских мудростях
Аноним 02/05/20 Суб 17:55:12 665302250
>>665300
Классы, наследуемые от MonoBehaviour, нельзя создавать через new(). Попробуй убрать наследование у класса House.
Аноним 02/05/20 Суб 17:57:54 665303251
image.png (19Кб, 572x237)
572x237
>>665302
так объект создается, в списке в едиторе он есть, пусть и имя отображается калично, но как я говорил, без фотона все норм работает
Аноним 02/05/20 Суб 18:08:17 665307252
>>665303
Нет, он не создается. В инспекторе отображается пустой элемент, значит, не создался. "None" в буквальном смысле означает, что там пусто. При обращении к полю пустого элемента будет исключение. Даже в консоли тебе пишут, что нельзя создавать через new.
Аноним 02/05/20 Суб 19:53:21 665334253
>>665307
почему тогда я могу при обращении напрямую обратиться к элементу? Если миновать лобби я могу создать префаб внутри этого объекта, понимаешь? Почему? В чем разница?
Аноним 02/05/20 Суб 20:16:29 665338254
image.png (68Кб, 570x790)
570x790
>>665307
Смотри, убрал наследование, теперь объект нормально отображается, но ошибка все равно вылетает. Проблема все еще в синхронизации с фотоном
Аноним 02/05/20 Суб 20:39:01 665343255
Дорого ли обращаться к чайлдам? Или лучше при старте создавать массив с ссылками на них?
Аноним 02/05/20 Суб 20:44:40 665346256
Аноним 02/05/20 Суб 20:47:39 665347257
>>665343
Охуенно важные у тебя вопросы. Ещё выясни, что дешевле - делить на 2 или умножать на 0.5

До тех пор, пока ты не делаешь 10000 обращений к чайлдам за кадр - строго похуй.
Аноним 02/05/20 Суб 20:47:48 665348258
>>665343
>Дорого ли обращаться к чайлдам? Или лучше при старте создавать массив с ссылками на них?
>
Да, Да
Аноним 02/05/20 Суб 20:58:47 665352259
>>665347
>Ещё выясни, что дешевле - делить на 2 или умножать на 0.5
Разумеется сдвигать биты вправо.
Аноним 02/05/20 Суб 21:03:50 665356260
>>665347
>До тех пор, пока ты не делаешь 10000 обращений к чайлдам за кадр - строго похуй.
У меня как раз все забито каждый кадр, правда не чайлдами, каждый процентик важен! Просто тут писали, что обращение к свойствам обнулили, я не сильно шарю и слежу. Некоторые штуки сильно затратные, каждую не потестируешь.
Аноним 02/05/20 Суб 22:23:05 665386261
Подскажите тред по настольной игре на unity который тут был на двачах, ну или название игры
Аноним 02/05/20 Суб 22:35:05 665390262
Аноним 02/05/20 Суб 23:10:56 665407263
>>665338
Отлично. Теперь а показывай ошибку и код, на который она ссылается. На скриншотах у тебя 53 строка в классе Player является причиной, этой строки на изображении не видно. И включи нумерацию строк в текстовом редакторе.
Аноним 02/05/20 Суб 23:15:52 665408264
>>660439
Как делать такую подсветку?
Аноним 02/05/20 Суб 23:21:55 665409265
Аноним 02/05/20 Суб 23:55:02 665421266
>>660874
> удалять и создавать новые это очень плохо.
Кстати, почему?
Аноним 03/05/20 Вск 00:48:25 665428267
>>665407
Я в итоге просто выключил генерацию списка, решил просто делать префабы для возможных игроков с заранее заготовленными списками. Заработало, ибо они генерятся до момента входа в лобби. Но другие игроки все равно ничерта не видят. Все еще считаю что ты не на то грешишь, анончик :c
Аноним 03/05/20 Вск 01:12:51 665432268
image.png (12Кб, 414x291)
414x291
Короче, я запустил корутину, которая вызывает другую функцию, а в этой функции я хочу отлавливать нажатия, но они отлавливаются не всегда.
Аноним 03/05/20 Вск 01:25:11 665437269
>>665432
Хотя, вроде дошло почему нельзя.

В этом скрипте нет функции update, это не monobehaviour, как мне тогда отлавливать нажатия?
Аноним 03/05/20 Вск 01:42:37 665440270
Аноним 03/05/20 Вск 02:56:00 665450271
>>665432
Потому что WaitForFixedUpdate. FixedUpdate вызывается далеко не каждый кадр, легко пропустить нажатия. А нахуя тебе корутина?
Аноним 03/05/20 Вск 02:59:48 665451272
>>665440
Он Input и пользуется, в глаза долбишься? Лол, сейчас бы с игровым движком под рукой дотнетовские методы вызывать. Плюс то, что ты скинул, это Windows Forms. Помимо того, что это устаревшая хуйня, используя её ты нахуй посылаешь кроссплатформенность.
Аноним 03/05/20 Вск 03:00:17 665452273
>>665421
GC передает привет
Аноним 03/05/20 Вск 04:12:08 665457274
>>665428
Грешил я на то, что в случае выявления исключения, код юнити перестает исполняться. Создание MonoBehaviour через new генерирует исключение, хотя юнити прописывает его в предупреждение, а не ошибку.

По поводу того, что игроки ничего не видят - у тебя выполняется синхронизация через RPC? То есть функция помечена аттрибутом PunRPC и вызывается по типу?
>PhotonView PV = GetComponent<PhotonView>();
>PV.RPC("Setting", RPCTargets.All, someValue);
Аноним 03/05/20 Вск 07:29:42 665464275
>>665293
Тот же майнкрафт хранит снапшоты и грузит не весь снапшот, а его часть, сохраняет раз в 10 минут весь мир (примерно, точно не знаю), а чтобы не висло - читай из файла ассинхронно, сделай свой формат, например в 1 строке у тебя информация о дате внутри файла, примерно так:
line 0: {fromX:0, toX:100, line: 10},{fromX:101, toX:900, line: 60}
line 1: .. data ..
line n: ..
line 10: {Value:15, Level:0, Position: 0}
Так ты лишишь себя проблемы "грузить 500 мб" т.к. сможешь грузить только то, что тебе нужно. А через асинхронщину, сможешь грузить постепенно, чтобы вся игра не зависала, опять же вспоминая майнкрафт там чанки грузятся не целиком, а по 1 пикселю в глубь.

Вообще это первое что в голову пришло, над этим можно еще подумать и высрать что-нибудь адекватное
.
Аноним 03/05/20 Вск 07:57:55 665466276
>>659499
Бамп вопросу, так и не разобрался
Аноним 03/05/20 Вск 08:50:19 665468277
Чем отличается (Vector2)vec от vec as Vector2?
Аноним 03/05/20 Вск 08:59:53 665469278
>>665468
В первом случае, если vec не может быть сконвертирован, будет исключение, во втором null.
Аноним 03/05/20 Вск 09:08:52 665472279
Аноним 03/05/20 Вск 20:26:40 665599280
Насколько адекватно использовать сабмеш на каждый воксель?
Аноним 04/05/20 Пнд 04:44:25 665649281
Посоны! Я взялся изучать C# для Unity. Изучаю его по одному из курсов от Udemy. Учусь неспешно. За 3 недели добрался до раздела с классами и теперь реально шарю, как с ними работать. До этого у меня был опыт изучения C++, который я дропнул именно на классах (изучив их).

Вообще, эти два языка очень сильно похожи. И, насколько я помню, даже синтаксис практически одинаковый, не говоря уже о структуре классов, конструкторе и т.д.

Чужой код я могу читать, и понимаю логику, но если натыкаюсь на незнакомые для меня внутриюнитевские методы, меня это огорчает. Хотя я примерно понимаю их суть по их названию и все что остается- загуглить их.

Меня очень интересует, как далеко я нахожусь от того, чтобы можно было претендовать на роль джуниор разработчика?

Помимо этого у меня 5+ лет опыта с 3д/2д графикой и работой в UE4 на уровне создания сцен, освещения, материалов и анимаций. Программированием на жизнь я раньше не зарабатывал. Но меня почему-то тянет именно в эту область
Аноним 04/05/20 Пнд 06:17:43 665654282
>>665649
>Меня очень интересует, как далеко я нахожусь от того, чтобы можно было претендовать на роль джуниор разработчика?
Сам то как думаешь? Для начала сделай что-нибудь, что можно назвать игрой.
Аноним 04/05/20 Пнд 07:47:09 665657283
vintage-video-s[...].jpg (142Кб, 1000x1080)
1000x1080
>>665649
У меня было 2 собеса на жун юнете разраба:
1 - пришел мужик знающий с++ и начал дрочить алгоритмами. Их фирма делала зомби шутан (и видимо не доделала)
2 - Дали тестовое: сделать мультиплеерный space arcade, и я сделал, но они просто загосились и ответили "вы нам не подходите, всего доброго".

Хуже всего когда не говорят в чем проблема даже
Аноним 04/05/20 Пнд 07:49:32 665658284
image.png (7Кб, 839x69)
839x69
image.png (10Кб, 411x176)
411x176
Анон, подскажи, что делать. Сделал текстуру tex статиком, чтобы оперативка не утекала. И теперь оказалось, что drawable_texture меняется вместе с tex.
Аноним 04/05/20 Пнд 07:52:18 665659285
>>665657
>сделать мультиплеерный space arcade
Долго делал? Собеседование по сети?
Аноним 04/05/20 Пнд 07:58:57 665660286
>>665658
Сделай static readonly Dictionary<string fileName, Drawaable_texture>

>>665659
Обычно неделю дают, я дня за 4 сделал.
Собеседование по зомби шутану было в офисе и без тестового, где попросили мультиплеер сделать вообще не собеседовали
Аноним 04/05/20 Пнд 08:32:36 665664287
>>665660
Работает. Спасибо
Аноним 04/05/20 Пнд 09:15:59 665668288
Может кто-нибудь объяснить, как работает сборщик мусора? Прочитал мануал, потыкал туда-сюда, но у меня не работает это правильно. Выдаёт по 100 мегабайт сбора мусора то ли из-за вызова сборщика мусора (причём память всё равно не освобождается), либо из-за создания мусора. Ладно бы память освобождалась - натыкал бы сбора в нужных местах, частоту сбора настроил, хуё-моё, но ведь нет же, сборщик мусора показывает 100 мегабайт в профайлере (и в сумме юнька в диспетчере показывает полтора гига по итогу), а память всё равно занятая, и каждый последующий вызов занимает больше и больше времени. Ссылки тру, значения переменных обнуляю, что за дела вообще

Похоже, придётся переделывать тонну скриптов и выносить все локальные переменные в глобальные, но это слишком дохрена переменных и чревато ошибками.
Аноним 04/05/20 Пнд 12:16:41 665685289
>>665668
Он срабатывает в 2х случаях: 1 - какой-то интервал (на всех машинах по разному, 2 - когда память растет или начинает выходить за заранее определенную память (которая потом увеличивается после очистки и при нехватки памяти).

Когда делаешь new class MyClass - это создает новый объект,
Если делаешь MyClass existingClass = new MyClass() - это не заменяет объект, а создает новый и по факту после этого у тебя будет 2 объекта в куче, предыдущий будет удален позднее, удалить прям сдесь и сейчас нельзя, те кто советуют делать GC.Collect аутисты т.к. это явный костыль, что у тебя с логикой или архитектурой проблемы.

Я сейчас выношу все локальные переменные в глобальный и кешы и мое гавно раз в 2-3 секунды создает 40kb мусора.

new struct MyStruct() - это НЕ создает мусор, так что как альтернатива можешь переписать все свои алгоритмы на структуры.

Давным давно был движок от мелкомягких XNA, там в каждом гайде было написано "используйсте структуры где только можете" как-раз из-за этих соображений.

Кидай куски кода, будем всем харкачем оптимизировать
Аноним 04/05/20 Пнд 12:24:17 665686290
>>665654
Я слабовато знаю рынок в области программирования. В моем понимании джуниор разраб, это тот же самый студент, у которого главная задача - изучать Юнити на практике, делая несложные задания и помогая команде во всяких мелочах, но уже получая зарплату которой хватит нолько на еду, естественно
Аноним 04/05/20 Пнд 17:11:58 665745291
image.png (28Кб, 803x458)
803x458
Посмотрел урок на тему движения 2d персонажа с видом сверху, но не могу понять код. Может кто-нибудь объяснить пикрил? Мне важно понять логику и значения этих строк. В уроке как то расплывчато
все объяснил.
Аноним 04/05/20 Пнд 17:40:16 665750292
>>665745
public float speed - переменная, которую можно менять через редактор unity + из других классов, отвечает за скорость перемещения.

Rigidbody2D - штука для физики в юнити
private Vector2 moveVelocity - приватное (значит будет видна только в этом классе) направление движения, будет считаться дальше.

void Start выполняется 1 раз при начале игры (или когда создал этот объект), в этом методе ты ищешь на gameObject-е компонент Rigidbody2D (который нужно повесить на этот объект до начала игры)

void Update - вызывается каждый кадр (может вызваться 60 120 1000 раз, FPS короч).
В этом методе ты считаешь направление движения т.е. заполняешь приватное значение moveVelocity.
Точнее Input.GetAxisWar() - получают силу нажатия на кнопку, Horizontal и Vertical это настройки ввода т.е. лево и право.
moveInput.normalized - сам не знаю, не использовал за 5 лет опыта))0, moveInput speed - усиливает это значение, в инспекторе можешь менять прям в игре значение, поймешь зачем.
Horizontal и Vertical в настройках проекта можно назвать как угодно.

FixedUpdate - вызывается тоже очень часто, но частоту можно редактировать в юнете, стандартное значение стоит 0.02 кажется и работает 48 раз в секунду (т.е. если у тебя игра зависнет на 3 секунды, то этот метод будет вызван 3
48, а метод Update не будет работать пока игра зависсла).
Вообще FixedUpdate рекомендуют использовать для работы с физикой, в твоем методе ты это и делаешь, просишь Rigidbody переместить позицию объекта на rb.position (текущая позиция) + moveVelocity (направление движения) * Time.fixedDeltaTime (разница между кадрами метода fixedUpdate, пока считай за плавность, потом поймешь)
Аноним 04/05/20 Пнд 18:03:24 665755293
>>665750
Хуя подробно расписал, добра, анон!
мимо
Аноним 04/05/20 Пнд 18:40:02 665776294
>>665745
Вместо GetComponent лучше поле rb сериализировать и уже запихнуть прямую ссылку в испектор.
Ну или через Awake(), а не через Start()
Аноним 04/05/20 Пнд 18:43:54 665779295
>>665745

[SerializeField]
private Rigidbody2D rb;

И в инспекторе перетащи компонент в поле скрипта.
Аноним 04/05/20 Пнд 18:46:08 665780296
>>665685
Спасибо, доходчиво. В общем, что я боялся делать, то и надо.
Аноним 04/05/20 Пнд 19:21:28 665794297
image.png (59Кб, 652x491)
652x491
Где включается ZTest For After PostProcess? Вообще никто не знает, его там нет этого чекбокса.
Аноним 04/05/20 Пнд 19:35:15 665799298
>>665794
Он включается в коде шейдера строкой ZCull ON (примерно, я не помню точно), завтра напишу, сейчас пьян в гавно держу в курсе
Аноним 04/05/20 Пнд 19:45:35 665804299
>>665799
> в коде шейдера строкой ZCull ON
Написано же чекбокс во фрейм сеттингс? Не могу ничего найти, наеб чистой воды.
Аноним 05/05/20 Втр 04:10:42 665958300
>>665779
Нахуя если в коде все за тебя сделано?
Аноним 05/05/20 Втр 06:47:42 665968301
Есть тут аутисты которые делают игру мечты с надеждой нарубить миллионы?
Аноним 05/05/20 Втр 06:49:47 665969302
>>665968
Я сейчас делаю просто игру, в которую хотел бы сам играть и не стыдно друзьям показывать.
Нарубить миллионы вряд ли смогу т.к. я аутист-специалист и не умею в маркетинг, а переосиливать себя не хочется
Аноним 05/05/20 Втр 07:06:04 665971303
Аноним 05/05/20 Втр 07:16:45 665972304
>>665968
Уже нарубил миллионы. Не знаю зачем, правда.
Аноним 05/05/20 Втр 10:47:05 665988305
>>665958
Это правильный подход unity style.
Аноним 05/05/20 Втр 11:24:20 665992306
Можно ли как-то изменить цвет фона в 2d с темно-синего на другой? Или мне в ручную надо все заставлять спрайтами?
Аноним 05/05/20 Втр 11:49:30 666000307
image.png (19Кб, 1067x518)
1067x518
image.png (74Кб, 590x322)
590x322
Когда создаю Text, то появляется огромный канвас с огромным текстом, который я не могу нормально уменьшить. Что делать?
Аноним 05/05/20 Втр 11:55:35 666001308
>>666000
Не надо его меньшать, это нормально, что тебе мешает?
Аноним 05/05/20 Втр 12:24:55 666006309
>>665969
Всегда ору с таких утверждений. Типо: "я узкий специалист, я не лезу в области не касающиеся моей узкой специализации".
А потом эти клоуны женятся и рожают детей. Вот какой отец получится из такого узкого специалиста? Как он может воспитать ребенка, если воспитывать детей не его основная специализация?
Но эти довны даже не задумываются об этом и не проводят параллели.
Ну вот если ты научился хорошо чистить зубы, вытирать жопу ты уже не сможешь? Ведь для вытирания жопы нужны уже другие навыки? Что за хуйня у вас в голове творится?
Мне кажется, что вы очень впечатлительные. И когда в школе вам рассказали про разделение труда и его эффективность, вы с этого момента выдумали себе манямирок, в котором вы займете узенькую ячейку.
Вот только есть одно но. Разделение труда еффективно на конвеерном производстве. А в творческих делах такого понятия вообще не существует. Писатели с легкостью совмещают работу художника и музыканта. И если ты видишь известного музыканта или художника, то просто так получилось, что прославился он благодаря музыке или рисованию, а не своему второму или третьему творческому проявлению. И совсем не означает, что во всем остальном он был хуевым
Аноним 05/05/20 Втр 12:46:52 666011310
>>666006
ты первый раз пива нажрался?
Аноним 05/05/20 Втр 12:50:54 666012311
>>666006
>Писатели с легкостью совмещают работу художника и музыканта
Двачую, собрал все альбомы Льва Толстого на виниле.
Аноним 05/05/20 Втр 12:59:53 666013312
>>666012
Лев Толстой вообще-то исследователем был. Женился на тупой крепостной швее. А она потом повесилась после его экспериментов. Свое творчество он специфически проявлял. А про свою писанину он отзывался, как о говне. И видел свои сильные стороны в другом
Аноним 05/05/20 Втр 13:03:43 666016313
>>666001
Мне текст надо уменшить, а не канвас. Размер текста показан 14. Он ведь не должен быть таким большим, при размере 14.
Аноним 05/05/20 Втр 13:19:44 666019314
>>665992
Найди свою камеру Main Camera и поменяй Clear Flags на Solid Color, а ниже Background - любой другой цвет

>>666000
Канвас рендерится отдельно от игровой камеры, если тебе хочется видеть как оно будет в игре, то иди в окно Game и там смотри, только перемещать текст придется через инспектор, а не окно Scene

>>666006
Ты всё путаешь и умножаешь человеческий опыт и навыки на 0, твое виденье сейчас весь стим засрало недоиграми т.к. они даже не пытаются реализовывать какие-то сферы на должном уровне. Завидую твоей самоуверенности, но с другой стороны когда вижу таких как ты "за делом" в котором они 0 - вызывает смех.
Аноним 05/05/20 Втр 13:25:49 666021315
>>666006
Джвачую, особенно это правда когда ты блять геймдев, что подразумевает наличие скиллов далеко не в одной сфере
Аноним 05/05/20 Втр 14:20:04 666032316
>>666019
>Ты всё путаешь и умножаешь человеческий опыт и навыки на 0
Ничего подобного. Если ты развился в одной сфере и зашел в ней на плато своих знаний и навыков, то это безумие не освоить что-нибудь еще.
Да и нейрофизиологи советуют постоянно учить что-то новое, иначе мозгу будет пиздец
Даже у гуманитариев есть термин- всесторонне развит. Даже, блять, у гуманитариев!
А у психиатров есть термин для узких специалистов- синдром Аспергера (приверженность повторяющейся рутине или ритуалам)
Аноним 05/05/20 Втр 15:21:57 666061317
Сап, опять я со своими вейпоинтами.

Как я уже сказал, я редактирую их в редакторе. Я точки вывожу на сцену с помощью Handles.Label и выбираю их с помощью Handles.Button. Все работает отлично, но невозможно выделять для редактирования несколько точек, что при кол-ве их около 3к очень нужно.
Есть ли возможность скрестить стандартный Юнитевский Selection для выделения точек?
Аноним 05/05/20 Втр 17:05:45 666101318
Screenshot1.png (45Кб, 711x843)
711x843
Анон, подскажи пожалуйста, я какую-то хуйню пишу или это норм?
Вот к примеру, у меня есть суперкласс "Skill", от которого наследуются всякие другие скилы типа "усиленный урон" по типу

public class SimpleDamage : Skill

Вот, в классе "SimpleDamage" всё чисто и аккуратно, там только простая функция
public void UseSkill () { ... }

Но меня напрягает, что в классе "Skill" идет хуева туча гетеров и сетеров.
Вопрос- я долбоеб, и это как-то можно исправить, или это хуйня всё или мне вообще не надо париться пиши как пишешь или это слишком сложный вопрос и надо разбираться подробнее со всей системой в целом?
Может быть вообще есть желающие код ревью сделать или типа того?
Обсудить бы с кем-то более опытным архитектуру конечно, а то я заебался хуйню писать.
Аноним 05/05/20 Втр 17:38:50 666114319
>>666101
>manaCost
>skillSprite
Стоит разделить вьюху и функционал.
Аноним 05/05/20 Втр 17:47:58 666123320
>>666101
доебусь немного до оформления кода. геттеры пишутся короче:

[SerializeField] private string skillName;
public string SkillName => skillName;

вот тебе геттер для него. собственно если хочешь чтоб геттер был методом то

public string SkillName() => skillName;

и называешь ты поля ебано. по факту у тебя получается Skill.skillName. избегай названия самого класса в полях и методах так как это тупняк. ну и методы по майкрософтовскому нейминг конвеншену с большой буквы
https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/capitalization-conventions

а ещё вот этот анон
>>666114
дело говорит. нужно разделять логику от представления
Аноним 05/05/20 Втр 17:52:23 666128321
>>666123
>>666114
Спасибо большое, сейчас поправлю.
Насчет Skill.skillName даже не задумывался, буду знать.
Аноним 05/05/20 Втр 18:25:15 666146322
Кто в профессии? Как на галере жизнь? Как коллектив? Айчарки дают? Начальники матом ругаются? Овертаймите по ночам? Интересно как вообще гречневым гребцам-юнитистам живется.
Я вот погреб в 3 местах и рассказать особо нечего.
Аноним 05/05/20 Втр 18:41:27 666150323
Поясните как делается звук. Чтобы он был сочным, чтобы можно было позицию до нескольких градусов определять. Куда смотреть, что читать?
Аноним 05/05/20 Втр 18:55:50 666160324
>>666146
Почему нечего? Расскажи как устраивался, как увольнялся, как вообще работу находил? Сколько платили, чому бросал работу?

Я вот собираюсь устраиваться, готовлюсь. Правда у нас вокруг одни матч-3 да фермы казуальные пилят, такое себе. Но для опыта самое то.
Аноним 05/05/20 Втр 19:31:47 666175325
>>666160
>>666160
В первую контору устроился страшным нубом. Тогда еще флеш был, классика для бумеров-программистов в казуальном геймдеве.
Работал не вникая толком и не изучая ничего, на похуях за мизерный прайс.
В конторе были приятные для общения люди, были местные альфачи, был директор который не стеснялся всех хуесосить матом за косяки. Были даже приятные тян, но я слоупочил и стеснялся, с тянами голяк был.
Потом оттуда поперли, т.к. не было заказов, но сразу перехватила меня другая контора, которая занималась почти тем же самым.

Во второй конторе вкатился в юнити, продолжал быть тем еще говнокодером, за чуть больший, но все еще скромный прайс. Там было мало людей, были 2 приятные тян, все меня продинамили, но пообщаться с ним было интересно получил совсем мало опыта в юнити и меня поперли, т.к. продажи упали и надо было сбросить балласт. Внезапно узнал увольняясь, что еще большие остолопы чем я получают дохуя больше.

Устраиваясь в третий раз все еще искал флеш вакансии, которых оставалось на тот момент хуй да нихуя. Уже сжалось очко, что просто не найду работу. Подтянул навык пока искал работу, стал не таким дремучим нубом и мне повезло, устрился уже на человеческую мидловскую зп, все еще флеш, который уже обоими ногами был в могиле. Думал, ну сейчас поебланю на флеше и параллельно подучу юнити, но положил на эту хуй. Работал с проебами, овертаймами, нервами, что могут уволить.
Внезапно в конторе поняли, что пора перекатываться на юнити, перекатился и я, теперь из более-менее опытного флешера я превратился опять в нуба на юнити.
К слову, коллектив был приятный, хотя и с агрессивными бабуинами-программистами, была куча прятных баб, с которым я конечно все прослоупочил хотя одной вдул после одного корпоратива, а со второй был близок, но нет, после другого корпоратива. Было комфортно на самом деле, если не считать овертаймы, в которые я сам себя загонял. Набрался опыта на юнити со временем, все шло вроде норм, но опять просел доход, опять срезали балласт и опять поперли меня. Чувствовл себя хуево.

На этот раз я потратил около месяца подтягивая хвосты и свой скилл. По сути просто учил информацию, которую могу спросить на собеседованиях. Прочитал Рихтера наконец - стыд и позор не прочитать рихтера, если пишешь на c#.

Устроился в 4 раз. Очень комфортное место, приятные люди, относительно интересно работать, норм зп, иногда подтягиваю свои знания то тут, то там, но все равно не регулярная стагнация присутствует. Наконец почувствовал себя толковым специалистом, хотя все равно боюсь проебаться и что меня уволят. По прежнему занимаюсь разработкой казуальных игор, подумываю, что пора в свободное время пилить что-то свое, для души.
Впервые понял, что со здоровьем шутки плохи, реально борюсь за сон, если плохо сплю - все пизда я никакой и работник из меня никакой, стараюсь естимейтить с лишком, чтобы не загонять себя в овертайм, хотя иногда все равно это случается.
Иногда приходится общаться с зарубежными коллегами на инглише, это для меня нервно и напряжно, стыд и позор не иметь аппер интермидиет в 2020.
Такие дела. Ах да, все бабы в конторе заняты, да и хуй с ними. Иногда приходится кстати ревьювить наших новичков и вот странное дело, порою тяжело им объяснить, что они что-то делают не так. Ты за определенное время как-то интуитивно чувствуешь как писать код, чтобы потом было меньше проблем, но тяжело формализированно объяснить падаванам, и вроде приводишь примеры, что мол если сделаем так и так, то потом придется менять и тут и тут и тут, а лучше когда только тут и все, но падаваны не верят, говорят мне так не кажется, но ок, сделаем как говоришь. Ничего хорошего в этом, или я хуй, который объяснить не умеет, или я неправ на самом деле, не знаю.
6 лет в разработке.
Аноним 05/05/20 Втр 19:39:07 666177326
Ах да, вижу время от времени амбициозных юнцов лет двадцати, въебуют еще с универа как не в себя, у них просто дохуя знаний, и метят они съебать в силиконовую долину/гугл/фейсбук. И что сука характерно, съебут ведь. Они нихуя не юнитисты само собой, бекенд, фронтэнд, все вот это. Сравниваю с собой в их возрасте - какой же я был раздолбай.
Аноним 05/05/20 Втр 19:41:05 666178327
>>666150
Раздвигаешь ягодички, и с реферберацией так выдаешь PlayOneShot под 19 градусов к нормали дивана. Будет сочно или нет - это уже зависит от тебя.
Аноним 05/05/20 Втр 19:58:50 666186328
>>666175
>стараюсь естимейтить с лишком
Переведи, пожалуйста.

А так интересная инфа, спасибо, что поделился.
Аноним 05/05/20 Втр 20:24:06 666201329
>>666175
>порою тяжело им объяснить, что они что-то делают не так
Кстати, думал над вот этим... Мужик, обычно если что-то не можешь объяснить, значит, что сам этого не понимаешь.
Аноним 05/05/20 Втр 20:31:58 666205330
Аноним 05/05/20 Втр 20:33:05 666206331
>>666186
ну ты оцениваешь задачу на планировании и тебе кажется что она займет N часов/сторипойнтов. Но ты называешься на 20-30 процентов больше, на всякий. Чтобы потом перед дедлайном не охуевать переробатывая.
Аноним 05/05/20 Втр 20:37:16 666208332
>>666205
Навмешь запеки сперва.
Аноним 06/05/20 Срд 00:25:54 666250333
есть на просторах материал как генерировать мэши? у меня проблема с тем что получается куча дублей вершин и чтоб их убрать приходится после всей генерации ещё несколько раз проходить по всем вершинам, удалять дубли и указатели на эти дубли. хотелось бы найти оптимальный вариант или детальный мануал со всеми подводными и вариантами решения
Аноним 06/05/20 Срд 11:22:53 666299334
30.jpg (471Кб, 1080x1565)
1080x1565
>>666175
У тебя в каждой конторе приятные люди.
Аноним 06/05/20 Срд 11:24:42 666300335
>>666250
Ты хочешь, чтобы два соседних квадрата ссылались на одни и те же вершины в месте соединения? Не делай так, заебёшься с координатами текстурок и цветами.
Аноним 06/05/20 Срд 11:32:49 666304336
Анон, у тебя есть под рукой внятный туториал, по созданию TBS типа Divinity original sin?
Аноним 06/05/20 Срд 11:35:49 666308337
Аноним 06/05/20 Срд 11:42:41 666310338
>>666300
мне их нужно дисплейсить потом. uv это проблема о которой подумаю позже
Аноним 06/05/20 Срд 11:45:03 666312339
image.png (54Кб, 1124x504)
1124x504
Когда добавляю в проект свой спрайт с черной лампой, то на нем вылезает эта уебищная желто-красная обводка. Это из-за юнити или это надо в фотошопе по другому сохранить?
Аноним 06/05/20 Срд 11:45:41 666313340
я вам принёс годноты-хуеты. сёрфил ютуб и нашёл вот эту шкуру
https://www.youtube.com/watch?v=dGWuJIcC-4w
почему, вы спросите, я этим делюсь? потому что это отличный пример самого хуёвого кода который я в своей жизни видел. смотрите внимательно и никогда так не делайте
Аноним 06/05/20 Срд 11:54:42 666316341
>>666304
>Анон, у тебя есть под рукой внятный туториал, по созданию TBS типа Divinity original sin?
Конечно, есть.
Аноним 06/05/20 Срд 11:55:19 666317342
>>666312
Все, уже решил проблему.
Аноним 06/05/20 Срд 11:59:11 666318343
Аноним 06/05/20 Срд 14:10:37 666333344
Как же я заебался каждый день над одной и той же игрой работать
Аноним 06/05/20 Срд 14:11:22 666334345
>>666333
а ныть не заебался? покажи хоть что делаешь
Аноним 06/05/20 Срд 15:01:16 666341346
>>665799
>завтра напишу, сейчас пьян в гавно
Бро, ну ты там отошел нет, где этот чекбокс проклятый?
Аноним 06/05/20 Срд 15:34:22 666348347
>>666334
У меня и так вера в этот проект довольно хрупка, а кину сюда так обосрут скажут что такое уже есть и сделано лучше чем я когда-либо смогу, я лучше абстрактно поною
Аноним 06/05/20 Срд 15:37:38 666352348
>>666348
ну я тогда абстрактно обосру. такое уже есть и сделано лучше чем ты когда-либо сможешь
Аноним 06/05/20 Срд 15:56:37 666358349
>>666318
Это все из-за эффекта свечения лампы, который создал в фотошопе. Чтобы решить проблему, я сохранил лампу и свечение отдельно, а в unity совместил их вместе.
Аноним 06/05/20 Срд 17:08:32 666368350
>>666313
Вообще её код похож на все, что показывают в любом видео "unity tutorial how to".
Еще заметил collider.tag == "blah" использует вместо collider.CompareTag("blah"), но откуда ей знать эти тонкости? её код работает и делает что она хочет такое же гавно писал, пока в ентерпрайз не попал

>>666341
Edit > Project Settings > HDRP Default Settings (или выбери свой конфиг)
и там поищи все параметры "Post-process", как альтернатива там же есть "Depth Test".

Вот в доке нашел:
After Post-process = Enable the checkbox to make HDRP render GameObjects that use an Unlit Material and have their Render Pass set to After Postprocess.
У тебя на скрине как-раз unlit материал, может поможет
Аноним 06/05/20 Срд 17:11:44 666372351
Как мне сделать проигрывание анимации, когда я вхожу в триггер? В 2d
Аноним 06/05/20 Срд 17:41:42 666376352
Аноним 06/05/20 Срд 17:42:05 666377353
>>666348
Ты думаешь можно одновременно быть гениальным геймдизом, программером и художником и сделать проект уровня AAA.
Хотя есть исключения, согласен. майнкрафт, хотя он не ААА, но легенда точно
Аноним 06/05/20 Срд 17:47:25 666379354
>>666377
Ты с кем разговариваешь?
Аноним 06/05/20 Срд 17:50:59 666380355
image.png (104Кб, 819x960)
819x960
>>666368
>Edit > Project Settings > HDRP Default Settings (или выбери свой конфиг)
>и там поищи все параметры "Post-process", как альтернатива там же есть "Depth Test".
Да все это включено по умолчанию, все равно надпись включить ztest for after post process.
Аноним 06/05/20 Срд 17:57:33 666382356
Снимок20экрана2[...].png (252Кб, 956x597)
956x597
Аноним 06/05/20 Срд 17:58:18 666383357
15674258249850.png (596Кб, 1000x1000)
1000x1000
Как называется эта болезнь. Вот пилю какую-то штуку (скрипт, компонент), но все не могу придти к идеальному, или, хотя бы, приемлемому варианту на мой взгляд. Сижу так несколько часов, дней, потом плюю, и делаю просто, как могу. А потом, через несколько дней или недель, вспоминаю это действие как недопустимой слабостью с моей стороны, и начинаю пытаться переделывать. Это тормозит так, что пиздец.
Аноним 06/05/20 Срд 17:59:01 666384358
Screenshot 2020[...].png (1282Кб, 1544x1248)
1544x1248
>>666368
да хуй с ними с тегами. ты посмотри как она перемещает объект по сцене. в каждом кадре она дважды получает камеру по тегу и узнаёт её границы чтобы корабль не вылезал и эти же границы потом ниже впердоливает руками. каждый кадр создаёт 6 переменных для GD. логика вся прописана на ифах.
собственно это результат обучения у этих ссаных брекис, каких-то индусов, скилшеров и тд. не то что тут нормальные пацаны обкашливают серьёзные темы. если б она сидела на двощах, то мы бы уже посмотрели на её сиськи, а она бы не въебала 5 лет
Аноним 06/05/20 Срд 18:04:12 666386359
Как сделать так, чтобы анимация, которую я сделал в unity, не зависела от текущей позиции.
Аноним 06/05/20 Срд 18:08:40 666390360
>>666383
>Как называется эта болезнь.
Синдром маньки-неосилятора третьей степени.
Аноним 06/05/20 Срд 18:08:59 666391361
>>666386
Подробнее, что именно требуется.
Аноним 06/05/20 Срд 18:11:55 666392362
>>666384
>логика вся прописана на ифах
Как што-то плохое.
Аноним 06/05/20 Срд 18:14:06 666393363
>>666384
>каждый кадр создаёт 6 переменных для GD.
В чем именно трабла с этим?
Аноним 06/05/20 Срд 18:16:15 666394364
jackie-chan-ill[...].jpg (80Кб, 1024x576)
1024x576
Аноним 06/05/20 Срд 18:18:26 666395365
Кот смотрит на [...].jpg (49Кб, 500x485)
500x485
Аноним 06/05/20 Срд 18:19:04 666396366
>>666392
да, это что-то плохое

>>666393
трабла в том что когда в GD будет достаточно мусора, а его там будет достаточно довольно скоро, он прервёт все процессы чтоб его дропнуть и ты получишь лаг на топовой тачке. за префомансом надо следить, а не плодить дерьмовые привычки в самых базовых вещах
Аноним 06/05/20 Срд 18:19:19 666397367
>>666394
Бля ну хонест квестион от нуфага
Аноним 06/05/20 Срд 18:20:24 666398368
>>666396
Я почему то думал что такие временные переменные внутри метода не мусорят
Аноним 06/05/20 Срд 18:21:02 666399369
>>666391
Понимаешь, вот я хочу сделать такую вещь в 2d. Когда я подхожу к npc, то из него должна вылетать черная иконка. Мне нужно сделать анимацию вылета этой черной иконки. Я могу это сделать в фотошопе, разбив на кучу кадров, но это выглядит не очень плавно. В unity же я могу не наделывать кучу кадров и сразу сделать в Animation плавный перелет иконки от точки a в точку b. Проблема в том, что таких иконок по всей карте должно быть много и мне придется для каждой иконки менять эти точки a и b. Вот я и спрашиваю. Можно ли как-то в юнити сделать простейшую анимацию для спрайта, где он просто движется вверх, чтобы потом можно было этот спрайт скопировать и вставить в другое место.
Аноним 06/05/20 Срд 18:21:42 666400370
>>666398
а какие тогда мусорят?
Аноним 06/05/20 Срд 18:24:12 666404371
>>666400
Которые идут снаружи метода? Компилятор же должен все за меня порешать и понимать что я временные переменные расставил чисто для удобства чтения кода... короче я хуйню несу, не знаю почему я так думал
Аноним 06/05/20 Срд 18:29:54 666405372
Пахом.jpg (48Кб, 604x471)
604x471
Аноним 06/05/20 Срд 18:35:55 666409373
>>666404
те что "снаружи" метода как раз просто занимают сразу место в памяти и там висят, пока ты не удалишь сам объект. временные переменные создаются, сжирают часть памяти и отправляются в GD. когда GD начинает очищать и оптимизировать память ему приходится туго
Аноним 06/05/20 Срд 18:38:16 666411374
Ахуеть.jpg (79Кб, 1200x942)
1200x942
>>666409
Так что, локальные переменные нельзя юзать что ли?
Аноним 06/05/20 Срд 18:38:28 666412375
>>666405
сглаживают, ты прав, но мусор лучше не создавать. плюс там пишут что не везде поддерживают
Аноним 06/05/20 Срд 18:41:35 666413376
image.png (147Кб, 300x225)
300x225
>>666412
Для большинства мелких инди-проджектов пойдет!
Аноним 06/05/20 Срд 18:41:51 666414377
>>666409
Не доверяю анону который аббревиатуру из двух букв неправильно пишет
Аноним 06/05/20 Срд 18:46:02 666419378
>>666411
юзай конечно, рвать себе жопу не нужно. просто не юзай их как та дура. например она в каждом кадре узнаёт направление куда жмёт. выносишь направление в переменную инстанса

private direction = Vector2.zero;

private void Update()
{
direction.Set(икс блядь, игрек блядь);
}

и вуаля, мусора нет и в случае чего можно этот дирекшн сделать публичным для доступа других компонентов. там где это неудобно и плодит слишком дохуя кода – юзай локальные. а когда будешь профилировать не забывай что локальные могут быть частью проблемы

>>666413
еретик! это такие основы что лучше их держать в голове с самого начала
Аноним 06/05/20 Срд 18:54:54 666425379
image.png (620Кб, 634x456)
634x456
image.png (3Кб, 678x46)
678x46
Бляу, у меня 53 штуки в одном скрипте.
Аноним 06/05/20 Срд 18:57:32 666428380
>>666384
>transform.position
transform тоже тяжело запрашивать в апдейте, мусор не создает но функция тяжелая, лучше закешировать в старте на tr например
Аноним 06/05/20 Срд 18:58:00 666429381
>>666425
это значит что тебе точно нужно бить скрипт на мелкие части. сколько у тебя там строк?
Аноним 06/05/20 Срд 18:59:50 666430382
>>666429
Пока 1166, но у меня там штук 200 просто единожды создается, когда уровень выбираешь. Не буду бить, все отлично работает, почти закончил.
Аноним 06/05/20 Срд 19:09:57 666438383
>>666428
обычно люди кеширую трансформ, но я читал в логах чуть ли не к unity 5 что они сделали автоматическое кеширование
https://blogs.unity3d.com/2014/06/23/unity5-api-changes-automatic-script-updating/
вот в самом конце
[2] in Unity5 we also cache the transform component on the c# side, so there should no longer be a performance reason to cache the transform component yourself.

бенчмарк не делал, может они напездели или откатили, а может и нет
Аноним 06/05/20 Срд 19:10:31 666440384
>>666430
когда работу над ошибками будешь делать, обязательно пройдись, просто ради навыка. рефакторинг это важно
Аноним 06/05/20 Срд 19:13:11 666441385
>>666428
Что кэшировать, трансформ или трансформ.позишн?
Аноним 06/05/20 Срд 19:19:58 666444386
Аноним 06/05/20 Срд 19:21:04 666445387
>>666444
А свойства получать не затратнее? С другими так же?
Аноним 06/05/20 Срд 19:31:00 666449388
Снимок3.PNG (32Кб, 778x711)
778x711
Снимок2.PNG (24Кб, 270x474)
270x474
Снимок1.PNG (4Кб, 556x41)
556x41
Похоже что я аутист, я не могу понять в чем собственно проблема, подскажите что ли, пожалуйста
Аноним 06/05/20 Срд 19:36:05 666456389
>>666445
проблема трансформа в том что по факту .transform это тоже самое что и .GetComponent<Transform>(). GetComponent считается не очень дорогой операцией, но не бесплатной и потому лучше кешировать. обращение к полям это просто обращение к конкретной области памяти. это самая базовая процедура и она стоит дешевле
Аноним 06/05/20 Срд 19:37:09 666458390
>>666449
ты бы скриншот сделал с номерами строк. мне самому чтоль там считать на какую он жалуется?
Аноним 06/05/20 Срд 19:38:33 666460391
image.png (26Кб, 661x443)
661x443
Есть вот такой скрипт. Время перемещения спрайта должно зависеть от Time.deltaTime. Когда строчка transform.position = Vector3.Lerp(startPos, targetPos, time) была в void Update, то все работало нормально, но мне нужно, чтобы анимация запускалась при входе в триггер, поэтому я переместил эту строчку в void OnTriggerEnter2D. Из-за этого спрайт стал перемещаться мгновенно. Как это исправить?
Аноним 06/05/20 Срд 19:41:35 666462392
Снимок3.PNG (42Кб, 877x747)
877x747
Аноним 06/05/20 Срд 19:51:06 666466393
>>666460
Lerp работает так: берёшь значение А и значение Б, а в третьем параметре указываешь значение от 0 до 1 где на выходе при нуле он выдаст А, а при единице выдаст Б и всё остальное в промежутке.

в каждом кадре на 19 строке ты увеличиваешь занчение поля time. к моменту когда у тебя выходит в триггер у тебя time уже значительно больше еденицы и потому выставляется сразу конечное значение. я бы этот код написал так:

private bool _animate = false;
private Vector3 _target;
> это указатель куда нужно переместиться
private float _speed = 1f;
> это для контроля скорости перемещения

private void Update() {
if (_animate == false) {
return;
}
> это ранний выход чтоб не делать гигантского if в который запихиваешь остальной код

transform.position = Vector3.MoveTowards(transform.position, _target, _speed * Time.deltaTime);
> MoveTowards лучше чем Lerp в твоём случае ибо проще управлять скоростью перемещения

if (transform.position == _target) {
_animate = false;
> как только достигли цели, анимация прекращается. ну и сюда можно прикрепить какие-то дополнительные действия
}
}

private void OnTriggerEnter2D(Collider2D collider) {
_target = Vector.one;
> тут тебе нужно указать точку в которую он должен перемещаться
_animate = true;
}
Аноним 06/05/20 Срд 19:55:20 666467394
>>666462
а Player1.name, Player2.name, Player3.name это что?
Аноним 06/05/20 Срд 19:57:37 666468395
>>666467
Имена объектов Player1, Player2, Player3 из класса Player
Аноним 06/05/20 Срд 20:01:34 666470396
>>666468
покажи класс Player. есть подозрение что ты запрашиваешь имена которые ещё не инициализированы
Аноним 06/05/20 Срд 20:04:47 666472397
Снимок.PNG (6Кб, 750x115)
750x115
>>666470
А имя объекта разве не по умолчанию инициализировано?
Аноним 06/05/20 Срд 20:07:11 666474398
>>666384
GD это такой garbage deflector что ли
Аноним 06/05/20 Срд 20:12:33 666478399
>>666472
нет. ты обращаешься к тому чего ещё в памяти нет, потому и получаешь null. тебе нужно лист на 15 строке заполнять, например, в Start

>>666474
опечатался
Аноним 06/05/20 Срд 20:17:38 666482400
>>666466
Спасибо, анон! Помогло
Аноним 06/05/20 Срд 20:19:53 666484401
>>666482
ну тут главное чтоб ты понял как это работает
Аноним 06/05/20 Срд 20:34:09 666491402
>>666484
А можешь объяснить, почему анимация изначально резкая, но под конец слегка замедляется?
Аноним 06/05/20 Срд 20:37:46 666492403
>>666491
Аа, все, это я Lerp использовал, а не MoveTowards
Аноним 06/05/20 Срд 20:42:52 666496404
>>666478
Спасибо за помощь, один вопрос, есть ли более легкий способ заполнять поля dropdown именем обьекта+значением переменной?
Аноним 06/05/20 Срд 20:54:11 666503405
>>666496
если честно, то я вообще ниебу что ты там делаешь. ничего кроме прототипов не разрабатываю, а прототипы не требуют ui. чему я очень рад
Аноним 06/05/20 Срд 20:59:09 666505406
Как сделать так, чтобы Input.GetKey(KeyCode.E) можно было нажать только один раз?
Аноним 06/05/20 Срд 21:00:54 666506407
Аноним 06/05/20 Срд 21:01:10 666507408
Аноним 06/05/20 Срд 21:03:14 666509409
>>666505
используй Input.GetKeyDown и читай чаще документацию, это очень базовый вопрос
Аноним 06/05/20 Срд 21:07:33 666510410
Аноны, как можно в поля dropdown присваивать имя объекта + значение переменной?
Аноним 06/05/20 Срд 21:52:05 666528411
image.png (10Кб, 389x204)
389x204
Почему спрайт не появляется, после того как пропадает?
Аноним 06/05/20 Срд 21:56:21 666529412
>>666528
Ты его выключаешь полностью
Аноним 06/05/20 Срд 22:00:13 666531413
>>666528
>>666529
Можешь использовать enabled если тебе нужно сделать по типу переключателя
Аноним 06/05/20 Срд 22:05:36 666532414
>>666531
Что за enabled, можно подробнее?
Аноним 06/05/20 Срд 22:18:26 666533415
image.png (19Кб, 284x340)
284x340
image.png (13Кб, 277x241)
277x241
Я сейчас ебанусь просто, почему персонаж проваливается через землю? Пик 1 - коллайдер земли, пик 2 - ноги персонажа.
Аноним 06/05/20 Срд 22:22:05 666534416
>>666533
Убрал isTrigger, проблема решилась. Осталась другая - у меня на персонаже несколько коллайдеров (в силу его разной формы), при перемещении персонажа его пидорасит и переворачивает. ЧЯДНТ?