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

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


person Teodor Cristian    schedule 05.09.2017    source источник
comment
Ознакомьтесь с godotengine.org/qa/ 7809 /   -  person user685590    schedule 06.09.2017
comment
Это полезно, но как настроить анимацию в редакторе?   -  person Teodor Cristian    schedule 06.09.2017


Ответы (4)


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

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

person Kishy Nivas    schedule 25.10.2017

Есть два способа делать анимацию в 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), вы, вероятно, получите ваша анимация будет воспроизводиться только в первом кадре, потому что она вызывает анимацию много раз и не позволяет ей воспроизводиться до последнего кадра. Один из способов избежать этого - использовать две переменные: animation и old_animation, например, и сделать проверку типа if (animation != old_animation): animation_node.play(animation) old_animation = animation

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

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

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

person lcrabbit    schedule 23.07.2018

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

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

person Chad    schedule 04.05.2020

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

$Sprite.frame = 1 

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

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

OS.get_ticks_msec()

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

person Tanguy Sanchez    schedule 07.02.2021