Нулевой девлог разработки игры

Предисловие

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

Ближе к сути

Игра представляет из себя по большей части смесь Dorfromantik и Catan Universe. Сейчас в игре уже есть:

  • перемещение и масштабирование камеры,
  • установки плитки,
  • счётчик очков,
  • некоторые экраны.

На днях добавил индикатор плитки (он справа снизу, шестиугольный такой)

Долго думал, как можно сделать этот индикатор. Было несколько вариантов (два).

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

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

А что может повлиять на внешний вид плитки?

Поскольку моя студия разработки игр состоит аж из одного человека, решил не запариваться над 3D-объектами и сделал равносторонний треугольник и собрал из него шестиугольную плитку. Далее добавил к этому треугольнику точку для крепления пейзажа и скрипт, который случайным образом устанавливает тег пейзажа и сам пейзаж

using UnityEngine; [System.Serializable] public class MaterialPrefabPair { public Material material; public GameObject[] prefab; } public class BiomAttachScript : MonoBehaviour { [SerializeField] GameObject[] _biomAttach = new GameObject[6]; [SerializeField] MaterialPrefabPair[] _bioms; void Awake() { foreach (var attach in _biomAttach) { // Заглушка в виде рандома var biom = _bioms[Random.Range(0, _bioms.Length)]; var attachBlock = attach.transform.parent.transform; attachBlock.GetComponent<Renderer>().material = biom.material; attachBlock.tag = biom.material.name; if (biom.prefab != null) { foreach (var prefab in biom.prefab) { Instantiate(prefab, attach.transform.position, attach.transform.rotation, attach.transform); } } } } }

И для большей, надеюсь, ясности строение самой плитки:

Fetch Binding - для подсчёта очков, Biom Attach - для присоединения пейзажа
Fetch Binding - для подсчёта очков, Biom Attach - для присоединения пейзажа

Спасибо, что уделили этому посту своё время. Буду рад вашим комментариям.

Небольшое отступление

Анимация кнопок как повод зайти в игру.

Теперь точно всё.

10