Godot - Использование 2D спрайтовой анимации

Я изучаю Godot Engine, и я искал спрайтовые анимации, и я ничего не мог сделать. Есть ли что-то подобное в Unity? И после того, как я создаю анимацию, как изменить состояние анимации спрайта?

4 ответа

Ну, вам нужно взглянуть на AnimatedSprite здесь: docs

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

Есть два способа сделать анимацию в Godot (2d), AnimatedSprites или AnimationPlayer. Документы по анимации: http://docs.godotengine.org/uk/latest/classes/class_animation.html?highlight=animation

ИСПОЛЬЗУЯ УЗЕЛ АНИМИРОВАННЫХ СПРИТОВ

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

Как его использовать: https://www.youtube.com/watch?v=dew1JdR7TuM

ИСПОЛЬЗУЯ УЗЕЛ АНИМАЦИОННОГО ИГРОКА

Этот узел позволяет вам анимировать все в Godot (не только рамки символов, но и звуки, непрозрачность, модулировать цвета и т.д.). Для этого требуются ключевые кадры (которые более похожи на Unity). Также вы можете использовать весь SpriteSheet здесь и просто установите свойства в инспекторе, чтобы разделить их. Вы можете посмотреть там: https://www.youtube.com/watch?v=Z00BfPs0ImM

О ИЗМЕНЕНИИ АНИМАЦИЙ

В настоящее время вы можете в основном вызывать play("animation_name") в узле AnimatedSprite или AnimationPlayer, но если вы используете это в _process(delta) или _physics_process(delta), вы, вероятно, получите анимацию для воспроизведения только первой frame, потому что он вызывает анимацию много раз и не позволяет воспроизводиться до последнего кадра. Один из способов избежать этого состоит в том, чтобы иметь 2 переменные: анимацию и old_animation, например, и сделать проверку как if (animation != old_animation): animation_node.play(animation) old_animation = animation

конечно, есть другие способы сделать это, это только одно решение.

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

Я надеюсь, что в моем объяснении есть хорошая дидактика и удачи в изучении Годо!

Вы можете использовать встроенную анимацию godot, существует множество руководств, или создать свою собственную и программно изменить индекс кадра спрайта:

      $Sprite.frame = 1 

Я построил свою собственную систему, потому что годот пользовательский интерфейс меня отбросил.

Если вы это сделаете, вам понадобится эта функция, чтобы узнать прошедшее время:

      OS.get_ticks_msec()

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

Я предполагаю, что вы можете создать AnimatedSprite в пространстве Node2D. Оттуда вам нужно будет добавить изображения. Их можно добавить отдельно из папки проекта Godot, щелкнув Frames и выбрав New SpriteFrames. Как уже упоминалось, на сайте Kidscancode.org есть отличное руководство, которое поможет вам в этом.

Хочу добавить одну вещь. С помощью одного AnimatedSprite вы создадите несколько анимаций, которые вы вызовете через $AnimatedSprite.play("animation-name"), как указано выше. Этой анимацией также можно управлять в AnimationPlayer, который может управлять объектами внутри сцены. Это станет удобно позже, и, хотя немного сложнее, можно получить доступ к именованным анимациям в объектах AnimatedSprite и позволить вам использовать встроенный конечный автомат анимации. Все примеры, которые я смог найти в Интернете, показали, что AnimationPlayer управляет Sprite, но он также работает и с объектом AnimatedSprite.

Другие вопросы по тегам