Как стать, этим вашим, профессиональны игродельцем
Вчера, буквально за час мы стали профессиональными модельерами и аниматронами, сегодня, как и обещал, будет компиляция в "игру". Разумеется, это будет самый простой на свете кликер, идея которого мне показалась забавной, но я конченый - мне можно с такого угорать.
Итак вчера мы кончили на...
Выбираете все объекты (A), жмете правую кнопку мыши > Shade Smooth.
В левом углу Blender > File > Export > FBX. Сохраняем куда угодно, кроме корзины.
Скачиваем Unity Hub (через него качается Unity3d).
Регистрируемся и заходим.
Installs > install Editor > любая LTS верия, галочки для телефонов ставим так:
Создаем проект, я создал Universal 3D.
Кликаем Window > Package Management > Package manager > Unity Registry > Device Simulator.
Кликаем Window > General > Device Simulator
Кликаем Window > Animation > Animator
Вы восхитительны!
В окне Asset > ПКМ > Create > Folder.
Я обычно создаю несколько папок для удобства, но сейчас хватит и одной.
В этой папке создаем ( ПКМ > Create >) :
Два Material
Два NewMonoBehaviour Script (Назовем Main и AnimationEvents)
Animation > Animator Controller
Два Animation > Animation Clip (Назовем Tuda и Suda)
Rendering > Render Texture (Ставим в Inspector Size 512 x 512)
Перекинем сюда ранее сохраненную из Blender *.FBX - модель.
Добавим картинки.
Так как я не художник, картинки я сгенерировал в нейросети, слегка подмазал края, добавил Speech Bubble и вписал туда произвольный текст (Лучше, конечно, текст делать в Unity3d).
Закинул в Unity3d с параметрами Texture Type - Sprite (2D and UI), Sprite Mode - Single.
Вот сами картинки:







*.FBX - модель из окна Assets перетаскиваем в окно Hierarchy, затем назад, создавая Prefab.
Двойным нажатием в окне Assets открываем этот Prefab.
В окне справа (Inspector) добавляем Add Component > Animator
Из окна Assets перетаскиваем Animator Controller в Controller
Перетаскиваем AnimationEvent Script в Inspector.
Создаем и назначаем новый Layer на этот Prefab.
Назначаем Materials на нужные элементы в окне Hierarchy слева
Раскрываем в окне Assets оригинальную *.FBX - модель (белый кружок с треугольником), находим анимацию (светлый треугольник | Action), двойным нажатием мышки открываем ее, соглашаемся с Read Only, затем выделяем все ключи (Ctrl + A), копируем (Ctrl + C). Открываем Animation Clip Tuda и вставляем (Ctrl + V) ключи, то же самое делаем и с Animation Clip Suda.
Двойным нажатием в окне Assets открываем Animator Controller
ПКМ в окне Animator > Create State > Empty.
Перетаскиваем Animation Clip Tuda и Suda.
Последовательно соединяем (ПКМ по элементу > Make Transition)
В левом верхнем углу Animator видим вкладку Parameters, кликаем "+" создаем Trigger.
Настраиваем параметры анимаций и связей кликая на них ЛКМ.
Переход от New State к Tuda со снятой галочкой Has Exti Time и Conditions - Trigger.
Параметр Speed у Tuda - 2.
Переход от Tuda к Suda, Setting > Exit Time 1, Transition Duration 0.
Параметр Speed у Tuda - -2 (инвертируем анимацию)
Переход от Suda к Exit, Setting > Exit Time 0.7, Transition Duration 0.1.
Exti Time определяет какой процент анимации играется 0(не играется) - 1(играется вся).
В основном окне Unity3d > GameObject >
UI > Canvas (Создаем 2)
Назовем ScoreCanvas и ImagesCanvas.
UI > Image (Создаем 3)
Назовем BackGroundImage, CharacterImage, Аi_image
UI > Raw Image
Назовем RenderTexture
UI > Text - TextMeshPro (Import TMP Essentials если нужно, создаем 2)
Назовем ScoreText и TimerText
UI > Button - TextMeshPro
Camera
Create Empty
Вкладываем объекты один в другой, иерархия должна быть примерно такой:
Main Camera, параметр Culling Mask снимаем слой нашей модели.
У Camera отключаем Post Processing, в Culling Mask отмечаем только слой нашей модели, Background Color ставим Solid Color и меняем Alpha - канал на 0 делая фон прозрачны, в Output Texture перетаскиваем Render Texture из Asset. Audio Listener удаляем иди выключаем.
Располагаем так, чтобы Camera смотрела под нужным углом на модель в сцене.
Настройки Canvas`oв, Sort Order на ImagesCanvas - 0, на ScoreCanvas - 1
ScoreText и TimerText располагаем где нужно, выбираем цвет и настройки шрифта.
BackGroundImage я оставил просто белым, растянул на весь Canvas.
CharacterImage в параметр Source Image назначаем любую картинку из Asset
Аi_image в параметр Source Image назначаем соответствующую картинку из Asset
RenderTexture в параметр Texture назначаем Render Texture из Asset
У кнопки удаляем текст, делаем фон прозрачным, она должна перекрывать RenderTexture.
На GameObject перетаскиваем Script Main из Asset
Подгоняем расположение и размеры элементов, у меня получилось так:
Скрипты, Анимация и ее эвенты.
Находим в Assets скрипт Main и пишем:
В Hierarchy находим Button, в параметрах ищем OnClick(), жмём «+».
В none (object) кидаем Gameobject из Hierarchy (на котором Main.cs)
в выпадающем поле none (function) выбираем Main > ClickOnButton().
Если все в порядке, при клике проиграется анимация:
Дважды кликаем на анимации Tuda, создаем Event примерно на 95% анимации, справа в Inspector в поле object перетаскиваем Prefab из Asset, а в function пишем Event_0.
Для анимации Suda нужно сделать примерно (Зависит от Exit Time в Animator) также, но так как анимация играется в обратную сторону, ее конец будет ближе к началу :) у меня это где-то на 20%,, в function пишем Event_1
Находим в Asset AnimationEvent Script и вписываем туда:
Если в Animator замедлить анимацию (Снизить параметр Speed), можно в консоли слева увидеть когда вызывается Event:
Добавляем в AnimationEvent ссылку на Main script, меняем методы на вызов методов Main:
А в Main Скрипте добавляем ссылку на AnimationEvent script, на элементы интерфейса, создаем лист с картинками, добавляет функцию сокрытия\показа картинки и цикл для выбора каждый раз новой не повторяющейся картинки:
Выбираем GameObject в Hierarchy, заполняем все необходимые поля (кроме Animator):
Результат:
Можно зайти в главном окну Unity3d в Edit > Project Settings > Player > Resolution and Presentation и поменять Orientation на, например, Landscape Left чтобы результат запускался всегда в горизонтальной ориентации.
Можно зайти в File > Build Profiles > Android > Switch Platform > Build.
Готовый APK-файл можно скачать на телефон и запустить.
Можно много чего сделать. Понятно, что чем больше игра, тем она сложнее в плане менеджмента, но всякую мелкоту пилить и заваливать ими Стим очень легко.
Сделал я это минут за 20, а расписывал сильно дольше. Я даже сам не уверен, что смогу повторить тупо по этому посту, так что...


























