+2 votes

For clarity, I will explain my ultimate goal. I want to make a 2D retro-style series of cut scenes along the lines of a Nintendo game like Ninja Gaiden.

To those unfamiliar with Ninja Gaiden, the cut scenes were done by panning sprites and backgrounds, synced to sounds. There are simple frame animations to create visual effects like a scrolling background or a moving mouth when the protagonist speaks.

So... I have been looking at the AnimationPlayer node for Godot and it seems to be able to loosely do animations in the sense that you can set changes to nodes over seconds of passed time. I'm having trouble with using this tool.

Here is how I think I should work at the moment:
1) Put all graphics and sounds into one scene file.
2) Make every "camera cut" the child of a parent node that shows and hides the animation to be played.
3) Make each animation very accurate; down to the frame number.

I want to be be able to specify that a certain "camera cut" will be visible for 802 frames and then hide, then the next "camera cut" will be visible for 1001 frames while playing a moving mouth animtion with typed text at the bottom then hide, etc. along those lines.

Right now it seems to me there is no way to set duration of animation by frame which is a slight annoyance, but can be worked around...

...I think I am wondering if I am doing this in the way Godot expects... I have some questions.

1) Should I be doing this animation fully in GDScript? I want to have a high level of control/prcision over the timing of the animations and when they appear, play and hide.

2) Should I be making each "camera cut" into a separate scene file and find a way to handle music globally while loading scne files with animations?

3) Is there a really good primer on the Godot animation system somewhere?

I greatly appreciate any and all help. Thanks!

in Engine by (88 points)
edited by

UPDATE 1:
I found a tutorial that covers frame based animation (without a sprite sheet) using Godot:
https://www.youtube.com/watch?v=h4kf3QvAYLw

This answers part of my question, since I plan to use individual frame files and not a sprite sheet. This also shows a way I can go about animating using GDScript and not using the AnimationPlayer node.

UPDATE 2:
I noticed at the end of the following video, the instructor explains that the "quirks" regarding Godot animation being fixed to working with seconds instead of frames is a known issue that supposedly will be addressed in Godot ~3.

https://www.youtube.com/watch?v=d9t3CdMks7M&list=PLhqJJNjsQ7KEr_YlibZ3SBuzfw9xwGduK&index=8

After doing a few days research I found a nice progression on how to do simple "cinematic" 2D animations in Godot. I recommend the following links.

Intro to the Animation Tools in the Godot Game Engine (Great Overview and Disclaimers)
https://www.youtube.com/watch?v=d9t3CdMks7M&list=PLhqJJNjsQ7KEr_YlibZ3SBuzfw9xwGduK&index=8

Godot Tutorial -- Sprite Animation (Using GDScript and Sprite-sheetless Frame Animation)
https://www.youtube.com/watch?v=h4kf3QvAYLw

Godot Tutorial -- Keyframe Animation using AnimationPlayer (Using the AnimationPlayer node to animate)
https://www.youtube.com/watch?v=5m9eB6bq3t0

Quick and Easy Animation State Handling in Godot Engine (Great method to stay organized as your animations become more complex)
https://www.youtube.com/watch?v=xHmCtUWaEes

Please log in or register to answer this question.

Welcome to Godot Engine Q&A, where you can ask questions and receive answers from other members of the community.

Please make sure to read How to use this Q&A? before posting your first questions.
Social login is currently unavailable. If you've previously logged in with a Facebook or GitHub account, use the I forgot my password link in the login box to set a password for your account. If you still can't access your account, send an email to webmaster@godotengine.org with your username.