Как в Unity Turn базовый ход - PullRequest
0 голосов
/ 25 июня 2018

Я нуб в Unity.Может кто-нибудь помочь мне, пожалуйста?Так.У меня есть 2 или более символов на доске 9х12 клеток.Если я касаюсь персонажа, ячейки рядом с ним (слева, справа, сзади, сзади слева, сзади справа, впереди, впереди слева, впереди справа) должны изменить цвет и активироваться.Затем, если я коснусь какой-либо из активированных ячеек, персонаж должен бежать с запущенной анимацией, чтобы коснуться ячейки.Если я коснусь неактивированной ячейки, персонаж должен остаться на своей позиции.Если персонаж 2 остается в ячейке рядом с символом 1, а я касаюсь символа 1, ячейки рядом с символом 1 должны быть активированы и менять цвет, за исключением ячейки в символе 2, в котором осталась ведьма. У меня плохой английский, и это должно показывать то, что я хочу.https://youtu.be/FRwIreenNx8

Итак, по моей логике: 1. Коснитесь символа 2. Проверьте, заняты ли ближайшие 8 ячеек другим персонажем 2.1, не заняты, затем ячейки меняют цвет на 2.2, тогда ячейки не меняют цвет 3. Доступны только касанияячейки не заняты. 4. Перемещайтесь с помощью анимации перемещения в положение с ячейкой. 5. Используйте эту логику для всех персонажей

Спасибо

1 Ответ

0 голосов
/ 25 июня 2018

То, что вы спрашиваете, является довольно широким вопросом.Но это часть решения.

У вас может быть двухмерный массив с ячейками.

Двухмерный массив немного похож на систему координат.

Можетвыглядит следующим образом

[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 не равно нулю)), то он не должен активироваться.

Чтобы придерживаться своих логических шагов:

  1. Сенсорный персонаж должен получить скрипт локальной ячейки от объекта, к которому прикоснулись (Это можно сделать с помощью Raycasting).
  2. Вы можете проверить ближайшие 8 ячеек, отправив скрипт этой ячейки менеджеру, который знает все ячейки.Затем менеджер проверяет, какие из них являются окружающими, на основе координат данной ячейки.
  3. Ячейка может быть обозначена как занятая, если переменная «Преобразование» имеет значение NULL.Тогда его не следует активировать.
  4. Движение и анимация являются темами сами по себе и могут быть выполнены по-разному.Я советую вам погуглить это.Но в основном вашему персонажу разрешено перемещаться только в места, где есть пробел.
  5. Скрипт можно использовать для нескольких символов, если вы примените его к ним внутри Unity.

Дальнейшее чтение:

2D массивы: https://www.tutorialspoint.com/csharp/csharp_multi_dimensional_arrays.htm


Комментарии

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

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

Не делайтеНе пытайтесь анимировать, перемещать и активировать клетки одновременно.Он станет слишком большим для вас, чтобы вы могли предпринять одну попытку, когда вы новичок в использовании Unity.

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

  1. Узнайте, как найти ячейку при нажатии на нее (посмотрите Raycasting).
  2. Узнайте, как получить окружающие ячейки этой клетки.
  3. Узнайте, как активировать правильные ячейки.
  4. Узнайте, как снова деактивировать окружающие ячейки.
  5. Узнайте, как переместить игровой объект в эту ячейку, а затем деактивировать окружающие ячейки.
  6. Узнайте, как использовать анимацию.
  7. Узнайте, как применять анимацию при перемещении иостанови его, когда перестанешь двигаться.

Я желаю тебе удачи в твоем будущем процессе обучения.

...