Создание диалоговой системы в Godot с помощью GDScript
ДомДом > Блог > Создание диалоговой системы в Godot с помощью GDScript

Создание диалоговой системы в Godot с помощью GDScript

Jul 06, 2023

Добавьте индивидуальности и предыстории своим персонажам с помощью эффектной системы диалогов.

В разработке игр увлекательный игровой процесс и увлекательное повествование являются ключом к созданию незабываемых впечатлений. Одним из мощных инструментов, который может помочь вам в этом, является диалоговая система.

Благодаря хорошо реализованной диалоговой системе персонажи могут общаться, делиться информацией и взаимодействовать с игроком, добавляя глубину и погружение в вашу игру.

Начните с создания основы вашей игры. В этом примере создайте простую 2D-среду с управляемым персонажем, который может перемещаться с помощью клавиш со стрелками.

Код, использованный в этой статье, доступен в этом репозитории GitHub и может быть использован бесплатно по лицензии MIT.

Начните с создания новой сцены для вашего игрового персонажа. Внутри этой сцены добавьте необходимые компоненты. СоздатьТело персонажа2D узел, представляющий тело персонажа игрока. ПрикрепитеСтолкновениеShape2Dпрямоугольной формы для определения зоны столкновения игрока.

Теперь добавьте движение персонажа и взаимодействие с платформами с помощью GDScript. Замените сценарий по умолчанию узла CharacterBody2D следующим кодом:

Этот скрипт позволяет вашему персонажу перемещаться влево, вправо, вверх и вниз в зависимости от нажатия клавиш со стрелками. move_and_collideФункция гарантирует, что персонаж взаимодействует с платформами и реагирует на столкновения.

Теперь можно приступить к созданию диалоговой системы. Первый шаг — добавить диалоговое окно, в котором будет отображаться текст, когда ваш персонаж взаимодействует с определенными объектами или NPC.

В вашейТело персонажа2Dскрипт, добавьте еще несколько переменных для обработки диалогового окна и его содержимого:

диалоговое_окнобудет отвечать за отображение текста диалога, аclose_buttonпозволит игрокам закрывать диалоговое окно, когда это необходимо.

в_готовыйфункция, создайте и инициализируйте диалоговое окно:

Теперь вы можете сосредоточиться на отображении текста в диалоговом окне. Вы можете сделать текст занимающим более одной строки и прокручивать его, открывая по одной строке текста за раз.

Измените свой_физика_процессфункция для обработки отображения строк диалога:

Этот сегмент кода проверяет,line_timer больше 0. Если да, таймер уменьшается на значение дельты. Если таймер не активен и необходимо отобразить больше диалоговых строк, он вызываетshow_next_dialogue_lineфункция.

Внедритьshow_next_dialogue_lineфункционировать следующим образом:

Эта функция обновляет текст в диалоговом окне текущей строкой диалога и увеличиваеттекущая_строка индекс. line_timerгарантирует, что каждая строка отображается в течение короткого периода времени, прежде чем перейти к следующей строке.

Теперь вы можете дать игрокам возможность закрыть диалоговое окно и продолжить игру. Сделайте это с помощью кнопки закрытия, которая при нажатии скрывает диалоговое окно и позволяет игроку возобновить свое путешествие.

Сначала измените_готовыйфункция для создания кнопки закрытия и прикрепления ее функциональности.

Этот код создает экземплярКнопка класс и настраивает его внешний вид и положение. Он также соединяетпрессованныйсигнал к_on_close_button_pressedфункция.

Теперь реализуйте_on_close_button_pressed функция. В этой функции установите видимость как диалогового окна, так и кнопки закрытия наЛОЖЬ . Это эффективно скрывает интерфейс диалога от игрока.

Не забудьте сброситьтекущая_строкаиндекс на 0, чтобы гарантировать, что диалог начнется с начала в следующий раз, когда игрок начнет разговор:

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