Этого треда уже нет.
Это копия, сохраненная 4 ноября в 23:12.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
maxresdefault.jpg37 Кб, 1280x720
Unity 3D #19 802780 В конец треда | Веб
Добро пожаловать в тред Unity - лучшего 3D и 2D игрового движка современности!

Прошлый тред: >>796855 (OP)

Официальный сайт: 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 сделано много замечательных игр - Valheim, Genshin Impact, Subnautica, Albion Online, Endless Space, Beat Saber, Boneworks, 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 - это начать делать игру и по мере разработки гуглить непонятные моменты.

Для людей абсолютно не знакомых с движком и программированием на C# есть 3и основные книги:

1. Разработка игр на Unity 2018 за 24 часа Майка Гейга
(Знакомство с движком, изучение редактора, создание 4х простых игр практически без кода, отличное пособие для полных новичков).
2. Изучаем C# через разработку игр на Unity. 5-е издание Харрисон Ферроне
(Пошаговое освоение всех базовых знаний по программированию на языке С# в редакторе юнити, создание одной игры стрелялки от первого лица, написание искусственного интеллекта врага, книга переведена не совсем корректно и порой встречаются не просто опечатки, а серьёзные неточности перевода.)
3. Unity в действии. Мультиплатформенная разработка на C#. 2-е межд. издание Хокинг Джозеф
(Правильное построение архитектуры кода для сложных проектов, углублённое изучение программированию на C#, создание 4х полноценных игр на движке, обязательно нужно скачать код проектов, так как в книге он местами уже устарел.)

Шапка: https://www.writeurl.com/publish/qzgktisltkskaitem6aa
Sandy.webm36,9 Мб, webm,
1680x1050, 0:45
2 802785
вот это да! перекаты не на 1к+ посте!
3 802837
>>802812 →
пчел, твою задачу можно упрощать сколько угодно, но пока ты не воспользуешься своей головой ты не решишь её. у тебя 9 классов образования то уже есть, надеюсь? не забыл ещё что такое синусы, косинусы?

например навскидку можно сделать так. натянуть квадратную координатную сетку на полусферу ололо. чтобы такое написать не надо быть умным, достаточно не быть тупым.
https://mega.nz/file/48l3EbrL#1ftsSfIyVRrakMl05AKoZJoBMUWiZCnX7KLtiy7tgpw

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

а вообще просто открой и почитай
https://en.wikipedia.org/wiki/Spherical_coordinate_system
image.png107 Кб, 754x760
4 802839
>>02837
после кружечки кофе.
а хотя лол я и сам конч. нахуй все эти лерпы, что за хуйню я понаписал. пускай инпут от -1 до 1 лучше будет. так красивей и понятней.
0909.jpg140 Кб, 1736x697
5 802860
Приветствую всех. Есть тут кто понимающий в онлайне ? запустил Fishnet. два проекта в разных окнах. Отлично подключается, но как этот пример запустить на двух отдельных компьютерах? никто не подскажет куда искать , что ковырять и гуглить ?
6 802865
>>02837

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


А токсичным уебаном быть обязательно? Не все пердолятся с Юнити также долго как ты, это не повод раздувать такое ЧСВ.
7 802866
Аноны, нужна помощь.
Есть платформа, которая должна отталкивать игрока под углом перпендикулярным платформе, то есть, если платформа под углом 45 градусов, то и игрок будет отталкиваться под этим же углом.

Не подскажете куда копать, чтобы понять как это реализовать?
8 802871
>>02860
Поищи на сцене интернет менеджер у него будет настройка с ip, компы также должны быть в одной локальной сети или хост иметь белый ip.
По гайду посмотри официальное от самого фишера. Либо к примеру юнитиковское по интернет обджектам, по сути всё работает +- одинаково.
9 802877
>>02860
>>02871
благодарю. Вообще идея отдать сервер одному из игроков. Мне тут подсказывают, что нужно сделать переадресацию портов, NAT Traversal или использовать серверы ретрансляции, что звучит логично, но довольно комплексно
10 802878
>>02877
Есть разные подходы и решения, в том числе бесплатные. Но прежде чем лезть в сетевую игру лучше как минимум посмотреть и разобраться в туторах, и прочитать доки. Лично для себя я сделал сервер арендованный на хостинге, клиенты подключаются, чекаются, у каждого клиента создаётся статик мир, и идёт дальнейшая игра.
11 802888
>>02878
Благодарю, так понял с наскока вообще не получится никак))
c43.jpg55 Кб, 720x720
12 802917
>>02865
обязательно. токсичность к месту - способ коммуникации. я плавно перешёл от мистических ротаций к тригонометрии которую ололо в школе проходят и она не требует опыта геймдева.
и да, разумеется у меня есть ответы не требующие тригонометрии, но давая их я буду ещё токсичней.

>>02866
лол а как ты узнаешь о наличии платформы то. уж наверняка физоном? физон в юнити возвращает НОРМАЛЬ. это то что тебя интересует.
https://docs.unity3d.com/ScriptReference/RaycastHit-normal.html
ммсм.PNG11 Кб, 488x240
13 802951
Использую частицы в игре (струю из частиц), у частицы в скрипте количество наносимого урона и функция коллизии с врагом. При столкновении с врагом у него отнимается ХП.

Проблема в том, что при разном ФПС враг убивается с разной скоростью. Есть идеи как работать с частицами "фреймонезависимо" ? Пробовал FixedUpdate и ParticleSystem.Simulate, не помогает.
14 802953
>>02951
Может реализовать механику урона по другому?
15 802968
>>02951

>Использую частицы в игре (струю из частиц), у частицы в скрипте количество наносимого урона и функция коллизии с врагом.


Ты там каждую частицу триггрешь на урон? Совсем не умный?
Вот представь если у тебя огонь состоит из 1000 частиц при коллизии с противником одновременно может сработать от десятка до сотни частиц и в апдейте возникнут сотни сообщений о попадании, как думаешь фпс в таком намного понизится или не изменится?
Делай один триггер с огнём и не выпендривайся.
16 802971
>>02866
несколько путей, либо ты имеешь подписку во вьюшке игрока OnCollisionStay и в нужный кадр получаешь нормаль коллизии, либо юзаешь систему с SphereCastNonAlloc, с ограничениями по маске, которая запускается по триггеру, находит нужный RaycastHit и берет его нормаль. Второй способ предпочтительнее, так как не аллоцирует
17 802974
Почему так?
18 802980
>>02974
Что так?
19 802987
>>02980
криво
20 802990
>>02987
Циферки пробовал вбивать в координаты или на глаз делал?
21 802993
>>02990
ты ебанат чтоли? они равно удалены друг от друга, в игре уже хуйня какая-то
22 802997
>>02993
По порядку.
Ты конвас выбрал?
Правильно привязал эти кнопки?
Разрешение я надеюсь ты выбрал фиксированное, а не как ёбанный даун со свободным разрешение пилишь UI элементы?!
image.png24 Кб, 431x269
23 803001
>>02997
на канвасе вот такие настройки, мэтч убавил в 0 и всё пофиксилось, пиздец просто
24 803040
>>02968
Согласен, способ очень плохой.

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

А как это сделать лучше? Может пускать какую-то кривую из рейкаста или ещё что-то? Хотелось бы конечно чтобы партикли были чисто визуальным эффектом
BulletManager.webm491 Кб, webm,
1040x746, 0:07
25 803046
>>03040
вот это видео. пускать струю желтой жидкости в водолазов пока она не залепит им глаза!!!

лол ну а как ещё кроме как пускания рэйкаста. если хочешь чтобы он был кривой просто пусти несколько подряд. ничего не мешает тебе пустить рэйкаст на небольшую длину, запомнить где он закончился и пустить оттуда следующий в цепочке плюс гравитация.
1440881562001.png211 Кб, 680x1071
26 803133
Юнитач, придай мне сил!
27 803152
Блять, где он там флоат увидел? Я даже в переменную Vector3 вывел чтобы убедиться что я не проёбываюсь с типом аргумента.
28 803182
>>03152
Distance возвращает float.
image.png80 Кб, 203x248
29 803203
>>03182
>>03187 (Del)
Блять, так вот на что эта проститутка жаловалась, а пишет про первый аргумент почему-то. Всё-таки статика зло. Спасибо.
Стикер447 Кб, 500x500
30 803210
>>03203
ну то, аргумент единственный никак не мешает быть ему первым...
31 803212
>>03210
Ответь еще на вопросик, а то чёт гугл хуйню выдаёт. Я не хочу создавать новый вектор, а просто засунуть отсылку к уже существующему вектору в перменную, как это сделать?
32 803216
>>03212

> Ответь еще на вопросик, а то чёт гугл хуйню выдаёт. Я не хочу создавать новый вектор, а просто засунуть отсылку к уже существующему вектору в перменную, как это сделать?


Покажи код, куда ты это хочешь сделать.
33 803217
>>03212
да собственно никак. структуру можно передать по ссылке в метод через ref кейворд и пожалуй все. если тебе понадобилась ссылка на структуру, то что-то ты таки делаешь не так.
34 803218
>>03216
Да вот туда же >>03152

Я хочу найти вектор, у которого минимальная дистанция до стартового, и возвращать его. Я
image.png135 Кб, 539x447
35 803221
>>03218
Альтернативный вариант создать хэш-таблицу с вектором и дистанцей и остортировать её по дистанциям. Но по-моему это оверкилл? Я просто хотел пройтись циклом по списку, и сохранять отсылку на вектор с минимальной дистанцией.
36 803222
>>03218
не парсо. "создание" структуры и работа с ней быстрее чем создания объекта и разыменование указателей.

List<Vector3> positions = ...;

positions.Select(i => new { pos = i, sqrDist = i.SqrMagnitude }).Min(i => i.sqrDist).pos;

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

если у тебя там трансформ(ну т.е. задача найти ближайший объект по их позиции) а не просто вектор то делай список трансформов
37 803223
>>03222
Да, у меня там изначально трансформы, спасибо.
38 803224
>>03223
чуть проебался да

var position = transform.position;
var transforms = new List<Transform>();

var closest = Select(i => new { transform = i, sqrDist = (position -i.position).SqrMagnitude }).Min(i => i.sqrDist).pos;

если нужен список для дальнейшего использования вместо Min сделай ToList() (а то и Sort(i => i.sqrDist).ToList() - тогда первый будет ближайшим)

зы. linq - страшная штука, главное не увлекаться
39 803225
>>03224

>(position -i.position).SqrMagnitude


Вопрос: зачем в квадрат возводить?
40 803226
>>03224

>SqrMagnitude


>If you only need to compare magnitudes of some vectors, you can compare squared magnitudes of them using sqrMagnitude (computing squared magnitudes is faster).


Всё, нашёл в документации сам
41 803227
>>03225
ибо не возводить в квадрат а не брать корень.
формула расстояния sqrt((a.x - b.x)^2 + (a.y - b.y)^2 + (a.z - b.z)^2)
42 803256
>>03227

>формула расстояния sqrt((a.x - b.x)^2 + (a.y - b.y)^2 + (a.z - b.z)^2)


Так вот зачем Ирина Ивановна нам эту хуйню на геометрии преподавала, сука тупая, могла бы и сказал что в разработке игор пригодится
Стикер175 Кб, 500x500
43 803268
лол, сейчас смотрел видео с конференции по геймдеву. фраза "первое что вбивают в голову - считать квадрат расстояния, а не само расстояние, так как корень очень затратная операция"
44 803289
>>03268

всё так
45 803321
>>03224

>sqrDist = (position -i.position).SqrMagnitude


На это ругается

> cannot assign method group to anonymous type property


Как фиксить? Уже дохуя чего перепробовал.
46 803335
>>03321
очевидно SqrMagnitude()
написал же, не помню точно, проверь хотя это вроде было свойство?
47 803336
Не бейте, лучше обоссыте.

Хочу ебашить адовые видосы, можно ли это делать в юнити (насколько я понял, там всё через синемашину) и не будет ли это попыткой сожрать кактус? Или мне уебывать в другой софт? Допустим, что все нужные ассеты у меня есть, а я хочу из этого сделать "катсцену". Только катсцену, без самой игры.

На фотореализм строго похуй.
48 803338
>>03336

>Хочу ебашить адовые видосы


-> Unreal Engine
49 803341
>>03335
Це свойство. Захакал вот так. Это норм практика?

>Select(i => new { transform = i, sqrDist = Vector3.SqrMagnitude(position -i.position) }).Min(i => i.sqrDist).pos



Теперь сижу пержу почему выдаёт флоат значение, расчехлил дебаггер, и пока не вкуриваю, но вернусь к вопросу только вечером. Спасибо.
50 803342
>>03341
Select формирует последовательность значений анонимного типа трансформ/расстояние
Min берет из данной последовательности минимальное значение по указанному параметру(расстоянию)
от него ты уже берешь свойство.
51 803343
>>03342
по сути эта строчка синтаксический сахар для

private class _temp
{
public Transform transform { get; set; }
public float sqrDist { get; set; }
}

Transform FindMinDist(List<Transform> transforms, Vector3 postition)
{
_temp min = null;
foreach (var i in transforms)
{
// .Select
var next = new _temp {transform = i, sqrDist = Vector3.SqrMagnitude(postition - i.position)};
// .Min
if (min == null || next.sqrDist < min.sqrDist)
next = min;
}
//.transform
return min?.transform;
}

мы не пишем отдельную функцию для единственного действия и не заводим под него вспомогательный тип.
52 803344
>>03343

>min?.transform


Вопрос тут это что? Проверка что значение ненулевое?
53 803345
>>03344
да. это уже что бы совсем чистый код, иначе если пустой список выдаст нре(в линкью запросе тоже, так как нету ?)
54 803346
>>03345
Понял, спасибо.
image.png276 Кб, 1338x788
55 803353
Здарова, Кармаки. Так вот вопрос, пикрил на 2021 лтс это старый болт или уже обновлённый? Я просто помню, что они хотели его допилить после того, как купили автора.
Стикер383 Кб, 500x500
56 803357
>>03353
я слишком стар для этого вашего визуального окнодроча. хотя смог вдуплить шейдеры только благодаря ему
57 803360
>>03268

> лол, сейчас смотрел видео с конференции по геймдеву.


Gamedevguild?
58 803362
>>03360
старое по экс, от разработчиков рейда
https://www.youtube.com/watch?v=4sDnBChfV0o
59 803371
блядь. экс зло. злое зло

цель - двигать объект к точке

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

не бойтесь создавать "лишние" системы на каждый пук, говорили они, сначала в глазах рябит а потом приходит понимание что можно вклинится в любую точку между системами и добавить новый функционал не трогая старый.
60 803392
>>03221
нахуй надо! ему же только минимальный нужен. пройтись по всем и просто перезаписывать самый короткий.

>>03152
тебе не обязательно мерять дистанцию. меряй квадратную дистанцию, не извлекай квадратный корень!
CvVfliOW8AAKtD.jpg73 Кб, 1200x1077
61 803423
Сука ну вот чому я не бог программирования
62 803431
>>03342
Короче кому не насрать, я заебался искать почему то линк выражение мне выдавало хуйню и переписал в пикрил, и так как мне это всё нужно было чисто чтобы протестировать кое-что, я своего добился и иду дальше. В чём я не прав?
63 803435
>>03431
Если всё устраивает то ок. Но в реальных проектах за такое уебут в лицо и обоссут.
64 803437
>>03435
Да я индюк-одиночка, но конечно красиво кодить всё равно хочется, да.
65 803439
>>03431
ну собсно обычный поиск минимума.

небольшой нюанс. не делай ToList() по таргетам. просто убери его - все будет работать так же, но не будет лишнего выделения памяти и итерации по списку. селект создает запрос но не выполняет его. т.е. прохода по списку не происходит. тулист его таки "выполняет". имеет смысл если ты этот отфильтрованный список потом используешь более одного раза, что бы не ходить по полному списку каждый раз.
66 803440
>>03439

> селект


where конечно же
67 803441
>>03431

>юзает SqrMagnitude ЧТОБ БЫСТРА БЫЛО ОПТИМИЗОН


>тут же юзает Linq


>тут же юзает foreach с листом


Ты долбоеб кстати.
68 803442
>>03441

> не знает, что компилятор развернет foreach в тот же for


