Приветствую начинающих разработчиков. В данной статье мы научимся создавать простой телепорт, то-есть мгновенное перемещение объектов из одной точки в другую. Реализация данного телепорта работает как для 2D так и для 3D игр. Но исключительно ради примера, в данной статье мы будем рассматривать телепорт для 2D игр типа top-down, то-есть игра с видом сверху.
Первым делом создадим игровой объект, который будет являеться начальной точкой телепортации. Назовём данный объект, PointStart, и добавим к нему компонент Box Collider 2D. В поле Is Trigger данного компонента поставим галочку, поскольку в дальнейшем мы доллжны получать информацию о входе нашего персонажа в зону данного объекта.
Теперь создадим второй игровой объект, который будет являться конечной точкой телепортации. Назовём его, PointEnd. Добавление компонентов к данному объекту не требуется.
Итак, у нас созданы 2 объекта, то-есть точка от которой будет происходит телепортация, и точка, куда будет производится телепортация. Осталось написать скрипт, который будет эту телепортацию приводить в действие. Для этого создадим C# скрипт, и назовём его, Teleport. Данный скрипт необходимо присвоить игровому объекту PointStart.
Содержимое данного скрипта:
using UnityEngine;
public class Teleport : MonoBehaviour
{
public Transform point;
private void OnTriggerEnter2D(Collider2D collision)
{
collision.transform.position = point.transform.position;
}
}
В строке #5 мы объявили переменную point, в которой будет хранится информация той позиции, куда необходимо телепортировать нашего персонажа, то-есть конечная точка телепоратции. Чтобы эти координаты получить, необходимо перетащить объект конечной точки PointEnd в поле Point компонента Teleport.
В строке #7 с помощью метода OnTriggerEnter2D наш объект реагирует на событие вхождения в объект PointStart. То-есть, как только какой-либо объект войдёт в область объекта PointStart, то будет выполняться строка #9.
В строке #9 мы устанавливаем новые координаты для нашего объекта, тем самым мгновенно телепортировав его к объекту PointEnd.
Готово, телепорт создан! Но давайте его немного изменим. Ведь этот телепорт будет телепортировать абсолютно все объекты, которые будут попадать в область объекта PointStart. Давайте сделаем так, чтобы телепорт работал только для нашего игрового персонажа. Для этого заменим строку #9 этими четырьмя строчками:
if(collision.gameObject.tag == "Player")
{
collision.transform.position = point.transform.position;
}
В ней мы проверяем объект на наличие тега Player, и после чего выполняем телепортацию. Так же не забудьте установить для своего персонажа тег Player, иначе работать не будет.
Спасибо за внимание. Если гайд был полезен, буду рад вашим лайкам и комментариям.
а можно такой же гайд, только чтобы можно было телепортироваться и туда, и обратно. А так гайд отличный, большое спасибо.