Самая простая рализация ИИ по точкам.

Научился сам? Помоги начинающему.

Самая простая рализация ИИ по точкам.

Сообщение T I N T A F 11 дек 2014, 00:48


И так, теперь объясним все текстом, ибо не все могут смотреть видео, может интернет слабый... Приступим?
Для начала мы объявили переменные, которые отвечают за массив контрольных точек, скорости движения и дистанцию, которая нужна для определения следующей точки, мы же должны когда-то достигнуть точку и лучше сделать это заранее, чтобы не было задержек. А также объявили приватную переменную для работы с текущей точкой.
Синтаксис:
Используется csharp
public Transform[] Points;
public float Speed = 0.0f, Distance = 0.0f;
private int _currentPoint;

После чего мы сразу пишем условие, которое говорит системе: если я достиг конца точек, то я хочу начат заново;
Синтаксис:
Используется csharp
if (_currentPoint == Points.Length) _currentPoint = 0;

Создав локальную переменную и сказав, что она равна дистанции от текущей позиции объекта до нужной позиции нужной точки, то есть текущей
Синтаксис:
Используется csharp
float _currentDistance = Vector3.Distance(transform.position, Points[_currentPoint].position);
  if (_currentDistance <= Distance) _currentPoint++;

Мы обязаны проверит на дистанцию. То есть мы должны сравнить, если дистанция меньше указанной, то мы достигли точки и надо двигаться дальше, то есть делаем переменную текущей точки на 1 больше.
Наш объект должен всегда смотреть на точку, ибо не хорошо ходить попой или боком
Синтаксис:
Используется csharp
transform.LookAt (Points [_currentPoint].position);

А также теперь осталось дело за малым - научить двигаться игрока. Как это сделать? Просто берем и передвигаем объект от текущей позиции до позиции нужной точки и с определенной скоростью:
Синтаксис:
Используется csharp
transform.position = Vector3.MoveTowards (transform.position, Points[_currentPoint].position, Speed * Time.deltaTime);
Последний раз редактировалось DbIMok 11 дек 2014, 01:02, всего редактировалось 1 раз.
Причина: убрал ссылку. хотите рекламировать свой сайт - указывайте в подписи.
T I N T A F
UNец
 
Сообщения: 6
Зарегистрирован: 11 дек 2014, 00:41

Re: Самая простая рализация ИИ по точкам.

Сообщение bwolf88 11 дек 2014, 04:11

Делал подобную штуку, только с более сложной логикой и рандомным выбором своего пути.

К слову, объявляя точки трансформами, а не векторами вы теряете в скорости доступа почти 20 раз. Вейпоинты статичные и не изменяют своего положения, лучше перевести их позицию в векторы.
И еще зачем вы выключаете флаг при смене точки, чтобы на следующей итерации снова его включить ? Лишняя операция :).
ТАк же если смена точки будет происходить чуть ранее позиции целевой, а поворот объекта будет через Lerp, то вы получите более сглаженное и естественное передвижение.
Сюда периодически чего нибудь выкладываю https://github.com/LuchunPen
Аватара пользователя
bwolf88
Адепт
 
Сообщения: 2184
Зарегистрирован: 30 апр 2014, 06:40
Skype: bwolf331


Вернуться в Уроки

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5