Sorry if this seems simple but I'm banging my head against a wall. I followed the Godot tutorials on 2d skeletons, both the "cutout" animation way listed here:
https://docs.godotengine.org/en/stable/tutorials/animation/cutout_animation.html
And the polygon mesh wrapped 2d skeleton method here:
https://docs.godotengine.org/en/stable/tutorials/animation/2d_skeletons.html
It was heavily suggested to me by one of the developers on GodotForums that I use the 2d skeleton method, which requires more work, but will continue to be implemented, while cutouts are not. Both methods had good documentation and worked.
But I'm making a "2.5" 3D game with 2D characters (like a side scroll fighting paper mario game)
So my options are:
- A viewport in my 3D game that displays 2D characters (I'll still need 3D colliders etc, but using 2D skeletons or cutouts, this worked)
or
- 3D skeletons with 2D graphics applied (seems the better way since I need colliders)
So, I went to make a 3D skeleton, and the documentation is sparse and the ability to build it lacking.
I found this: https://docs.godotengine.org/en/stable/classes/class_skeleton.html
Which is basically just scripting.
I found this 3.0 doc: https://docs.godotengine.org/en/3.0/tutorials/3d/working_with_3d_skeletons.html
Which is also related to importing from blender and coding it.
Are skeletons ONLY for importing models and animations from Blender etc?
Because when I build a skeleton in 3D, just like I did in 2D, nothing works. The "move joint" button doesn't work, the skeleton does not see the bones put as children of it, the bones do not connect together when rotating.
I have tried a number of things, and got it to LOOK like it'll work. Currently I have:
KinematicBody (tried 3d node too, but figured I need a "base" KinematicBody to move?)
-Skeleton
--BoneAttachment
---Sprite3D
---CollisionShape
and so on, tried with both everything as a child of skeleton, and with children hierarchical like in skeleton 2D (hip -> upper leg -> shin -> foot)
Using this method, I simply use small adjustments on the z-plane for the "front" and "back" limbs, with all my sprite3Ds facing one flat direction. I can animate them, the colliders look good, Moving the bones moves the sprites and colliders, but just because they're children. I can't find any evidence of "bones", such as joints, visible bones, a basic skeleton, anything. Just my manually created collision shapes and sprites.
The "bone name" drop down menu has nothing, and none of the bones appear when I select the skeleton, etc. Create Skeleton on the skeleton does nothing. Move Joint does nothing.
And I get this error, indicating that the size is 0, so I'm just not creating them?~~~~:
E 0:00:02.948 get_physical_bone_parent: Index p_bone = -1 is out of bounds (bones.size() = 0).
<C++ Source> scene/3d/skeleton.cpp:658 @ get_physical_bone_parent()
Do I need to make a script to compile the skeleton or something? Am I missing a key step? Or are skeletons really just meant to be imported? Because if I take, for instance, the "3D platformer example" and grab that character scene and edit the skeleton, I can replace the meshes on THAT skeleton with sprite3Ds, rotate them flat, etc. The sprites animate following the bones like I'd expect. So I know what I WANT (a 3d skeleton with sprite3d images as body parts) is possible.
My intention is to swap the sprites on the fly, allowing both character customization and to provide extra animations to my sprites (for instance, the face grimacing when hit, the fist sprite changing from "side view" to "straight on view" during a hook punch, and so on)