кстати сам
69 803443
>>03439
Ок, понял, я чёт тупанул, хз зачем там тулист

>>03441
Ну с тулистом ок, а пройтись 1 раз по списку даже йоба-алгоритму по нахождению минимума всё равно придётся, так что про форич не в тему.
70 803444
>>03441

> >тут же юзает Linq


Если без тулиста, то ваще поебать же, там нечему много памяти аллоцировать и ебать гц, а сама скорость выполнения вряд станет даже малейшей проблемой на практике.
71 803448
>>03444
Я тут прогуглил, может он к тому что форич менее оптимизонный чем обычный фор. Тогда можно упороться и вмесо листа массив юзать еще.
72 803449
>>03441

>>тут же юзает foreach с листом


Уже 100000 лет как пофиксили
1653592403117.jpg62 Кб, 810x267
73 803454
>>03448
Там тот же массив внутри, при проходе проц также в кеш подгрузит следующие элементы по идее, ну это если у нас не референсные типы само собой.
74 803456
>>03454
Массив то массив, но судя по всему если я задам больше 4 элементов, то он начнёт затратный алгоритм ресайза.
75 803458
>>03456
Есть же конструктор, который сразу принимает вместимость
76 803459
>>03458
Ну тогда да, но я явно так не делаю
77 803481
>>03442
В курсе что лист отличается от массива и фор с листом работает в 2 раза медленнее чем фор с массивом?
Стикер447 Кб, 500x500
78 803502
>>03481
и воопше на асемблере писать надо! а лучше сразу машинными кодами, что бы экономить на времени компиляции
79 803503
>>03481

> фор с листом работает


> фор с массивом


for работает с индексом типа int
1J3cDMfx.jpg117 Кб, 1421x751
80 803510
>>03503
>>03481
>>03441
Может вместо пердежа в воздух потестить попробуете?
81 803512
>>03510
Нихуя, каким образом массив проебал листу, если лист это массив по сути?
82 803516
>>03510
Ты что тестируешь, скорость создания объекта листа? Ты аутист совсем?
Скриншот 27-05-2022 115921.png84 Кб, 1209x861
83 803519
>>03516
ебать тупнул, ещё и думаю, хули так долго то. Но теперь чёт не то, походу
84 803524
>>03519
а, ну да, не заполнил лист же
Скриншот 27-05-2022 123123.png80 Кб, 1066x906
85 803525
>>03524
держите
Скорее всего, такая хуйня, потому что в foreach для листа IL разворачивает диспоуз после цикла
86 803529
Стоило юнитидаунам выйти за границы таскания ассетов мышкой, так сразу вылезла тотальная некомпетентность по простейшим вопросам устройства ЯП, никто не знает что как работает, еще игры пытаются с таким багажом "знаний" делать, чтоб потом везде рассказывали какой же юнити тормозной двиг.
image.png308 Кб, 1068x601
87 803544
>>03529
Я выбрал Юнити именно потому что у него репутация движка, который позволяет не самым сильным программистам типа меня криво, косо, через жопу, но реализовать, пускай и лагающую, но игру, которая даже может выстрелить за счёт уникального геймплея. В чём я не прав?
88 803553
>>03544
во всём прав и не ебёт, что думают с++петухи со своими указателями на указатели указывающие на void
89 803556
>>03544

>В чём я не прав?


Уникального геймплея не существует.
90 803560
>>03556
Пока ты так думаешь - никогда не сможешь его сделать.
91 803564
>>03556
лол, довн, геймплей - это совокупность механик, таким образом почти любая игра уникальна геймлеем
92 803574
>>03564
Уникальных механик не существует, также не существует уникальной совокупности механик.
93 803578
>>03525
Что то хуйня, что это, стоимость по производительности примерно равна 0. Сделай теперь больше элементов и какие-нибудь реалистичные операции над каждым элементом, чтобы не тупа проход был.
Ну или я сам сделаю как освобожусь нах.
94 803583
>>03574

>Уникальных механик не существует, также не существует уникальной совокупности механик.


Долбоёб? Когда впервые появился тот же Портал у него что ли не уникальная механика порталов была?
95 803586
>>03583
Бля, да он наверное из тех, кто говорит "все сюжеты были написаны ещё в античности"
96 803615
>>03583

>уникальная механика порталов


Я в эти порталы еще в 2000 году лазил чтоб хилки у акары закупать, ебать ты дура пориджевая.
97 803618
>>03615
Хуесос ты всерьез не различаешь портал который тупо локацию меняет с порталом, который буквально имитирует неевклидовое пространство?
11.mp4602 Кб, mp4,
960x720, 0:03
98 803620
>>03618

>имитирует неевклидовое пространство


Сымитировал тебе на лицо.
image.png775 Кб, 1200x628
99 803622
>>03620
Фактически та же смена локации, не более. И за 8 лет от выхода кваки 3 до выхода портала никто так и не понял всего потенциала этой идеи.
100 803625
>>03622

>Фактически та же смена локации, не более


А в портале что? Кроме своей жопы еще можно куб протолкнуть? Смена локации куба, гениальная механика, новое слово в жанре.
101 803627
>>03625
Ну не толсти. Эта механика оказалась настолько плодородной, породила кучу способов применения и множество головоломок, что хватило на 2 серии и несколько фанатских дополнений.
102 803631
>>03627
Вроде уникальность обсуждали, а не количество серий и дополнений. Давай количество серий кал оф дути подсчитаем, или атсасина. Видимо их механика оказалась гораздо плодороднее тухлых порталов.
9a0bSXG3.jpg64 Кб, 1118x256
103 803704
>>03578
сделал такое, но всё равно все эти тесты хуйня, потому что нужно рассматривать каждый отдельный случай (предполагается ли динамика, известны ли размеры заранее, будут использоваться ссылочные или значимые типы и т.д)

[Benchmark]
public void ListFor()
{
List<int> list = new List<int>(1000);
for (var index = 0; index < list.Capacity; index++)
{
list.Add(10);
list[index] += index;
}

int sum = 0;
foreach (var i in list)
{
sum += i;
}
Console.WriteLine(sum);
}

[Benchmark]
public void ArrayFor()
{
int[] array = new int[1000];
int sum = 0;
for (var index = 0; index < array.Length; index++)
{
array[index] = 10;
array[index] += index;
sum += array[index];
}

Console.WriteLine(sum);
}

[Benchmark]
public void ListForeach()
{
List<int> list = new List<int>(1000);
for (var index = 0; index < list.Capacity; index++)
{
list.Add(10);
list[index] += index;
}

int sum = 0;
foreach (var i in list)
{
sum += i;
}
Console.WriteLine(sum);
}

[Benchmark]
public void ArrayForeach()
{
int[] array = new int[1000];
for (var index = 0; index < array.Length; index++)
{
array[index] = 10;
array[index] += index;
}

int sum = 0;
foreach (var i in array)
{
sum += i;
}
Console.WriteLine(sum);
}
9a0bSXG3.jpg64 Кб, 1118x256
103 803704
>>03578
сделал такое, но всё равно все эти тесты хуйня, потому что нужно рассматривать каждый отдельный случай (предполагается ли динамика, известны ли размеры заранее, будут использоваться ссылочные или значимые типы и т.д)

[Benchmark]
public void ListFor()
{
List<int> list = new List<int>(1000);
for (var index = 0; index < list.Capacity; index++)
{
list.Add(10);
list[index] += index;
}

int sum = 0;
foreach (var i in list)
{
sum += i;
}
Console.WriteLine(sum);
}

[Benchmark]
public void ArrayFor()
{
int[] array = new int[1000];
int sum = 0;
for (var index = 0; index < array.Length; index++)
{
array[index] = 10;
array[index] += index;
sum += array[index];
}

Console.WriteLine(sum);
}

[Benchmark]
public void ListForeach()
{
List<int> list = new List<int>(1000);
for (var index = 0; index < list.Capacity; index++)
{
list.Add(10);
list[index] += index;
}

int sum = 0;
foreach (var i in list)
{
sum += i;
}
Console.WriteLine(sum);
}

[Benchmark]
public void ArrayForeach()
{
int[] array = new int[1000];
for (var index = 0; index < array.Length; index++)
{
array[index] = 10;
array[index] += index;
}

int sum = 0;
foreach (var i in array)
{
sum += i;
}
Console.WriteLine(sum);
}
104 803705
>>03704
первый метод не тот скопировал

public void ListFor()
{
int sum = 0;
List<int> list = new List<int>(1000);
for (var index = 0; index < list.Capacity; index++)
{
list.Add(10);
list[index] += index;
sum += list[index];
}
Console.WriteLine(sum);
}
105 803708
>>03704
Может лучше игры делать начнешь?
106 803712
>>03708
так уже, просто самому стало интересно, насколько леоесц, который я чаще всего использую для логики, оправдано юзается с форычем
107 803740
>>03712
Скажем так - глубоко похер пока сложность этой операции О(1). будет иметь смысл если у тебя глубина вложения циклов уходит к земному ядру. Если уж совсем хочешь упоротся в производительность и заодно остаться на екс - переходи на дотс. Они как раз большой апдейт запилили, почти релиз кандидат. И дело не в апдейте а в базовой заточке на многопоточность и низкоуровневую оптимизацию.
108 803744
>>03740

>глубина вложения циклов


Простое правило - если тебе требуется больше двух, то ты скорее всего хуйню делаешь, и даже с двумя хорошенько подумай и полистай существующие алгоритмы, потому что есть шанс того что ты сейчас захуяришь квадратичный алгоритм, когда уже давно придумали логарифмичный для тех же целей.
109 803745
>>03744
Ну я приблизительно это и имел в виду.
110 803799
>>03740
а что в дотс поменяли, кстати? там екс чтоли на финишную прямую выходит? или более полезные хуйни? не трогал их год
111 803800
>>03799

> там екс чтоли на финишную прямую выходит?


+ убрали зоопарк базовых систем и джобов. оставили только базовые IJobEntity и SystemBase которые могут все, что могли старые по отдельности
+ добавили "вариадик апдейт" системы, которым можно выставить время апдейта напрямую или до окончания джобов. ну т.е. туда можно загонять долгоиграющие асинхронные задачи.
+ расширили поддержку редактора. галочка "конверт ту энтити" вместо соответвующего мб, лучшая поддержка префабов, интерфейс где можно смотреть и менять энтити как го в рантайме, дебаг систем с отключением и пофреймовым выполнением, профайлер под дотс и прочая по мелочи.
- убрали анимации и звук до версии 0.51 (эта 0.50)
112 803801
>>03800
зы. на отквоченное так и не ответил, за 0.51 уже планируется как релиз кандидат.
113 803883
>>03800
спасибо за пересказ. хуёво что не добавили до сих пор анимации и звук, конечно. вот про префабы интересно стало, надо будет глянуть. я раньше своей хуйни городил в скриптабл обжектах для того чтобы связывать префабы и ентити, но теперь оно видимо само как-то умеет это делать?

интересно не добавляли ли больше фич с DynamicBuffer и многопоточностью. мои предыдущие попытки сделать инвентарь на екс работающий в многопотоке превращались в какой-то пидец.
114 803899
>>03704

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


Поебать же вообще, во всех сценариях поведение абсолютно одинаковое будет, вся разница листа только в том, что это тот же массив с оберткой сверху и с подготовленными функциями для удобства, и в случае с фор ич дополнительнач аллокация под иенумератор(так ведь?), но эт хуйня. Как мы видим - оно всё ваще почти ничего не стоит.
115 803951
>>03899
ну, да, функции для удобства, в том числе увеличение объёма при переполнении, с массивом придётся такое писать самому, плюс существуют IReadOnlyList, которые при доступе к чтению не дают так же и воздействовать на элементы, в отличие от обычного листа и массива, но на этапе рефакторинга проще подставить ридонлилист вместо листа, чем вместо массива
116 803957
>>03951

> но на этапе рефакторинга проще подставить ридонлилист вместо листа, чем вместо массива


Не пон. Ридонли лист же нужен ток для инкапсуляции, и скорее всего ты изначально когда классв проектируешь - понимаешь к чему должен быть доступ извне, а к чему нет
117 803978
>>03957
по опыту могу сказать, что есть те, кто с опытом 1+ года работы с c# не слышали про ридонли листы вообще и думают, что readonly List<> сам по себе обеспечивает безопасность листа, ну и, бывают разные случаи, не у всех есть опыт сразу что-то на этапе проектирования предусмотреть
33в.jpg108 Кб, 1025x641
118 804009
>>02780 (OP)
Сап юнитач посоветуй годный тутор по созданию, сттатичекского и динамического тумана войны?
Яндекс выдаёт или старые туторы со старыми версия юнити или такую дичь за которую личне мне было бы стыдно.
https://yandex.ru/search/?clid=2285101&text=Unity+fog+of+war&lr=39
Я смог сделать туман войны только для 2д и выглядит он не совсем.
119 804016
Парни, если кому-то требуется саунддизайн или озвучка встроенная в Unity с помощью Wwise, дайте мне знать.
120 804018
>>04016
А ты забесплатно работаешь?
121 804019
>>04018
Работаю не забесплатно, но первые пару звуков могу сделать безвозмездно, чтобы у тебя сложилось понимание о том чего от меня ждать. Потом либо договариваемся либо желаем друг другу удачи и интересных проектов
122 804022
>>04019
А портфолио есть чтобы я примерно прикинул что ты можешь не нагружая тебя почём зря?
123 804028
Почему каждый раз при загрузки сцены юнити 2д у меня то пропадают текстуры, то появляются? Вот есть текстура земли, при загрузки текстура персонажа может зайти ЗА текстуры земли и его не видно, если несколько раз перезагрузить открывать другую сцену и переключатся на предыдущую то он может то появляться нормально, то снова проваливаться под землю. Может с камерой что-то не то?
124 804029
>>04022
Да! Вот фрагмент портфолио, саунд редизайн катсцен из Dark Souls 3. https://www74.zippyshare.com/v/431YTOch/file.html

Опыт работы со звуком 7 лет, большую часть в музыкальной сфере, год в сфере кино и вот последний год в геймдеве
125 804030
Аноны, помогите с шейдерами, пожалуйста. У меня есть clipping шейдер, как тут:
https://www.youtube.com/watch?v=GaNVrRRdqbY
Как мне растянуть текстуру, сверху, чтобы была как бы крышка, а то меш виден изнутри
T1vpwuCm.jpg11 Кб, 537x137
126 804031
>>04028
потому что ты вася
127 804032
>>04030
никак, юнити тебе не 3д редактор, чтобы уметь в полигоны, можешь попробовать юзать клипер с дополнительным объектом в виде своей "крышки"
128 804033
>>04032
Ну есть же всякие геометрические шейдеры, они разве на такое не способны?
129 804034
>>04031
Спасибо
130 804036
>>04030
Еще погугли, когда-то давно юзал такой который сам залеплял дырки, название уже не помню.
131 804037
>>04036
Понял, спасибо.
I aint clicking that shit nigga.jpg34 Кб, 600x600
132 804040
>>04029
А на саундклауде есть чо? Качать страшно
133 804043
>>04040
ноуп, ну можешь на почту написать hi=zCkka359ANUSgmv_4ailPUNCTUMco!L|m и я тебе скину. но вообще там просто видосик, честно
134 804044
>>04040
на саундклауде кстати есть, но там просто музон, к геймдеву отношения не имеет
135 804045
>>04044
Ну кинь его
136 804047
>>04045
да там рэпчик.. soundcloud.com/katamayne/popular-tracks
137 804055
как пофиксить стандартный video player? эта хуйня дёргается на последнем кадре, хотя видео специально я подобрал, где последний кадр заканчивается ровно там же где и первый
138 804059
>>04055
По идее есть опция бесшовного переключения на заданную картинку после видео. Видел в других движках.
image.png194 Кб, 270x500
139 804060
чет я слегка увлекся... теперь еще с полдесятка систем для "очистки" после анимации...
140 804063
>>04060
Это что ты реализовал? Что за велосипед? Уверен что до тебя это уже не сделали более элегантно?
bandicam 2022-05-31 10-59-48-170.webm121 Кб, webm,
288x176, 0:03
141 804067
>>04063
спрайтовую анимацию на шейдерах в экс
image.png9 Кб, 570x431
142 804071
Всё?
143 804072
>>04071
да прибудет с тобой впн
144 804074
>>04072
А денги за игоры ты тоже по впн получать будешь?
145 804075
>>04074
Делай игры для души а не за деньги.
146 804078
>>04074
как же повезло, что гейбушка максимально сторонится политоты и продолжает выплачивать
147 804079
>>04078

