Unity2D Перемещение по линиям сетки - PullRequest
0 голосов
/ 26 мая 2020

Я делаю то, что по сути является настольной игрой в Unity 2D. Игрок сможет перемещать свои фишки по сетке (см. Ниже). Большие круглые спрайты - это части, на которые игрок может щелкнуть, а затем щелкнуть точку сетки (маленькие квадраты), чтобы перейти к ней.

enter image description here

Я создал сетку, используя пустые игровые объекты (я визуализировал на них спрайт для визуальной помощи) на каждом пересечении. Это точки, между которыми игроки могут перемещаться. Расстояние между точками варьируется, хотя горизонтальное расстояние всегда равно 1.

Полная функциональность будет ...

  1. Игрок нажимает на кусок,
  2. Отображается область предварительного просмотра, в которую можно переместить фигуру.
  3. Игрок нажимает на допустимую точку сетки, в которую должна переместиться фигура.
  4. Фрагмент сетки перемещается в новую точку.

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

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

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

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 26 мая 2020

Хорошо, для этого есть много решений, но давайте будем простыми !! простой обзор шага решения !!

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

Теперь немного подробнее Понимание !! пожалуйста, обратитесь к приведенной ниже ссылке.

  • начальное состояние любого типа сетки
  • после создания сетки вы можете поместить пустой игровой объект в качестве заполнителя между сеткой (вы можете сделать его невидимым, т.е. сделать его альфа 0 свойства изображения!)
  • заполнитель между промежутком сетки
  • вы можете сделать свою часть (игрока) дочерним элементом любого из этих заполнителей.
  • вы обнаружите механизм смахивания или даже касания и проверите погоду в любом направлении, в котором вы меняете местами, или в каком невидимом заполнителе вы нажимаете, имеет ли какой-либо дочерний элемент ??
  • if да, это означает, что заполнитель уже занят другой фигурой (игроком). так что нет логи c, чтобы переместить вашу текущую фигуру. поэтому игнорируйте смахивание.
  • если нет, это означает, что заполнитель пуст, поэтому его допустимый ход.
  • с использованием любой библиотеки анимации движения из текущей позиции заполнителя в желаемый заполнитель, переместите свою фигуру (игрока) .
  • после достижения желаемого заполнителя, сделайте этот фрагмент дочерним по отношению к этому желаемому заполнителю (используя своего рода код setparent (желаемыйplaceholder.gameobject.transform.position)

и готово! !

надеюсь, вы найдете это полезным !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...