Создание чекпоинта на юнити
Всем привет! В данной статье я хотел бы показать вам как сделать простой и функциональный чекпоинт на движке юнити.
Подготовка
Итак, мы создаем какой-нибудь платформер и нам остро необходимо создать точку сохранения (или чекпоинт) персонажа.
Скрипт, который будет управлять точками сохранения будет висеть на персонаже и работать сам, без нашего вмешательства извне файла с кодом.
Вот его принцип работы: Когда мы касаемся точки сохранения, скрипт записывает ее координаты в специальное поле, а когда мы умираем, просто телепортиркует персонажа на эти координаты.
Но тут возникает проблема. Когда персонаж умирает, сцена перезапускается, и позиция чекпоинта сбрасывается. Для того, чтобы скрипт работал, нам нужно «сохранять» координаты точки сохранения. Делать мы это будем при помощи модификатора static.
Static позволяет сделать какую-либо часть класса «общей». То есть, если говорить простыми словами, переменная будет принадлежать всем классам этого типа, и не уничтожаться при уничтожении экземпляра класса (простите за тавтологию), что нам и нужно. Крайне рекомендую ознакомиться с этой темой. Это очень крутая вещь, если уметь ей пользоваться. Вот ссылка.
Обычный чекпоинт
Я немного затянул с вступлением, поэтому не будем больше терять времени и приступим к написанию кода.
Создадим скрипт с именем Checkpoint и повесим его на персонажа.
В скрипте напишем:
В принципе все. Теперь ваш персонаж будет «собирать» точки сохранения и телепортироваться к ним после смерти.
«Продвинутый» чекпоинт
А этот скрипт пригодится, если у вас большие уровни, и персонаж может упасть с одного чекпоинта на друтой.
Он будет телепортировать персонажа (или любой другой обьект на котором скрипт висит) на последний собранный чекпоинт, а если вы соберете уже собранный ранее чекпоинт то он не будет считаться.
Вот скрипт:
Заключение
В этой статье я показал вам как сделать чекпоинт на юнити. Надеюсь эта статья была вам полезна.
Если вы хотите увидеть реализацию какой-нибудь другой механики здесь, то пишите в комментариях. Также буду весьма раз фидбеку.
Всем пока!