# Transitions and Waypoints (ru)

Давайте создадим переход к этому дереву! Сначала начнем с самого простого - телепортации.

<figure><img src="https://1426670673-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FekY9xNdT8kuOP48LQNQK%2Fuploads%2FziQuaRo0hlQeAb9yal3t%2Fimage.png?alt=media&#x26;token=14e6fc63-28ef-45d1-b7f0-23223ee8a20a" alt=""><figcaption><p>Мы хотим перейти на это дерево</p></figcaption></figure>

Сначала создайте зону перехода, перейдите в папку ZONES/ и перетащите файл transition\_zone.tscn на сцену.

<figure><img src="https://1426670673-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FekY9xNdT8kuOP48LQNQK%2Fuploads%2FhvuN9lgjkgTMc3SOfKbQ%2Fimage.png?alt=media&#x26;token=c9d149ca-2a60-4293-b1be-e2f4a7ce3222" alt=""><figcaption></figcaption></figure>

Затем перейдите в папку HELPERS/ и перетащите файл transition\_target.tscn на уровень.

<figure><img src="https://1426670673-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FekY9xNdT8kuOP48LQNQK%2Fuploads%2Fv2NoiPDvEanin0WyIJxS%2Fimage.png?alt=media&#x26;token=75f84202-6a42-41c8-989e-31160aaf0caa" alt=""><figcaption><p>Хелпер - 3D-стрелка для определения будущего положения и поворота игрока</p></figcaption></figure>

Этот хелпер будет нашей точкой спавна, когда мы будем использовать зону перехода. Давайте установим параметры transition\_zone внутри инспектора в Keys.

<figure><img src="https://1426670673-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FekY9xNdT8kuOP48LQNQK%2Fuploads%2Fbaq7YjvIG8ybHZSVPnxl%2Fimage.png?alt=media&#x26;token=7a9f201e-bb42-41d5-b447-d4bd8c69f56d" alt=""><figcaption></figcaption></figure>

Основная точка перехода имеет:

**last\_point\_is\_end** - используется только с путевыми точками, последняя точка будет такой же точкой спавна, как и target\_object

**name** - необходимо всегда иметь уникальное имя для скриптов

**target\_object** - имя нашего хелпера, на позицию которого будет телепортироваться игрок <mark style="color:red;">\*не может быть пустым</mark>

**waypoints** - воспроизведите анимацию ходьбы между точками, а затем в последней точке телепортирует игрока в конечную позицию хелпера <mark style="color:red;">\*если пусто - только телепортирует в цель, без анимации хотьбы по точкам</mark>

Давайте переименуем наш хелпер в "tree\_target".

<figure><img src="https://1426670673-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FekY9xNdT8kuOP48LQNQK%2Fuploads%2FkEIru9POUKYgrha83x8l%2Fimage.png?alt=media&#x26;token=a1e1d6e5-551b-4531-abfd-5a977dca35ee" alt=""><figcaption></figcaption></figure>

Установите то же имя для target\_object в transition\_zone в Keys.

<figure><img src="https://1426670673-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FekY9xNdT8kuOP48LQNQK%2Fuploads%2Fpwn6vv7FddrFyqTZbtbA%2Fimage.png?alt=media&#x26;token=bf0ce435-1396-4d4c-8b7b-4af48971829f" alt=""><figcaption></figcaption></figure>

Давайте проверим. Мы телепортировались к хелперу и посмотрели в ту же сторону, куда смотрит стрелка.

<figure><img src="https://1426670673-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FekY9xNdT8kuOP48LQNQK%2Fuploads%2FDFaxRyYayxSIbuUafgkk%2Fimage.png?alt=media&#x26;token=ef589ed0-1e31-40b5-8479-f314afec1405" alt=""><figcaption></figcaption></figure>

Но давайте усложним задачу - создадим несколько путевых точек.

Нажмите правую кнопку мыши на корневом узле уровня и выберите Add Child Node...

<figure><img src="https://1426670673-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FekY9xNdT8kuOP48LQNQK%2Fuploads%2FIkEDhAof3TbkIubmcMT6%2Fimage.png?alt=media&#x26;token=cc09160e-6300-4a51-8e37-38734fc1016b" alt=""><figcaption></figcaption></figure>

Выполните поиск Path3D.

<figure><img src="https://1426670673-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FekY9xNdT8kuOP48LQNQK%2Fuploads%2FAKZLI6Bs96e9aLNYVItO%2Fimage.png?alt=media&#x26;token=0ec5de69-e215-4ee5-bec9-67f1bff892df" alt=""><figcaption></figcaption></figure>

Нажмите кнопку Create (Создать).

{% hint style="warning" %}
Не перемещайте его из нулевого положения XYZ.
{% endhint %}

Когда Path3D выбран, вы увидите, что на панели инструментов в правом верхнем углу появились новые инструменты.

<figure><img src="https://1426670673-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FekY9xNdT8kuOP48LQNQK%2Fuploads%2FkZc4vGG6MbtUGnh90DAJ%2Fimage.png?alt=media&#x26;token=642d7f81-a835-4af7-9bf1-10e2164ae361" alt=""><figcaption><p>Новые инструменты path3D</p></figcaption></figure>

{% hint style="info" %}
Первый - выбрать точку

Второй - выбрать контрольную точку

Третья - Добавить точку

Четвертая - Удалить точку

Пятая - Закрыть кривую
{% endhint %}

Создайте первую точку с помощью третьей кнопки на панели инструментов (зеленый знак плюс с зеленой точкой). Также не забудьте переключиться на вид сверху.

