Вы играли в slither.io? Если нет, то обязательно попробуйте! В этой статье мы сделаем плавное движение змейки, которая крутится на 360° как в slither.io.
Давайте начнем!
Нам понадобится
Голова змейки. Часть тела змейки. Еда. Объект который всегда следует за мышкой.
Ещё нам нужны 4 глобальных числовых переменных:
XПоз YПоз нужны для вычисления направления движения змейки. Сразу можно установить скорость и длину змейки.
Движение змейки
Первое, что нужно сделать, это заставить змейку крутиться за мышкой. Чтобы это сделать используем формулу ATan2().
Движение происходит если змейка не находиться в координатах мышки
Далее нужно вычислить направление движения змейки на основе её угла поворота (Angle). Проще говоря, змейка должна двигаться в ту сторону, в которую она смотрит.
Опять же применяем формулы из тригонометрии.
Теперь просто меняем координаты змейки с помощью этих переменных.
Полное событие движения персонажа:
Хвост змейки
Теперь нужно сделать хвост для змейки. Для этого мы будем использовать такую логику:
- Сначала мы запустим постоянный цикл (loop), в котором мы будем постоянно создавать части тела на месте объекта головы змейки. Назовем петлю цикла Создать Хвост.
Чтобы часть тела не накладывалась на голову змейки, можно в Always добавить Bring to back
- Методом Spread Value мы будем назначать номер для каждой части хвоста, начиная с единицы.
Главное, чтобы сначала было событие распространения числа, а потом событие создания объекта. Это очень частая ошибка, когда у вас ничего не работает из-за того, что действия в неправильной последовательности.
- Если номер части хвоста будет больше, чем переменная Длина Змейки, то мы будем удалять этот объект.
Таким образом, частей тела будет столько, сколько указано в переменной Длина Змейки. Только не забудьте задать начальное значение для этой переменной.
Поедание точек
При соприкосновении змейки и точки добавляем +1 к переменной Длина Змейки. И перемещаем точку в рандомное место.
Теперь змейка растет и можно поиграть.
Скачать Snake-io.mfa
А на этом всё, спасибо за прочтение статьи. Если тебе понравилось, поставь лайк и оцени на звёзды эту статью. Тебе пустяк, а мне приятно :-)