> продолжает выплачивать


Жаль только вот, что покупать запретил.
148 804090
>>04079
Ниче он не запрещал
1654022627808.png31 Кб, 644x440
149 804110
>>04090
Ну, он лично не запрещал, да. Его заставили. От этого не легче.
150 804157
>>04009
Похоже не хватает градиента при переходе в туман
image.png11 Кб, 436x185
151 804177
Только-только начинаю вкатываться в Юнити, так что вопрос очень тупой.
У меня есть объект со скриптом. Если я переменную задаю в скрипте (допустим значение 1), а потом ее же в самом юнити в свойствах объекта (допустим значение 10), то в итоге используется значение 10. Это типа так и нужно? То что руками вбил в свойствах имеет бОльший приоритет? Я думал при запуске должно из скрипта подтягиваться.
152 804179
>>04177
это значение по-умолчанию. т.е. оно появляется когда ты только вешаешь скрипт на объект. на уже существующем сохраняются те что наменял в инспекторе.
153 804203
>>04158 (Del)
В том что в него встроен нормальный язык программирования. Одного этого пункта достаточно чтоб даже не смотреть в сторону нереального кала.
154 804204
>>04203
Плохо разбираюсь что в шарпе, что в крестах, но чем кресты хуже?
155 804208
>>04204
как минимум не нужно дрочить указатели на указатели
156 804209
>>04208
В С++ уже лет 10 как не нужно дрочить указатели, если что.
157 804216
>>04209
Лапшетаскатели только рассказывают какие плюсы охуенные, но пользуются исключительно блюпринтами.
a62.png261 Кб, 680x661
158 804220
Наконец-то я вырвался из круга прохождения курсиков и вот уже месяц сижу над своим проектом. Понимаю что для многих это хуйня, но я находился в этом ёбаном лимбо ГОДАМИ, так и не приступая к своей игре. Я рад что я хотя бы просто начал.

Анон, если ты в таком же лимбо - просто возьми и начни. Ты охуеешь как бесполезны все эти курсы, если ты не делаешь шаблонное говно. Как только появляются нестандартные задачи сперва теряешься, но потом через упорство и гуглинг, просмтр документации и роликов находишь решение, меняешь его под себя и начинаешь по-настоящему знакомиться с движком. Охуенно, жаль что не начал раньше.
159 804225
>>04220

>и начинаешь по-настоящему


Не забудь подсчитать сколько раз будешь НАЧИНАТЬ прежде чем сделаешь законченную игру.
160 804234
>>04225
Да похуй, я рад что уже хотя бы ставлю сам себе задачи и решу их решения и набиваю опыт в юнитях. Я морально готов к тому что моё виденье окажется говном и я начну делать что-то другое. Но пока за месяц я только убеждался в том что оно верное и самое главное - исполнимое.
161 804282
>>04247 (Del)
йоуу.. забей. лучше усыпи малого. земля пухом пупсику
162 804285
За визуал скриптинг - будущее? Или это отмычка для людей с непрограммистким уровнем мышления? Можно ли будет переманить туда человека, которые знает c# и паттерны на уровне бога?
163 804286
>>04285
если это реально ускоряет разработку - то да, но я эту хуету даже не тестил, боюсь
164 804289
>>04204
отличный язык. очень гибкий и многофункциональный. есть одна маленькая проблема за полвека развития он оброс таким диким количеством костылей, костылей к костылям и странных основанных на давно забытых концепциях решений что выучить и использовать его нормально весьма и весьма проблематично. т.е. вместо разработки 3/4 времени будет уходить на борьбу с синтаксисом, непонятными ошибками и попытками разобраться что нахуеверченно в трехэтажных шаблонах стандартных библиотек.

ах да и синтаксис. в виду того что все новые фичи громоздились сверху старательно сохраняя старые для совместимости, тест программы состоит процентов на 90 из знаков пунктуации, каждый под свою задачу. вот даже банальное взятие поля у классы может выглядить как var.field, var->field, var::field в самых простейших случаях. а если начинаться закапываться в указатели то все ухудшается все быстрее и быстрее
165 804290
>>04285

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


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

Наоборот это потенциальный инструмент для заманивания нюфаков в программирование.
166 804291
>>04289

>вместо разработки 3/4 времени будет уходить на борьбу с синтаксисом, непонятными ошибками и попытками разобраться что нахуеверченно в трехэтажных шаблонах стандартных библиотек.


Это называется знакомство с языком, по первой так в любом языке будет. На за какой язык нельзя сесть и начать хуярить как на родном.
167 804293
>>04291
ну да. проблемма в том что для крестов этот "период знакомства" затянется на годы, а за это время выйдет еще пара стандартов которые добавят еще костылей на изучение которых понадобится новый "период знакомства"
168 804295
>>04293
Тебе же не нужно взять весь язык, а только весьма ограниченный набор для разработки твоей игры, узнавать новый будешь по мере появления надобности в новых фичах.
169 804296
>>04295
в крестах? где столько способов выстрелить себе в ногу?
170 804305
>>04285

>Или это отмычка для людей с непрограммистким уровнем мышления?


Таскание лапши отличается от написания кода ручками только визуально, ну и по времени - пока ВИЗУАЛЬНЫЙ ПРОГРАММИСТ ищет в списке нужные операции для вычисления выражения 2 + 2, обычный уже половину игры напишет.
Визуал скриптинг удобен когда нужна наглядность - например в редакторах шейдеров, правда из лапши обычно жуткое говно генерируется.
171 804309
>>04305
Ну то, что нагенерилось и переписать не проблема. Для шейдеров удобна именно визуализация, ибо работаем с визуальной информацией. Можно посмотреть результат на каждом шагу сразу, без чего отладка шейдера довольно муторный процесс. С кодом же этот аргумент не работает.
172 804432
Делаю гоночки с разрушениями (~Flatout), для андроидов
Какой рендер использовать, URP или стандартный? Где лучше производительность?
173 804514
>>04432
urp ставь
174 804543
>>04514
Почему
175 804546
>>04543
Потому что он теперь стандартный, юнитеки сами советуют им пользоваться. Вообще если планируешь играться с шейдерами, то юрп тебе точно нужен будет.
176 804558
LTS выходят в третьем квартале всегда? То есть осенью?
image2 (1).jpg99 Кб, 1921x1081
177 804567
>>04558

>LTS выходят в третьем квартале всегда? То есть осенью?


Откуда такие данные?
178 804679
>>04546
Только вывезут ли слабые девайсы такое? Скажем, где без УРП 20 фпс, будет ли с УРП те же 20?
179 804686
>>04679
Учитывая что УРП тебе просто даёт более широкие настройки, ты всё еще сможешь сделать для более слабых девайсов настройки попроще.
180 804709
>>04216
>>04209
Да поебать на указатели, дженерики в крестах - это просто кошмар, если бы они были адекватные, то язык был бы юзабелен.

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

Ну и что очень важно - в шарпе куча новых удобных фишек, с которыми писать код просто кайф, язык длч людей короче
image1 Кб, 184x26
181 804760
Почему эта залупа не работает в функции? Мне нужно чтобы скрипт хоть на сколько-то остановился, а нихуя не работает. Я дебил или разрабы юнити дебилы?
image.png154 Кб, 1287x477
182 804768
Редактор NPC. Не готов пока.
183 804769
>>04768
Найс, ты же надеюсь инстансишь все дубли и массивы повторяющихся объектов, а не кнтр+с и кнтр+в?
185 804776
>>04768
прон рогалик делоешь?
186 804777
>>04769
Что-то да, что-то нет. В идеале редактор должен сканировать папку с ассетами и добавлять различные элементы спрайта персонажа автоматически. Чтобы потом безболезненно добавлять новые элементы, аксессуары и тп.
187 804778
188 804779
Какие вы знаете мастхев ассеты для полноценной разработки? Например я слышал, что Bakery запекает свет, отражения и прочее, гораздо лучше встроенной в юнити запечки. Какие еще посоветуете?
image43 Кб, 388x510
190 804785
>>04775
Благо дарю
191 804800
>>02780 (OP)
UnityScript же не поддерживается вроде, не?
192 804802
>>04800
Нет, уже какое-то время.
193 804804
>>04800
Лет 5 как не поддерживается.
194 804807
>>03046
я юнити никогда в жизни не открывал, но может там просто сравнивается направление и координаты аквалангиста, и если они соотносятся (струя попадает) то у аквалангиста просто переменная увеличивается и графон ему очки покрашивает?
195 804810
Юнити норм для визуальных новелл? Или лучше что попроще юзать?
И можно ли в нем генерить фоны для экономии на художнике?
Вон, написано что SpeedTree позволяет создавать ландшафты (я так понимюа 3Дшные).
Такой ландшафт - это по сути трехмерный фон?
196 804825
Посоны, такой вопрос: работаю в unity 2022 хочу вять курс по шейдерам - как не обосраться и выбрать нужный? Как я понимаю, есть отличия от того, что было в 2019
197 804826
>>04810
Смотря что у тебя в новелле будет, но я бы взял rpg maker(в основном на нем делают) или gamemaker(хотя, наверное, нет разница с юнити).
Проще всего на первом будет. Если цель - тупо визуальная новелла, мне кажется, нет смысл юнити брать
198 804827
>>04807
Ну можешь скрипт на это сделать. Проще всего - просветить луч из камеры в курсор(или мочу) и треггирить коллижн
200 804829
>>04825

>Как я понимаю, есть отличия от того, что было в 2019


В самих шейдерах отличий нет, возможно есть разница в инструментах типа редактора шейдеров. Тебе надо учить сами шейдеры, их будешь делать ты а не редактор.
201 804832
>>04829
Спасибо. У меня была такая проблема: в 19 (старше, не помню) студии написал мелкий шейдер. Но когда пытался перенести его в 21, то ничего норм не работало, ибо как-то по-другому юнити начала работать с шейдерами.
Что это значит? Может быть такое, что начал использоваться другой(высокоуровневый) язык, который все равно компилится синтаксис, на котором работают шейдеры? (по какоу коррктному названию гуглить?)
202 804834
>>04832
Ну возможно ты в 2022 создавал проект не на стандартном рендере как в 2019, а в URP или HDRP, там действительно разница есть. У стандартного (Built in) рендера давно ничего не менялось.
203 804835
>>04834
Спасибо!
Есть смысл отдельно в HDRP вникать или нужно после того, как просто с шейдерами понятнее станет?
204 804838
>>04835

> HDRP



нет, если ты не пилишь фотореализм (или близко к нему)
205 804839
>>04835
Лучше сначала на стандарном рендере подрочиться, он проще. В новых рендер пайплайнах свои приколы, туда опытные то не спешат перекатываться. Тебе как новичку надо для начала просто основы понять.
Можешь это покурить, тут с картинками
https://docs.unity3d.com/Manual/SL-SurfaceShaderExamples.html
https://docs.unity3d.com/Manual/SL-VertexFragmentShaderExamples.html
206 804841
>>04839
Спасибо большое!
Есть еще доступ к курсу https://www.udemy.com/course/unity-shaders/,
видимо, его буду тыкать
207 804845
>>04827
Так я ничего не делаю пока что, я ему написал>>03046
208 804873
>>04810
Если у тебя новела с уймой мини игр, то стоит подумать о юнити, если сорт читалки, то бери ренпи и не выпендривайся.
209 804895
>>04873
Но в ренпай можно же характеристик вести и предметы сохранять?
И отношения фракций еще. Короче, тупо переменные и массивы.
210 804898
>>04895
В доки доки играл? Там на чистом пайтоне всё что угодно закодить можно, вплоть до удаления файлов девочек из ревности другой девочки.
212 804916
>>02780 (OP)
История такая: я раньше работал только на game maker studio ну и тыкал pygame. Меня убедили, что это детсад и надо переходить на юнити. Вот сажусь сегодня, смотрю туториалы и меня всё больше накрывает волна непонимания. Почему, чтоб просто передвинуть объект я не могу написать "x+=1", а должен мучаться с transform? Что за монстр этот аниматор? Почему я не могу просто сказать, чтоб объект сменил свой спрайтлист на другой, а должен истыкать 100500 кнопочек и чекбоксов в этом аниматоре?
В конце концов, почему я просто не могу нарисовать кодом картинку на экране?
Это я тупой и так реально удобне или что? Или мне попадаются такие туториалы?
213 804918
>>04916
Хз как ты там "работал" на гамаке догадываюсь что ни одной игры не сделал, но если написать transform.Translate(1,0,0) это для тебя мучение, то тебе лучше заняться по жизни чем-то другим.
214 804942
>>04916
Юнити эт детсад, переходи на анрил
215 804962
>>04916
Везде трансформы не только на юнити, это норма.
Вообще полноценный движок тем и отличается, что можешь делать очень многое, но придётся и вникать доого.
216 804966
>>04756 (Del)

> В крестах нет говнодженериков, в крестах охуенные компайл-тайм темплейты


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

> В шарпе поприятней апи, но не надо драматизировать.


Намного приятнее!

> Что за шизу ты пишешь? Какую документацию напишешь такая и будет.


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

> Охуеть, поставь современную иде для крестов, например vs code и у тебя будет то же самое.


Ага, только проблема со стилем именования, и опять же - некоторые вещи только в компайл тайме покажет.

И да, я не говорю что на С++ ваще нельзя писать - конечно можно, просто поддержка кода и скорость того, как ты разбираешься с чужим кодом(когда юзаешь какую-нибудь новую библиотеку в том числе) - гораздо меньше, чем в том же C#. А знаменитые костыли крестов заставят ещё переодически проебывать немало количество времени - ньюфагам вообще пизда, а олдам просто нужно лишний раз держать их в голове и отвлекаться от основных задач.

Поэтому, ящитаю С++ оправдан только для развития уже имеющихся проектов на С++, либо там где без него никак(и то я не шарю что там со скалой, растом, и че там ещё с хорошей производительностю есть...), либо тогда, когда надо дохуя программистов набрать(потому что С++еров немало)
217 804983
>>04962
К трансформам то я привынуть могу, но вот действительно нет никакого метода нарисовать изображение кодом? Потому что даже сделать такую простую вещь, как отрисовать инвентарь для меня обернулось целым событием
218 804985
>>04916

> Почему, чтоб просто передвинуть объект я не могу написать "x+=1", а должен мучаться с transform


Разделение объекта на компоненты это более чем логично.
Там не только "x" есть но локальное х например, а еще ротация и скейл.
А ещё есть RectTransform и там другое.

> В конце концов, почему я просто не могу нарисовать кодом картинку на экране?


>>04983

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


Можешь, но рисовать картинки кодом - хуета идея почти всегда, тем более для инвентаря. Почему бы готовый ui не использовать, не повесить кнопки с картинками в лейаут какой-нибудь?
219 804987
>>04985
Я еще много чего не знаю, потоиу сужу только по тому, с чем столкнулся
Мне не нравится работать с UI по нескольким причинам:
1) куча телодвижений в интерфейсе движка. Приходится истыкать кучу кнопочек, вместо пары строк кода.
2) мне пока непонятно каким образом этот интерфейс можно будет динамически изменять. Хочется легко менять внешний вид интерфейса, количество столбцов на одной странице, их масштаб, расположение и т.д
3) становится сложно ориентироваться в интерфейсе движка из-за такого количества всякого хлама.
220 804988
>>04987

> 1) куча телодвижений в интерфейсе движка. Приходится истыкать кучу кнопочек, вместо пары строк кода.


Ну надо покопаться, изучить как оно работает, да

> 2) мне пока непонятно каким образом этот интерфейс можно будет динамически изменять. Хочется легко менять внешний вид интерфейса, количество столбцов на одной странице, их масштаб, расположение и т.д


Лейауты для этого сделаны. Растягиваешь лейаут - и он растягивает и перемещает все внутренние элементы
221 804991
>>04987

>Приходится истыкать кучу кнопочек, вместо пары строк кода.


