protected virtual void TriggerAnimation()
        {
            if (debugMode)
            {
                Debug.Log("TriggerAnimation");
            }

            // trigger the animation behaviour & match target
            if (!string.IsNullOrEmpty(triggerAction.playAnimation))
            {
                isPlayingAnimation = true;
                tpInput.cc.anime.CrossFadeInFixedTime(triggerAction.playAnimation, 0.1f);    // trigger the action animation clip
            }

            // trigger OnDoAction Event, you can add a delay in the inspector
            StartCoroutine(triggerAction.OnDoActionDelay(gameObject));

            // bool to limit the autoAction run just once
            if (triggerAction.autoAction || triggerAction.destroyAfter)
            {
                triggerActionOnce = true;
            }

            // destroy the triggerAction if checked with destroyAfter
            if (triggerAction.destroyAfter)
            {
                StartCoroutine(DestroyDelay(triggerAction));
            }
        }