Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Все Гайды Мой Кабинет

Создаем простой телепорт в Unity

Приветствую начинающих разработчиков. В данной статье мы научимся создавать простой телепорт, то-есть мгновенное перемещение объектов из одной точки в другую. Реализация данного телепорта работает как для 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, иначе работать не будет.

Спасибо за внимание. Если гайд был полезен, буду рад вашим лайкам и комментариям.

Вы можете отблагодарить автора донатом. ₽ Спасибо

Комментарии

3
Marduc 8 месяцев назад

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

Name_1484 7 месяцев назад

Marduc, так точно так же. Кидаешь этот же скрипт на pointend, в качестве финиша указываешь pointstart. И вуаля

Name_1484 7 месяцев назад

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

Гости не могут оставлять комментарии. Войдите на Сайт или Зарегистрируйтесь