Это какие ты UI парой строк кода писал, "hp: 100"? Так это hello world а не UI.
222 805004
Не совсем по теме юньки, но кто в курсах про инфу о требованиях к моделям? К примеру сколько должно быть у ящика точек/треугольников? На текущей сцене в сумме?
Примерное понимание есть на уровне: Вот щас фпс упало с 120 до 80 значит плохо. В курсе за кол-во материалов, статику и оклюжен.
Может кто знает где такую инфу нарыть? Как раз знакомому 3дшеру подкину. Понимаю что это больше относится к 3д моделированию, но работаю с ним в юньке.
223 805066
>>04987

>xочется легко менять внешний вид интерфейса


>парой строк кода


Эм, даже в упрощённом синтаксисе ренпи у меня ушло на полноценный интерфейс 2к строк кода. В юнити потребуется ещё больше, но это и есть цена управляемости каждого элемента ui.
Уймы параметров разметок, трансформов, анимации, динамичные блоки, разнообразный функционал - всё это требует понимания и отражения в коде.
224 805070
>>05066
новый гуй очень не удобен в плане кода. одни рект трансформы чего стоят.

старый гуй делается чисто кодом, но сейчас эти описания только в тулзах редактора используется вроде бы.
225 805072
Нубский вопрос.
Как мне получить список всех активных (галочка в свойствах) объектов определенного типа на сцене?
226 805073
>>05066

> В юнити потребуется ещё больше, но это и есть цена управляемости каждого элемента ui.


Нахуя?? Там всё визуально настраивается без кода
227 805074
>>05072
Определенного типа? FindObjectsOfType<Тип>().Where(obj => obj.activeSelf).ToArray()
228 805095
Хочу чтобы противник ударял игрока когда подходит к нему достаточно близко, но делать каждый кадр в Update проверку на расстояние стрёмно, есть способ лучше?
229 805096
>>05095

> но делать каждый кадр в Update проверку на расстояние стрёмно


Делай проверку в FixedUpdate. Ничего стрёмного в этом нет. Тем более в юнити уже давно добавили методы проверки, которые не выделяют память.
230 805097
>>05072
>>05074
FindObjectsOfType<T>() возвращает только активные объекты, в которых T так же активно. Этой одной функцией можно обойтись.
image.png566 Кб, 544x640
231 805098
>>05007 (Del)
Вот из за таких уёбков и получается пикрил.
232 805100
>>05097
public static Object[] FindObjectsOfType(Type type, bool includeInactive) ?
1607872732looped1607872731 (1).mp4739 Кб, mp4,
640x360, 0:10
233 805108
>>05098
Так то в киберпанке нормально работали с полигонами.
234 805113
>>05098
От этого кислотно контрастного дизайна ассоциации с пикрил наружной рекламой.
Солидарность славянских дизайнеров?
235 805136
Как можно реализовать постепенное изменение материала 3д объекта? Например есть белый куб, необходимо чтобы он снизу вверх постепенно становился оранжевым, может как-то через маску можно изменять материал объекта?
236 805138
>>05136
Самое простое и быстрое это vfx. Чуть сложнее это своим шейдером.
237 805140
>>05136
Пиши шейдер. Если текстурная развертка у куба подходит можно нацепить на куб второй материал с прозрачной текстурой оранжевого цвета и двигать ее оффсетом (это васянский способ), но у стандартного куда развертка не подходящая.
238 805201
>>05136
делой шейдоры, они очень простые, главное вкотится

https://www.youtube.com/watch?v=auglNRLM944
sage 239 805235
>>05201
а на рабсийском языке есть кунтент? очень надо
240 805239
>>05235
Субтитры -> перевести -> русский
241 805241
>>05235
Яндекс браузер поставь, даун тупой, там голосовой перевод встроен
sage 242 805242
>>05239
>>05241
долбаёбы ебучие, зачем мне машинный недоперевод?
243 805247
>>05242
Затем, что ты настолько тупой, что не можешь выучить простейший язык который даже пендосы со средним IQ в 40 поголовно знают
244 805253
>>05235
честно хз, быстрый гуглеж выдал статью на хабре как сделать подсветку выделенного объекта(вроде неплохая) и несколько видео
emojisky.com-6839154.png455 Кб, 799x451
245 805258
246 805328
Спиздил с интернета вот такой вот шейдер графчик, работает практически как надо но при вращении нижняя часть также двигается, как можно пофиксить шейдер граф чтобы такого не происходило и даже при вращении нижняя часть не двигалась?
247 805339
>>05328
не скажу что бы понил, но судя по всему для параметра, который отвечает за наложение надо брать мировые координаты.
там есть варианты с текстурными(привязаные к uv), локальными(к отдельному мешу) и мировые(не зависимые) тут походу взяты локальные что бы моделька закрашивалась от ног до головы не смотря на то как повернута.
248 805565
Анонессы, подскажите, пожалуйста, почему у меня навмеш движется отдельно от префаба? Навмеш находится на пустом дочернем объекте внутри префаба. Если это из-за дочерки, как связать дочерку с родителем, разве они не связаны, если дочка внутри префаба?
249 805569
>>05100
Там оно по дефолту false
image.png6 Кб, 260x96
250 805573
спасиб дядь гейб, выпустил блядь игру
осторожнее с прон играми, это пиздец
251 805574
>>05573
Hello,

After review, we will not be able to ship your game on Steam. While we strive to ship most titles submitted to us, we found that this title features themes, imagery or descriptions that we won’t distribute.

Regardless of a developer's intentions with their product, we will not distribute content that appears, in our judgment, to depict sexual conduct involving a minor.

While every product submitted is unique, if your product features this representation -- even in a subtle way that could be defined as a "grey area" -- it will be rejected by Steam.

For instance, setting your game in a high-school but declaring your characters are of legal age would fall into that category and be banned.

This app has been banned and cannot be reused. Re-submissions of this app, even with modifications, will not be accepted.
252 805628
>>05573
>>05574
Попробуй на других платформах, может они не такие мракобесы
253 805630
>>05573
>>05574
Это что же за порно в школе ты там выложить хотел?
254 805788
>>05328
если я тебя правильно понял, то ты просто убери сабстракт и передавай из позиции в сплит сразу, но тогда будет диапазон от -1 до 1, где 0 - это середина объекта

>>05565
ригидбоди с галочкой кинематик добавь
255 805791
>>05573
Проследуй нахуй, одебилевший перверт
256 805801
>>05788
Да не, видимо, не в этом дело. Меня не положение префаба относительно земли волнует, а то, что префаб не движется вместе с навмешем, движется пустой дочерний объект префаба, на котором навмеш стоит
33.png1,6 Мб, 2322x624
257 805802
>>05801
збыл скрин
258 805812
Есть какой-то хоткей или быстрый способ перехода в просмотр канваса? Надоело каждый раз отдалять камеру когда хочу редактировать интерфейс и обратно приблежать когда что-то делаю на сцене
259 805813
>>05812
На сцене нажми F, камера отъедет так чтоб было видно объект целиком. Это работает на любом объекте и на канвасе тоже.
260 805814
Я попытаюсь объяснить понятнее, насколько мне хватит мозгов. Скрипты управляющие навмешем есть на первых двух скринах, там много не связанного с навмешем, потому решил сделать скрином то, что к нему относится. Закомментированные строки пока что не используются, потому что пытаюсь переделать скрипт. Закомментировал, потому что скрипт предусматривает движение не от навмеша, а от рутмоушена, то есть от встроенного в анимацию движения, навмеш, как я понимаю, только помогает ориентироваться в пространстве, чтобы не идти в стену. У меня нет рутмоушена, я пытаюсь отдать управление префабом полностью на навмеш. На третьем скрине иерархия внутри префаба. Надеюсь вводная часть понятна.

Сейчас у меня в скриптах активно все, что на скринах, плюс это:

EnemyManager enemyManager;
NavMeshAgent enemyNavMeshAgent;
Rigidbody rb;
[SerializeField] private Transform movingTo;

private void Awake()
{
rb = GetComponentInParent<Rigidbody>();
enemyManager = GetComponentInParent<EnemyManager>();
}

// Update is called once per frame
void Update()
{
enemyManager.enemyNavMeshAgent.destination = movingTo.position;
}

Так я пытаюсь передать управление на навмеш, тупо одна строка на движение, она работает на простом кубе, но не работает на моем префабе (4 скрин). Видимо что-то конфликтует с новым скриптом.

Я не прописывал этот код внутри срипта на первом скрине, потому что destination жалуется на enemyNavMeshAgent, якобы его нет внутри enemyManager. Он там есть, иначе бы не работало вообще ничего с самого начала. Когда новый скрипт добавил на объект с навмешем и обращался к нему, ошибок не возникало, но движется не префаб, а пустой объект. Если не понятно, попробую объяснить что-то еще раз
image.png340 Кб, 535x466
261 805831
Походу придётся-таки разобраться как работают кватернионы, я думал пронесёт, но нихуя.
262 805832
>>05831
Советую на ютабе посмотреть, на самом деле там очень просто понимается когда на примере показывается.
image.png10 Кб, 454x221
263 805838
почему массив не отображается в инспекторе? даже в дебаг моде нихуя нет, с листом тоже самое
264 805839
>>05838
поставь [Serialize] или как он там пишется аттрибут левелу
265 805849
>>05801
rigidbody повесь на родителя, я не уверен, лень проверять, вообще странно ставить агента куда-то в чаилды, если это основной компонент сущности, но ригидбоди обозначает, что объект со всеми его вложениями - единый, поэтому должно работать
266 805870
>>05849
Он на родителе. Попробую короче перенести навмеш туда же и переписать обращения к навмешу в скриптах
267 805875
>>05831
Вчера на собесе сказал, что мне проще вектор на матрицу поворота-переноса-масштаба умножить или попросту вложить перемещаемый объект в пивот вращения и вращать пивот, а не через кватернион.
Rotatinggimbal-xyz.gif620 Кб, 240x240
268 805876
>>05875
кватернионы воопше довольно ебанутая абстрактная хуйня, которую проблематично "понять". но значительно упрощает все расчеты вращений посему широко используется
269 805895
>>05870
Что-то я нахуевертил, не понимаю даже что. Переставил навмеш на родителя закомментировал одну строку enemyNavMeshAgent.transform.localPosition = Vector3.zero, которая, как я понимаю, мешает навмешу улететь в ебеня, но сейчас она стала наоборот отправлять префаб в ебеня на координату 0.0.0. Отключил и моб ПОШЕЛ блядь. При том, что я даже не прописал еще за кем ему идти. Он просто пошел по навмешу, как ему положено, избегая препятствия, ища короткий маршрут. Потом я естественно прописал enemyManager.enemyNavMeshAgent.destination = movingTo.position и destination по-прежнему жаловался, что ему надо быть в скрипте на объекте с навмешем, это понятно. Не понятно почему моб идет, если нет скрипта на движение. Очень блядь странно, но работает
270 805896
>>05895
А разве не должна .transform.localPosition = Vector3.zero за нулевую координату считать центр объекта, на котором находится?
271 805974
>>05896
Т.е функция которая отправляет центр обьекта в центр обьекта - концептуально.
image.png273 Кб, 1405x1411
272 805998
Сап юнитач. Есть один куб, вокруг него летает шарик, я задал вращение вот так:

clampedPositon = Vector3.ClampMagnitude((sharik.position + speed) - kubik.position, 3.0f);
sharik.position = kubik.position + clampedPositon;

Вращение идёт почти как надо, за исключением того что сейчас поворот куба никак не влияет на угол орбиты шарика, мне грубо говоря нужно чтобы центр круга, вокруг которого кружит шарик, всегда смотрел ровно в "ебало" кубу. Пикрил нарисовал как мог.
273 806004
>>05998
Раз пять прочитал и у меня вопрос, ты сам-то читал че написал? Шарик вращается вокруг куба, нада шобы круг вокруг которого вращается шарик был ебалом к кубу. Пиздец. Тебе че надо то ебаный икебастос, чтобы орбита шара менялась в зависимости от углов наклона куба чтоли? Еще хуйню какую-то нарисовал.
image.png63 Кб, 982x819
274 806005
>>06004

>Тебе че надо то ебаный икебастос, чтобы орбита шара менялась в зависимости от углов наклона куба чтоли?


Да, вот та же схема вид сверху.
275 806006
>>06005
Так получай направление куба и клампом со сглаживанием
поварачивай. Очень похоже по аналогии с синемашин камерой. Вскрой стандартный 3д контроллер от юников, там в коде глянь, уверен то что ты ищешь.
276 806008
>>05974
Ну да. Если я хочу, например, прицепить один объект ровно в нулевую координату второго, а че?
Стикер319 Кб, 500x500
277 806184
>>06008
фу, какая гадость
.png8 Кб, 440x414
278 806194
Подскажите как организовать механизмы переработки ресурсов, например как в печке из майнкрафта. Вот у нее есть 3 слота для предметов, 1 вход 1 под топливо и результат обработки, два слайдера на остаток топливо и прогресс обработки. Все это держится в UI, тупо на кнопках. Я понимаю как все это сделать при условии что эти самые печки будут всегда активны как геймобжект. Проблема появляется когда мне нужно допустим вырубить всю вкладку включая эти самые кнопки печей, и тогда сам процесс в печке не просчитывается. Как это все перетащить в пустой геймобжект который всегда активен я не понимаю. Поэтому мне нужен ваш совет.
279 806203
>>06194
Пчел что ты делаешь...
Это реализуется как и любой другой интерфейс: У тебя есть канвас с этим делом. Он включается когда активируешь предмет, и выключается когда заканчиваешь работу с предметом, всё.
Тебе без разницы какие предметы активны, где. У тебя Канвас(UI) отдельный компонент от гейм обжетков.
Так же за это всё дело отвечает какой нибудь менджер работы, куда поступает событие что вот игрок попытался использовать предмет, откроем ему UI. Сами же данные по предмету могут храниться как в нём же и тогда ссылка на него получается при взаимодействие, или же в пулле.

О О П
О
П
280 806206
>>06203

> Так же за это всё дело отвечает какой нибудь менджер работы, куда поступает событие что вот игрок попытался использовать предмет, откроем ему UI


У меня вся игра в UI, нет физических обьектов. Все в канвасе. Типа вкладку с печкой закрыл и все обьекты выключены, просчет работы в печке остановлен. Не понимаю как это все залинковать и вынести в невыключаемый обьект и потом присунуть обратно при открытии печки.
281 806209
>>06206
Еще раз, в чём проблема иметь отдельный канвас под печку, который будет не зависим от любых других объектов? Ты же в курсе ui и игра это не зависимые друг от друга вещи.
Просчёт и логика у тебя идёт в ядре игры, а не на элементах интерфейса.
282 806242
Анон только изучаю, вопрос тупой, вот у меня куб смаштабирован в прямоугольник, накинут на него материал, и материал так же смаштабирован! Криво тоесть, что надо нажать, чтобы материал накинулся равномерно?
283 806267
>>06242
У материала есть поля тайлинг и оффсет, их покрути.
284 806285
>>06006
Можешь объяснить логику как это работает? Я чёт с этими векторами запутался. Если можешь - с картинками.
285 806312
>>06267
А других вариантов нет? В 3д максе помню можно выбирать "тип" Накладывания текстуры, и один из них она просто кидается без привязки к скеллингу тела.
Как вы вообще тогда на прямоугольник равномерную кладку кирпичей делаете?
286 806315
>>06312

>Как вы вообще тогда на прямоугольник равномерную кладку кирпичей делаете?



В блендере
287 806317
>>06312
Так сделай в 3д максе что тебе надо и текстуры там запеки.
288 806332
>>06315
>>06317
Т.е. штатно, такая элементарщина, не решается??
Получается там совсем 3д нет, а если мне нужно буквально пиксель подтянуть, то нужно будет в сторонние пакеты лезть и всё заново пересохранять каждый раз, иначе всё текстуры по пизде пойдут в юнитях.
289 806339
>>06332
анрил энжин 5 скачай, может там 3д есть.
290 806342
>>06312

>Как вы вообще тогда на прямоугольник равномерную кладку кирпичей делаете?


