То, что вы спрашиваете, является довольно широким вопросом.Но это часть решения.
У вас может быть двухмерный массив с ячейками.
Двухмерный массив немного похож на систему координат.
Можетвыглядит следующим образом
[0,0][1,0][2,0]
[0,1][1,1][2,1]
[0,2][1,2][2,2]
Каждая из этих ячеек может содержать объект.
Этот объект может выглядеть следующим образом:
Cell{
public Transform CurrentlyOnCell; //<- this is the player, if null then no one is there.
public int x; //cell x coordinate.
public int y; //cell y coordinate.
}
Если у вас также есть менеджеркласс, который содержит все клетки.Затем, щелкая ячейку, вы можете отправить ее в класс менеджера, получить коллекцию всех окружающих ячеек и указать, должны ли они активироваться.
Если в ячейке в данный момент есть объект (в настоящее время значение Null не равно нулю)), то он не должен активироваться.
Чтобы придерживаться своих логических шагов:
- Сенсорный персонаж должен получить скрипт локальной ячейки от объекта, к которому прикоснулись (Это можно сделать с помощью Raycasting).
- Вы можете проверить ближайшие 8 ячеек, отправив скрипт этой ячейки менеджеру, который знает все ячейки.Затем менеджер проверяет, какие из них являются окружающими, на основе координат данной ячейки.
- Ячейка может быть обозначена как занятая, если переменная «Преобразование» имеет значение NULL.Тогда его не следует активировать.
- Движение и анимация являются темами сами по себе и могут быть выполнены по-разному.Я советую вам погуглить это.Но в основном вашему персонажу разрешено перемещаться только в места, где есть пробел.
- Скрипт можно использовать для нескольких символов, если вы примените его к ним внутри Unity.
Дальнейшее чтение:
2D массивы: https://www.tutorialspoint.com/csharp/csharp_multi_dimensional_arrays.htm
Комментарии
Мой совет не является законченным решением, он призван вдохновить васо том, как решать задачи, о которых вы упомянули.
Я посоветую вам разбить то, что вы хотите сделать, чтобы не принимать слишком много вещей сразу.
Не делайтеНе пытайтесь анимировать, перемещать и активировать клетки одновременно.Он станет слишком большим для вас, чтобы вы могли предпринять одну попытку, когда вы новичок в использовании Unity.
Вот несколько шагов для рассмотрения.Лучше разбить ее на простые действия, а не делать сразу много сложных вещей.
- Узнайте, как найти ячейку при нажатии на нее (посмотрите Raycasting).
- Узнайте, как получить окружающие ячейки этой клетки.
- Узнайте, как активировать правильные ячейки.
- Узнайте, как снова деактивировать окружающие ячейки.
- Узнайте, как переместить игровой объект в эту ячейку, а затем деактивировать окружающие ячейки.
- Узнайте, как использовать анимацию.
- Узнайте, как применять анимацию при перемещении иостанови его, когда перестанешь двигаться.
Я желаю тебе удачи в твоем будущем процессе обучения.