In third-person action games, melee combat relies heavily on animation quality. If your keyframes lack weight, momentum, or clean contact frames, your entire combat loop feels floaty regardless of how sophisticated your physics or damage scripts are. The Frank Dual Sword animation set addresses this challenge by providing a dedicated library of dual-blade combat animations built around the Unity Mecanim Humanoid Rig system.
Honestly, dual-wield animation sets are notoriously difficult to clean up. Many asset packs recycle single-sword animations and mirror them onto the off-hand bone, resulting in unnatural torso twisting and clipping. Frank Dual Sword features bespoke torso rotation, asymmetrical weight transfer, and balanced arm arcs. In my experience, having dedicated keyframes for both the main-hand and off-hand weapons cuts down hours of tweaking torso masks and chest layers in Unity's Animator controller.
From an architecture perspective, the asset focuses on plug-and-play Mecanim setup while keeping memory overhead low. Here is a technical breakdown of its key animation characteristics:
CharacterController.Move or Rigidbody.velocity).While designed around dual blades, the motion capture and keyframing work exceptionally well for several distinct project archetypes:
Integrating Frank Dual Sword into an existing character controller requires a structured approach to state management and animation events. Here is how I usually wire up the Animator Controller and hit registration scripts in Unity.
Create a dedicated Combat Layer in your AnimatorController with a weight of 1.0. Set up an AnimatorOverrideController if you plan on swapping weapon types dynamically at runtime without rebuilding your transition logic.
Attach this battle-tested state controller script to your player GameObject to handle light combo triggers, animation event listeners, and input buffering:
using UnityEngine;
[RequireComponent(typeof(Animator))]
public class DualSwordCombatHandler : MonoBehaviour
{
private Animator animator;
private int comboStep = 0;
private bool isAttacking = false;
private bool canBufferInput = false;
[Header("Weapon Colliders")]
[SerializeField] private Collider mainHandWeaponCollider;
[SerializeField] private Collider offHandWeaponCollider;
private void Awake()
{
animator = GetComponent<Animator>();
DisableWeaponColliders();
}
private void Update()
{
if (Input.GetButtonDown("Fire1"))
{
ProcessAttackInput();
}
}
private void ProcessAttackInput()
{
if (!isAttacking)
{
ExecuteAttack(1);
}
else if (canBufferInput && comboStep < 3)
{
comboStep++;
canBufferInput = false;
animator.SetInteger("ComboStep", comboStep);
}
}
private void ExecuteAttack(int step)
{
isAttacking = true;
comboStep = step;
animator.SetInteger("ComboStep", comboStep);
animator.SetTrigger("AttackTrigger");
}
// --- Animation Event Callbacks ---
public void AE_OpenComboWindow()
{
canBufferInput = true;
}
public void AE_EnableHitbox()
{
if (mainHandWeaponCollider) mainHandWeaponCollider.enabled = true;
if (offHandWeaponCollider) offHandWeaponCollider.enabled = true;
}
public void AE_DisableHitbox()
{
DisableWeaponColliders();
}
public void AE_ResetCombatState()
{
isAttacking = false;
canBufferInput = false;
comboStep = 0;
animator.SetInteger("ComboStep", 0);
DisableWeaponColliders();
}
private void DisableWeaponColliders()
{
if (mainHandWeaponCollider) mainHandWeaponCollider.enabled = false;
if (offHandWeaponCollider) offHandWeaponCollider.enabled = false;
}
}
Yes. The asset consists of raw 3D animation clips and FBX files, making it completely agnostic of your input architecture. Whether you rely on Unity's Legacy Input Manager, the new Input System package, or a custom input remapping asset, you simply drive the clips through Mecanim parameters.
As long as your custom character mesh is configured as Humanoid in its Model Import Settings and the bone mapping (Spine, Shoulders, Hands, Legs) is validated, Unity will automatically retarget these clips accurately. You may only need to tweak hand transform offsets depending on the thickness of your character's weapon handles.
Here is the key takeaway: packages and source files obtained from this platform are provided strictly for educational, testing, and architecture evaluation purposes only—never for commercial production releases. If you intend to ship a commercial title using these animations, please purchase an official license directly from the Unity Asset Store to support the original author.
| Category | 3D / Animations |
|---|---|
| Latest Version | v1.2 |
| File Size | 20.23 MB |
| Added to Platform | June 6, 2026 |
| Views | 8 views |
| Downloads | 2 downloads |
| Favourites | 0 favourites |
| Official Store | Buy Original License on Unity Asset Store → |
| Issue with Package? | Report Broken Link → |