Текстура должна быть seamless и тогда нормас всё натягивается. Погугли как их делать.
when you forget youre retarded.png91 Кб, 500x375
291 806344
>>05998
>>06005
Понял в чём моя проблема была. Суть в том что поворачивал шарик я при помощи мышки, а координаты от мышки брал только X и Y, а ось вокруг которой крутится шарик задаётся координатой Z, а так как она всегда была равна нулю, то и хули я удивлялся что при повороте куба шар продолжал наяривать вокруг той же оси.
292 806350
Почему я могу обратиться к public class Text — стандартный UI текста юнити, но не могу обратиться к public partial class TextMeshProUGUI — скачиваемый UI текст от юнити?

Работает:

public Text ammoInMag;
public Text reservedAmmo;

Не работает, пишет что нет референса к TextMeshProUGUI:

public TextMeshProUGUI ammoInMag;
public TextMeshProUGUI reservedAmmo;

Стандартный текст от юнити шакалится как шакал. Мне надо, чтобы скрипт сам циферки писал в две строки, патроны регулировал
293 806351
>>06350
Компонент текста и текстмешпро это абсолютно разные тексты, не совместимые. Повесь в интерфейсе текстмешовский текст и его уже можно засунуть в поле TextMeshProUGUI, "обычный" текст ты туда не засунешь.
294 806356
>>06350
Есть два компонента текста, вот их и спользуй.
У легаси текста это Text.text="Твой текст";
У текстмешпро это TextMeshProUGUI.text="Твой текст";
295 806408
>>06351
>>06356
Сработало только так
[Header("Ammo")]
public TMPro.TextMeshProUGUI ammoInMag;
public TMPro.TextMeshProUGUI reservedAmmo;
image.png1 Мб, 800x946
296 806415
А зачем вы разрабатываете свою игру?

Я подался в разработку в первую очередь потому что заебался ждать пока кто-то сделает что-то подобное - хочу проверить сложно ли это сделать и каково в это будет играть, потому что в голове это может казаться охуенным, но на деле быть калом. Естественно в тайне имею манямечты что игра продастся миллионами копий, но понимаю что такой исход маловероятен. А вы?
297 806425
>>06332
Не знаю>>06415
Я нищий и не хочу работать в техподдержке говна, люблю хорроры, очень не люблю многие теперешние хорроры. Считаю жанр истекает кровью и бьется в припадке, а спрос не падает. Ну а так как я в ужасах люблю упор на атмосферу, думаю лучше вернуть жанр в это направление, но не так, чтобы игрок симулировал ходьбу и смотрел сримеры.

Мое мнение, второй аутласт хорошо балансирует на атмосфере и геймплее, первый как ни странно чуть хуже, но вислблоуер топ по напряжению. Не помню как называлась игра, это было что-то типа браузерного флеша с графоном пс1. Там дядя с гамбургером ехал по лесу на велике куда-то и каждую новую петлю во времени, атмосфера становилась неприятнее в хорошем смысле, а звук так вообще жути нагонял. В бладборне мне очень понравился звук боссов, особенно Паарл — для меня его визги чересчур реальны, мне очень некомфортно от него. Поэтому звук в хорроре играет самую важную роль, визуалом можно пожертвовать, но не в писксель.

Chilla's Art делает хорошие атмосферные хорроры, не сильно геймплейные, как по мне, но на напряжении и саспенсе красиво играет. Развязки вялые, но мне нравятся. Я за агрессию и страх в хоррорах, не только за напряжение.

Бабки, бабки, сука, бабки. Само собой
298 806426
>>06425

>


>>06332
Не знаю

этого быть не должно было
GeneratedTown - CharacterEditor - Windows, Mac, Linux - Uni[...].mp43,4 Мб, mp4,
1184x756, 0:23
299 806477
>>04768
Редактор кое-как заработал. Теперь нужно то же самое для одежды делать.
Художник пока деньги не просит, но надолго ли..
300 806541
>>06477
Просто ему нравится рисовать голеньких девочек :3
image.png10 Кб, 233x207
301 806555
Пацаны, напомните , как найти y-координату, если x известна (0>78), а радиус окружности - 1?
302 806578
>>06555
Рискну предположить что косинус(арксинус(0.78))
303 806579
>>06555
>>06578
Я тут учусь патроны считать, нахуй вы меня так унижаете своими формулами?!
304 806582
>>06555
y = r * sin( acos( x / r ) );

или
y = sqrt(r^2 - x^2);
Но тогда знак не определён.
305 806586
>>06582
Хотя он и в первом случае не определён. Для одного значения "x" на окружности может быть два значения "y" c разными знаками.
306 806606
Как вычесть экстра числа из нужного?

