Когда луч выпущен, фиксируем результаты: записываем в переменную объект, с которым луч столкнулся, и инициирует событие, если столкновение с объектом вообще имело место быть. Это событие выводит нас из второго состояния и переключает на третье, новое состояние, в котором мы должны проверить, что за объект вообще это был.
А по производительности как, нужен топовый процессор? )
Все эти FSM на тыкательных мышкой механиках генерируют на полпроекта тяжелого мусора с рефлексиями, lua-парсерами-интерпретаторами и прочим, после чего игра утопает в бесконечных сборках мусора и неоптимизрованных миллионах Update.
пока никаких просадок фпс и лагов связанных именно с игровой логикой не заметил. Контроллер игрока использую стандартный, все остальное во многом событийное и разовое. Я собираю проект на "не игровом" ноутбуке, поэтому все лаги вижу очень очень быстро)
Да, скорее всего мусорные вещи есть, но это точно чище, чем если бы я сам говнокодил, надирая из интернета куски кода.)
А в чем смысл делать игру на unity, на визуальном скриптинге, когда есть движок, где эта система с 2014 года и реализована в разы лучше и который впринципе лучше? Если ты планируешь устраиваться в студию, то учи C#, на визуальном программировании ни одна студия игры не делает, а если ты для себя, то советую попробовать перейти на анрил
На визуальном делают, Blueprints в UE уже стали ходовыми в игровых студиях. Точно помню, что какая-то успешная VR игра была полностью на нём разработана и только ей дело не ограничивается. Поэтому Unity и подсуетились, выкупив разработчиков Bolt с потрохами – т. к. в будущем это неизбежно станет стандартом.
причин уйма.
1) объективно слабое железо.
2) графоний не преследую.
3) тонны бесплатного контента и понятная простая структура и иерархия его использования.
4) субъективная понятность именно этого движка ввиду определенного раннего знакомства с ним.
5) тонны туторов на любой вкус и цвет.
6) навык самостоятельного генерирования контента для именно этого движка
7) удобный и понятный плеймейкер
8) так склалось
В студию устраиваться не планирую, гейдев чисто хобби между работой и алкоголизмом, кодить на шарпе не планирую, поделку делаю исключительно потому что могу, вероятно с целью закрыть гештальт (и заработать десяток-другой тысяч баксов).
попадая в это состояние мы получаем имя объекта с которым взаимодействовали (все записки в игре у нас уникальные, и имена потому у них как у игровых объектов могут быть уникальными) и пишем его в переменную.
Второй шаг - сравнение переменной с определенным названием. Если совпадает - идем в 4-ое состояние
Долго пытался понять зачем так сделано, но так и не понял. Обращаться к объекту по его имени это очень плохая практика и верный путь выстрелить себе в ногу.
По хорошему на каждой записке должен быть компонент, который хранит в себе содержание это записки. При попадании луча проверяется наличие компонента и если он есть, то говоришь ему «покажи мне содержание». И тогда ты по настоящему отвязан от объекта записки, тебе не важно как его зовут и был ли он недавно переименован.
И это мы ещё не говорим о том, чтобы всем запискам назначить отдельный слой и делать рейкаст только по этому слою, чтобы «не задевать» другие объекты и не делать лишние проверки.
В общем, автор молодец, что делится своими наработками и советами, но пока что советы по факту вредные.
"на каждой записке должен быть компонент"
здесь и далее звучит логично, но я пока или не придумал это решение с помощью плеймейкера, или же его просто нет, ввиду того что его нужно непосредственно кодить.
Второй момент - я стараюсь делать максимально масштабируемую логику, и в данном случае оперирование именем объекта, который создан для одной единственной цели - не так плохо. По крайней мере имя именно этого объекта не будет изменено в дальнейшем никак.
Насчет слоев - хорошая тема, но если записок будет овер9000 то путаницы в слоях не избежать, это уже проходили.
Касательно вредности советов - не претендую совершенно на их однозначность, и уповаю исключительно на то, что описанная схема выполняет требуемую задачу. Да и в целом советы не раздаю, пост исключительно про начинку поделки, которую делаю, будучи полностью несведущим в программировании.