<figure><img src="https://1426670673-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FekY9xNdT8kuOP48LQNQK%2Fuploads%2F9w0NjrkOAvUUp67W8OWa%2Fimage.png?alt=media&#x26;token=21f0b164-8ad9-4b67-b954-15f76d8339dd" alt=""><figcaption><p>Вид сверху. Можно переключать, нажимая на X Y или Z в правом верхнем углу.</p></figcaption></figure>

И поставьте первую точку.

<figure><img src="https://1426670673-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FekY9xNdT8kuOP48LQNQK%2Fuploads%2F8W2VU1vnPjNn1P4QCzY6%2Fimage.png?alt=media&#x26;token=a3a7284f-0f8e-46ef-ad6f-0eec6f59c060" alt=""><figcaption></figcaption></figure>

Затем перейдите в инспектор и откройте параметр Curve (Кривая). Выберите группу Points (Точки).

<figure><img src="https://1426670673-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FekY9xNdT8kuOP48LQNQK%2Fuploads%2FXJph7pQtkk8ItzRNkiKp%2Fimage.png?alt=media&#x26;token=2d3fb5f2-ffd9-4506-9d2d-8fe32597ca60" alt=""><figcaption></figcaption></figure>

Установите Y на 1,7, чтобы следующие новые точки были на той же высоте.

<figure><img src="https://1426670673-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FekY9xNdT8kuOP48LQNQK%2Fuploads%2FKpHpmjSmJ2bYgL83rKRV%2Fimage.png?alt=media&#x26;token=c2d83f57-9af5-4e2e-a61f-f3432020c55c" alt=""><figcaption></figcaption></figure>

Теперь нарисуйте новую точку и поместите последнюю рядом с хелпером.

<figure><img src="https://1426670673-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FekY9xNdT8kuOP48LQNQK%2Fuploads%2FnH76c8qz4kGNPTsUjX5Q%2Fimage.png?alt=media&#x26;token=1fa3a9cd-11c1-4d3d-baea-cef6e164ea51" alt=""><figcaption><p>Waypoints</p></figcaption></figure>

Итак, давайте назовем наш Path3D уникальным именем и поместим это имя в transition\_zone в Keys в waypoints.

<figure><img src="https://1426670673-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FekY9xNdT8kuOP48LQNQK%2Fuploads%2FHHu2BTcWyUQkYqGS4dEy%2Fimage.png?alt=media&#x26;token=0197b710-733c-494d-84f1-23d3e15a5bbb" alt=""><figcaption><p>Rename Path3D</p></figcaption></figure>

<figure><img src="https://1426670673-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FekY9xNdT8kuOP48LQNQK%2Fuploads%2Fv8Lqlwuz3LQIBzutg1NN%2Fimage.png?alt=media&#x26;token=37994c38-3582-4d3b-8d75-ad1db22c76e6" alt=""><figcaption><p>Установить ключ waypoints с именем Path3D</p></figcaption></figure>

Проверим! Смотрите, теперь игрок идет по этим путевым точкам.

<figure><img src="https://1426670673-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FekY9xNdT8kuOP48LQNQK%2Fuploads%2F8pq4gBT0QYqWnn4IrPHX%2Fimage.png?alt=media&#x26;token=1a64a9c5-d774-4598-a8a1-4a9a07f85db8" alt=""><figcaption></figcaption></figure>

Эй, давайте удалим хелпера и попробуем сделать последнюю точку пути нашей спавн точкой!

<figure><img src="https://1426670673-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FekY9xNdT8kuOP48LQNQK%2Fuploads%2Fc1S5hqFrf9qSGHWbYbAy%2Fimage.png?alt=media&#x26;token=2fc2343b-88ab-4965-a791-7f0ebb6eb841" alt=""><figcaption></figcaption></figure>

Сохраните название путевых точек, но удалите target\_object и включите last\_point\_is\_end.

<figure><img src="https://1426670673-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FekY9xNdT8kuOP48LQNQK%2Fuploads%2FmQGEeuB3QAqkgl0qfjAK%2Fimage.png?alt=media&#x26;token=968ca37e-bf1b-49b9-9743-08fff5dc1314" alt=""><figcaption></figcaption></figure>

Теперь при проходке по путевым точкам игрок остановится на последней точке.

Теперь давайте сделаем триггер перехода с функцией смены уровня! Сделать это можно несколькими способами - вручную или с помощью префаба. Давайте поговорим о ручном варианте.

Выберите зону перехода на текущем уровне и измените ее "id" с "transition" на "transition\_to\_level", а также добавьте новый строковый ключ "level" со строковым значением ID нужного уровня. Например, давайте установим уровень "intro" из res://assets/levels/

<figure><img src="https://1426670673-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FekY9xNdT8kuOP48LQNQK%2Fuploads%2F705yBSxCR1CtUEhnSMLA%2Fimage.png?alt=media&#x26;token=d5a7de8d-9876-4029-a045-46fff893d0ca" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://1426670673-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FekY9xNdT8kuOP48LQNQK%2Fuploads%2FFOonTZnsXhgz4G2TUQgY%2Fimage.png?alt=media&#x26;token=e7abe10d-a7c1-4922-88f4-0805cd9fb09d" alt=""><figcaption></figcaption></figure>

С префабом делаем аналогично как с обычной точкой перехода, просто вписываем нужный ID в "level"

{% hint style="info" %}
Внимание! Я рекомендую блокировать комнаты между собой, чтобы игрок не мог использовать триггеры через стены.
{% endhint %}

<figure><img src="https://1426670673-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FekY9xNdT8kuOP48LQNQK%2Fuploads%2F9T1zzCH4L1CFgVLgE8fY%2Fimage.png?alt=media&#x26;token=4c2de4b0-6c87-444e-bc03-1c0963326968" alt=""><figcaption><p>Orange - blocks between rooms | Screenshot from old level editor</p></figcaption></figure>
