Death player animation system (combo / charged / dash timing + rig fixes) - #153
Open
Polo2411 wants to merge 8 commits into
Open
Death player animation system (combo / charged / dash timing + rig fixes)#153Polo2411 wants to merge 8 commits into
Polo2411 wants to merge 8 commits into
Conversation
The new Death rig's skin references 88 joints but the prefab skeleton had only 69; the 21 missing _end tip bones (zero weight) caused the engine's all-or-nothing skin binding to resolve 0 joints. Added them under their parents with identity transform. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Animation-driven ability timing via CharacterAnimations + AbilityBase: - Basic combo alternates clips (1-2-1-2), damage lands at Action % - Charged attack scrubs the windup with charge progress, auto-fires at max charge, resumes the swing on release (no replay) - Dash animation synced to dash duration; hurt anim skipped for continuous (Bound) damage; recovery cancels on move/dash - Robust attack window (no soft-lock on rapid input) Death rig setup (workarounds for a 100x / Z-up export): - Added missing _end skeleton bones so the skin binds (fix T-pose) - Visual wrapper node (scale 0.01, +90deg X) on prefab + test scene - Synced Ghost_StateMachine clip UIDs to the re-imported gltf - Death.prefab configured with PlayerAnimationController + CharacterAnimations Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Contributor
|
Already commented you privately but it looks really great. The only thing i don't like is the charged attack animation and behaviour when not fully charged, the lock of the character is too big and the animation too slow, just need to adjust that and the rest are good. Not sure if we should accept it yet or wait until we have the full correct animations, but it's good for me! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🎬 Death — Player Animation System
✨ What this PR adds
A per‑character animation‑control layer so every Death ability decides — from the inspector — which clip plays, its speed, its blend, when the damage lands, and when it recovers — instead of hardcoded timers.
CharacterAnimationscomponent + animation‑driven timing inAbilityBase.Implemented behaviour
Atk1 → Atk2 → Atk1 …). Damage lands at a configurable Action % of the clip — not on button press.🧪 How to test
Important
Recompile
GameScripts.dllin Visual Studio first — the C++ scripts changed.Level1_death_animations→ Play🧍 Death prefab
Death.prefabis ready to drop into any scene: fixed skeleton (_endbones), theVisualwrapper node, and both animation components pre‑configured with theDeath_*states.Warning
Scenes that already contain an inline / baked Death won't auto‑update from the prefab. Re‑instantiate Death from the prefab in those scenes.
🚨 1. Dash is bugged (root motion)
The dash clip moves Death forward by itself (root motion), and the dash is also moved by code → the two stack up and it clips / looks bad. The clip is also long (1.458 s) for how fast a dash is (dash was
0.15 s; I temporarily raised it to0.5 sjust so it's visible).Warning
Needed: an in‑place dash clip — same gesture (it looks great!) but the character must not travel forward (like the walk cycle). The engine has no root‑motion extraction, so this cannot be fixed in code.
🌀 2. Charged attack should be circular
It should be a Darius‑Q style spin around himself — right now the clip lunges forward.
(Death's default attack clip already does a circle and could be reused.)
🗣️ 3. Missing clips — Taunt & Shadow Execution
No animations exist yet. (Taunt is now a forward shout, not a pull.) They may move Death wherever fits, as long as he returns to the original position naturally — the abilities themselves don't move him.
🔁 4. Basic recover doesn't fit → currently disabled
There's no recover for the 2nd attack, so the
Atk2 → recovertransition looks wrong; the recover is left empty for now.Atk1's recover is cleaner.Needed: a recover that ties in after the 2nd hit.
📏 5. Rig scale / orientation
The model arrived at scale 100 / Z‑up; worked around with a
Visualnode (scale 0.01,+90° X).Ideal: re‑export at scale 1, Y‑up, in‑place so the workaround can be removed.
Note
Don't change the rig itself — the skin is already bound in‑game.
🔧 Under the hood (rig / asset fixes)
_endskeleton bones so the skin binds (it was T‑posing).Visualwrapper node on Death (scale 0.01,+90° X) to correct the scale‑100 / Z‑up export.Ghost_StateMachineclip UIDs to the re‑imported gltf.Death.prefabfully configured —PlayerAnimationController+CharacterAnimationswith allDeath_*states.📦 Not in this PR (future)
Game/Assets(Release build).