void Reload()
{
if (remainingAmmo >= 40)
{
ammoInMagazine = ammoInMagazine + 40;
remainingAmmo = remainingAmmo - ammoInMagazine;
}

else
{
ammoInMagazine = ammoInMagazine + remainingAmmo;
remainingAmmo = 0;
}

У меня 40 патронов в обойме, 120 с собой. Когда обойма пустеет, перезаряжаюсь и добавляю 40 патронов в обойму. Запас патронов уменьшается на 40, соответственно. Получается уже 40 и 80.

А если у меня 24 патрона в обойме, 120 с собой, я перезаряжаюсь, у меня выходит 64 патрона в обойме, 80 с собой. Само собой мне не надо, чтобы в обойме было больше 40 патронов, а к 24 добавилось лишь 16. Первым делом пришло на ум:

if (ammoInMagazine > 40)
ammoInMagazine = 40;

Но так лишние просто исчезают, а как дать шарпу понять, что у меня есть лишние цифры и мне их надо в другое место — хз. Или может есть что попроще для перезарядки?
307 806613
>>06606
Если лень с формулами думать, то сделай пару проверок
308 806614
>>06610 (Del)
Если бы я знал, я бы спрашивал тут?
309 806626
>>06610 (Del)
Ладно, твоя токсичность навела меня на мысль и я додумался таки

void Reload()
{
if (remainingAmmo >= 40 && ammoInMagazine == 0)
{
ammoInMagazine = ammoInMagazine + 40;
remainingAmmo = remainingAmmo - ammoInMagazine;
}

else if (remainingAmmo >= 40 && ammoInMagazine < 40)
{
int extras = 40 - ammoInMagazine;
ammoInMagazine = ammoInMagazine + extras;
remainingAmmo = remainingAmmo - extras;
}

else if (ammoInMagazine < 40 && remainingAmmo < 40 && remainingAmmo != 0)
{
int extras = ammoInMagazine - 40;
ammoInMagazine = ammoInMagazine - extras;
remainingAmmo = remainingAmmo + extras;

if (remainingAmmo <= 0)
remainingAmmo = 0;
}
}
309 806626
>>06610 (Del)
Ладно, твоя токсичность навела меня на мысль и я додумался таки

void Reload()
{
if (remainingAmmo >= 40 && ammoInMagazine == 0)
{
ammoInMagazine = ammoInMagazine + 40;
remainingAmmo = remainingAmmo - ammoInMagazine;
}

else if (remainingAmmo >= 40 && ammoInMagazine < 40)
{
int extras = 40 - ammoInMagazine;
ammoInMagazine = ammoInMagazine + extras;
remainingAmmo = remainingAmmo - extras;
}

else if (ammoInMagazine < 40 && remainingAmmo < 40 && remainingAmmo != 0)
{
int extras = ammoInMagazine - 40;
ammoInMagazine = ammoInMagazine - extras;
remainingAmmo = remainingAmmo + extras;

if (remainingAmmo <= 0)
remainingAmmo = 0;
}
}
310 806628
>>06627 (Del)
Этой мой уровень, по-другому не умею еще
311 806634
>>06626
Какую-то залупу нагородил. У тебя половина условий дублируется. Нахуй тебе отдельный иф на ноль и не ноль патронов, если блок когда 40- остатки обоабатывает обе ситуации?
312 806635
>>06634
У меня появляется отрицательное число патронов и при перезарядке оно добавляет еще 40 патронов в обойму
313 806637
>>06635
Откуда у тебя появляется отрицательное число, если ты из максимального количество в обойме должен вычесть текущее, откуда у тебя там минус может быть лол, если текущее максимум равно максимальному?
изображение.png1,1 Мб, 1617x787
314 806638
>>06637
Однако появляется. Сейчас нет
if (remainingAmmo <= 0)
remainingAmmo = 0;
315 806642
>>06638
Раз в год и палка стреляет.
316 806644
>>06638
Чел ты видимо не понял. У тебя про первый иф спрашиваю и следующий за ним елсе иф. Зачем тебе отдельныц иф для 0 патронов в обойме, если код добавить к лбойме разницу между максимальным значением и текущем обрабатввает оба результата?
317 806647
>>06638
Как ты собрался игры делать когда не можешь в голове прикинуть все нужные проверки логические для банальной перезарядки оружия?
318 806649
>>06638
Да и вообще, зарядить патроны в минус, а потом сделать вид что такого не было и вывести все в ноль это конечно не нормально.
319 806651
>>06638
Вместо этого должен быть код, который сравнивает количество недостающих патронов в магазине, с количеством оставшихся в кармане и если последних меньше прибавлять к магазину это меньшее число и не будет у тебя минусов, а код обработки отрицательных чисел твой немного обкакунькался
320 806660
>>06555
Корень из(1-0.78x0.78)

Потому что 0.78 это косинус по определению, а синус квадрат + косинус квадрат =1
321 806666
>>06651
Это оказалось тяжело, но я попытался упростить скрипт насколько мог:

void Reload()
{
if (ammoInMagazine < 40 && remainingAmmo >= 40)
{
int extras = 40 - ammoInMagazine;
ammoInMagazine = ammoInMagazine + extras;
remainingAmmo = remainingAmmo - extras;
}

else if (ammoInMagazine < 40 && remainingAmmo < 40)
{
int extras = 40 - ammoInMagazine;
if ((remainingAmmo - extras) > 0)
{
remainingAmmo = remainingAmmo - extras;
ammoInMagazine = ammoInMagazine + extras;

}

else
{
ammoInMagazine = ammoInMagazine + remainingAmmo;
remainingAmmo = remainingAmmo - (extras + (remainingAmmo - extras));
}
}
321 806666
>>06651
Это оказалось тяжело, но я попытался упростить скрипт насколько мог:

void Reload()
{
if (ammoInMagazine < 40 && remainingAmmo >= 40)
{
int extras = 40 - ammoInMagazine;
ammoInMagazine = ammoInMagazine + extras;
remainingAmmo = remainingAmmo - extras;
}

else if (ammoInMagazine < 40 && remainingAmmo < 40)
{
int extras = 40 - ammoInMagazine;
if ((remainingAmmo - extras) > 0)
{
remainingAmmo = remainingAmmo - extras;
ammoInMagazine = ammoInMagazine + extras;

}

else
{
ammoInMagazine = ammoInMagazine + remainingAmmo;
remainingAmmo = remainingAmmo - (extras + (remainingAmmo - extras));
}
}
322 806672
>>06666
йододефицитный...
323 806674
>>06672

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



Все по канонам, че не так? Патроны в обойме и кармане сравниваются, разница вычитается из кармана в обойму, отрицалова больше нет, нулей нет
324 806689
Дожили, пориджи не могут написать алгоритм с простейшими арифметическими операциями...

void Reload()
{
if (_ammoInMagazine >= _magazineCapacity || _remainingAmmo <= 0) return;

int ammoTransfer = Math.Clamp(_magazineCapacity - _ammoInMagazine, 0, _remainingAmmo >= _magazineCapacity ? _magazineCapacity : _remainingAmmo);

_ammoInMagazine += ammoTransfer;
_remainingAmmo -= ammoTransfer;
}
325 806692
>>06666
Брат, братан, братишка.... У тебя 3 переменные. Максимальное количество патронов в магазине, текущее количество патронов в магазине, количество патронов в кармане. Из максимального количества в магазине вычитаешь текущее. Записываешь это число в новую переменную. Затем сравниваешь его с количеством патронов в кармане и если их хватает, то к патронам в магазине плюсуешь это число и вычитаешь из патронов в кармане. Если оно больше чем патронов в кармане, то эту переменная равна оставшимся в кармане, плюсыешь ее к патронам в магазине, а в кармане будет 0. Что ты там нахуевертил больше 40 меньше 40?
326 806714
>>06689

>Math.Clamp


Насколько эффективна эта операция? Просто если его иф-конструкция работает быстрее этой хрени это будет смешно.
327 806727
>>06714
Если это тонкота то моё почтение. Если ты просто дебил то попробую тебя заверить что по сравнению со всем остальным юнитиговном просирающимся каждый кадр какой-то сраный кламп в функции релоад если что-то и нагружет, то только твою мамашу проститутку дополнительной работой.
328 806744
>>06727
Я смотрю ты настоящий юнити-разработчик, щедро раскидываешь функции из библиотек словно хлебороб при посеве, ведь хули, тут одна функция ничего не сделает, там ничего не сделает, повторить N раз и игра лагает, ну и хуй с ней, не разбираться же в каждом таком вызове функции, пускай лагает, для юнити это норма.
329 806749
>>06744
Двачую этого >>06727 господина. Так и быть для тебя разжую. Бог дал тебе юнити и мозг самому затестить, но тебе лень. Ты можешь засунуть всю свою игру в апдейт и даже это не будет её просаживать.
Основные траблы которы жрут цп и гцп - Это графика и физика.
Твой говно код, если уж совсем не крутит какие то невообразимые создания и чеки массивов в апдейте просаживает общую кпд ну максимум на 5-10%, это прям макс.
Конечно если у тебя становится сотни объектов где у них в апдейтах что-то крутится, то да уже надо оптимизировать, но это уже другая история.
330 806754
>>06744
Я вижу ты настоящий долбоеб, если собрался оптимизировать процедуру которая будет вызываться в худшем случае раз в n секунд, и то если ты клон кримсонленда собрался делать. Кстати вызов Reload() сам по себе ТОРМОЗИТ, так что его надо инлайном делать.
331 806755
>>06749
>>06754
Ну да, ну да, а расчёт расстояния между векторами просят в квадрате вычислять просто так, ну делать нехуй долбоёбам просто.
332 806759
>>06755
Тебя никто ничего не просил и не попросит, так как ты ни один собес с такими познаниями не пройдешь. Вообще хочется представить ебало мамкиного оптимизатора который в юнити на шарпе вычисляет расстояния в квадрате ЧТОБ БЫСТРА БЫЛО. Наверное он в шейдерах тоже меняет клампы на ифы.
333 806761
>>06755
Нормально ты их попустил лол. По делу, так сказать.
334 806771
>>06759
Ты судя по всему еще ни один собес не прошёл если думаешь что там самое главное это знания, лол.
335 806773
>>06771
Это ты про собес в макдак? Туда устраиваться не собираюсь, давай советы вот этому >>06755 байтоебу.
336 806776
>>06773
Да ты никуда судя по всему не собираешься устраиваться. Джуном можно устроиться будучи практически нулевым, говорю с опыта.
337 806783
>>06689
>>06714

Ну ты выдал Math.Clamp, сам же видишь мои ифы, я не знаю че такое Math.Clamp даже. Учту, что оно есть, спасибо

Бля, че я как спать ухожу, сразу срачи начинаются
yamero.jpg37 Кб, 1280x720
338 806828
Делай рассчёт патронов в квадрате, а лучше в кубе.
43.png637 Кб, 1215x604
339 806868
>>02780 (OP)
Сейчас пошел второй месяц как я изучаю основы движка на примере различных Microgames, иду полностью по обучалке learn unity и как я понимаю, то там второй этап уже будет непосредственно завязан на кодинге C#? Как он там, толковый или же С# нужно будет отдельно на сторонних ресурсах дрочить, на learn unity огрызок будет? Как вообще оцениваете все эти Pathways на unity learn для полных самоучек? Возможно ли с них толково обучиться ремеслу геймдева или же то такое?
340 806871
>>06868
ты в интерфейсе редактора разобрался? если да то всё начинай делоть игру, появятся какие-то вопросы, то гуглишь на английском, всё
341 806877
>>06868
Я считаю что если не задерживаться и приходить по 2-3 миссии за неделю то вполне неплохой ознакомительный курс. Креатив кор скипать не советую, ибо там рассказывают про юрп, шейдеры, редактор шейдеров, анимации - лучше имхо всё это знать. Как пройдёшь прыгай в разработку своего проекта.
342 806879
>>06877
Та я так-то и не собираюсь ничего скипать, а хочу полностью со всем обучением ознакомиться, тут вопрос в другом - не проебую ли я в пустую время на обучение в learn unity, может для непосредственно работы в геймдеве в качестве разработчика unity все идут по какому-то другому пути или learn unity - это база?
343 806880
>>06879
Я довольно дохуя проходил курсов по юнити и pathways считаю очень неплохим для ознакомления, вот только он мог быть сильно короче имхо. Плюс видосы с трансами и неграми где они рассказывают какую-то хуйню про свой опыт я лично нашёл бесполезными.
344 806881
>>06880
Лол, я на подобных видосах, когда они начинают рассказывать свой "жил-был" агрессивно перематываю и только таким макаром эти видосы осиливаются.
345 806882
>>06881
Я в какой-то момент просто прекратил смотреть и нажимал кнопку "пройдено" не глядя.
346 806886

>вместо того чтоб делать игры смотрят видосики для дебилов


Ебала вкатывальщиков представили?
347 806889
>>06886
Там даётся неплохая база, чтобы ты просто знал куда в случае чего лезть и что гуглить. Сужает вопросы типа "как заставить объект светиться" до конкретного вопроса "как создать светящийся шейдер в юрп" и так далее.
348 806904
>>06889

>"как заставить объект светиться"


Правильный ответ: скачать ассет. Но хуй, теперь у нас есть 500 человек которые могут перетянуть лапшину из одного места в другое, но нет ни одного игродела.
349 806905
>>06904

>Правильный ответ: скачать ассет.


На каждый случай ассетов не наберётся. Если ты не делаешь совсем дженерик парашу то придётся учиться делать что-то самому.
350 806913
Хочу крутануть объект по полуокружности.
В коде реализовал такое:
Координата "x" плавно меняется с 1 до -1.
Координата "z", рассчитывается по формуле, которую мне скинули пацаны выше: y = sqrt(r^2 - x^2). Радиус у меня 1.
Крутится, но почему-то ускоряется ближе к конце. Видео немного fps урезало, поэтому не очень заметно, наверное, но ускорение точно есть.
Есть что-то, что я упустил? Вроде ж все четенько, по формуле
Desktop 2022.06.13 - 01.41.11.07.mp4987 Кб, mp4,
852x480, 0:06
351 806914
Вот тут более наглядно. Видно (надеюсь), что когда шар подходит к y = 0, то он ускоряется, как будто рывком подкатывает
352 806915
>>06913
Через синус и косинус координаты находи, двигай угол на дельтатайм. Ты нагородил говна которое тебе не нужно вообще.
image.png12 Кб, 368x176
353 806916
>>06915
Написал формулу, которую скинул анон выше (>>06582 y = r * sin( acos( x / r ) );). Она работает, но так же почему то есть ускорение.
Хз, в общем
354 806917
Ок, потом попробую менять угол, типа с 0 до 180.
355 806918
Нашел готовый код, крутит охуенно, с постоянной скоростью, можно даже крутить по эллепсу. Эх, как же обидно, что я не дошел до этого своим умом
image.png11 Кб, 614x123
356 806919
Упростил еще код, вот этот крутит по эллипсу из-за 0.5f вместо 1.
357 806920
>>06916

>но так же почему то есть ускорение.


Потому что координата "x" у тебя зависит от времени линейно, а координата "z" – нелинейно.
358 806983
>>06904
Лолблядь, так тут ещё дебил. Лучше бы реально хоть с БАЗОЙ ознакомился для начала прежде чем кукарекать на кого-то в треде, создатель хуев. Даже такой хуйни не знает.
359 806992
>>06919
Используй Quaternion.AngleAxis()
360 807075
Гипотетическая ситуация - я накачаю из интернета ворованных ассетов, которые продаются в Ассет сторе, сделаю с ними игру и релизну в стиме за деньги. Меня как-нибудь смогут раскрыть? Вообще, есть ли возможность проверить, используется в игре купленный ассет или ворованный?
361 807089
>>07075
я точно не знаю, можно спалить или нет, но даже если и спалят то что дальше? разрабам ассетов делать нехуй, сидеть мониторить игры и из магазина не выкинут из-за этого
362 807092
>>07089

>разрабам ассетов делать нехуй


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

>>07075

>релизну в стиме за деньги


Со своих миллиардных прибылей сможешь выделить 20 баксов на покупку спижженых ассетов?
50.mp4262 Кб, mp4,
1100x452, 0:06
363 807095
>>02780 (OP)
Я наверное тупой, но объясните, как заставить двигаться элементы на платформе как бы.
Как бы игрок имеет Rigidbody и платформа тоже, но почему она его не двигает?
Уже и материалы с фриквенси поделал, и всё такое, не понимаю
364 807107
>>07092

> Со своих миллиардных прибылей сможешь выделить 20 баксов на покупку спижженых ассетов?


Да я не против, но с российских карт не оплатить. Можно купить через посредников, но у посредников то другие имена и карты, в чём тогда разница между ворованным ассетом с файлопомойки и купленным другим человеком из другой страны, который переслал мне этот ассет?
365 807127
>>07107
просто скажи, что у друга диск брал
366 807133
>>07107

>в чём тогда разница между ворованным ассетом с файлопомойки


Тем что ты сможешь доказать факт покупки лицухи. Тут спор ни о чём, у тебя игры то нет и неизвестно когда будет. Ассет он из РФ оплатить не может, а бабло со стима получать может.
367 807135
Я сделал несколько вертексны и сюрфейсных шейдеров в обычном проекте юнити. Хочу добавить туда URP - как я понимаю, Cg работать не будет, тк используется HLSL.
Долго ли и сложно будет переписывать\править свои шейдеры?
368 807138
>>07135
Недолго, различия больше визуальные по синтаксису (были одни названия функций/типов, стали другие), а по логике практически нет. Переписывал легаси имаге эффект на постпроцессинг, там тоже на HLSL надо перепиливать чтоб работало. Не сказать что было очень сложно.
369 807196
>>07095
OnCollisionEnter - у игрока появляется родитель, платформа.
OnCollisionExit - у игрока пропадает родитель.
370 807200
Аноны, подскажите, пожалуйста. У меня есть коробка патронов, которая на "Е" подбирается и добавляет патроны:

void OnTriggerEnter(Collider other)
player.canInteract = true;

void OnTriggerStay(Collider other)
{
if (Input.GetKeyDown("e"))
{
Interact();
}
}

void Interact()
{
Debug.Log("player has interacted with object");
shooting.remainingAmmo = shooting.remainingAmmo + 80;
Destroy(gameObject);
}

void OnTriggerExit(Collider other)
player.canInteract = false;

player - другой скрипт с булевой canInteract

В принципе, это вся часть кода, которая отвечает за подбор, другое опустил. Технически работает как должен, я жму "E" в зоне тригера, gameObject с патронами пропадет, в кармане +80 патронов. Но по какой-то причине, которую я не осознаю, нажатие "Е" не с первого раза, иной раз и не с десятого, удаляет коробку и дает патроны. Проверял булеву, она меняет true и false как нужно, задержек нет, ошибок с ней нет, а вот if (Input.GetKeyDown("e")) { Interact(); } видимо тупит. В чем может быть проблема?
371 807207
>>07200
Хотя вроде бы я понял, дело все же в player.canInteract было. Я на входе и выходе из тригера поставил, но по сути булевая никак не влияет на Interact(), ее ведь нет в методе OnTriggerStay даже. Поменял на:

void OnTriggerEnter(Collider other)
player.canInteract = true;

void OnTriggerStay(Collider other)
{
if (Input.GetKeyDown("e") && player.canInteract == true)
{
Interact();
}
}

void Interact()
{
shooting.remainingAmmo = shooting.remainingAmmo + 80;
Destroy(gameObject);
player.canInteract = false;
}

void OnTriggerExit(Collider other)
player.canInteract = false;

По-моему нет больше задержек, но я не уверен
372 807208
>>07207
Не, метод я, конечно, связал с булевой, но задержки не пропали
373 807231
>>07208
Вроде как OnTriggerStay и прочие Stay, а также FIxedUpdate вызывается через физический движок, а он по дефолту 25 раз в секунду отрабатывает а не все 60. То есть ты жмешь кнопку, а в этот момент OnTriggerStay был на кулдауне и нажатие не отработается. Нажатия кнопок надо чекать каждый кадр в методе Update.
374 807238
>>07207
если уж не можешь по другому, запускай шкуратину при входе, а не он тригер стэй
375 807304
Как вы в 3д задаете различные тайлы для поверхностей? Допустим, у меня есть плоскость - частично лес, частично земля, как ее добавить? Отдельный объект для кпждой текмтуры?
376 807305
>>07304
"классический" тайлмеп делается мешем из квадов и UV координатами тайла в атласе. звучит страшно, но делается элементарно
вот древнее видео что нагуглилось.
https://www.youtube.com/watch?v=haelMvLyqDQ

древнее - потому что сейчас юзают встроенный грид/тайлмеп который сделает все за тебя. но тут можно делать не плоские тайлмепы а если и повозится с шейдерами то можно и всякого интересного намутить
377 807308
>>07305
Спасибо!
image.png20 Кб, 773x225
378 807357
Не получается сделать наложение двух камер друг на друга. Вроде настроил, но они перекрывают друг друга и не работают вместе. Знает кто как исправить?
379 807359
>>07357
Простой способ через приоритет Depth с игрой со слоями.
Такой же простой через синемашину брэйн.
380 807365
Блжад, как траву то нормально сделать?
381 807368
>>07365
Ассет скачай.
382 807369
Вопрос: а если запустить какой-нибудь эмулятор геймпада, можно ли будет протестировать ввод с геймпада Xbox?
383 807370
>>07369
Показалось "эмулятор геймдева", хотел юнити посоветовать
384 807371
>>07365
Либо планкой с текстурой. 3д моделью. Шэйдером.
Планка изи. Модель жрать будет. Шэйдер лучшее, но надо писать.
385 807375
>>07369
Купить гейпад за 500р не?
386 807376
>>07371
Ну я сделал спрайт/текстуру, которая шатается туда - сюда шейдером, но все равно уебищно. Такое чувство, что просто не могу нарисовать норм траву. Деревья норм выглядят, трава - уебищно
387 807381
1) на чем проще всего без щапары делают low poly модели?
2) чтобы делать ландшаыт, горы и тп, нужны сторонние инструменты?
388 807382
>>07376

>не могу нарисовать норм траву


гугл -> grass png
389 807385
А правда, что для разработки шейдеров нужно не только хорошо разбираться в программировании и красиво рисовать, но и шарить в матане?
390 807386
>>07370
Это скорее про годот. Вроде игры разрабатываешь, но игр не выходит.
391 807387
>>07381

> чтобы делать ландшаыт, горы и тп, нужны сторонние инструменты?


Терреин же. Встроен в Юнити по дефолту.
392 807391
>>07375

> Купить гейпад за 500р не?


Не, денег нет. А если появляются то сразу уходят на лекарства
393 807396
>>07381
1. На том, что знаешь. Выучишь блендер, станет проще в блендере.
2. Можно в юнити сделать. Можно в блендере, если лоу поли ландшафт
394 807397
>>07396

> Можно в блендере, если лоу поли ландшафт



есть ассет кстати, вроде неплохой https://assetstore.unity.com/packages/tools/terrain/polaris-2021-low-poly-mesh-terrain-editor-196648
395 807402
>>07308
накатал вчера, но чет не захотело отправлятся.

добавлю технических подробностей для разьяснения.
рисовать все кучей отдельных объектов - ОЧЕНЬ ОЧЕНЬ ОЧЕНЬ плохая идея. современные видеокарты очень мощный инструмент для паралельных вычислений с тысячами "ядер". проблема в том что эти все ядра могут делать одновременно только одну задачу(очень упрощенно, но сойдет). т.е. условно говоря пока ты посылаешь на отрисовку один объект, тот же условный тайл, который квад, т.е. 4 вертекса, ты задействуешь 4 "ядра" для расчета вертексов, потом количество ядер соответствующее количеству пикселей объекта. остальные скучают. посему что отрисовка 1 большого сложного объекта что отрисовка 1 простенького маленького займет одинаковое время при прочих равных условиях(одинаковый материал), посему тыща(а это всего лишь тайлмап 100х100) отдельных объектов займет в тыщу раз больше времени чем одна цельная сложная карта. просто потому, что у тебя видеокарта все это время будет загружена на доли процента. это называется "draw call" - запрос на отрисовку. цель тут - максимально сократить количество этих самых запросов. современные движки стараются максимально это оптимизировать через инстансинг и обьединение мешей с одинаковым материалом. т.е. если в юнити стоит галочка у материала "инстантиэнт" то оно постарается максимально объединить все в один драукол, что обычно работает, но иногда не так как могло бы. ну и ессно требует отдельных расчетов.
396 807408
>>07385
Ну я вот щас начал разбираться. Для базовых вещей достаточной школьной программы. Для более сложных - нет, но я видел курс на udemy по математике для геймдева, там от векторов до квартенионов, думаю его пройти
397 807409
>>07402
Спасибо! В целом представлял про параллельные вычисления видяхи, но надо еще почитать
398 807412
>>07381
В блендере есть генераторы всяких камней, травы, деревьев и прочих однотипных объектов на геонодах. Как это работает можешь увидеть в куче видосов.
https://www.youtube.com/watch?v=5qBl0ocM0ik
image.png173 Кб, 489x437
399 807494
Пчелы, курсы всяких гейбоксов вообще годная вещь или денях своих не стоят, т.к. всё есть в интернетах?

Хочу пока как хобби для себя заняться кое чем на юнити, если эт важн в данном контексте.

Может быть эти курсы даже не как полезная по сути, но как мотивирующая хуйня хорошо работает? А то зная себя я всё растяну до максимума без каких-либо поинтов по целям.

написал в старый тред и сижу сутки ждут ответа, пиздец
400 807495
>>07494

>т.к. всё есть в интернетах


На самом сайте юнити всё есть.
401 807499
>>07494
Если не жалко денег, самоё лучше что есть по кпд это заплатить их пчелику который тебе пару вечеров будет рассказывать про юньку.
Далее по списку бесплатные курсы от юников.
Далее видео плейлисты аля делаем игру с нуля от известных челиков.
Ну и на дне как раз платные курсы, инфоцыгани и подобный шлак.
402 807508
А я месяц назад решил прочитать весь мануал юнити от начала и до конца. Сейчас остановился на https://docs.unity3d.com/2020.3/Documentation/Manual/Layers.html.
В таком же духе читаю манул блендера.
Ни разу не пожалел. Много чего полезного. И хотя с юнити уже пару лет работаю, я только из ютубчика брал инфу, ну и сам иногда лазил в манул.
403 807510
>>07508
Например?
404 807548
>>07494
Мой опыт в разных областях показывает, что курсы как формат скорее не работают, чем работают.
Причина - всё слишком завязано на контекст. Поэтому с ходу возникает много проблем которые не описаны в курсах, но которые тем не менее легко гугляться.
Как итог ты можешь сэкономить время и деньги, гугля то что нужно в конкретный момент. Лучше вместо курсов прочитать внимательно документацию, это избавляет от множества шишек.
405 807550
Мде. Ну да получается.
406 807577
>>07548
Двачую, нужно на конкретных задачах подгугливать решения.
Я после универа подал на тестировщика с пометкой "хочу быть разрабом", мне сразу предложили тестовое задание на Юнити, я за 2 недели с гуглом-ютубом сделал (типа, отсюда взял управление, отсюда взял спам и поведение ботов, отсюда взял миникарту), меня взяли.
В итоге за год на 40 проектах со всеми возможными ситуациями столкнулся как с точки зрения фич и скриптов, так и с точки зрения плагинов аналитики-рекламы и оптимизации проекта (мсы, бачи, оперативка)
407 807594
Аноны, в связи со скудными познаниями шарпа не могу понять, как сделать нормальную систему навыков, зависящую от статов. Есть два класса: stat и skill, у обоих есть поле со значением. Как нормально сделать так, чтобы значение skill обновлялось с изменением значения stat? Что-то вроде фоллачевской системы а-ля "Без оружия = 65 % + (1 % x (ЛВ+СЛ)/2)". Конструктор-то я написал, а вот обновление как? Писать доп. метод в skill и хуярить с ним эвент OnStatChange в Update у MonoBehaviour? Уже третий день пытаюсь эту хуйню нагуглить.
408 807602
>>07594
Задача немного расплывчатая, но попробуй представить skill и stat просто как набор данных. Не класс, а структура данных без логики. И далее у тебя есть уже система/паттер стратегия в виде класса, который производит расчёты на основе текущих значений skill и stat. Если тебе нужно для интерфейса вывести новые значения, то просто вызываешь некий метод Refresh, который означает, что данные изменились.
409 807603
>>07594
Так тут же всё ясно как божий день. Производишь перерасчёт формулы как только что-то меняется зависимое в ней.
Герой перераспределил навыки - Обновляй. Повесили дебаф - Обновляй и т.п. Надел предмет - Обновляй.
410 807606
>>07603
Иф ю хомлес, джаст бай э хаус
Стикер319 Кб, 500x500
411 807657
>>07594
сделай ход конем.
https://pastebin.com/RxQbm7q6

храни "версию" статов и пересчитывай скилы когда версия не совпадает
412 807687
>>07657
Чтото жуткий говно код, оверкилл со скритаблом и нумераторами для такой задачи которая решается одним скриптом на объекте.
413 807699
>>07594
Класс character, в нем допустим филд dex класса stat и несколько филдов класса skill, зависимых от dex. В классе stat метод add в нем помимо увеличения самого стата прописать вызов метода recalculate из каждого зависимого от dex скилла. Я планировал делать так, но пока нет компа под рукой, чтобы проверить.
Стикер575 Кб, 500x500
414 807735
>>07687
https://pastebin.com/xNYJ0jNz
что ты понимаешь в оверкиле...
415 807740
>>07594

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

[SerializeField] int ЛВ;
[SerializeField] int СЛ;

int допОчкиБезОружия; //прокачка навыка
public int Без оружия => 65 % + (1 % x (ЛВ+СЛ)/2) + допОчкиБезОружия;
416 807741
>>07735
https://pastebin.com/GwRsHdQL
финальный вариант. в шесть утра спат нада
417 807742
Опять у меня проблема, двач. Опять, патроны. узнали? согласны?

[Header("Ammo")]
public TMPro.TextMeshProUGUI patroshki;

void Update()
{
if (Input.GetKeyDown("e") && player.canInteract == true)
{
Interact();
}
}

virtual void OnTriggerEnter(Collider other)
{
if (player == null)
{
player = other.gameObject.GetComponent<PlayerMovement>();
shooting = other.gameObject.GetComponentInChildren<Shooting>();
}

if (player != null)
{
interactableImage.SetActive(true);
patroshki.gameObject.SetActive(true);
player.canInteract = true;
}
}

virtual void OnTriggerExit(Collider other)
{
if (player == null)
{
player = other.gameObject.GetComponent<PlayerMovement>();
shooting = other.gameObject.GetComponentInChildren<Shooting>();
}

if (player != null)
{
interactableImage.SetActive(false);
patroshki.gameObject.SetActive(false);
player.canInteract = false;
}
}

virtual void Interact()
{
shooting.remainingAmmo += 80;
Destroy(gameObject);
//player.canInteract = false;
}

В общем, когда я жму "Е" происходит интеракт с патронами, они плюсуются в карман. Проблема с ошибками, которые интеракт спамит в консоль, если "Е" нажата вне радиуса тригера коробки с патронами (см 1 скрин). Если игрок хотя бы раз окажется в зоне тригера коробки, эта самая коробка не будет спамить в консоль никогда, поэтому на скрине одна из ошибок меньше спамилась. Я так понял, что тригер коробки детектит скрипт PlayerMovement на игроке, получает свой референс и перестает срать в консоль, что тригеру не знает кому отдаться. Я правильно понял? Как это поправить, если мне надо на тригер ентер детектить скрипт игрока для интеракта?
417 807742
Опять у меня проблема, двач. Опять, патроны. узнали? согласны?

[Header("Ammo")]
public TMPro.TextMeshProUGUI patroshki;

void Update()
{
if (Input.GetKeyDown("e") && player.canInteract == true)
{
Interact();
}
}

virtual void OnTriggerEnter(Collider other)
{
if (player == null)
{
player = other.gameObject.GetComponent<PlayerMovement>();
shooting = other.gameObject.GetComponentInChildren<Shooting>();
}

if (player != null)
{
interactableImage.SetActive(true);
patroshki.gameObject.SetActive(true);
player.canInteract = true;
}
}

virtual void OnTriggerExit(Collider other)
{
if (player == null)
{
player = other.gameObject.GetComponent<PlayerMovement>();
shooting = other.gameObject.GetComponentInChildren<Shooting>();
}

if (player != null)
{
interactableImage.SetActive(false);
patroshki.gameObject.SetActive(false);
player.canInteract = false;
}
}

virtual void Interact()
{
shooting.remainingAmmo += 80;
Destroy(gameObject);
//player.canInteract = false;
}

В общем, когда я жму "Е" происходит интеракт с патронами, они плюсуются в карман. Проблема с ошибками, которые интеракт спамит в консоль, если "Е" нажата вне радиуса тригера коробки с патронами (см 1 скрин). Если игрок хотя бы раз окажется в зоне тригера коробки, эта самая коробка не будет спамить в консоль никогда, поэтому на скрине одна из ошибок меньше спамилась. Я так понял, что тригер коробки детектит скрипт PlayerMovement на игроке, получает свой референс и перестает срать в консоль, что тригеру не знает кому отдаться. Я правильно понял? Как это поправить, если мне надо на тригер ентер детектить скрипт игрока для интеракта?
418 807743
>>07742
с другой стороны ошибка говорит, что проблема с 17 строке кода, хз че там не так
419 807744
>>07743
17 строка это if (Input.GetKeyDown("e") && player.canInteract == true)

блядь какой же двачь уебанский форум с точки зрения переписки, ни редактуры сообщения, ни верстки нормальной, пиздец просто. Лишь в b срать удобно
420 807746
>>07741
>>07735
А вот это мне нравится, больше походил на реальную реализацию. Но оверкилл, да.
421 807747
>>07744
ну так тут нулом может быть только плаер, который нул потому что ты получаешь его в тригере. или получай его заранее(скрипт на чем висит?) или проверяй на нул
if (Input.GetKeyDown("e") && player?.canInteract)

ну и canInteract == true же. каждый раз когда кто-то так пишет умирает котенок
422 807748
инициализирую массив через скрипт, но при этом без [SerializeField] ловлю нал референс экспешн, почему так?
423 807750
>>07747
Так я вроде бы понял о чем ты. То есть пока у меня null в player, коробка не может достать true или false из canInteract, потому что не от куда доставать. Ок, встает на места. А как совместить player? и && тогда? Пишет, типа несовместимы операторы && и bool?.

А че не так с player?canInteract == true — так работает теперь, когда проверяю на null player. У меня же canInteract по умолчанию false, пока я не в тригере
Стикер383 Кб, 500x500
424 807751
>>07748
покажи, а то чет телепатия барахлит сегодня
425 807754
>>07750
все время забываю что ?. возврашает нулабл бул, который иф не сьедает. а прописанная операция сравнения вызывает преобразование в простой бул.

> А че не так с player.canInteract == true


это мерзость
настолько, что в данном случае, когда надо приводить нулабл т.е. имеет смысл, я бы все равно написал
if(player != null && player.canInteract && input....)
суть в том что булы не нужно сравнивать с булевыми константами. это просто бессмыслено. потому что в результате ты получишь туже булеву константу. это как прибавлять 0 или умножать на 1.
426 807755
>>07750
а тебе нужно player хранить?
не проще проверять у коллайдера не навешен ли не его геймобджект скрипт Player?

>А че не так с player?canInteract == true


скорее всего он ратует за player?canInteract == true
427 807757
>>07754

> А как совместить player? и && тогда?



зы просто обычно использую ?. для проверки на цепочки нулов
типа вместо
if(a != null && a.b != null && a.b.c != null)
можно написать
if(a?.b?.c != null)
в теории можно использовать ?? оператор
if(player?.canInteract ?? false && ...)
но опять тут для наглядности лично я предпочитаю разбить на проверку плайера и кенинтеракт отдельно а ?? использовать больше для чего-то типа дефолтных значений при инициализации типа
public class foo
{
public int bar;
public foo(foo other) {bar = other?.bar ?? 0;}
}
428 807760
>>07754
if (player != null && player.canInteract && Input.GetKeyDown("e")) работает, с этой стороны не подумал. Спасибо.

>>07755
Да я не знаю нужно ли, я просто пользуюсь теми способами, которые знаю. Я знаю, что у меня булевая есть в другом скрипте и булевые можно проверять удобно в ифах. Так и вышло. Может потом и другие способы мне начнут больше нравится, пока использую что под рукой.

>>07757
Сразу так и не впитаю, сложные конструкции для меня
429 807762
>>07757
какая же хуета для пориджей, скоро наверное всякие свыч конструкции сократят до двух символов
430 807763
>>07762
Что вы как эти, в трай-кетч оберните всё и поехали
431 807764
>>07762
еще в 8й версий шарпа

int a;

var b = a switch {
0 => "Ноль",
< 0 => "Отрицательное",
(> 0) && (< 10) => "Цифра",
< 100 => "Две цифры",
_ => "МНОГА!"
};
432 807838
>>07764
Хоть это и не UniRX, но реально соей пахнуло
image.png31 Кб, 897x252
433 807919
Ну и в чём я не прав с таким подходом?
434 807936
>>07919
Переименовал QuitButton в ExitButton и сижу имаджинирую твоё ебало.
image.png17 Кб, 587x61
435 807941
>>07919
Что это за конструкции уровня фламинго? Год не кодил, там разве не нужно вставить просто название функции?
436 807943
>>07936
https://dictionary.cambridge.org/ru/словарь/англо-русский/quit

> Accepting to quit the current game closes this game and cancels the remaining commitments of the game.



пчел ты...
438 807948
>>07946
понял тебя, только зачем мне менять названия у объектов в иерархии?
439 807953
>>07948
Еще все переменные хардкодом забей, зачем тебе их менять?
440 807954
>>07953
ну не знаю как ты, а я бывало проябывал ссылки, когда забыл сохранить и ловил краш или просто редактор не сохранял
441 807956
>>07954

>или просто редактор не сохранял


Давай только сказки не рассказывай. Тебе бы за вот это >>07919 на любой работе ебало бы сломали.
442 807980
>>07919
1)Подписываешь странно, достаочно имя метода
2) лучше serialized field вместо поиска объекта по имени
443 808001
>>07919
зачем делать это в рантайме?

