Godot - Использование 2D спрайтовой анимации
Я изучаю Godot Engine, и я искал спрайтовые анимации, и я ничего не мог сделать. Есть ли что-то подобное в Unity? И после того, как я создаю анимацию, как изменить состояние анимации спрайта?
4 ответа
Есть два способа сделать анимацию в 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.