Задача:создать атаку, которая будет направлена ​​на игрока и продолжится прямо после достижения точки.

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

* Это гарантирует, что тысячи объектов не будут созданы при создании, поскольку это находится в методе обновления.

Далее мы создадим нашу сопрограмму, используя IEnumerator для наших стрелок наведения.

Это активируетсистему прицеливания, прикрепленную к объекту игрока, и установит их в активное, а затем в неактивное состояние, когда они будут готовы к стрельбе. анимация открывает рот босса, чтобы выстрелить шарами-хребтами изо рта.

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

Продолжим написание скрипта метода стрельбы. Вы можете видеть, что bool внутри сопрограммы устанавливает для _canBeginFiring значение true. Это активирует наш метод активации в Update.

Теперь наш метод стрельбы будет создавать серию спинных шаров с определенным интервалом.

Итак, я создал переменную типа, значение которой будет уменьшаться на 1 при каждом выстреле мяча. Я хочу, чтобы босс выпустил в общей сложности 4 шара. Как только переменная достигнет 0, анимация рта вернется в нормальное положение, а затем для логического значения _canBeginFiring будет установлено значение false, а количество выстрелов вернется к 4 в течение при следующем вызове этого метода.

Это все для этой части. Далее мы должны создать поведение для шаров-хребтов. Мы создадим новый скрипт и добавим его к нашему объекту шара позвоночника.

Во-первых, давайте создадим несколько переменных. Я пройдусь по ним последовательно.

Далее давайте инициализируем некоторые из них в методе Start. Я хочу, чтобы мой позвоночник направлялся к игроку во время создания экземпляра, но я не хочу, чтобы он следовал за игроком. Для этого я захватил начальную позицию игроков и буду использовать ее в методе Update, где я использую MoveTowards.

Давайте продолжим и воспользуемся методом MoveTowards в Update, чтобы мяч выстрелил в сторону игроков в момент выстрела.

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

Чтобы мяч продолжал свой путь после того, как он достигнет playerStartPos, нам нужно выполнить некоторые простые вычисления с векторами. В Start мы будем вычитать начальную позицию игроков на позицию преобразования объектов и сохранять это значение в переменной _direction. Мы нормализуем переменную направления, чтобы пересчитать ее длину до 1, сохраняя при этом направление.

Это заставит его двигаться в соответствии с этим направлением. Теперь мы можем использовать эту переменную в операторе else if. Если мяч-позвоночник достиг playersStartPos, мы будем использовать transform.Translate, чтобы заставить его двигаться с помощью переменной _direction.

Вот и все. Надеюсь, это поможет!

В эту игру можно играть на itch.io. Я буду обновлять его часто. Дайте ему играть и дайте мне знать, что вы думаете!