Динамически создавать анимацию для отображения текста - PullRequest
1 голос
/ 01 декабря 2019

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

Что я пытаюсь воссоздать в кодеэто анимация:
animation track in the editor
Таким образом, анимация с отслеживанием свойства в свойстве метки visible_characters с режимом обновления в режиме непрерывной обработки и интерполяцией в линейной

Структурасцены:
scene structure

Скрипт за узлом DialogBox:

extends Control

export(String, MULTILINE) var Text = ""
export(int) var CharactersPerSecond = 100

func _ready():
    $Panel/Label.set_text(Text)
    print($Panel/Label.get_text())
    createAnimation()
    $AnimationPlayer.play("show-text")
    print("is playing " + str($AnimationPlayer.is_playing()))
    print("current animation " + $AnimationPlayer.current_animation)

func createAnimation():
    var animationLength = Text.length() / (CharactersPerSecond as float)

    print(animationLength)

    var animation = $AnimationPlayer.get_animation("show-text")
    animation.clear()

    var trackIdx = animation.add_track(Animation.TYPE_VALUE)
    animation.track_set_path(trackIdx, "Panel/Label:visible_characters")
    animation.track_set_interpolation_type(trackIdx,Animation.INTERPOLATION_LINEAR)
    animation.value_track_set_update_mode(trackIdx, Animation.UPDATE_CONTINUOUS)

    animation.track_insert_key(trackIdx, 0, 0)
    animation.track_insert_key(trackIdx, animationLength, Text.length())

В целях тестирования текст устанавливается в редакторес использованием экспортированной переменной Text и некоторого значения lorem ipsum.

Что происходит, когда я запускаю сцену, так это то, что панель и метка отображаются, но текст не отображается в метке, она остается пустой, но в соответствии соператоры печати show-text воспроизводится анимация

Печатные данные в окне вывода:

** Процесс отладки запущен **
Godot Engine v3.1.2.stable.mono.official - https://godotengine.org
OpenGL ES 3.0 Рендерер: AMD Radeon R7 200 Series
Текст метки: Magnam consequatur vel alias earum accusantium. Нобис волпатем волептатем кваерат адиписки волупас. Ошибка Numquam ID Earum Concectetur Veniam. Quaerat quibusdam quas sunt alias et blanditiis corporis. Купидонат rem ut natus est molestiae quidem. Magnam consequatur vel alias earum accusantium. Нобис волпатем волептатем кваерат адиписки волупас. Ошибка Numquam ID Earum Concectetur Veniam. Quaerat quibusdam quas sunt alias et blanditiis
длина анимации: 4.44
воспроизводится: True
текущая анимация: show-text
** Процесс отладки остановлен **

1 Ответ

1 голос
/ 01 декабря 2019

, поэтому проблема заключалась в том, что мне все еще нужно было установить длину анимации
недостаточно просто вставить ключи

добавить следующую строку после того, как animation.clear() исправило ее:

animation.set_length(animationLength)
...