
We're happy to announce the release of our brand new spine-godot Runtime! This new runtime lets you bring your Spine skeletons into Godot Engine effortlessly.
Learn more about the spine-godot Runtime on our blog
Mario
6 months ago
Erika
6 months ago
T.Fly()
6 months ago
AdamRatai
6 months ago
mightymochigames
6 months ago
SilverStraw
Thank you for writing a custom C++ module.spine-godot sits on top of spine-cpp, our C++ runtime. Since we wanted to integrate tightly with the Godot editor to provide a best in class experience, we had to implement spine-godot as a custom C++ engine module. We had to take this route, as GDNative and its successor GDExtensions do not surface all of the editor APIs we need, such as the animation player and editor APIs.
Also thanks to rayxuln on github for providing a starting point.We've started work on the spine-godot runtime in November 2021, based on a generous source contribution by rayxuln.
6 months ago
ChzBoi
6 months ago
maranpis
I figured it out! I have made a video to everybody explaining how to import from spine to godot
6 months ago
gustavodort
08-animation-player
. SpineSprite
skeleton_data_res
on editor with res://assets/spineboy/spineboy-data-res.tresSpriteAnimationTrack
That's not happening.When creating a SpineAnimationTrack, an AnimationPlayer node is created and attached as a child.
Debug
variable on the SpineAnimationTrack
to true
. Still, no automatic creation of the node AnimationPlayer
.AnimationPlayer
node manually. The problem is that the automatic created node would allegedly be filled with animations from the skeleton_data_res
. I tried making it the animations manually but I can't seem to find the properties animation_name
and loop
on SpineAnimationTrack
.value
. 5 months ago
Mario
AnimationPlayer
which was fixed 13 days ago: 5 months ago
meyaoigames
5 months ago
Erika
5 months ago
meyaoigames
I might need to play around with it some more xD (anyway Spine is great! I could make animations that would usually take me ages to make in like a day).Erika wrote:What is the bigger context?
You could set the looping off for example as explained here, so that the animation you set only plays once:
http://esotericsoftware.com/spine-godot#Animating-a-
(disclaimer: I am but a humble animator attempting to code in Godot for the first time)
5 months ago
Mario
5 months ago
meyaoigames
Nice thank youMario wrote:Already up-to-dateYou can find the download links for the new binaries here:
spine-godot Runtime Documentation
5 months ago
Mario
5 months ago
jdowdy6
5 months ago
Ryusui
I mean, you'd do this for a regular KinematicBody2D + Sprite setup, wouldn't you?jdowdy6 wrote:But I'm not sure if this is the best way to do this, or if it's better I just build out all the custom control physics all in the 'SpineSprite' script. Curious what anyone else is doing...
5 months ago
Mario
5 months ago
jdowdy6
5 months ago
maranpis
4 months ago
Ryusui
4 months ago
Mario
AnimationState.get_current()
will not return null
if you loop the animation, as the track entry will remain on the track indefinitely until you queue a new animation or clear the track entry.add_animation
or set_animation
. That way, you can add a signal callback to the track entry and know exactly when it has started/completed (a loop)/ended, and do whatever you need to do. You can already do this by setting a signal callback on the animation state itself, then checking the track entry that your signal callback is passed, e.g. 4 months ago
maranpis
Hello Ryusui, thanks for your answerRyusui wrote:I feel like you're leaning too heavily on the animation itself to time the mechanics.
Like...what I'd do is, I'd queue up the left jab, wait till it finishes, queue up the right jab, wait until that finishes, queue up the left jab again, wait for that to finish, and then set the idle animation. You could, alternately, use signals to determine which animations have finished, and detect whether all three animations have played that way, but I think my suggested method would be more straightforward to implement.
AnimationState.get_current()
will not return null
if you loop the animation, as the track entry will remain on the track indefinitely until you queue a new animation or clear the track entry. 4 months ago
Ryusui
4 months ago