повесил скрипт на панельку с меню, назначил екшены с неё кнопками. всё.
444 808064
>>06749

> Основные траблы которы жрут цп и гцп - Это графика и физика.


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

И я даже больше скажу - современные компы такие мощные, что даже если ты по полной обосрёшься с физикой и графикой, они всё равно вытянут твой инди проект, поэтому лучше просто игру делать, чем тратить силы на +1% фпсов, да даже на +100% - поебать, если их приемлимоб

Но это на компе, а на мобилках это критично и надо всё настроить сразу адекватно.

>>06755
Смотря сколько тебе их надо каждый кадр. Я пока не видел, чтобы с этим проблема была.

Если так хочешь по-оптимизировать - ебош ецс, раскидывай всю логику по всем потокам. Это хотя бы даст реальный профит, по сравнению с ёбнутыми оптимизациями коллов функции. Да и вообще нахуй тогда си шарп и юнити нужны, надо на С++ ебошить!
14234794617620.jpg209 Кб, 819x696
445 808103
Пиздец, я уже полгода пердолюсь в юнити и чёт смотря на свой прогресс слёзы на глаза наворачиваются. С какого момента у вас появилось ощущение уверенности в работе с юнити? Я до сих пор во многих моментах как слепой котёнок.
446 808169
>>08001
MVCшники за такое стукают
447 808176
>>08169
Ты не формочки в студии шлепаешь, которая в конструкторе подправит код когда ты контролу меняшь имя. В юнити такого нет, там уже определено как надо делать - через поля. У объектов свой айдишник и если менять названия или иерархию объектов то ничего не проебется, а если ты пиздец какой умный и решил сэкономить место в окне инспектора юнити, то потом будешь с пробитой жопой бегать дебажить где у тебя там нуллреференс вылез.
448 808181
>>08103

>появилось ощущение уверенности в работе


Я тоже когда-то пытался в юнити, но потом осознал, что она мне не нужна. А с синим роботом появилось ощущение уверенности в работе очень быстро, рекомендую. Всё равно ты за полгода ничего существенного не сделал, правильно понимаю? Нечего терять, так что смело переходи на сторону добра. У нас есть сырки (на гитхабе, ммм).

wololo~
449 808186
>>08181

>Всё равно ты за полгода ничего существенного не сделал, правильно понимаю?


Да, но ты то со своим роботом за всю жизнь ничего существенного не сделаешь, так что я спокоен.
450 808193
>>08186
Обоснуй, чем Юнити лучше Годота в 2D
image.png152 Кб, 1226x801
451 808194
Почему это говно не работает и объект никуда не двигается?
452 808196
>>08194
знаю, но не скажу. хехе
423.png284 Кб, 700x630
453 808197
>>08103

>С какого момента у вас появилось ощущение уверенности в работе с юнити


как начал делать свою первую игру на юнити, так и появилась
454 808201
>>08193
Ответ "всем" тебя не устроит, поэтому начну с простого: юнити лучше годота в производительности. В тред миллион раз кидали годотные пропуки в примитивных 2д играх, буковки проперживающиеся каждая в отдельном дравколе и другие прелести движка от хуана. 2д физику годота можно даже не упоминать.
455 808209
>>08194
Тоже увидел и не скажу. Кек.
456 808212
>>08196
>>08209
Уже сам разобрался.
457 808213
>>08212
Спрашивай еще, поможем
458 808218
>>08212
И в чем же была проблема?
459 808220
>>08218
У меня там оказывается слой исчез по которому должен был рэйкаст проходить.
Пока я это выяснил успел переписать всё вот так и заработало как надо.
image.png160 Кб, 1229x859
460 808221
>>08220
пикча отвалилась
461 808228
Поясните положняк по нетворкингу, на сайте юнити Netcode, но написано что он в разработке, по нему реально материалы/туториалы найти или в какую-то другую сторону копать?
463 808250
>>05095
Относительно логично было бы сделать противнику триггер для удара. И тогда через треггерентер+OnTriggerStay
464 808261
>>08242
Сколько велосипедом не придётся изобрести по шкале от 0 до 65536?
465 808262
>>08261

>велосипедов мне


самофикс
466 808266
А вы знаете, я только сейчас понял что интерфейс нужно обновлять в LateUpdate(), чтобы все компоненты успели обновиться. Иначе может быть задержка интерфейса в 1 кадр
467 808268
>>07200
Могут возникнуть проблемы, если несколько триггеров перекрывают друг-друга.
Ты можешь написать: shooting.remainingAmmo += 80;
468 808269
>>08268
Если проблема в этом, ну и вообще по-хорошему класс player сам должен проверять, находится ли он в триггере с каким-нибудь тегом interact
469 808280
>>07095
Извините, почему в юнити не завезли трение? У материалов же есть трение, но оно не влияет на соседние предметы.
470 808281
>>08266
И КАК Я САМ ДО ЭТОГО НЕ ДОДУМАЛСЯ
471 808291
>>08266
Ты че каждый кадр обновляешь???

Надо евентами обновлять интерфейс.
472 808297
>>08291
События плохо сочетаются с циклом обновления игры, когда надо что-то обновить или получить какие-то данные внутри апдейта.
События имеют смысл только для отношений нескольких к нескольким объектам. Например, когда у тебя 10 кнопок и чтобы не перебирать все 10 кнопок, лучше сделать событие нажатия кнопки. Когда отношения 1 к 1 типа игрока и HUD для него, то в событиях нет никакого смысла.
473 808299
>>08297

> плохо сочетаются с циклом обновления игры


Эт как? Что конкретно плохо?

> когда надо что-то обновить или получить какие-то данные внутри апдейта


Кидается событие, все подписчики получают его и обновляют данные.

> События имеют смысл только для отношений нескольких к нескольким объектам. Например, когда у тебя 10 кнопок и чтобы не перебирать все 10 кнопок, лучше сделать событие нажатия кнопки.


