Collision Mesh Issues and Character Not Turning

Godot Version

4.2.1

Question

Still relatively new to Godot so please let me know if I’m missing something obvious. The mesh issue looks like this:
image
The mesh is stuck in the A-Pose and will not change with the character. Do I have to create a new mesh every frame or something? Very strange issue I was not facing with a previous iteration of this character, which was also animated.
The animation issue looks like this.
I can’t even begin to fathom why it’s doing this, as again, it was not an issue with my previous model. The only difference between the two models is that this one is a cleaned up version without non-manifold geometry, and the only difference in the rigging/animation is that I’m using mixamo anims.
Any help is appreciated. sincerely, a tired student with the flu who thought making a game for class would be a good idea

Godot will not perform well with such a detailed collision mesh, and collisions won’t work at all in some cases. I don’t think there is an easy way to make the collision mesh deform with the model, anyway (or even a hard way).

However, you don’t need that kind of detailed collision mesh for most animated characters. Using several separate, simple collision shapes will give much better performance, will be easier to maintain, and has much better support from the engine.

Use separate collision shapes for the head, each arm and leg segment, and the body. You can then use a BoneAttachment3D node for each bone to attach them to the body. The collision shapes will then move with the bone to which they are attached. You will also be setting yourself up to more easily implement ragdoll physics, if you so desire.

1 Like

oh great point! i was trying to do something very animation-based like dark souls but i may be shootin too high lol.

Quick question: wondering how to use the boneattachment with collisions? because it seems if the collision shape isnt directly parented to the characterbody, it wont count

I’ve done this before, but I don’t have the project immediately available for reference, so I’m typing this from memory:

Within your CharacterBody3D, put a BoneAttachment3D under your Skeleton3D (your model must have editable children enabled so you can see your model contents which have the Skeleton3D imported from Blender) and specify the bone that will control the BoneAttachment3D.

Then put another CharacterBody3D under the BoneAttachment3D. This secondary CharacterBody3D will now move with the bone.

Then place your CollisionShape3D under the second CharacterBody3D. This satisfies Godot’s requirement that collision shapes be directly under a *Body3D. The collision shape will now track with the bone when the character is animated by any means.

Handling the collisions is done somewhat differently than when the collision shape is on the top level (the parent will be the second CharacterBody3D), but it’s pretty straightforward to pass control to the top-level parent.

1 Like