А если ты захочешь поменять реализацию того или другого? А если захочешь добавить кнопки добавить объекты?

>Когда отношения 1 к 1 типа игрока и HUD для него, то в событиях нет никакого смысла.


Есть - они убирают жёсткую зависимость, за счёт этого проще что-то менять и дебажить.
Что-то кинуло событие, что-то обработало, сама зависимость делается через какого-нибудь посредника, будь то условный ui manager или eventbus
474 808303
>>08269

> по-хорошему класс player сам должен проверять, находится ли он в триггере с каким-нибудь тегом interact



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

>>08268

> Ты можешь написать: shooting.remainingAmmo += 80;



Да, я щас так пишу, да и писал в принципе. В тот момент я затупил как обычно, написал не += / -= как должно быть, а наоборот видимо =+ / =-, поэтому результат был иной, и я переписал как точно должно работать, пусть не коротко.
7a5f29bb-6418-4a63-b611-9598e63a8b81.png863 Кб, 2160x1440
475 808305
>>08303
Попробовал изобразить про что я. Слева вид со стороны, справа вид от камеры игрока. Синим указаны предметы, которые игрок видит на экране, но они не взаимодействуют с ним, потому что не в квадрате интеракта. Оранжевым - предмет, с которым можно взаимодействовать, он в квадрате интеракта.
476 808314
>>08299

>Эт как? Что конкретно плохо?


Это как ввод сделан через опрос Input.GetButtonDown() потому что так удобнее внутри Update() проверять ввод
Эти гении идиотизма кстати додумались в новой системе ввода сделать ввод событиями. Я так и не смотрел эту новую систему.

>Кидается событие, все подписчики получают его и обновляют данные.


Получаешь данные, сохраняешь в переменную, чтобы внутри Update() потом их прочитать и обновить? Так лучше сразу эти данные дернуть откуда надо

Зачем тебе события изменения количества патронов, например, если в компоненте hud можно просто проверять изменились патроны или нет?
477 808315
>>08305
Новый блокбастер от создателя "как сделать так, чтобы круг всегда поворачивался ебалом к кубу".
478 808318
>>08305
var c = Camera.main;
if (Physics.Raycast(c.transform.position, c.transform.forward, out RaycastHit hit) && Input.GetKeyDown(KeyCode.E)) {
Debug.Log($"CHTOTO NASHEL {hit.collider.name}");
}
479 808319
>>08314

> Эти гении идиотизма кстати додумались в новой системе ввода сделать ввод событиями. Я так и не смотрел эту новую систему.


Я смотрел, она норм, но я под телефоны пилю, поэтому мне она не нужна.

> Получаешь данные, сохраняешь в переменную, чтобы внутри Update() потом их прочитать и обновить? Так лучше сразу эти данные дернуть откуда надо


Зачем в переменную?
Делаем подписку +=UpdateValue;

А сама эта функция и делает обновление
void UpdateValue(int value)
{
//обновляем нах
}
Не нужно никакие переменные для прошлого значения вводить, не нужно каждый кадр это прокручивать - а только по мере обновления все будет меняться.

> Зачем тебе события изменения количества патронов, например, если в компоненте hud можно просто проверять изменились патроны или нет?


Ну так а с другой стороны - зачем оно надо, если с событиями код намного понятнее?
480 808321
>>08319

>void UpdateValue(int value)


>{


>//обновляем нах


>}


Потому что это самый примитивный сценарий. Не всегда можно что-то просто взять и обновить из обработчика события
481 808322
>>08321
Поч??
Если ты делаешь в апдейте, то у тебя
if(oldValue != GetAmmoSomewhere())
{
//обновляем нах
}
А если в обработчике, то
void UpdateValue(int value)
{
//обновляем нах
}

Там где "обновляем нах" аналогичный код...
482 808323
>>08319

>если с событиями код намного понятнее?


Событие для одного подписчика. В этом нет смысла, только усложнение кода
483 808324
>>08322
Например когда я переключился в альтернативный режим стрельбы, я хочу показывать в этом элементе hud количество альтернативных патронов.
Такие вещи удобнее делать в Update() или в корутинах, если надо что-то динамическое и сложное с несколькими состояниями
484 808326
>>08324

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


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

Как раз в в сложных ситуациях с событиями же в разы всё проще, не??? В апдейте с корутиными это ж ебануться можно будет всё отслеживать, где ты там что когда поменял и на что.
485 808331
>>08318
Бля, есть же рейкаст, точно. Думать проще не получается
DvRyXz4WoAAT1RO.jpg349 Кб, 1536x2048
486 808337
>>08326

>В апдейте с корутиными это ж ебануться можно будет всё отслеживать, где ты там что когда поменял и на что


if (player.alternativnoeOruzhie)
patrony.text = player.alternativnyePatrony;
else
patrony.text = player.patrony;

пишу 2 строчки кода и интерфейс готов, пока ты там 3-х этажную архитектуру имаджинируешь
487 808339
>>08337
Кстати это тот момент когда реально 2 строчки лучше.
488 808340
>>08337
>>08339
Можно в одну строку
patrony.text = player.alternativnoeOruzhie? player.alternativnyePatrony : player.patrony;
489 808354
>>08340
Можно вообще не писать количество, тебе же в реале ничего не пишут.
Peperage1618974669524.jpg139 Кб, 1002x843
490 808409
ДА КАК СДЕЛАТЬ ЭТИ ЕБАНЫЕ КАРТОЧНЫЕ ЭФФЕКТЫ???
491 808410
Аноны, что лучше использовать для управления персонажа?
Rigidbody или Character Controller?
И почему?
492 808412
>>08410
Онли Character Controller. Rigidbody для управления забудь. Исключение можно составить лишь если твой персонаж это объект который управляется только силой по типу шара.
493 808414
>>08412
Не подскажешь хороший материал по Character Controller?
494 808416
>>08414
Какой тебе материал нужен? Как сделать персонажа? Так это либо смотришь мультики от самих юников, или же если не совсем глупый туториалы от ютуберов индусов. Есть конечно хард уровень почитать доки, но это опустим.
495 808418
>>08416
Благодарю.
496 808433
>>08409
Какие карточные эффекты? Как где?
Нормально сформулируй вопрос.
497 808434
>>08409
Как в покере? Изи.

>>>/cc/

498 808477
А если я пилю такую игру, которую не надо будет развивать дальше - стоит ли париться из-за кода, ну, типа, чтобы все было гибко, масштабируемо, расширяемо, solid, oop и т.п.?
Ну, то есть, выпустил - и все, пилю следующий проект, забыл про него.
То есть, код может быть лютым говном. Классы дёргают друг у друга публичные методы и переменные, логики переплетаются.
Но - код работает. По сути, это "архитектура для одного конкретного приложения. Я на листочке распишу, что где как работает, и реализую это.
Игрок собирает вещи, дохнет, ходит, стреляет? Пилю один класс, а там в update() код передвижения, и отлов нажатии для стрельбы и ходьбы. Вещи складывается в публичный List в его же классе. В этом же классе добавляем в UI иконки подобранных вашей
Враг ловит игрока? В Enemy.cs пишем патрулирующий код. Когда поймает - в его же классе (в Enemy.cs) пишу код, который тормозит игрока, показывает окно "вы сдохли", и там же в скрипте Enemy ловим нажатие - нажал ли игрок кнопку "попробовать ещё раз"
Есть дверь, которая открывается, если у игрока есть ключ? В OnTriggerEnter двери пишем проверку, если это игрок столкнулся (проверка по наличию скрипта Player.cs) потом в player.Inventory делаем поиск нужного ключа.
И т.д.
То есть, логика тупая и прямая - что-то надо? Берём и хуярим без задней мысли, не думая о расширяемости, красоте, правильности, ибо нахуй оно надо?

Судя по всему , к такому подходу придирки начинаются со слов: а если тебе надо будет добавить ххххх, а если ты захочешь xxxxx... Так вот , суть в том, что игра конечная, развиваться не будет. То есть, никакого сопровождения не требуется. Тут главное все заранее продумать, что игра должна делать и это и пилить.
499 808492
>>08477
Понятно
d7d.png41 Кб, 645x773
500 808513
>>08477
А что, можно как-то по другому делать?
501 808517
>>08477
Ну ты будешь делать другую игру, вспомнишь, что нужна функция уже есть в предыдущей игр. Захочешь взять, а там наговнокожено. Не разобраться и не скопировать, проще щаново слелать. В итоге тратишь время.
502 808519
Пилю 2д хоррор, там всякие пугалки при взаимодействии с объектами, типа прказывается окно, там появляется голова и экран немного трясется.
Все это сделано анимацией, но я хочу доьавит шейдеры ради эффектов.

Есть ли идеи, какие эфыекты можно повеситт? Есть ли примеры из игорянов где за счет графена складыается ощущение ирреальности? Может что-то времен пс1. Или мб шейдеры готовые какие. Или просто ощущения без конкретных примеров?
image.png52 Кб, 769x344
503 808557
Только начинаю ковырять юнити. Сейчас разбираюсь с навигацией и ИИ. Подскажите, почему есть две вкладки и в каждой вкладке могут быть разные значения, например на скрине разная высота препятствия. Почему их две разных? Какая в итоге будет использоваться, та которая во вкладке Bake?
504 808679
>>08477
Поверь если у тебя получится сделать рабочую игру с таким подходом уже всё будет окей, сможешь всем петухам которые кукарекают говорить что ты хотябы игру сделал в то время как они только кукарекают кодом.
От себя посоветую разве что выносить какие либо функции в другие скрипты чтобы самому было понятно, а в остальном похуй. Ну и если код где-то повторяется дважды, тоже выносить в отдельную функцию.
505 808764
>>08477

> То есть, код может быть лютым говном. Классы дёргают друг у друга публичные методы и переменные, логики переплетаются.


> Но - код работает. По сути, это "архитектура для одного конкретного приложения. Я на листочке распишу, что где как работает, и реализую это.


Крайности это всегда хуйня, надо всего в меру. Большая часть принципов солид - вполне разумная, вне зависимости от того, что ты вообще делаешь и с какой целью, и практически не требует каких-либо особых трудозатрат(опять же - если их использовать в меру). Может не обязательно всё дробить на сотни интерфейсов, но хотя бы зоны ответственности классов надо как-то пытаться соблюдать, ты на листочке если продумывать будешь, то к солиду и адекватному ООП и придёшь скорее всего в плане проектирования классов.

Публичные поля и методы - это просто нарушение инкапсуляции(и то не всегда), но стоит понимать, что инкапсуляция нужна только чтобы проще было понять как классом пользоваться. Если ты сам уверен, что всё будешь держать в голове и помнить - можешь забить и вообще везде публичные переменные делать. Но на практике ты 100% что-то забудешь уже через неделю, поэтому лучше сделать хотя бы удобные функции в каждом классе, чтобы не пришлось извне модифицировать переменные, с учетом какого-то правила, которое ты держишь в голове(не забыть сделать проверку что минимум меньше максимума или подобную хуйню), опять же, если ты на листочке всё продумаешь, то сам к этому и придёшь.

Короче, не важно, отказываешься ли ты категорично от солида или нет, в конечном итоге ты и сам придёшь к нему(к самым важным его частям в рамках соло разработки)...
506 808802
>>08764
алсо не стоит забывать что в геймдеве кроме собственно ооп с инкапсуляцией вполне себе популярны и другие парадигмы. тот же экс, где хуй ложили на сокрытие данных и в теории любая система может читать и писать любые данные без ограничений
507 808830
юнитач, есть ли способ увязать два моноб вместе, если один из них вообще нельзя менять? чтобы исполнялись только вместе, но не порознь. я сейчас делаю так в апдейте моего моноб:
if (!script.enabled) return;
а дальше уже моя логика.
может есть лучше способ?
508 808835
>>08830
что бы обязательно висели на одном объекте?
атрибут
[RequireComponent(typeof( ... ))]
заодно при добавлении этого мб будет автоматом вешать на объект все требуемые.
509 808945
>>08557
Bake - это как ты запекаешь навмеш, обычно там самые минимальные значения по всем видам агентов, в агенте ты просто пресеты для навмешконтроллера создаешь, использоваться будет агент в итоге, но если ты запечешь для него невозможные данные, то работать не будет
510 808993
Если я хочу добавить ы игру доммки, в которые можно заходить, это надо в блендере делать или можно примитивами в юнити? Как флоу норм?
511 809011
>>08993
бля ебать
512 809013
>>09011
Не ну реально. Я делал примитивами и заебался(ну это лално, хуже то, что не все мог сделать). Теперь думаю, нужно ли в блендер вкатываться или какие инструменты бзать. До этого только 2д делал
513 809030
>>09013
Для начала нужно разобраться что такое UV, лайт и рефлекшн пробы, как настраивать тени, хотя бы поверхностно шейдеры, и пошарить настройку URP. Иначе всё твоё обучение в блендере превратится в говно, ибо делать 3D и экспортировать 3D - абсолютно разные вещи. По поводу домика, качай ассет ProBuilder, для начала этого более чем достаточно
514 809042
>>09030
Uv, сюрфейсные и вертиксные шейдеры я знаю. Лайтпробы не оч.
Про экспорт/импорт не знаю, но раз речь про uv, видимо нужно будет сопоставлять текстуру с сеткой
515 809045
Тень тоже в курсе в целом. И карты нормалей и метожы расчета отражения - ламберт, блин-фонг и тп
изображение.png39 Кб, 531x300
516 809047
>>02780 (OP)
Сап, костыляч.

Нужно создать объект из префаба которому будет задан размер\поворот.
Проще говоря что бы труп мишки был повернут в ту же сторону куда и мишка

Написал такой код , но в таком случае чому то создается два объекта повернутые в разные стороны.
Как это лучше реализовать?
517 809053
Решил наконец взяться за шейдеры. Насколько я понял, можно или ебашить в shaderGraph, или писать код. Поскольку у меня есть опыт в программмировании, хочется выбрать "писать код", и еще по причине, что проводятся ассоциации с лапшей в UE - либо ты пишешь скрипты сам, либо варишь километровую лапшу. В чем я не прав? Или лучше граф изучить?
518 809099
>>09047
еблан?
519 809102
>>09047
Зачем тебе коротинна?
520 809103
>>09047
Привяжи лучше к концу анимации
521 809104
>>09047
А ну так Instantinate новый экземпляр создает и возвращает, который ты нигде не сохраняешь, а потом задаешь трансформ префабу
522 809105
>>09053
конкретно для шейдеров лапша лучше. ибо видно каждый шаг в риалтайме
523 809169
Поясните про систему частиц.
Здорова, начал осваивать систему частиц. Хотел сделать в своей игре эффект листопада, сразу всплыло несколько проблем.

Во первых вид частицы, я во вкладке Shape выбрал спрайт листов, которые заранее нарисовал. От них система взяла видимо только цвет. Тоесть вылетают такие квадраты цветом отдаленно напоминающим листья эти.

Во вторых их вылетает мало. Тоесть вылетает много, но половина из них в холостую, тоесть без текстуры какой-то видимо.

В третьих когда запускаю, в игре вообще нехрена нет, не проигрывает
524 809173
>>09169
В первых двух проблемах разобрался вроде как, а с третьей пока еще нет
525 809175
>>09169
>>09173
все, впрнципе все понятно, вроде разобрался
526 809261
>>09169
Как ты такую охуенную траву сделал?
527 809331
ПЕРЕКАТЫВАЙТЕСЬ, НЕХУЙ ВАС ИСКАТЬ НА ВТОРОЙ СТРАНИЦЕ https://2ch.hk/gd/res/809329.html (М)
ПЕРЕКАТЫВАЙТЕСЬ, НЕХУЙ ВАС ИСКАТЬ НА ВТОРОЙ СТРАНИЦЕ https://2ch.hk/gd/res/809329.html (М)
ПЕРЕКАТЫВАЙТЕСЬ, НЕХУЙ ВАС ИСКАТЬ НА ВТОРОЙ СТРАНИЦЕ https://2ch.hk/gd/res/809329.html (М)
528 809359
>>07594
А разве оно не считается при каждом ударе?
529 874854
>>02866
Через MasterServer Toolkit, например.
Тред утонул или удален.
Это копия, сохраненная 4 ноября в 23:12.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /gd/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски